| 332 | } |
| 333 | |
| 334 | int32_t WelsTargetMbConstruction (PWelsDecoderContext pCtx) { |
| 335 | PDqLayer pCurDqLayer = pCtx->pCurDqLayer; |
| 336 | if (MB_TYPE_INTRA_PCM == pCurDqLayer->pDec->pMbType[pCurDqLayer->iMbXyIndex]) { |
| 337 | //already decoded and reconstructed when parsing |
| 338 | return ERR_NONE; |
| 339 | } else if (IS_INTRA (pCurDqLayer->pDec->pMbType[pCurDqLayer->iMbXyIndex])) { |
| 340 | WelsMbIntraPredictionConstruction (pCtx, pCurDqLayer, 1); |
| 341 | } else if (IS_INTER (pCurDqLayer->pDec->pMbType[pCurDqLayer->iMbXyIndex])) { //InterMB |
| 342 | if (0 == pCurDqLayer->pCbp[pCurDqLayer->iMbXyIndex]) { //uiCbp==0 include SKIP |
| 343 | if (!CheckRefPics (pCtx)) { |
| 344 | return ERR_INFO_MB_RECON_FAIL; |
| 345 | } |
| 346 | return WelsMbInterPrediction (pCtx, pCurDqLayer); |
| 347 | } else { |
| 348 | WelsMbInterConstruction (pCtx, pCurDqLayer); |
| 349 | } |
| 350 | } else { |
| 351 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "WelsTargetMbConstruction():::::Unknown MB type: %d", |
| 352 | pCurDqLayer->pDec->pMbType[pCurDqLayer->iMbXyIndex]); |
| 353 | return ERR_INFO_MB_RECON_FAIL; |
| 354 | } |
| 355 | |
| 356 | return ERR_NONE; |
| 357 | } |
| 358 | |
| 359 | void WelsChromaDcIdct (int16_t* pBlock) { |
| 360 | int32_t iStride = 32; |
no test coverage detected