C代码
void x264_predict_8x8_v_c( pixel *src, pixel edge[36] )
{
//#define M32(src) (((x264_union32_t*)(src))->i)
pixel4 top[2] = { MPIXEL_X4( edge+16 ), //取int32 4个像素数据
MPIXEL_X4( edge+20 ) }; //
for( int y = 0; y < 8; y++ )
{
MPIXEL_X4( src+y*FDEC_STRIDE+0 ) = top[0];
MPIXEL_X4( src+y*FDEC_STRIDE+4 ) = top[1];
}
}
汇编代码
参数 pixel *src, pixel edge[36]
function predict_8x8_v_neon, export=1
add x1, x1, #16 //偏移16字节
mov x7, #FDEC_STRIDE //x7 = 32
ld1 {v0.8b}, [x1] //x1位置 读入edge 8字节到v0
.rept 8
st1 {v0.8b}, [x0], x7 //循环赋值8行,到src像素数据
.endr
ret
endfunc
本文详细解析了C语言函数x264_predict_8x8_v_c和使用NEON汇编实现的predict_8x8_v_neon,展示了在视频编码中如何处理8x8像素块进行预测的过程。

972

被折叠的 条评论
为什么被折叠?



