History

remove sps late than pps logic for scaling_list

huili2 committed 9 years ago

Commit 3c2b1601 parent 3c2caa44 files · +6 −29Browse files

Showing the changes to codec/decoder/core/src (3 of 4 files). Show all

Unified · Split

3 files
  1. codec/decoder/core/src/au_parser.cpp +6 −8
  2. codec/decoder/core/src/decode_slice.cpp +0 −19
  3. codec/decoder/core/src/decoder.cpp +0 −1
codec/decoder/core/src/au_parser.cpp+6−8
@@ -1420,9 +1420,10 @@ int32_t ParsePps (PWelsDecoderContext pCtx, PPps pPpsList, PBitStringAux pBsAux, · 1419 unmodified lines
14201420 WELS_READ_VERIFY (ParseScalingList (&pCtx->sSpsBuffer[pPps->iSpsId], pBsAux, 1, pPps->bTransform8x8ModeFlag,
14211421 pPps->bPicScalingListPresentFlag, pPps->iScalingList4x4, pPps->iScalingList8x8));
14221422 } else {
1423− pCtx->bSpsLatePps = true;
1424− WELS_READ_VERIFY (ParseScalingList (NULL, pBsAux, 1, pPps->bTransform8x8ModeFlag, pPps->bPicScalingListPresentFlag,
1425− pPps->iScalingList4x4, pPps->iScalingList8x8));
1423+ WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
1424+ "ParsePps(): sps_id (%d) does not exist for scaling_list. This PPS (%d) is marked as invalid.", pPps->iSpsId,
1425+ pPps->iPpsId);
1426+ return GENERATE_ERROR_NO (ERR_LEVEL_PARAM_SETS, ERR_INFO_INVALID_SPS_ID);
14261427 }
14271428 }
14281429 WELS_READ_VERIFY (BsGetSe (pBsAux, &iCode)); //second_chroma_qp_index_offset
@@ -1665,13 +1666,10 @@ int32_t ParseScalingList (PSps pSps, PBitStringAux pBs, bool bPPS, const bool kb · 236 unmodified lines
16651666 const uint8_t* defaultScaling[4];
16661667
16671668 if (!bPPS) { //sps scaling_list
1668− if (pSps != NULL) {
1669− uiScalingListNum = (pSps->uiChromaFormatIdc != 3) ? 8 : 12;
1670− bInit = bPPS && pSps->bSeqScalingMatrixPresentFlag;
1671− } else
1672− uiScalingListNum = 12;
1669+ uiScalingListNum = (pSps->uiChromaFormatIdc != 3) ? 8 : 12;
16731670 } else { //pps scaling_list
16741671 uiScalingListNum = 6 + (int32_t) kbTrans8x8ModeFlag * ((pSps->uiChromaFormatIdc != 3) ? 2 : 6);
1672+ bInit = pSps->bSeqScalingMatrixPresentFlag;
16751673 }
16761674
16771675 //Init default_scaling_list value for sps or pps
codec/decoder/core/src/decode_slice.cpp+0−19
@@ -1112,25 +1112,6 @@ int32_t WelsCalcDeqCoeffScalingList (PWelsDecoderContext pCtx) { · 1111 unmodified lines
11121112
11131113 if (!pCtx->bDequantCoeff4x4Init || (pCtx->iDequantCoeffPpsid != pCtx->pPps->iPpsId)) {
11141114 int i, q, x, y;
1115− // Rewrite pps scaling list for scalingList present flag=0
1116− if (pCtx->bSpsLatePps) {
1117− for (i = 0; i < 12; i++) {
1118− //if (!pCtx->pSps->bSeqScalingListPresentFlag[i]) {
1119− if (!pCtx->pPps->bPicScalingListPresentFlag[i]) {
1120− if (i < 6) {
1121− if (i == 0 || i == 3)
1122− memcpy (pCtx->pPps->iScalingList4x4[i], pCtx->pSps->iScalingList4x4[i], 16 * sizeof (uint8_t));
1123− else
1124− memcpy (pCtx->pPps->iScalingList4x4[i], pCtx->pPps->iScalingList4x4[i - 1], 16 * sizeof (uint8_t));
1125− } else {
1126− if (i == 6 || i == 7)
1127− memcpy (pCtx->pPps->iScalingList8x8[ i - 6 ], pCtx->pSps->iScalingList8x8[ i - 6 ], 64 * sizeof (uint8_t));
1128− else
1129− memcpy (pCtx->pPps->iScalingList8x8[ i - 6 ], pCtx->pPps->iScalingList8x8[i - 8], 64 * sizeof (uint8_t));
1130− }
1131− }
1132− }
1133− }
11341115 //Init dequant coeff value for different QP
11351116 for (i = 0; i < 6; i++) {
11361117 pCtx->pDequant_coeff4x4[i] = pCtx->pDequant_coeff_buffer4x4[i];
codec/decoder/core/src/decoder.cpp+0−1
@@ -312,7 +312,6 @@ void WelsDecoderDefaults (PWelsDecoderContext pCtx, SLogContext* pLogCtx) { · 311 unmodified lines
312312 pCtx->bAvcBasedFlag = true;
313313 pCtx->pPreviousDecodedPictureInDpb = NULL;
314314 pCtx->sDecoderStatistics.iAvgLumaQp = -1;
315− pCtx->bSpsLatePps = false;
316315 pCtx->bUseScalingList = false;
317316 pCtx->iSpsErrorIgnored = 0;
318317 pCtx->iSubSpsErrorIgnored = 0;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t