亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? mfc.c

?? 提供S3C6400源例子代碼.希望對(duì)大家有所幫助
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
	Assert(picX > 0);
	Assert(picY > 0);
	
	oMfc.m_bDecRotEn[uProcessIdx] = bDecRotEn;	
	oMfc.m_uRotFrameIdx[uProcessIdx] = 0;
	oMfc.m_uMp4DeblockFrameIdx[uProcessIdx] = 0;
	oMfc.m_uFrameIndex[uProcessIdx] = 0;

	// H.263 Annex J deblock is in-loop filter, otherwise deblock is out-loop filter
	MFC_IsDecH263AnnexJOn(uProcessIdx, &oMfc.m_bAnnexJOn[uProcessIdx]); 	
	
	oMfc.m_uFrameDelayCount[uProcessIdx] = mfcInp32(RET_DEC_SEQ_FRAME_DELAY);
	//DbgMfc("Delay Frame num=%d\n", oMfc.m_uFrameDelayCount[uProcessIdx]);

    MFC_GetDecRefFrameNum(uProcessIdx, &uNumOfRefReconFrame);	
	//DbgMfc("num of RefFrame = %d\n", uNumOfRefReconFrame);
	
	uFrameBufNumTemp = (oMfc.m_bDecRotEn[uProcessIdx]) ? uNumOfRefReconFrame+2 : uNumOfRefReconFrame;
	uFrameBufNum = (oMfc.m_bMp4DecDeblkMode[uProcessIdx] && !oMfc.m_bAnnexJOn[uProcessIdx]) ? uFrameBufNumTemp+2 : uFrameBufNumTemp;
	 
	uStride = (picX%16 == 0) ? picX : (picX+15)/16*16;
	uHeight = (picY%16 == 0) ? picY : (picY+15)/16*16;		
	MFC_InitDecFrameBuffer(uProcessIdx, uFrameBufNum, uStride, uHeight, uFrameBufStAddr);
			
	MFC_IssueCmdOfSetFrameBuffer(uProcessIdx, uNumOfRefReconFrame, uStride);
}

void MFC_InitProcessForOneFrameDecoding(
	u32 uProcessIdx, MFC_CODEC_MODE eCodecMode, u32 uStreamBufStAddr, u32 uStreamBufSize,
	u32 uFrameBufStAddr, bool bDecRotEn, bool bMp4DeblkEn, bool bH264ReorderEn, bool bFilePlayEn, bool bDynBufAllocEn)
{
	u32 uFilePlayEn;
	u32 uDynBufEn;
	u32 uStreamBufSizeCeilingToKbMultiple;
	u32 uMp4DecDeblkMode;
	u32 uH264DecReorderMode;
	bool stat;
	float frameRate;
	u32 picX, picY;
	u32 uNumOfRefReconFrame;
	u32 uStride;
	u32 uHeight;
	u32 uFrameBufNumTemp;
	u32 uFrameBufNum;


	Assert(uProcessIdx < MAX_PROCESS_NUM);
	Assert(eCodecMode == MP4_DEC || eCodecMode == AVC_DEC || eCodecMode == VC1_DEC);

	oMfc.m_eCodecMode[uProcessIdx] = eCodecMode;
	uStreamBufSizeCeilingToKbMultiple = (uStreamBufSize+1023)/1024*1024;

	oMfc.m_uStreamBufStAddr[uProcessIdx] = uStreamBufStAddr;
	oMfc.m_uStreamBufEndAddr[uProcessIdx] = uStreamBufStAddr + uStreamBufSizeCeilingToKbMultiple;
	oMfc.m_uStreamBufByteSize[uProcessIdx] = uStreamBufSizeCeilingToKbMultiple;
		
	oMfc.m_uBitRdPtr[uProcessIdx] = 
		(uProcessIdx == 0) ? BITS_RD_PTR0 :
		(uProcessIdx == 1) ? BITS_RD_PTR1 :
		(uProcessIdx == 2) ? BITS_RD_PTR2 :
		(uProcessIdx == 3) ? BITS_RD_PTR3 :
		(uProcessIdx == 4) ? BITS_RD_PTR4 :
		(uProcessIdx == 5) ? BITS_RD_PTR5 :	
		(uProcessIdx == 6) ? BITS_RD_PTR6 : BITS_RD_PTR7;
	oMfc.m_uBitWrPtr[uProcessIdx] = 
		(uProcessIdx == 0) ? BITS_WR_PTR0 :
		(uProcessIdx == 1) ? BITS_WR_PTR1 :
		(uProcessIdx == 2) ? BITS_WR_PTR2 :
		(uProcessIdx == 3) ? BITS_WR_PTR3 :
		(uProcessIdx == 4) ? BITS_WR_PTR4 :
		(uProcessIdx == 5) ? BITS_WR_PTR5 :			
		(uProcessIdx == 6) ? BITS_WR_PTR6 : BITS_WR_PTR7;		


	mfcOutp32(oMfc.m_uBitRdPtr[uProcessIdx], oMfc.m_uStreamBufStAddr[uProcessIdx]);
	mfcOutp32(oMfc.m_uBitWrPtr[uProcessIdx], oMfc.m_uStreamBufStAddr[uProcessIdx]+uStreamBufSize);	

	mfcOutp32(DEC_SEQ_BIT_BUF_ADDR, oMfc.m_uStreamBufStAddr[uProcessIdx]);
    	mfcOutp32(DEC_SEQ_BIT_BUF_SIZE,  oMfc.m_uStreamBufByteSize[uProcessIdx]/1024);    // KB unit

	oMfc.m_bMp4DecDeblkMode[uProcessIdx] = (eCodecMode == MP4_DEC) ? bMp4DeblkEn : false;   
	uMp4DecDeblkMode = (oMfc.m_bMp4DecDeblkMode[uProcessIdx]) ? MP4_DBK_ENABLE : MP4_DBK_DISABLE;
	uH264DecReorderMode = (bH264ReorderEn) ? REORDER_ENABLE : REORDER_DISABLE;
	uFilePlayEn = (bFilePlayEn) ? FILEPLAY_ENABLE : FILEPLAY_DISABLE;
	uDynBufEn = (bDynBufAllocEn) ? DYNBUFALLOC_ENABLE : DYNBUFALLOC_DISABLE;
	mfcOutp32(DEC_SEQ_OPTION, uMp4DecDeblkMode|uH264DecReorderMode|uFilePlayEn|uDynBufEn);

	oMfc.m_bIsNoMoreStream[uProcessIdx] = false;

	MFC_IssueCmd(uProcessIdx, SEQ_INIT);

	stat = MFC_IsCmdFinished();

	if(stat == false)
	{
		Disp("\n There is an error in the SEQ_INIT result\n");
		return;
	}

	MFC_GetDecSrcFormat(&picX, &picY, &frameRate);
	oMfc.m_uPicX[uProcessIdx] = picX;
	oMfc.m_uPicY[uProcessIdx] = picY;
    	DbgMfc("%d x %d @%.2f Hz\n", picX, picY, frameRate);
	Assert(picX > 0);
	Assert(picY > 0);
	
	oMfc.m_bDecRotEn[uProcessIdx] = bDecRotEn;	
	oMfc.m_uRotFrameIdx[uProcessIdx] = 0;
	oMfc.m_uMp4DeblockFrameIdx[uProcessIdx] = 0;
	oMfc.m_uFrameIndex[uProcessIdx] = 0;

	// H.263 Annex J deblock is in-loop filter, otherwise deblock is out-loop filter
	MFC_IsDecH263AnnexJOn(uProcessIdx, &oMfc.m_bAnnexJOn[uProcessIdx]); 	
	
//	mfcInp32(RET_DEC_SEQ_FRAME_DELAY, oMfc.m_uFrameDelayCount[uProcessIdx]);
	oMfc.m_uFrameDelayCount[uProcessIdx] = mfcInp32(RET_DEC_SEQ_FRAME_DELAY);

	DbgMfc("Delay Frame num=%d\n", oMfc.m_uFrameDelayCount[uProcessIdx]);

       MFC_GetDecRefFrameNum(uProcessIdx, &uNumOfRefReconFrame);	
	DbgMfc("num of RefFrame = %d\n", uNumOfRefReconFrame);
	
	uFrameBufNumTemp = (oMfc.m_bDecRotEn[uProcessIdx]) ? uNumOfRefReconFrame+2 : uNumOfRefReconFrame;
	uFrameBufNum = (oMfc.m_bMp4DecDeblkMode[uProcessIdx] && !oMfc.m_bAnnexJOn[uProcessIdx]) ? uFrameBufNumTemp+2 : uFrameBufNumTemp;
	 
	uStride = (picX%16 == 0) ? picX : (picX+15)/16*16;
	uHeight = (picY%16 == 0) ? picY : (picY+15)/16*16;		
	MFC_InitDecFrameBuffer(uProcessIdx, uFrameBufNum, uStride, uHeight, uFrameBufStAddr);
	MFC_IssueCmdOfSetFrameBuffer(uProcessIdx, uNumOfRefReconFrame, uStride);

}

void MFC_InitStreamBufferForOneFrameDecoding(u32 uProcessIdx,  u32 uStreamBufStAddr, u32 uStreamBufSize)
{

	mfcOutp32(DEC_PIC_BB_START,uStreamBufStAddr & 0xfffffffc);
	mfcOutp32(DEC_PIC_START_BYTE,uStreamBufStAddr & 0x3);
	mfcOutp32(DEC_PIC_CHUNK_SIZE,uStreamBufSize);
}

bool MFC_DecodeOneFrame(u32 uRunIdx, u32* uFrameIdx)
{
	MFC_StartDecodingOneFrame(uRunIdx);
	MFC_WaitForReady();
	return MFC_DoPostProcessingOfDecoding(uRunIdx, false, uFrameIdx);
}

void MFC_StartDecodingOneFrame(u32 uRunIdx)
{
	u32 i, j, uDbkFrameNum=0;
	u32 uRotMode, uRotStride;
	
	if (oMfc.m_bMp4DecDeblkMode[uRunIdx] && !oMfc.m_bAnnexJOn[uRunIdx]) // out-loop filter
	{
		uDbkFrameNum = 2;
		i = oMfc.m_uRefFrameNum[uRunIdx] + oMfc.m_uMp4DeblockFrameIdx[uRunIdx];		
		mfcOutp32(DEC_PIC_DEBLOCK_ADDR_Y, oMfc.m_uFrameAddrY[uRunIdx][i]);
		mfcOutp32(DEC_PIC_DEBLOCK_ADDR_CB, oMfc.m_uFrameAddrCb[uRunIdx][i]);
		mfcOutp32(DEC_PIC_DEBLOCK_ADDR_CR, oMfc.m_uFrameAddrCr[uRunIdx][i]);
	}
	if (oMfc.m_bDecRotEn[uRunIdx]) // out-loop filter
	{		
		j = oMfc.m_uRefFrameNum[uRunIdx] + uDbkFrameNum + oMfc.m_uRotFrameIdx[uRunIdx];
		mfcOutp32(DEC_PIC_ROT_ADDR_Y, oMfc.m_uFrameAddrY[uRunIdx][j]);
		mfcOutp32(DEC_PIC_ROT_ADDR_CB, oMfc.m_uFrameAddrCb[uRunIdx][j]);
		mfcOutp32(DEC_PIC_ROT_ADDR_CR, oMfc.m_uFrameAddrCr[uRunIdx][j]);

		uRotMode = mfcInp32(DEC_PIC_ROT_MODE);
		uRotStride = (uRotMode&1) ? oMfc.m_uPicY[uRunIdx] : oMfc.m_uStride[uRunIdx]; // Rot90 or Rot270
		MFC_SetDecRotStride(uRotStride);
		//DbgMfc("rot stride = %d\n",uRotStride);
	}

	MFC_StartIssuingCmd(uRunIdx, PIC_RUN);
}

bool MFC_DoPostProcessingOfDecoding(u32 uRunIdx, bool isEmpty, u32* uFrameIdx)
{
	u32 uDeblockFrameNum = 0;

	if (isEmpty  && oMfc.m_bIsNoMoreStream[uRunIdx] && oMfc.m_uFrameDelayCount[uRunIdx]-- == 0)
	{
		return false;
	}
	
	MFC_GetDecReconFrameIndex(uRunIdx, &oMfc.m_uFrameIndex[uRunIdx]);
	if (oMfc.m_uFrameIndex[uRunIdx] == -1) // 0xffff_ffff
	{
		*uFrameIdx = oMfc.m_uFrameIndex[uRunIdx];
		return false;
	}
	
	uDeblockFrameNum = 0;
	if (oMfc.m_bMp4DecDeblkMode[uRunIdx] && !oMfc.m_bAnnexJOn[uRunIdx])
	{
		oMfc.m_uFrameIndex[uRunIdx] = oMfc.m_uRefFrameNum[uRunIdx] + oMfc.m_uMp4DeblockFrameIdx[uRunIdx];		
		oMfc.m_uMp4DeblockFrameIdx[uRunIdx] = (oMfc.m_uMp4DeblockFrameIdx[uRunIdx]+1)%2;
		uDeblockFrameNum = 2;
	}
	// from 6th f/w (VC-1 path is different from other codec's.)
	if (oMfc.m_bDecRotEn[uRunIdx] && oMfc.m_eCodecMode[uRunIdx] != VC1_DEC)
	{		 
		oMfc.m_uFrameIndex[uRunIdx] = oMfc.m_uRefFrameNum[uRunIdx] + uDeblockFrameNum + oMfc.m_uRotFrameIdx[uRunIdx];		
		oMfc.m_uRotFrameIdx[uRunIdx] = (oMfc.m_uRotFrameIdx[uRunIdx]+1)%2;
	}

	*uFrameIdx = oMfc.m_uFrameIndex[uRunIdx];
	DbgMfc("%d ", oMfc.m_uFrameIndex[uRunIdx]);
	
	return true;
}

void MFC_InitProcessForEncoding(
	u32 uProcessIdx,
	MFC_CODEC_MODE eEncMode,
	u32 uStreamBufStAddr,
	u32 uStreamBufSize,
	u32 uDispWidth,
	u32 uDispHeight,
	bool bEncRot90En)
{
	MFC_InitProcessForEncoding1(uProcessIdx, eEncMode, uStreamBufStAddr, uStreamBufSize, 
		uDispWidth, uDispHeight, bEncRot90En, false, false, false, false);
}

void MFC_InitProcessForEncoding1(
	u32 uProcessIdx,
	MFC_CODEC_MODE eEncMode,
	u32 uStreamBufStAddr,
	u32 uStreamBufSize,
	u32 uDispWidth,
	u32 uDispHeight,
	bool bEncRot90En,
	bool bMbBitReport,
	bool bSliceInfoReport,
	bool bAudEnable,
	bool bSkipDisable)
{
	u32 uRefFrameBufStAddr;
	u32 uRefFrameNum;
    u32 uWidth;
	u32 uHeight;
	u32 i;
	u32 uLongerLength;
	u32 uStride;

	MFC_InitEncSeq(uProcessIdx, eEncMode, uStreamBufStAddr, uStreamBufSize, bEncRot90En,
		bMbBitReport, bSliceInfoReport, bAudEnable, bSkipDisable);
	uRefFrameBufStAddr = oMfc.m_uStreamBufEndAddr[uProcessIdx];

	// No reordering. Double buffer used.
    // FRAME BUFFER SET    
    //      FRAME 0/1 : RECONSTRUCT (Post Processor input)
    oMfc.m_uRefFrameNum[uProcessIdx] = 2;
	uRefFrameNum = oMfc.m_uRefFrameNum[uProcessIdx];
    uWidth = (bEncRot90En) ? uDispHeight : uDispWidth;
	uHeight = (bEncRot90En) ? uDispWidth : uDispHeight;	
    MFC_InitEncFrameBuffer(uProcessIdx,  uRefFrameNum, uWidth, uHeight, uRefFrameBufStAddr);

	// Clear recon frame
	for (i=0; i<uRefFrameNum; i++)
	{
		MFC_ClearFrameBuffer(uProcessIdx, i);
	}	

	// set stride to max(h,w) instead of h
	uLongerLength = (uDispWidth > uDispHeight) ? uDispWidth : uDispHeight;
	uStride = (bEncRot90En) ? uLongerLength : uDispWidth;

	MFC_IssueCmdOfSetFrameBuffer(uProcessIdx, uRefFrameNum, uStride);

}

void MFC_IssueCmdOfSetFrameBuffer(u32 uProcessIdx, u32 uNumOfRefReconFrame, u32 uStride)
{
	u32 i;
	// Reference and Recon frames start addr setting for Command "SET_FRAME_BUF"
	for (i=0; i<uNumOfRefReconFrame; i++)
	{
		mfcOutp32(oMfc.m_uParameterBufStartAddr+i*3*4, oMfc.m_uFrameAddrY[uProcessIdx][i]);
		mfcOutp32(oMfc.m_uParameterBufStartAddr+i*3*4+4, oMfc.m_uFrameAddrCb[uProcessIdx][i]);
		mfcOutp32(oMfc.m_uParameterBufStartAddr+i*3*4+8, oMfc.m_uFrameAddrCr[uProcessIdx][i]);
	}

	mfcOutp32(SET_FRAME_BUF_NUM, uNumOfRefReconFrame);
	mfcOutp32(SET_FRAME_BUF_STRIDE, uStride);
	MFC_IssueCmd(uProcessIdx, SET_FRAME_BUF);
}

void MFC_EncodeOneFrame(u32 uProcessIdx, u32 uAddrOfSrcYFrame, u32* uRecFrameIdx)
{
	MFC_StartEncodingOneFrame(uProcessIdx, uAddrOfSrcYFrame);
    MFC_WaitForReady();
	MFC_DoPostProcessingOfEncoding(uProcessIdx, uRecFrameIdx);
}

void MFC_StartEncodingOneFrame(u32 uProcessIdx, u32 uAddrOfSrcYFrame)
{
	u32 uAddrOfSrcCbFrame, uAddrOfSrcCrFrame;

	mfcOutp32(ENC_PIC_SRC_ADDR_Y, uAddrOfSrcYFrame);
	uAddrOfSrcCbFrame = uAddrOfSrcYFrame+oMfc.m_uStride[uProcessIdx]*oMfc.m_uHeight[uProcessIdx];
	mfcOutp32(ENC_PIC_SRC_ADDR_CB, uAddrOfSrcCbFrame);
	uAddrOfSrcCrFrame = uAddrOfSrcYFrame+oMfc.m_uStride[uProcessIdx]*oMfc.m_uHeight[uProcessIdx]*5/4;
	mfcOutp32(ENC_PIC_SRC_ADDR_CR, uAddrOfSrcCrFrame);

	if (oMfc.m_eCodecMode[uProcessIdx] == MP4_ENC)
	{
		MFC_SetEncPicQs(MP4_ENC, oMfc.m_EncCfg[uProcessIdx].VopQuant);
	}
	else
	{
		MFC_SetEncPicQs(AVC_ENC, oMfc.m_EncCfg[uProcessIdx].PicQpY);
	}

	MFC_StartIssuingCmd(uProcessIdx, PIC_RUN);
}


void MFC_DoPostProcessingOfEncoding(u32 uProcessIdx, u32* uRecFrameIdx)
{
	MFC_GetEncReconFrameIndex(&oMfc.m_uFrameIndex[uProcessIdx]);	
	*uRecFrameIdx = oMfc.m_uFrameIndex[uProcessIdx];
}


void MFC_InitEncSeq(
	u32 uProcessIdx,
	MFC_CODEC_MODE eEncMode,
	u32 uStreamBufStAddr,
	u32 uStreamBufSize,
	bool bEncRot90En,
	bool bMbBitReport,
	bool bSliceInfoReport,
	bool bAudEnable,
	bool bSkipDisable)
{
	u32 uSkipDisableBit;
	u32 uMbBitReportBit;
	u32 uSliceInfoReportBit;
	u32 uAudEnableBit;	
	u32 uEncSeqOptionValue;
	bool stat;

	Assert(uProcessIdx < MAX_PROCESS_NUM);
	Assert(eEncMode == AVC_ENC || eEncMode == MP4_ENC);

	oMfc.m_eCodecMode[uProcessIdx] = eEncMode;

	oMfc.m_uStreamBufStAddr[uProcessIdx] = uStreamBufStAddr;
	oMfc.m_uStreamBufEndAddr[uProcessIdx] = uStreamBufStAddr + uStreamBufSize;
	oMfc.m_uStreamBufByteSize[uProcessIdx] = uStreamBufSize;		

	oMfc.m_uBitRdPtr[uProcessIdx] = 
		(uProcessIdx == 0) ? BITS_RD_PTR0 :
		(uProcessIdx == 1) ? BITS_RD_PTR1 :
		(uProcessIdx == 2) ? BITS_RD_PTR2 :
		(uProcessIdx == 3) ? BITS_RD_PTR3 :
		(uProcessIdx == 4) ? BITS_RD_PTR4 :
		(uProcessIdx == 5) ? BITS_RD_PTR5 :	
		(uProcessIdx == 6) ? BITS_RD_PTR6 : BITS_RD_PTR7;
	oMfc.m_uBitWrPtr[uProcessIdx] = 
		(uProcessIdx == 0) ? BITS_WR_PTR0 :
		(uProcessIdx == 1) ? BITS_WR_PTR1 :
		(uProcessIdx == 2) ? BITS_WR_PTR2 :
		(uProcessIdx == 3) ? BITS_WR_PTR3 :
		(uProcessIdx == 4) ? BITS_WR_PTR4 :
		(uProcessIdx == 5) ? BITS_WR_PTR5 :			
		(uProcessIdx == 6) ? BITS_WR_PTR6 : BITS_WR_PTR7;		
		
    mfcOutp32(oMfc.m_uBitWrPtr[uProcessIdx], oMfc.m_uStreamBufStAddr[uProcessIdx]);
    mfcOutp32(oMfc.m_uBitRdPtr[uProcessIdx], oMfc.m_uStreamBufStAddr[uProcessIdx]+uStreamBufSize);


    // ENCODER PARAMETER SET
    // Qs will be set in the stage of PIC_RUN
    if (oMfc.m_eCodecMode[uProcessIdx] == MP4_ENC)
	{
		// ShortVideoHeader - 0 : MPEG4 SP, 1 : MPEG4 short video header/H.263P3        
		MFC_SetEncCodStd(oMfc.m_EncCfg[uProcessIdx].ShortVideoHeader);		
        mfcOutp32(ENC_SEQ_MP4_PARA, 
			(oMfc.m_EncCfg[uProcessIdx].IntraDcVlcThr << 2) | 
			(oMfc.m_EncCfg[uProcessIdx].RevVlcEn << 1) | 
			oMfc.m_EncCfg[uProcessIdx].DataPartEn);
        mfcOutp32(ENC_SEQ_263_PARA, 
			(oMfc.m_EncCfg[uProcessIdx].AnnexI << 3) | 
			(oMfc.m_EncCfg[uProcessIdx].AnnexJ << 2) | 
			(oMfc.m_EncCfg[uProcessIdx].AnnexK << 1) | 
			oMfc.m_EncCfg[uProcessIdx].AnnexT);		
    } 
	else if (oMfc.m_eCodecMode[uProcessIdx] == AVC_ENC)
	{
		MFC_SetEncCodStd(2); // 2 means H.264 Encoding		
		MFC_SetEnc264Parameter(
			oMfc.m_EncCfg[uProcessIdx].ChromaQpOffset, 
			oMfc.m_EncCfg[uProcessIdx].ConstIntraPredFlag, 
			oMfc.m_EncCfg[uProcessIdx].DisableDeblk,
			oMfc.m_EncCfg[uProcessIdx].DeblkOffsetA,
			oMfc.m_EncCfg[uProcessIdx].DeblkOffsetB);	
		mfcOutp32(ENC_SEQ_FMO, 
			((oMfc.m_EncCfg[uProcessIdx].FmoType)<<5)|
			((oMfc.m_EncCfg[uProcessIdx].NumOfSliceGroup)<<1)|
			((oMfc.m_EncCfg[uProcessIdx].FmoEnable)<<0));
    }
	if (!bEncRot90En)
	{
		MFC_SetEncSrcFormat(oMfc.m_EncCfg[uProcessIdx].PicX, oMfc.m_EncCfg[uProcessIdx].PicY, oMfc.m_EncCfg[uProcessIdx].FrameRate);
	}
	else
	{
		MFC_SetEncSrcFormat(oMfc.m_EncCfg[uProcessIdx].PicY, oMfc.m_EncCfg[uProcessIdx].PicX, oMfc.m_EncCfg[uProcessIdx].FrameRate);
	}
//	DbgMfc("frame rate=%d, picX=%d, picY=%d\n", 
//		oMfc.m_EncCfg[uProcessIdx].FrameRate, oMfc.m_EncCfg[uProcessIdx].PicX, oMfc.m_EncCfg[uProcessIdx].PicY);

    mfcOutp32(ENC_SEQ_SLICE_MODE, 
		(oMfc.m_EncCfg[uProcessIdx].SliceSizeNum << 2) | 
		(oMfc.m_EncCfg[uProcessIdx].SliceSizeMode << 1) | 
		oMfc.m_EncCfg[uProcessIdx].SliceMode);    
	MFC_SetEncGopNum(oMfc.m_EncCfg[uProcessIdx].GopPicNum);
	uSkipDisableBit = (oMfc.m_bSkipDisable[uProcessIdx]) ? 1 : 0;
    mfcOutp32(ENC_SEQ_RC_PARA,
		(uSkipDisableBit << 31) |
		(oMfc.m_EncCfg[uProcessIdx].RcInitDelay << 16) | 
		(oMfc.m_EncCfg[uProcessIdx].RcBitRate << 1) | 
		oMfc.m_EncCfg[uProcessIdx].RcEnable);
    mfcOutp32(ENC_SEQ_RC_BUF_SIZE, oMfc.m_EncCfg[uProcessIdx].RcBufSize);
    mfcOutp32(ENC_SEQ_INTRA_MB, oMfc.m_EncCfg[uProcessIdx].IntraRefreshNum);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜av在线| 一本久久综合亚洲鲁鲁五月天| 欧美人体做爰大胆视频| 亚洲精品日产精品乱码不卡| 成人app软件下载大全免费| 2024国产精品视频| 激情综合色综合久久| 欧美一区二区三区免费大片| 视频一区中文字幕| 欧美精品久久一区| 奇米影视一区二区三区小说| 欧美日韩激情一区二区| 亚洲一区二区在线观看视频| 欧美性xxxxxxxx| 亚洲国产成人av| 欧美精品精品一区| 日产精品久久久久久久性色| 欧美一区二区播放| 久久精品国产亚洲高清剧情介绍| 日韩视频免费直播| 国内精品写真在线观看| 久久久久久久久久电影| 国产成人午夜高潮毛片| 麻豆国产精品一区二区三区| 欧美成人在线直播| 国内精品第一页| 国产亚洲精品精华液| 成人在线视频一区| 亚洲图片你懂的| 欧美日韩中文字幕一区| 日本欧美肥老太交大片| 精品国产91亚洲一区二区三区婷婷 | av网站免费线看精品| 国产精品久久久久久久久久免费看 | 日韩电影免费一区| 精品黑人一区二区三区久久| 韩国成人精品a∨在线观看| 久久精品亚洲精品国产欧美| 波多野结衣中文字幕一区| 亚洲精品国产无天堂网2021 | 色综合天天综合狠狠| 亚洲夂夂婷婷色拍ww47 | 91精品国产全国免费观看| 久久国产三级精品| 中文一区二区在线观看| 色乱码一区二区三区88| 婷婷开心激情综合| 久久久久久久久久电影| 色婷婷亚洲一区二区三区| 日韩在线一区二区| 国产欧美一区二区三区在线看蜜臀| 99精品视频一区二区| 午夜成人在线视频| 国产喂奶挤奶一区二区三区| 一本大道久久a久久综合| 五月天婷婷综合| 国产日韩欧美激情| 欧美亚洲国产一区二区三区va| 免费观看30秒视频久久| 中文字幕在线一区| 在线成人av网站| 国产91富婆露脸刺激对白| 亚洲国产欧美一区二区三区丁香婷| 欧美sm极限捆绑bd| 日本韩国欧美一区二区三区| 麻豆国产精品一区二区三区| 综合久久给合久久狠狠狠97色| 欧美一区二区啪啪| 99久久精品久久久久久清纯| 日本aⅴ免费视频一区二区三区| 亚洲国产精品精华液ab| 欧美精品第一页| av一二三不卡影片| 蜜桃免费网站一区二区三区| 日韩伦理av电影| 久久中文字幕电影| 欧美丝袜自拍制服另类| 国产成人高清视频| 日本亚洲一区二区| 亚洲日本va午夜在线电影| 欧美成人国产一区二区| 色av综合在线| 岛国av在线一区| 蜜桃视频一区二区三区在线观看 | 成人欧美一区二区三区视频网页| 91精品国产手机| 97se狠狠狠综合亚洲狠狠| 国产九色sp调教91| 视频一区视频二区中文| 日韩毛片精品高清免费| 久久精品日产第一区二区三区高清版 | 国产精品九色蝌蚪自拍| 日韩欧美精品在线视频| 欧美性受xxxx黑人xyx| 成人久久18免费网站麻豆| 久久精品国产精品青草| 午夜精品久久久久久不卡8050| 亚洲国产激情av| 337p粉嫩大胆噜噜噜噜噜91av| 欧美高清精品3d| 在线精品视频一区二区| jiyouzz国产精品久久| 国产一区二区三区久久久| 日本色综合中文字幕| 亚洲国产精品久久不卡毛片| 综合在线观看色| 国产精品不卡视频| 国产欧美日韩视频在线观看| 精品国产乱子伦一区| 91精品蜜臀在线一区尤物| 欧美综合在线视频| 91丨porny丨在线| 欧美一级高清片| 欧美挠脚心视频网站| 欧洲精品一区二区三区在线观看| 99精品视频在线免费观看| 成人免费的视频| 国产99久久久精品| 国产乱一区二区| 狠狠色狠狠色综合系列| 六月丁香婷婷色狠狠久久| 日韩成人午夜电影| 青青青伊人色综合久久| 石原莉奈在线亚洲二区| 天天av天天翘天天综合网| 亚洲成人7777| 亚洲成人动漫在线免费观看| 午夜精品爽啪视频| 亚洲成人一区在线| 亚洲第一搞黄网站| 亚洲成人在线免费| 日韩va欧美va亚洲va久久| 日韩精品免费专区| 日韩电影免费在线观看网站| 欧美aaa在线| 久久精品国产亚洲高清剧情介绍 | 天天影视涩香欲综合网| 日韩精品色哟哟| 久久99国产精品尤物| 久久国产尿小便嘘嘘| 韩国中文字幕2020精品| 国产精品自拍av| 成人午夜在线播放| 96av麻豆蜜桃一区二区| 91黄色激情网站| 欧美猛男gaygay网站| 91精品一区二区三区久久久久久| 欧美一区二区三区四区在线观看 | 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 色哟哟国产精品免费观看| 在线观看国产91| 在线播放91灌醉迷j高跟美女| 日韩一区二区三区av| 精品日韩欧美一区二区| 国产日韩欧美电影| 成人免费一区二区三区视频 | 国产精品18久久久久久久久| 国产高清一区日本| 不卡高清视频专区| 欧美色网站导航| 欧美一区二区三区啪啪| 久久久另类综合| 亚洲欧美日本在线| 午夜精品视频在线观看| 国产在线播放一区二区三区| 成人国产精品免费观看视频| 日本精品一区二区三区四区的功能| 欧美人xxxx| 欧美精品一区二区三区蜜桃视频| 中文字幕不卡的av| 一二三四社区欧美黄| 蜜桃久久精品一区二区| 成人av电影免费在线播放| 欧美日韩欧美一区二区| 精品成人免费观看| 一色屋精品亚洲香蕉网站| 偷偷要91色婷婷| 欧美老肥妇做.爰bbww| 2019国产精品| 亚洲男同性恋视频| 免费成人在线影院| 成人黄色软件下载| 欧美女孩性生活视频| 欧美激情综合五月色丁香小说| 一区二区久久久久久| 国产一区二区导航在线播放| 日本国产一区二区| 亚洲精品在线观| 亚洲精选一二三| 激情欧美一区二区| 91福利视频网站| 欧美大片日本大片免费观看| 日韩一区在线播放| 老司机精品视频线观看86| 99精品欧美一区二区蜜桃免费| 欧美一区二区三区小说| 亚洲三级电影全部在线观看高清| 免费黄网站欧美| 在线视频一区二区三| 久久午夜国产精品|