📄 vopsedec.no-opt
字号:
Int iQP = pmbmd->m_stepSize, iDcScalerY, iDcScalerC;\ MacroBlockMemory* pmbmLeft = NULL;\ MacroBlockMemory* pmbmTop = NULL;\ MacroBlockMemory* pmbmLeftTop = NULL;\ CMBMode* pmbmdLeft = NULL;\ CMBMode* pmbmdTop = NULL;\ CMBMode* pmbmdLeftTop = NULL;\ Int iMBTop = iMBY - 1, iWidthDst, iDcScaler, *rgiCoefQ, iBlk, iQpPred;\ PixelC* rgchBlkDst = NULL;\ BlockMemory blkmPred;\\ assert (pmbmd != NULL);\ assert (pmbmd->m_dctMd == INTRA || pmbmd->m_dctMd == INTRAQ);\\ if (iQP <= 4)\ {\ iDcScalerY = 8;\ iDcScalerC = 8;\ }\\ else if (iQP >= 5 && iQP <= 8)\ {\ iDcScalerY = 2 * iQP;\ iDcScalerC = (iQP + 13) / 2;\ }\\ else if (iQP >= 9 && iQP <= 24)\ {\ iDcScalerY = iQP + 8;\ iDcScalerC = (iQP + 13) / 2;\ }\\ else\ {\ iDcScalerY = 2 * iQP - 16;\ iDcScalerC = iQP - 6;\ }\\ g_pHeader3->xpos = iMBX * 2;\ g_pHeader3->ypos = iMBY * 2;\\ assert (iQP > 0);\\ if (iMBTop >= 0)\ {\ if (pmbmd->m_iVideoPacketNumber == (pmbmd - g_pVO->m_iNumMBX)->m_iVideoPacketNumber)\ {\ pmbmTop = g_pVO->m_rgpmbmAbove [iMBX];\ pmbmdTop = pmbmd - g_pVO->m_iNumMBX;\ }\ }\\ if (iMBX > 0)\ {\ if (pmbmd->m_iVideoPacketNumber == (pmbmd - 1)->m_iVideoPacketNumber)\ {\ pmbmLeft = g_pVO->m_rgpmbmCurr [iMBX - 1];\ pmbmdLeft = pmbmd - 1;\ }\ }\\ if (iMBTop >= 0 && iMBX > 0)\ {\ if (pmbmd->m_iVideoPacketNumber == (pmbmd - g_pVO->m_iNumMBX - 1)->m_iVideoPacketNumber)\ {\ pmbmLeftTop = g_pVO->m_rgpmbmAbove [iMBX - 1];\ pmbmdLeftTop = pmbmd - g_pVO->m_iNumMBX - 1;\ }\ }\\ for (iBlk = Y_BLOCK1; iBlk <= V_BLOCK; iBlk++)\ {\ (iBlk < (UInt) U_BLOCK) ? (iDcScaler = iDcScalerY) : (iDcScaler = iDcScalerC);\\ rgiCoefQ = g_pVO->m_rgpiCoefQ [iBlk - 1];\ iQpPred = iQP;\\ blkmPred = decideIntraPred (pmbmd, &iQpPred, iBlk, pmbmLeft, pmbmTop, pmbmLeftTop, g_pVO->m_rgpmbmCurr [iMBX], pmbmdLeft, pmbmdTop, pmbmdLeftTop);\\ decodeTextureIntraBlock (iQP, iDcScaler, iBlk, g_pVO->m_rgpmbmCurr [iMBX], pmbmd, blkmPred, iQpPred);\ }\\ g_pHeader3->rnd = g_pVOP->iRoundingControl;\ g_pHeader1->cbp = CBP_FOR_420;\\ nCodedBlocks = BLOCKS_FOR_420_FORMAT;\ QueueMB ();/*#ifdef ENABLE_INTERLACING if (pmbmd->m_bFieldDCT)\ g_pHeader3->dctt = 1;\ if (pmbmd->m_bFieldMV)\ {\ g_pHeader3->fp = MAE_FIELD_PREDICTION;\\ if (!pmbmd->m_bForwardTop)\ g_pHeader3->ft = 1;\\ if (!pmbmd->m_bForwardBottom)\ g_pHeader3->fb = 1;\\ if (!pmbmd->m_bBackwardTop)\ g_pHeader3->bt = 1;\\ if (!pmbmd->m_bBackwardBottom)\ g_pHeader3->bb = 1;\ }\#endif\ nCodedBlocks = BLOCKS_FOR_420_FORMAT;\ MP4V_nBytesUsed = QueueMB (0);*/#define DECODETEXTUREINTERMB(pmbmd)\ Int iQP = pmbmd->m_stepSize, iBlk;\\ assert (pmbmd != NULL);\ assert (pmbmd->m_dctMd == INTER || pmbmd->m_dctMd == INTERQ);\\ for (iBlk = Y_BLOCK1; iBlk <= V_BLOCK; iBlk++)\ {\ if (GETCODEDBLOCKPATTERN (pmbmd, iBlk))\ {\ decodeTextureInterBlock (iQP);\\ nCodedBlocks++;\\ g_pHeader1->cbp |= BITS_FOR_CBP[iBlk-1];\ }\ }\// mbheaddec.c related#define CHECKRANGE(x, cMin, cMax)\ if (x < cMin)\ x = cMin;\\ if (x > cMax)\ x = cMax;#define SKIPANYSTUFFING()\\ if(g_pVOP->vopPredType==IVOP)\ {\ while(peekBits(9) == 1 && !MP4V_EOF())\ getBits(9);\ }\ else\ {\ while(peekBits(10) == 1 && !MP4V_EOF())\ getBits(10);\ }extern inline Void decodeMBTextureHeadOfIVOP (CMBMode*, Int *, Bool *);extern inline Void decodeMBTextureHeadOfPVOP (CMBMode*, Int *, Bool *);extern inline Void decodeMBTextureHeadOfBVOP (CMBMode*, Int *);// mv.c related#define MP4V_FATAL_ERROR(pchMessage)\\ fprintf(stderr,"******** ERROR ********\n");\ fprintf(stderr,"%s\n", pchMessage);\ fprintf(stderr,"***********************\n\n");\ exit(1);extern Void find16x16MVpred (CVector *, CMotionVector*, Bool, Bool, Bool);extern Void find8x8MVpredAtBoundary (CVector *, CMotionVector*, Bool, Bool, Bool, Int);extern Void find8x8MVpredInterior (CVector *, CMotionVector*, Int);extern Void mvLookupUV (CMBMode*, CMotionVector*, CoordI*, CoordI*);extern Void mvLookupUVWithShape (CMBMode*, CMotionVector*, CoordI*, CoordI*);extern Void findMVpredGeneric (CVector*, CMotionVector*, CMBMode*, Int, Int, Int);extern Void backwardMVFromForwardMV (CMotionVector*, CMotionVector*, CMotionVector*, CVector);// mvdec.cextern inline Void decodeMV (CMBMode*, CMotionVector*, Bool, Bool, Bool, Bool, Int, Int);extern inline Void decodeMVofBVOP (CMotionVector*, CMotionVector*, CMBMode*, CMotionVector*, CMBMode*);//mcdec.c#define max(a,b) (((a) > (b)) ? (a) : (b))#define min(a, b) (((a) < (b)) ? (a) : (b))#ifdef ENABLE_INTERLACINGextern Void Get_BVOP_YUVILMVs (const CMotionVector* pmvForward, const CMotionVector* pmvBackward, CMBMode* pmbmd, Int iMBX, Int iMBY, CoordI x, CoordI y, PixelC* ppxlcCurrQMBY, PixelC* ppxlcCurrQMBU, PixelC* ppxlcCurrQMBV, CRct *prctMVLimitForward,CRct *prctMVLimitBackward);#endifextern inline Void motionCompAndAddErrorMB_BVOP (CMotionVector*, CMotionVector*, CMBMode*);extern inline Void motionCompSkipMB_BVOP (CMotionVector*, CMotionVector*, CMBMode*);extern inline Void motionCompMB_BVOP (CMotionVector*, CMotionVector*, CMBMode*);#define LIMITMVRANGETOEXTENDEDBBFULLPEL(x,y, prct,iBlkSize)\\ if(*x < prct->left)\ *x=prct->left;\ else if(*x > (prct->right-iBlkSize))\ *x=(prct->right-iBlkSize);\ if(*y < prct->top)\ *y=prct->top;\ else if(*y > (prct->bottom-iBlkSize))\ *y=(prct->bottom-iBlkSize);#ifdef ENABLE_INTERLACING#define LIMITMVRANGETOEXTENDEDBBHALFPEL(x,y, prct,iBlkSize)\\ if(*x < prct->left*2)\ *x=prct->left*2;\ else if(*x > (prct->right-iBlkSize)*2)\ *x=(prct->right-iBlkSize)*2;\ if(*y < prct->top*2)\ *y=prct->top*2;\ else if(*y > (prct->bottom-iBlkSize)*2)\ *y=(prct->bottom-iBlkSize)*2;#define LIMITMVRANGETOEXTENDEDBBQUARTERPEL(x,y,prct,iBlkSize)\\ Int iBlkSizeX, iBlkSizeY;\\ if (iBlkSize == 0)\ iBlkSizeX = iBlkSizeY = MB_SIZE;\ else\ iBlkSizeX = iBlkSizeY = iBlkSize;\\ if(*x < (prct->left + EXPANDY_REFVOP - iBlkSizeX)*4)\ *x = (prct->left + EXPANDY_REFVOP - iBlkSizeX)*4;\ else if (*x > (prct->right - EXPANDY_REFVOP)*4)\ *x = (prct->right - EXPANDY_REFVOP)*4;\ if(*y < (prct->top + EXPANDY_REFVOP - iBlkSizeY)*4)\ *y = (prct->top + EXPANDY_REFVOP - iBlkSizeY)*4;\ else if (*y > (prct->bottom - EXPANDY_REFVOP)*4)\ *y = (prct->bottom - EXPANDY_REFVOP)*4;#endif// LIMITMVRANGETOEXTENDEDBBFULLPEL(&x,&y,prctMVLimit,MB_SIZE);\//\#define COPYFROMREFTOCURRQ()\\ g_pHeader2->mbmode = MBMODE_FWD_ALL_420;\ g_pHeader3->mbtype = MBT_16x16;// vopmbdec.c relatedextern CRct m_rctRefVOPY0, m_rctRefVOPUV0;extern CRct m_rctRefVOPY1, m_rctRefVOPUV1;extern inline Void decodeVOP ();// mae_pass_thru.c related#define MP4V_CLEARHEADERWORDS()\\ header_words *pHeader = pMAEContext->pHeader;\\ g_pHeader0 = &(pHeader->header_word0);\ g_pHeader1 = &(pHeader->header_word1);\ g_pHeader2 = &(pHeader->header_word2);\ g_pHeader3 = &(pHeader->header_word3);\\ g_pHeader0->bblk = MAE_BIG_BLOCK_ON;\ g_pHeader0->iqmul2 = 1;\ g_pHeader0->wtchgmsk = 0;\ g_pHeader0->iqadd1 = 0;\ g_pHeader0->dcluma = 1;\ g_pHeader0->dcchroma = 1;\\ g_pHeader1->cbp = 0;\ g_pHeader1->iqdiv3 = 0;\ g_pHeader1->iqadd2 = 0;\\ g_pHeader2->mbmode = 0;\ g_pHeader2->xformsize = 0;\\ g_pHeader3->mcprecy = MAE_HALF_PEL_BILINEAR;\ g_pHeader3->mcprecuv = MAE_HALF_PEL_BILINEAR;\ g_pHeader3->mbtype = 0;\ g_pHeader3->rnd = 0;\ g_pHeader3->fp = 0;\ g_pHeader3->ps = 0;\ g_pHeader3->dctt = PROGRESSIVE_SCAN;#define MP4V_INITMBDATA()\\ if (g_NumMVs)\ {\ g_pMV = ((uint32 *)pMAEContext->pMB+4);\\ g_pMV[0] = g_pMV[1] = g_pMV[2] = g_pMV[3] = g_pMV[4] = 0;\ }\\ pMAEContext->pDataBlock = (uint16 *)((uint32 *)pMAEContext->pMB + 4 + g_NumMVs);\ if (g_NumWMs)\ pMAEContext->pDataBlock += 128; /* (16*g_NumWMs) where g_NumWMs is 4 and is set only for the 1st MB */// mae_interface.c relatedextern uint8 *g_pBufPtr;#define MP4V_WRAPGETNEXTCONTEXT()\{\ g_pBufPtr += MP4V_nBytesUsed;\ pMAEContext->pMB = (unsigned int *)(g_pBufPtr);\ pMAEContext->pHeader = (header_words *)pMAEContext->pMB;\ /* pMAEContext->pWM = pMAEContext->pMV = (pMAEContext->pMB + 4);*/\ pMAEContext->pDataBlock = (int16 *)pMAEContext->pWM;\}// vopsedec.c relatedextern inline Int h263_decode(); // [FDS]extern inline Int decode ();extern Void MP4V_Decoder_Init (Char*, Int *, Int *);extern Void MP4V_Decoder_CleanUp ();extern Void setDCVLCMode(CMBMode* pmbmd, Bool *pbBoundary);extern Void setClipTab(CVideoObject *, VOLMode *); // NBITextern Void allocateVOLMembers (CVideoObject *, VOLMode *, Int, Int);extern Void computeVOLConstMembers (CVideoObject *, VOLMode *);extern Void setRefStartingPointers (CVideoObject *);extern unsigned long g_tVopIncr;// vopses.c relatedextern Void MP4V_VideoObject_Init ();#endif // __VOPSEDEC_HPP_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -