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

📄 interpolate8x8.h

📁 MPEG-4编解码的实现(包括MPEG4视音频编解码)
💻 H
字号:
#include "../utils/mem_transfer.h"

typedef void (INTERPOLATE8X8)(uint8_t * const dst,
					const uint8_t * const src,
					const uint32_t stride,
					const uint32_t rounding);
typedef INTERPOLATE8X8 * INTERPOLATE8X8_PTR;	

extern INTERPOLATE8X8_PTR interpolate8x8_halfpel_h;
extern INTERPOLATE8X8_PTR interpolate8x8_halfpel_v;
extern INTERPOLATE8X8_PTR interpolate8x8_halfpel_hv;

INTERPOLATE8X8 interpolate8x8_halfpel_h_c;
INTERPOLATE8X8 interpolate8x8_halfpel_v_c;
INTERPOLATE8X8 interpolate8x8_halfpel_hv_c;

INTERPOLATE8X8 interpolate8x8_halfpel_h_mmx;
INTERPOLATE8X8 interpolate8x8_halfpel_v_mmx;
INTERPOLATE8X8 interpolate8x8_halfpel_hv_mmx;

INTERPOLATE8X8 interpolate8x8_halfpel_h_xmm;
INTERPOLATE8X8 interpolate8x8_halfpel_v_xmm;
INTERPOLATE8X8 interpolate8x8_halfpel_hv_xmm;

INTERPOLATE8X8 interpolate8x8_halfpel_h_3dn;
INTERPOLATE8X8 interpolate8x8_halfpel_v_3dn;
INTERPOLATE8X8 interpolate8x8_halfpel_hv_3dn;

static __inline void interpolate8x8_switch(uint8_t * const cur,
				     const uint8_t * const refn,
				     const uint32_t x, const uint32_t y,
					 const int32_t dx,  const int dy,
					 const uint32_t stride,
					 const uint32_t rounding)
{
	int32_t ddx, ddy;

	switch ( ((dx&1)<<1) + (dy&1) )   // ((dx%2)?2:0)+((dy%2)?1:0)
    {
    case 0 :
		ddx = dx/2;
		ddy = dy/2;
		transfer8x8_copy(cur + y*stride + x, refn + (y+ddy)*stride + x + ddx, stride);
		break;

    case 1 :
		ddx = dx/2;
		ddy = (dy-1)/2;
		interpolate8x8_halfpel_v(cur + y*stride + x, 
							refn + (y+ddy)*stride + x + ddx, stride, rounding);
		break;

    case 2 :
		ddx = (dx-1)/2;
		ddy = dy/2;
		interpolate8x8_halfpel_h(cur + y*stride + x,
							refn + (y+ddy)*stride + x + ddx, stride, rounding);
		break;

    default :
		ddx = (dx-1)/2;
		ddy = (dy-1)/2;
		interpolate8x8_halfpel_hv(cur + y*stride + x,
							refn + (y+ddy)*stride + x + ddx, stride, rounding);
		break;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -