// A00 A01 A02 A03 A04
// 0 h 0 h
// A10 A11 A12 A13 A14
// v c v c
// A20 A21 A22 A23 A24
// 0 h 0 h
// A30 A31 A32 A33 A34
// v c v c
// A40 A41 A42 A43 A44
// 不包括最后一行和最后一列
static void frame_init_lowres_core( uint8_t *src0, uint8_t *dst0, uint8_t *dsth, uint8_t *dstv, uint8_t *dstc,
int src_stride, int dst_stride, int width, int height )
{
int x,y;
for( y=0; y<height; y++ )
{
uint8_t *src1 = src0+src_stride;
uint8_t *src2 = src1+src_stride;
for( x=0; x<width; x++ )
{
// slower than naive bilinear, but matches asm
#define FILTER(a,b,c,d) ((((a+b+1)>>1)+((c+d+1)>>1)+1)>>1)
dst0[x] = FILTER(src0[2*x ], src1[2*x ], src0[2*x+1], src1[2*x+1]);
x264源码分析 -- frame_init_lowres_core
最新推荐文章于 2024-02-12 21:19:47 发布