diff options
author | Deb Mukherjee <debargha@google.com> | 2012-03-19 07:53:05 -0700 |
---|---|---|
committer | Deb Mukherjee <debargha@google.com> | 2012-03-21 09:17:22 -0700 |
commit | 475d5d5664916d0a61d200a58391a582d44b8c27 (patch) | |
tree | abedeb179cb5371984e1d084f397aa80f99163ea /vp8/encoder/encodeframe.c | |
parent | 57d953479bdb811eb12039167b64010e77ee1b28 (diff) | |
download | libvpx-475d5d5664916d0a61d200a58391a582d44b8c27.tar libvpx-475d5d5664916d0a61d200a58391a582d44b8c27.tar.gz libvpx-475d5d5664916d0a61d200a58391a582d44b8c27.tar.bz2 libvpx-475d5d5664916d0a61d200a58391a582d44b8c27.zip |
Making subpel filters switchable at frame level
Various refactoring to make the subpel motion compensation
filters switchable by a frame level field.
Two types of 8-tap filters are supported in addition to the existing
bilinar and sixtap filters. One is the default 8-tap and the
other has a sharper cut-off for use with frames with substantial
edge content.
Patch 2: Added a preliminary strategy for filter selection based on
edginess detecton. Also includes some filter changes.
Change-Id: I866085bda5ae143cfdf2ec88157feaabdf7bd63a
Diffstat (limited to 'vp8/encoder/encodeframe.c')
-rw-r--r-- | vp8/encoder/encodeframe.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/vp8/encoder/encodeframe.c b/vp8/encoder/encodeframe.c index 639c1fa8d..fdc66c0c6 100644 --- a/vp8/encoder/encodeframe.c +++ b/vp8/encoder/encodeframe.c @@ -672,6 +672,38 @@ static void encode_frame_internal(VP8_COMP *cpi) xd->subpixel_predict_avg16x16 = SUBPIX_INVOKE( &cpi->common.rtcd.subpix, sixtap_avg16x16); } +#if CONFIG_ENHANCED_INTERP + else if (cm->mcomp_filter_type == EIGHTTAP) + { + xd->subpixel_predict = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, eighttap4x4); + xd->subpixel_predict8x4 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, eighttap8x4); + xd->subpixel_predict8x8 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, eighttap8x8); + xd->subpixel_predict16x16 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, eighttap16x16); + xd->subpixel_predict_avg8x8 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, eighttap_avg8x8); + xd->subpixel_predict_avg16x16 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, eighttap_avg16x16); + } + else if (cm->mcomp_filter_type == EIGHTTAP_SHARP) + { + xd->subpixel_predict = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, eighttap4x4_sharp); + xd->subpixel_predict8x4 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, eighttap8x4_sharp); + xd->subpixel_predict8x8 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, eighttap8x8_sharp); + xd->subpixel_predict16x16 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, eighttap16x16_sharp); + xd->subpixel_predict_avg8x8 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, eighttap_avg8x8_sharp); + xd->subpixel_predict_avg16x16 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, eighttap_avg16x16_sharp); + } +#endif else { xd->subpixel_predict = SUBPIX_INVOKE( |