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

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

?? encoder.c

?? 基于Linux的ffmepg decoder
?? C
?? 第 1 頁 / 共 5 頁
字號:
		pFrame->length = data_64b + ((bits+7)>>3);
	}
	#else
      #error "Please define the platfrom flags in project setting (either FPGA_PLATFORM or RTL_PLATFORM)"
    #endif

	if (pFrame->quant == 0) {
		RateControlUpdate(&pEnc->rate_control, (int16_t)pEnc->current1->quant,
						  pFrame->length, pFrame->intra);
	}

	inc_frame_num(pEnc);
	pEnc->iFrameNum++;

	return Faraday_ERR_OK;
}

#define FCODEBITS	3
#define MODEBITS	5

#define INTRA_THRESHOLD 0.5


static int FrameCodeP(Encoder * pEnc, Bitstream * bs, uint32_t * pBits, bool vol_header)
{
  #if defined(CORE_VERSION_1)
    FTMCP100_CODEC *pCodec=(FTMCP100_CODEC *)pEnc->pCodec;
    
    DECLARE_MP4_PTR
  
	MACROBLOCK *pMB, *pMB_mc;
	unsigned int x, y, data_64b;
	int bIntra;
	volatile MDMA *pmdma = MDMA1;

	int32_t bit_header;
	
	unsigned int XDIM=pEnc->mEncParam.u32FrameWidth;
	
	// --------------------------------------------------------------------
	//		load reference block
	//			x  .  .
	//		    x  .  .
	//			x  .  .
	// --------------------------------------------------------------------
	while((pmdma->Status & 0x1) == 0);			// waiting for DMA transfer done
	
	pCodec->cmd0 = pCodec->DMA_COMMAND_local[0] = (uint32_t) pEnc->reference->reconstruct.y - (256*XDIM/16);
	pCodec->DMA_COMMAND_local[1] = REF_Y;
	pCodec->DMA_COMMAND_local[2] = ((16+1-4)<<24) | 4 << 20 | ((XDIM*4)-63)<<8 | 64;	//
	pCodec->DMA_COMMAND_local[3] = 0x4A50000 | 192;			/// 2D to 2D transfer
	

	pCodec->cmd4 = pCodec->DMA_COMMAND_local[4] = (uint32_t) pEnc->reference->reconstruct.u - (64*XDIM/16);		//	4 - 7 for Ref U Load Next MB
	pCodec->DMA_COMMAND_local[5] = REF_U;
	pCodec->DMA_COMMAND_local[6] = (uint32_t) ((8+1-2)<<24) | 2 << 20 | ((XDIM)-15)<<8 | 16;
	pCodec->DMA_COMMAND_local[7] = 0x4A50000 | 48;										//  chain enable, 2*16
	

	pCodec->cmd8 = pCodec->DMA_COMMAND_local[8] = (uint32_t) pEnc->reference->reconstruct.v - (64*XDIM/16);		//	16 - 19 for Ref V Load Next MB
	pCodec->DMA_COMMAND_local[9] = REF_V;
	pCodec->DMA_COMMAND_local[10] = (uint32_t) ((8+1-2)<<24) | 2 << 20 | ((XDIM)-15)<<8 | 16;
	pCodec->DMA_COMMAND_local[11] = 0x4A50000 | 48;					//  chain disable

	// --------------------------------------------------------------------
	//		load current mb
	//			x .
	// --------------------------------------------------------------------
	pCodec->cmd12 = pCodec->DMA_COMMAND_local[12] = (uint32_t) pEnc->current1->image.y;
	pCodec->DMA_COMMAND_local[13] = (uint32_t) CUR_Y0;
	pCodec->DMA_COMMAND_local[15] = (uint32_t) 0x4A00040;						//  chain enable
	pCodec->cmd16 = pCodec->DMA_COMMAND_local[16] = (uint32_t) pEnc->current1->image.u;
	pCodec->DMA_COMMAND_local[17] = (uint32_t) (CUR_U0);	
	pCodec->DMA_COMMAND_local[19] = (uint32_t) 0x4A00010;						//  chain enable
	pCodec->cmd20 = pCodec->DMA_COMMAND_local[20] = (uint32_t) pEnc->current1->image.v;
	pCodec->DMA_COMMAND_local[21] = (uint32_t) (CUR_V0);
	pCodec->DMA_COMMAND_local[23] = (uint32_t) 0x4A00010;						//  chain disenable

	pCodec->DMA_COMMAND_local[24] = (uint32_t) pCodec->pred_value_phy;				//	predictor
	pCodec->DMA_COMMAND_local[25] = LOCAL_PREDICTOR0;
	pCodec->DMA_COMMAND_local[27] = (uint32_t) 0x840010;						//  chain disenable
    

    pCodec->DMA_COMMAND_local[28] = (uint32_t) pEnc->current1->reconstruct.y - 256;
	pCodec->DMA_COMMAND_local[32] = (uint32_t) pEnc->current1->reconstruct.u - 64;
	pCodec->DMA_COMMAND_local[36] = (uint32_t) pEnc->current1->reconstruct.v - 64;
    
	pCodec->DMA_COMMAND_local[29] = (uint32_t) INTER_Y0;
	pCodec->DMA_COMMAND_local[33] = (uint32_t) INTER_U0;
	pCodec->DMA_COMMAND_local[37] = (uint32_t) INTER_V0;
	pCodec->DMA_COMMAND_local[39] = (uint32_t) 0x4B00010;						//  chain disenable

	pCodec->DMA_COMMAND_local[41] = LOCAL_PREDICTOR8;
	pCodec->DMA_COMMAND_local[43] = (uint32_t) 0x940010;						//  chain enable

	DMA_MOVE(0, 0x4B0001C)

	RTL_DEBUG_OUT(0x95000000 | (uint32_t) pCodec->pred_value_phy)

	pEnc->current1->fcode = pEnc->mbParam.m_fcode;

	READ_ASADR(*pBits)						//	64 byte
	READ_BALR(x)							//	compressed data in local memory (words)
	READ_VOADR(y)							//	compressed data in local memory (bits)
	x = (x & 0x3c);
	y = y & 0xff;
	bit_header = y + x*8;							//	total bits in local memory

	pEnc->current1->coding_type = P_VOP;
	if (pEnc->mbParam.h263) {
		pEnc->mbParam.m_rounding_type = 0;
		pEnc->current1->rounding_type = pEnc->mbParam.m_rounding_type;
		BitstreamWriteShortHeader(&pEnc->mbParam, pEnc->current1, 1,pEnc->pCodec);
	} else {
		pEnc->mbParam.m_rounding_type = 1 - pEnc->mbParam.m_rounding_type;
		pEnc->current1->rounding_type = pEnc->mbParam.m_rounding_type;
		if (vol_header)
			BitstreamWriteVolHeader(&pEnc->mbParam, pEnc->current1,pEnc->pCodec);
		BitstreamWriteVopHeader(&pEnc->mbParam, pEnc->current1, 1,pEnc->pCodec);
	}

	// --------------------------------------------------------------------
	//		load reference block
	//			.  x  .
	//		    .  x  .
	//			.  x  .
	// --------------------------------------------------------------------
	while((pmdma->Status & 0x1) == 0);
	pCodec->cmd0 += 256;
	pCodec->DMA_COMMAND_local[0] = pCodec->cmd0;
	pCodec->cmd4 += 64;
	pCodec->DMA_COMMAND_local[4] = pCodec->cmd4;
	pCodec->cmd8 += 64;
	pCodec->DMA_COMMAND_local[8] = pCodec->cmd8;
	pCodec->DMA_COMMAND_local[1] = pCodec->DMA_COMMAND_local[1] + 16;		//	REF_Y + 16
	pCodec->DMA_COMMAND_local[5] = pCodec->DMA_COMMAND_local[5] + 8;		//	REF_U + 8
	pCodec->DMA_COMMAND_local[9] = pCodec->DMA_COMMAND_local[9] + 8;		//	REF_V + 8
	pCodec->DMA_COMMAND_local[11] = 0x850000 | 48;

//	while((pmdma->Status & 0x1) == 0);
	DMA_MOVE(0, 0x4B0000C)

	SET_MCCADDR(CUR_Y2)			//  MC current block start address register
	SET_QAR(DZQAR)				//  Quantization block address register


	RTL_DEBUG_OUT(0x91000000)

	
	pCodec->even_odd_1 = 0;
	pCodec->even_odd_I = 0;
	pCodec->acdc_status = 7;
	pCodec->DMA_COMMAND_local[11] = 0x4A50000 | 48;					//  chain disable
	pMB = pEnc->current1->mbs;
	pMB->quant = pEnc->current1->quant;
	pCodec->Raddr = (((uint32_t) REF_Y + 64*16) >> 2) & 0xfff;
	pCodec->Raddr23 = (((uint32_t) REF_Y + 64*(16+8)) >> 2) & 0xfff; //for block 2,3
	
	#ifdef DUMP_PMV_RESULT                
    fprintf(pmv_result_file,"Macroblock %d (x=%d,y=%d)\n",0,0,0);
    #endif

	bIntra = MotionEstimation_block0(pMB,pEnc);
	
	#ifdef DUMP_ME_RESULT
      fprintf(me_result_file,"Macroblock %d (x=%d,y=%d) :",0,0,0);
      
	  if(pEnc->mbParam.enable_4mv)	  
        fprintf(me_result_file,"0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x\n",(pMB->mv16x_0&0x07f), (pMB->mv16y_0&0x07f), (pMB->mv16x_1&0x07f), (pMB->mv16y_1&0x07f), (pMB->mv16x_2&0x07f), (pMB->mv16y_2&0x07f), (pMB->mv16x_3&0x07f), (pMB->mv16y_3&0x07f));
      else
        // to be compatible with C Model encoder's output format
        fprintf(me_result_file,"0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x\n",(pMB->mv16x_3&0x07f), (pMB->mv16y_3&0x07f), (pMB->mv16x_3&0x07f), (pMB->mv16y_3&0x07f), (pMB->mv16x_3&0x07f), (pMB->mv16y_3&0x07f), (pMB->mv16x_3&0x07f), (pMB->mv16y_3&0x07f));
    #endif
	

	RTL_DEBUG_OUT(0x92000000)

	x = 1;
	data_64b = 2;
  	for (y = 0; y < pEnc->mbParam.mb_height; y++) {
		for ( ; x < pEnc->mbParam.mb_width; x++) {
			pMB->quant = pEnc->current1->quant;
            if (pEnc->mbParam.resyn==1)
			{
  		        if (!pEnc->mbParam.h263)
				{
					if ((y!=0) & (x==1))
					{
						BitstreamPadAlways(pCodec);
						BitstreamPutBits(VIDO_RESYN_MARKER, 17,pCodec);
						BitstreamPutBits((x-1) + y*pEnc->mbParam.mb_width, log2bin(pEnc->mbParam.mb_width *  pEnc->mbParam.mb_height - 1),pCodec);
						BitstreamPutBits(pMB->quant, 5,pCodec);
						BitstreamPutBit(0,pCodec);
					}
				}
				else
				{
					if ((y!=0) & (x==1))
					{
						BitstreamPutBits(VIDO_RESYN_MARKER, 17,pCodec);
						BitstreamPutBits(y, 5,pCodec);
						BitstreamPutBits(0, 2,pCodec);		// ID
						BitstreamPutBits(pMB->quant, 5,pCodec);
					}
				}
			}
			pMB_mc = pMB;
			pMB++;
			pCodec->even_odd_1 ^= 1;
			

			RTL_DEBUG_OUT(0x91000000 | y << 12 | x)
			
			#ifdef DUMP_PMV_RESULT                
            fprintf(pmv_result_file,"Macroblock %d (x=%d,y=%d)\n",x+y*pEnc->mbParam.mb_width,x,y);
            #endif
            
            bIntra = MotionEstimation(pMB, pMB_mc, x, y, &pEnc->mbParam, pEnc, data_64b);
			
			#ifdef DUMP_ME_RESULT
            fprintf(me_result_file,"Macroblock %d (x=%d,y=%d) :",x+y*pEnc->mbParam.mb_width,x,y);
	        if(pEnc->mbParam.enable_4mv)
              fprintf(me_result_file,"0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x\n",(pMB->mv16x_0&0x07f), (pMB->mv16y_0&0x07f), (pMB->mv16x_1&0x07f), (pMB->mv16y_1&0x07f), (pMB->mv16x_2&0x07f), (pMB->mv16y_2&0x07f), (pMB->mv16x_3&0x07f), (pMB->mv16y_3&0x07f));
            else
              // to be compatible with C Model encoder's output format
              fprintf(me_result_file,"0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x\n",(pMB->mv16x_3&0x07f), (pMB->mv16y_3&0x07f), (pMB->mv16x_3&0x07f), (pMB->mv16y_3&0x07f), (pMB->mv16x_3&0x07f), (pMB->mv16y_3&0x07f), (pMB->mv16x_3&0x07f), (pMB->mv16y_3&0x07f));
            #endif
            
			data_64b++;

			RTL_DEBUG_OUT(0x92000000 | y << 12 | x)
		}
		x = 0;
	}
    pMB_mc = pMB;
	pCodec->even_odd_1 ^= 1;
	

	bIntra = MotionEstimation_blocklast(pMB_mc, &pEnc->mbParam, pEnc);

	
	BitstreamPadAlways(pCodec);
	
	/// wait for auto buffer clean
	do {
	  READ_VLDSTS(y)
	} while(!(y&0x0400));

	READ_ASADR(data_64b)					//	64 byte
	READ_BALR(x)							//	compressed data in local memory (words)
	READ_VOADR(y)							//	compressed data in local memory (bits)
	x = (x & 0x3c);
	y = y & 0x1f;
	y = y + x*8;							//	total bits in local memory
	data_64b = data_64b - *pBits;				//	total bytes in system memory
	*pBits = y + data_64b * 8 - bit_header;
	
	#ifdef DUMP_ME_RESULT
      fprintf(me_result_file,"**********************************************************************\n");
    #endif

	return 0;					// inter
  
  #elif defined(CORE_VERSION_2) // core version 2 of FrameCodeP() procedure
  
    FTMCP100_CODEC *pCodec=(FTMCP100_CODEC *)pEnc->pCodec;
    
    DECLARE_MP4_PTR
  
	MACROBLOCK *pMB, *pMB_mc;
	unsigned int x, y, data_64b;
	int bIntra;
	volatile MDMA *pmdma = MDMA1;	

	int32_t bit_header;

	unsigned int XDIM=pEnc->mEncParam.u32FrameWidth;
	
	// --------------------------------------------------------------------
	//		load reference block
	//			x  .  .
	//		    x  .  .
	//			x  .  .
	// --------------------------------------------------------------------
	POLL_MARKER_S
	while((pmdma->Status & 0x1) == 0);			/// waiting for DMA transfer done
	POLL_MARKER_E
	

	  //pCodec->DMA_COMMAND_local[38] = (uint32_t) (8+1-4) << 24 | 4 << 20;
	  pCodec->DMA_COMMAND_local[39] = (uint32_t) 0x840010;
	  //pCodec->DMA_COMMAND_local[26] = (uint32_t) 0;
	  pCodec->DMA_COMMAND_local[27] = (uint32_t) 0x4B01040; // make it group ID 1, disable this command
	  //pCodec->DMA_COMMAND_local[30] = (uint32_t) 0;
	  pCodec->DMA_COMMAND_local[31] = (uint32_t) 0x4B01010; // make it group ID 1, disable this command

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产综合一区二区 | 欧美伊人久久大香线蕉综合69| 午夜婷婷国产麻豆精品| 久久亚洲二区三区| 欧美精品在线观看播放| caoporn国产精品| 美女高潮久久久| 亚洲电影在线免费观看| 国产精品久久久久久亚洲伦| 日韩欧美一级二级三级久久久| 99精品久久只有精品| 国产一区二区中文字幕| 午夜a成v人精品| 亚洲男女一区二区三区| 国产婷婷色一区二区三区四区 | 久久草av在线| 日韩精品电影一区亚洲| 亚洲精品一卡二卡| 国产精品毛片久久久久久| 精品少妇一区二区三区日产乱码 | 亚洲无人区一区| 国产精品麻豆一区二区| 国产欧美视频一区二区| 日韩一级黄色大片| 欧美少妇性性性| 一本大道久久a久久综合婷婷| 国产激情一区二区三区桃花岛亚洲| 日韩精品电影在线观看| 天天影视网天天综合色在线播放| 夜夜精品视频一区二区| 国产精品色婷婷| 国产欧美一区二区精品秋霞影院| 26uuuu精品一区二区| 精品处破学生在线二十三| 有坂深雪av一区二区精品| 亚洲视频在线一区二区| xnxx国产精品| 日韩欧美国产高清| 日韩女优视频免费观看| 日韩亚洲电影在线| 欧美成人vps| 久久综合九色欧美综合狠狠| 精品处破学生在线二十三| 欧美xxxxx裸体时装秀| 欧美tickle裸体挠脚心vk| 精品国产污污免费网站入口| 2020日本不卡一区二区视频| 久久久久国产一区二区三区四区 | 国产a精品视频| 国产一区 二区| 国产成人啪午夜精品网站男同| 国产xxx精品视频大全| 成人一区二区三区视频| av欧美精品.com| 91成人在线观看喷潮| 欧美做爰猛烈大尺度电影无法无天| 色综合久久久网| 欧美日韩一区二区三区在线| 欧美一区二区三区影视| 日韩美女视频在线| 91精品国产全国免费观看| 精品国产在天天线2019| 久久女同精品一区二区| 国产色产综合色产在线视频| 国产精品激情偷乱一区二区∴| 亚洲图片激情小说| 午夜精品久久久久久不卡8050| 亚洲电影一级黄| 激情国产一区二区| 色综合色狠狠综合色| 欧美猛男gaygay网站| 精品久久久久久久久久久久久久久| 国产午夜久久久久| 一区二区三区中文字幕电影| 人人精品人人爱| 成人黄色av网站在线| 精品视频色一区| 国产欧美视频一区二区三区| 亚洲永久精品大片| 久久不见久久见免费视频7| 99国产麻豆精品| 91精品麻豆日日躁夜夜躁| 国产性天天综合网| 亚洲国产毛片aaaaa无费看| 久久国产精品露脸对白| 色婷婷av一区二区| 一区二区三区四区精品在线视频| 国产精品电影一区二区| 亚洲成人黄色影院| 欧美日本国产一区| 国产视频一区二区在线观看| 亚洲激情综合网| 国产一区不卡在线| 欧美美女激情18p| 国产精品久久久久7777按摩| 日韩av不卡一区二区| 97精品久久久久中文字幕| 91精品国产91久久综合桃花| 国产精品视频一二三区| 美女一区二区视频| 91久久精品一区二区三| 国产日韩欧美精品电影三级在线| 亚洲第四色夜色| 成人黄色网址在线观看| 日韩视频永久免费| 亚洲成a人片在线不卡一二三区| 国产成人福利片| 日韩欧美一级片| 首页国产丝袜综合| 91在线精品秘密一区二区| 国产欧美综合在线观看第十页| 秋霞电影网一区二区| 欧美亚洲综合久久| www.日本不卡| 欧美视频你懂的| 日本一区二区不卡视频| 日日夜夜免费精品| 国产一区二区三区免费在线观看| 欧美日本高清视频在线观看| 日韩理论电影院| 成人激情综合网站| 国产欧美一区二区三区在线老狼| 久久超级碰视频| 日韩欧美国产一区二区三区| 日韩精品亚洲专区| 欧美年轻男男videosbes| 亚洲精品乱码久久久久久| 成人精品国产免费网站| 国产欧美一区二区精品性| 国产一区二区三区免费看| 精品国产污污免费网站入口| 久久精品国产澳门| 欧美一区二区成人| 日本va欧美va精品发布| 777xxx欧美| 日本成人中文字幕| 日韩无一区二区| 久久精品国产99国产| 日韩一区二区在线免费观看| 美女在线一区二区| 欧美一区二区视频观看视频| 亚洲一区二三区| 欧美日韩一级二级三级| 天天做天天摸天天爽国产一区| 91麻豆精品国产91久久久资源速度 | 精品久久久网站| 99re热视频精品| 亚洲精品日韩综合观看成人91| 在线精品视频免费播放| 亚洲一区电影777| 91精品久久久久久久久99蜜臂| 日本怡春院一区二区| 欧美成人乱码一区二区三区| 狠狠久久亚洲欧美| 中文天堂在线一区| 日本电影欧美片| 视频一区二区不卡| 精品动漫一区二区三区在线观看| 国产一区在线看| 中文字幕一区二区三区在线播放| 欧洲国内综合视频| 美日韩一区二区三区| 中文字幕欧美区| 在线国产电影不卡| 久久精品国产亚洲高清剧情介绍| 日本一区二区免费在线| 一本色道综合亚洲| 青青草视频一区| 国产片一区二区| 欧美日韩一级片在线观看| 蜜臀国产一区二区三区在线播放| 国产无人区一区二区三区| 色婷婷久久综合| 狠狠色丁香婷婷综合久久片| 中文字幕一区三区| 欧美一级高清片在线观看| 日韩精品福利网| 国产精品国产三级国产普通话三级| 色天天综合久久久久综合片| 久久99国产精品麻豆| 亚洲激情六月丁香| 日韩免费视频一区二区| 91在线免费看| 免费的成人av| 一区二区三区中文字幕| 久久综合色一综合色88| 91久久久免费一区二区| 狠狠色丁香婷综合久久| 亚洲h在线观看| 中文字幕精品一区二区三区精品| 欧美日韩精品欧美日韩精品一综合| 国产在线精品不卡| 婷婷成人激情在线网| 中文字幕在线观看不卡| 日韩欧美国产一区二区三区| 91精彩视频在线观看| 成人免费视频免费观看| 另类小说图片综合网| 亚洲精品一二三区| 欧美国产丝袜视频|