⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vopsedec.no-opt

📁 au1200 linux2.6.11 硬件解码mae驱动和maiplayer播放器源码
💻 NO-OPT
📖 第 1 页 / 共 2 页
字号:
	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 + -