x264 编码器 PSNR算法源码分析

时间:2025-01-20 18:33:19
//代码有删减 #define x264_pixel_ssd_16x16_neon x264_template(pixel_ssd_16x16_neon) #define x264_pixel_ssd_16x8_neon x264_template(pixel_ssd_16x8_neon) #define x264_pixel_ssd_4x16_neon x264_template(pixel_ssd_4x16_neon) #define x264_pixel_ssd_4x4_neon x264_template(pixel_ssd_4x4_neon) #define x264_pixel_ssd_4x8_neon x264_template(pixel_ssd_4x8_neon) #define x264_pixel_ssd_8x16_neon x264_template(pixel_ssd_8x16_neon) #define x264_pixel_ssd_8x4_neon x264_template(pixel_ssd_8x4_neon) #define x264_pixel_ssd_8x8_neon x264_template(pixel_ssd_8x8_neon) #define x264_pixel_ssd_4x16_sve x264_template(pixel_ssd_4x16_sve) #define x264_pixel_ssd_4x4_sve x264_template(pixel_ssd_4x4_sve) #define x264_pixel_ssd_4x8_sve x264_template(pixel_ssd_4x8_sve) #define x264_pixel_ssd_8x4_sve x264_template(pixel_ssd_8x4_sve) #define x264_pixel_ssd_8x8_sve x264_template(pixel_ssd_8x8_sve) #define DECL_PIXELS( ret, name, suffix, args ) \ ret x264_pixel_##name##_16x16_##suffix args;\ ret x264_pixel_##name##_16x8_##suffix args;\ ret x264_pixel_##name##_8x16_##suffix args;\ ret x264_pixel_##name##_8x8_##suffix args;\ ret x264_pixel_##name##_8x4_##suffix args;\ ret x264_pixel_##name##_4x16_##suffix args;\ ret x264_pixel_##name##_4x8_##suffix args;\ ret x264_pixel_##name##_4x4_##suffix args; #define DECL_PIXELS_SSD_SVE( ret, args ) \ ret x264_pixel_ssd_8x8_sve args;\ ret x264_pixel_ssd_8x4_sve args;\ ret x264_pixel_ssd_4x16_sve args;\ ret x264_pixel_ssd_4x8_sve args;\ ret x264_pixel_ssd_4x4_sve args; #define DECL_X1( name, suffix ) \ DECL_PIXELS( int, name, suffix, ( pixel *, intptr_t, pixel *, intptr_t ) ) #define DECL_X1_SSD_SVE( ) \ DECL_PIXELS_SSD_SVE( int, ( pixel *, intptr_t, pixel *, intptr_t ) ) #define DECL_X4( name, suffix ) \ DECL_PIXELS( void, name##_x3, suffix, ( pixel *, pixel *, pixel *, pixel *, intptr_t, int * ) )\ DECL_PIXELS( void, name##_x4, suffix, ( pixel *, pixel *, pixel *, pixel *, pixel *, intptr_t, int * ) ) DECL_X1( sad, neon ) DECL_X4( sad, neon ) DECL_X1( satd, neon ) DECL_X1( ssd, neon ) DECL_X1_SSD_SVE( ) #define x264_pixel_ssd_nv12_core_neon x264_template(pixel_ssd_nv12_core_neon) void x264_pixel_ssd_nv12_core_neon( pixel *, intptr_t, pixel *, intptr_t, int, int, uint64_t *, uint64_t * );