
Up-sampled the reference frames to 8 times in each dimension using the 8-tap interpolation filter. In sub-pixel motion search, use the up-sampled reference frames to find the best matching blocks. This largely improved the motion search precision, and thus, improved the compression quality. There was no change in decoder side. Borg test and speed test results: 1. On derflr set, Overall PSNR gain: 1.306%, and SSIM gain: 1.512%. Average speed loss on derf set was 6.0%. 2. On stdhd set, Overall PSNR gain: 0.754%, and SSIM gain: 0.814%. On hevchd set, Overall PSNR gain: 0.465%, and SSIM gain: 0.527%. Speed loss on HD clips was 3.5%. Change-Id: I300ebaafff57e88914f3dedc8784cb21d316b04f
36 lines
2.1 KiB
Raku
36 lines
2.1 KiB
Raku
sub vpx_scale_forward_decls() {
|
|
print <<EOF
|
|
struct yv12_buffer_config;
|
|
EOF
|
|
}
|
|
forward_decls qw/vpx_scale_forward_decls/;
|
|
|
|
# Scaler functions
|
|
if (vpx_config("CONFIG_SPATIAL_RESAMPLING") eq "yes") {
|
|
add_proto qw/void vp8_horizontal_line_5_4_scale/, "const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width";
|
|
add_proto qw/void vp8_vertical_band_5_4_scale/, "unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width";
|
|
add_proto qw/void vp8_horizontal_line_5_3_scale/, "const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width";
|
|
add_proto qw/void vp8_vertical_band_5_3_scale/, "unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width";
|
|
add_proto qw/void vp8_horizontal_line_2_1_scale/, "const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width";
|
|
add_proto qw/void vp8_vertical_band_2_1_scale/, "unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width";
|
|
add_proto qw/void vp8_vertical_band_2_1_scale_i/, "unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width";
|
|
}
|
|
|
|
add_proto qw/void vp8_yv12_extend_frame_borders/, "struct yv12_buffer_config *ybf";
|
|
|
|
add_proto qw/void vp8_yv12_copy_frame/, "const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc";
|
|
|
|
add_proto qw/void vpx_yv12_copy_y/, "const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc";
|
|
|
|
if ((vpx_config("CONFIG_VP9") eq "yes") || (vpx_config("CONFIG_VP10") eq "yes")) {
|
|
add_proto qw/void vpx_extend_frame_borders/, "struct yv12_buffer_config *ybf";
|
|
specialize qw/vpx_extend_frame_borders dspr2/;
|
|
|
|
add_proto qw/void vpx_extend_frame_inner_borders/, "struct yv12_buffer_config *ybf";
|
|
specialize qw/vpx_extend_frame_inner_borders dspr2/;
|
|
|
|
add_proto qw/void vpx_extend_frame_borders_y/, "struct yv12_buffer_config *ybf";
|
|
specialize qw/vpx_extend_frame_borders_y/;
|
|
}
|
|
1;
|