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

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

?? motion_est.c

?? 基于Linux的ffmepg decoder
?? C
字號:
#include "encoder.h"
#include "global.h"

#include "motion.h"
#include "mbfunctions.h"

// --------------------------------------------------------------------
int32_t (*MotionEstimation)(MACROBLOCK *const pMB,
				 MACROBLOCK *const pMB_mc,
		  		 uint32_t x, uint32_t y,
		 		 MBParam * const pParam,
		 		 Encoder *pEnc,
		 		 int32_t counter) = NULL;
int32_t (*MotionEstimation_blocklast)(MACROBLOCK *const pMB_mc,
                 MBParam * const pParam,
				 Encoder *pEnc) = NULL;

int32_t (*MotionEstimation_block0)(MACROBLOCK *const pMB,Encoder * pEnc) = NULL;

//  rounded values for lambda param for weight of motion bits as in modified H.26L
static int32_t lambda_vec16[32] =	
{ 0, (int) (1.00235 + 0.5), (int) (1.15582 + 0.5), (int) (1.31976 + 0.5),
		(int) (1.49591 + 0.5), (int) (1.68601 + 0.5),
	(int) (1.89187 + 0.5), (int) (2.11542 + 0.5), (int) (2.35878 + 0.5),
		(int) (2.62429 + 0.5), (int) (2.91455 + 0.5),
	(int) (3.23253 + 0.5), (int) (3.58158 + 0.5), (int) (3.96555 + 0.5),
		(int) (4.38887 + 0.5), (int) (4.85673 + 0.5),
	(int) (5.37519 + 0.5), (int) (5.95144 + 0.5), (int) (6.59408 + 0.5),
		(int) (7.31349 + 0.5), (int) (8.12242 + 0.5),
	(int) (9.03669 + 0.5), (int) (10.0763 + 0.5), (int) (11.2669 + 0.5),
		(int) (12.6426 + 0.5), (int) (14.2493 + 0.5),
	(int) (16.1512 + 0.5), (int) (18.442 + 0.5), (int) (21.2656 + 0.5),
		(int) (24.8580 + 0.5), (int) (29.6436 + 0.5),
	(int) (36.4949 + 0.5)
};

__inline uint32_t MBTransQuantIntra_p(const MBParam * pParam, FRAMEINFO * frame,FTMCP100_CODEC *pCodec)
{
	uint32_t iQuant = frame->quant;
	int32_t index;
	DECLARE_MP4_PTR

	index = ((pCodec->even_odd_I)<<4) | 3 | (pParam->h263 << 14) | (MODE_INTRA) << 6 | pCodec->acdc_status << 11 | 0 << 15;

	if (pParam->m_quant_type == MPEG4_QUANT) {
		index |= 1 << 3;									//		MPEG Q, AC don't care, INTER
	}
	SET_QCR_0(iQuant<<18)

    #ifdef CORE_VERSION_1
	  SET_MCIADDR(INTER_Y0 + (pCodec->even_odd_1 ^ 1) * stride_MB)		///  MC Interpolation and Result Block Start Address Register
	#elif defined(CORE_VERSION_2)
	  SET_MCIADDR(INTER_Y0 + ((pCodec->triple_buffer_selector+2)%3)*stride_MB) //  MC Interpolation and Result Block Start Address Register
	#endif
	
	return index;
}


#if defined(CORE_VERSION_1)
__inline void
get_pmvdata0_4MV(const MACROBLOCK * const mbs,
         const int mb_width,
         const int x,
         const int counter,
		 VECTOR * const pmv,
		 MBParam * const pParam,FTMCP100_CODEC *pCodec)
#elif defined(CORE_VERSION_2)
__inline void
get_pmvdata0_4MV(const MACROBLOCK * const mbs,
         const int mb_width,
         const int x,
         const int counter,
		 VECTOR * const pmv,
		 MBParam * const pParam)
#else  
  #error "please define the version of core"    
#endif
{
  #if defined(CORE_VERSION_1)
    int rx;
    int tpos, rpos;
    
    if (pParam->resyn==0)
	{
        rx = x + 1;	
        tpos = counter - mb_width;
        if (tpos >= 0) {
            pmv[1].x = mbs[tpos].mv16x_2;
            pmv[1].y = mbs[tpos].mv16y_2;
            pmv[2].x = mbs[tpos].mv16x_3;
            pmv[2].y = mbs[tpos].mv16y_3;
            pCodec->SRC_X[0] = (pmv[1].x & 0x7f) << 7;
            pCodec->SRC_Y[0] = (pmv[1].y & 0x7f) << 7;
            pCodec->SRC_X[1] = (pmv[2].x & 0x7f) << 7;
            pCodec->SRC_Y[1] = (pmv[2].y & 0x7f) << 7;
        } else {
            pmv[1].x = 0;
            pmv[1].y = 0;
            pmv[2].x = 0;
            pmv[2].y = 0;
            pmv[3].x = 0;
            pmv[3].y = 0;
            pCodec->SRC_X[0] = (1 << 27) | (1 << 7) | (1 << 28) | (1 << 14);
            pCodec->SRC_Y[0] = (1 << 27) | (1 << 7) | (1 << 28) | (1 << 14);
            pCodec->SRC_X[1] = (1 << 27) | (0 << 7) | (1 << 28) | (0 << 14);
            pCodec->SRC_Y[1] = (1 << 27) | (0 << 7) | (1 << 28) | (0 << 14);
            return;        
        }
    
        rpos = tpos + 1;
        if (rx != mb_width) {
            pmv[3].x = mbs[rpos].mv16x_2;
            pmv[3].y = mbs[rpos].mv16y_2;
            pCodec->SRC_X[0] |= (pmv[3].x & 0x7f) << 14;
            pCodec->SRC_Y[0] |= (pmv[3].y & 0x7f) << 14;
            pCodec->SRC_X[1] |= (pmv[3].x & 0x7f) << 14;
            pCodec->SRC_Y[1] |= (pmv[3].y & 0x7f) << 14;
        } else {
            pmv[3].x = 0;
            pmv[3].y = 0;
        }
    }
	else
	{
        pmv[1].x = 0;
        pmv[1].y = 0;
		pmv[2].x = 0;
		pmv[2].y = 0;
		pmv[3].x = 0;
		pmv[3].y = 0;
        pCodec->SRC_X[0] = (1 << 27) | (1 << 7) | (1 << 28) | (1 << 14);
        pCodec->SRC_Y[0] = (1 << 27) | (1 << 7) | (1 << 28) | (1 << 14);
        pCodec->SRC_X[1] = (1 << 27) | (0 << 7) | (1 << 28) | (0 << 14);
        pCodec->SRC_Y[1] = (1 << 27) | (0 << 7) | (1 << 28) | (0 << 14);
	}
	pCodec->SRC_X[1] |= (1<<26);
	pCodec->SRC_Y[1] |= (1<<26);
	
  #elif defined(CORE_VERSION_2) // core version 2 of get_pmvdata0_4MV() procedure
    
    int rx;
    int tpos, rpos;

    if (pParam->resyn==0)
      {
        rx = x + 1;	
        tpos = counter - mb_width;
        if (tpos >= 0) {
          pmv[1].x = mbs[tpos].mv16x_2;
          pmv[1].y = mbs[tpos].mv16y_2;
          pmv[2].x = mbs[tpos].mv16x_3;
          pmv[2].y = mbs[tpos].mv16y_3;
          
        } else {
          pmv[1].x = 0;
          pmv[1].y = 0;
          pmv[2].x = 0;
          pmv[2].y = 0;
          pmv[3].x = 0;
          pmv[3].y = 0;
            
          return;        
        }
        rpos = tpos + 1;
        if (rx != mb_width) {
          pmv[3].x = mbs[rpos].mv16x_2;
          pmv[3].y = mbs[rpos].mv16y_2;
            
        } else {
          pmv[3].x = 0;
          pmv[3].y = 0;
        }
      }
    else
      {
        pmv[1].x = 0;
        pmv[1].y = 0;
        pmv[2].x = 0;
        pmv[2].y = 0;
        pmv[3].x = 0;
        pmv[3].y = 0;
      }
      
  #else
  
    #error "please define the version of core"
    
  #endif
}

__inline void
get_pmvdata1_4MV(const int x, int iWcount, int *a, int *b, int *c, int *d, MBParam * const pParam,FTMCP100_CODEC *pCodec)
{
    if ((x+1) >= iWcount) 
    {
        *a = 0;
        *b = 0;
        *c = 0;
        *d = 0;
        
        if (pParam->resyn==1)
		{
			pCodec->ME_command_queue0[1] = 0;
		}
    }
    return;
}

#if defined(CORE_VERSION_1)
__inline void
get_pmvdata0_1MV(const MACROBLOCK * const mbs,
         const int mb_width,
         const int x,
         const int counter,
		 VECTOR * const pmv,
         MBParam * const pParam,FTMCP100_CODEC *pCodec)
#elif defined(CORE_VERSION_2)
__inline void
get_pmvdata0_1MV(const MACROBLOCK * const mbs,
         const int mb_width,
         const int x,
         const int counter,
		 VECTOR * const pmv,
         MBParam * const pParam)
#endif
{
  #if defined(CORE_VERSION_1)

    int rx;
    int tpos, rpos;
    
	if (pParam->resyn==0)
	{
        tpos = counter - mb_width;
        if (tpos >= 0) {
            pmv[2].x = mbs[tpos].mv16x_3;
            pmv[2].y = mbs[tpos].mv16y_3;
            pCodec->SRC_X[0] = (pmv[2].x & 0x7f) << 7;
            pCodec->SRC_Y[0] = (pmv[2].y & 0x7f) << 7;
        } else {
            pmv[2].x = 0;
            pmv[2].y = 0;
            pmv[3].x = 0;
            pmv[3].y = 0;
            pCodec->SRC_X[0] = (1 << 27) | (3 << 7) | (1 << 28) | (3 << 14);
            pCodec->SRC_Y[0] = (1 << 27) | (3 << 7) | (1 << 28) | (3 << 14);
            return;        
        }
        rpos = tpos + 1;
        rx = x + 1;	
        if (rx != mb_width) {
            pmv[3].x = mbs[rpos].mv16x_3;
            pmv[3].y = mbs[rpos].mv16y_3;
            pCodec->SRC_X[0] |= (pmv[3].x & 0x7f) << 14;
            pCodec->SRC_Y[0] |= (pmv[3].y & 0x7f) << 14;
        } else {
            pmv[3].x = 0;
            pmv[3].y = 0;
        }
    }
    else
    {
		pmv[2].x = 0;
		pmv[2].y = 0;
		pmv[3].x = 0;
		pmv[3].y = 0;
		pCodec->SRC_X[0] = (1 << 28) | (1 << 27) | (3 << 7) | (3 << 14);
		pCodec->SRC_Y[0] = (1 << 28) | (1 << 27) | (3 << 7) | (3 << 14);
	}

  #elif defined(CORE_VERSION_2)

    int rx;
    int tpos, rpos;
    
	if (pParam->resyn==0)
      {
        rx = x + 1;	
        tpos = counter - mb_width;
        if (tpos >= 0) {
          pmv[2].x = mbs[tpos].mv16x_3;
          pmv[2].y = mbs[tpos].mv16y_3;
        } else {
          pmv[2].x = 0;
          pmv[2].y = 0;
          pmv[3].x = 0;
          pmv[3].y = 0;
          return;
        }

        rpos = tpos + 1;
        if (rx != mb_width) {
          pmv[3].x = mbs[rpos].mv16x_3;
          pmv[3].y = mbs[rpos].mv16y_3;
        } else {
          pmv[3].x = 0;
          pmv[3].y = 0;
        }
      }
    else
      {
        pmv[2].x = 0;
        pmv[2].y = 0;
        pmv[3].x = 0;
        pmv[3].y = 0;
      }

  #else
  
    #error "please define the version of core"
  
  #endif
}

__inline void
get_pmvdata1_1MV(const int x, int iWcount, int *a, int *b, int *Z,FTMCP100_CODEC *pCodec)
{
  #if defined(CORE_VERSION_1)
    if ((x+1) >= iWcount) {
        *a = 0;
        *b = 0;
        *Z = 0;
        pCodec->ME_command_queue0[3] = 0;
    }
    return;

  #elif defined(CORE_VERSION_2)

    if ((x+1) >= iWcount) {
        *a = 0;
        *b = 0;
        *Z = 0;
    }
    return;
    
  #else
  
    #error "please define the version of core"
  
  #endif
}


// there are quite different structures here for core version 1 , core version 2 
// and DMA optimized version of core version 2.
// If we put them into one file, that would be too large, so we separate them into different files

#if defined(CORE_VERSION_1)
  #include "motion_est_core_1.c"
#elif defined(CORE_VERSION_2)
  #include "motion_est_core_2_optimized.c"
#else  
  #error "please define the version of core , either 'CORE_VERSION_1' or 'CORE_VERSION_2' "    
#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一级在线| 日韩av二区在线播放| 欧美日韩精品一区二区三区蜜桃 | 亚洲男人天堂一区| 5566中文字幕一区二区电影| 国产美女一区二区三区| 一区二区三区精品| www一区二区| 色伊人久久综合中文字幕| 亚洲成人激情综合网| 亚洲精品一区二区三区香蕉 | 色欧美乱欧美15图片| 国产亚洲成年网址在线观看| 日本乱码高清不卡字幕| 裸体歌舞表演一区二区| 亚洲一区二区中文在线| 久久久国产精品麻豆| 欧美视频完全免费看| 大尺度一区二区| 亚洲成人免费观看| 国产亚洲一区二区三区| 777欧美精品| 91首页免费视频| 国产激情视频一区二区在线观看| 亚洲国产精品久久人人爱 | 欧美日韩情趣电影| 懂色av一区二区在线播放| 日本亚洲天堂网| 亚洲乱码一区二区三区在线观看| 久久久另类综合| 日韩欧美国产高清| 欧美日韩免费观看一区三区| 9色porny自拍视频一区二区| 久久er精品视频| 日本欧美久久久久免费播放网| 亚洲欧美日韩国产手机在线| 国产视频一区在线播放| 日韩精品中文字幕一区二区三区| 精品视频在线免费看| 一本久道久久综合中文字幕 | 日韩中文字幕一区二区三区| 自拍偷拍国产精品| 国产精品久久久久国产精品日日| 欧美精品一区二区三区很污很色的| 欧美另类久久久品| 欧美三级日韩在线| 成人免费看视频| 成人18视频日本| 国产成人夜色高潮福利影视| 黄色日韩网站视频| 国内一区二区视频| 久久69国产一区二区蜜臀| 亚洲最大成人综合| 亚洲色图视频网站| 亚洲精品久久久久久国产精华液| 国产精品久久久久天堂| 中文av一区二区| 中文字幕不卡在线播放| 欧美激情中文字幕| 亚洲国产精品国自产拍av| 国产日韩欧美精品一区| 国产人伦精品一区二区| 欧美zozozo| 欧美精品一区二区三| 精品国产乱子伦一区| 久久一二三国产| 久久久亚洲高清| 26uuu国产在线精品一区二区| 2021国产精品久久精品 | 亚洲视频在线观看一区| 综合激情成人伊人| 一区二区三区四区av| 亚洲美女一区二区三区| 亚洲综合在线观看视频| 视频一区免费在线观看| 美国精品在线观看| 国产精品一区二区视频| 99精品视频一区二区| 欧洲国产伦久久久久久久| 欧美一区二区三区四区视频| 亚洲精品一区二区三区香蕉| 中文字幕第一区二区| 一区二区视频在线| 日韩 欧美一区二区三区| 黄色精品一二区| 99精品偷自拍| 欧美精品日日鲁夜夜添| 精品99999| 亚洲欧美日韩国产综合在线| 日韩精品国产精品| 美国一区二区三区在线播放| 成人性生交大片| 欧洲av一区二区嗯嗯嗯啊| 日韩你懂的在线播放| 国产丝袜欧美中文另类| 一区二区成人在线| 麻豆精品一区二区av白丝在线| 国产不卡高清在线观看视频| 欧美日韩久久久一区| 国产日韩欧美精品在线| 亚洲一区二区精品久久av| 精品一区精品二区高清| 色综合天天做天天爱| 日韩精品一区二区三区在线观看| 国产欧美一区二区在线| 视频一区在线播放| 97久久超碰精品国产| 欧美一级理论片| 亚洲人123区| 久久99久国产精品黄毛片色诱| 91视频精品在这里| 久久婷婷色综合| 亚洲一区二区三区三| 国产丶欧美丶日本不卡视频| 在线成人av网站| 日韩一区在线免费观看| 久草精品在线观看| 欧美日韩国产大片| 亚洲欧洲在线观看av| 久久国产精品第一页| 91高清在线观看| 久久免费视频一区| 亚洲高清免费视频| 国产成人在线免费观看| 欧美一区二区在线看| 亚洲免费av高清| 成人精品免费网站| 日韩欧美激情四射| 日韩精品福利网| 欧美日免费三级在线| 亚洲免费观看高清完整版在线观看| 免费成人小视频| 欧洲日韩一区二区三区| 最新久久zyz资源站| 国产成人亚洲精品青草天美| 精品伦理精品一区| 开心九九激情九九欧美日韩精美视频电影| 色域天天综合网| 国产精品成人在线观看| 国产不卡视频一区二区三区| 久久老女人爱爱| 久久99精品久久久| 欧美tickling网站挠脚心| 日韩精品高清不卡| 欧美一区二区视频在线观看| 五月婷婷综合在线| 欧美在线综合视频| 一区二区高清视频在线观看| 在线亚洲一区观看| 综合在线观看色| 色婷婷激情综合| 亚洲一区二区综合| 欧美日韩一区二区在线视频| 亚洲高清免费视频| 欧美精品久久一区二区三区| 亚洲不卡一区二区三区| 欧美日韩情趣电影| 秋霞午夜av一区二区三区| 欧美一区二区黄色| 久久9热精品视频| 精品成人一区二区| 国产成人激情av| 日本一区免费视频| av在线综合网| 亚洲一区二区三区在线播放| 欧美性受xxxx| 日韩成人dvd| 欧美精品一区二区三区蜜臀| 国产一区 二区| 国产精品久久久久影院老司 | 久久成人精品无人区| www久久精品| av一本久道久久综合久久鬼色| 亚洲精品久久7777| 欧美一区二区视频在线观看2022| 麻豆精品视频在线观看视频| 国产亚洲一本大道中文在线| av不卡一区二区三区| 一个色妞综合视频在线观看| 日韩一区二区三区av| 国产在线不卡一区| 国产精品不卡在线| 精品免费一区二区三区| 色菇凉天天综合网| 国产精品一区二区三区四区| 亚洲成人一区在线| 国产精品护士白丝一区av| 91精品福利在线一区二区三区 | 亚洲精品视频免费看| 欧美zozozo| 欧美日韩亚洲综合在线 | 欧美亚洲动漫精品| 国产成人在线视频网站| 日韩**一区毛片| 亚洲蜜桃精久久久久久久| 国产人久久人人人人爽| 欧美一区二区精品| 欧美日韩你懂得| 一本大道综合伊人精品热热| 风间由美中文字幕在线看视频国产欧美|