summaryrefslogtreecommitdiff
path: root/vp8/encoder/encodeframe.c
diff options
context:
space:
mode:
authorDeb Mukherjee <debargha@google.com>2012-03-19 07:53:05 -0700
committerDeb Mukherjee <debargha@google.com>2012-03-21 09:17:22 -0700
commit475d5d5664916d0a61d200a58391a582d44b8c27 (patch)
treeabedeb179cb5371984e1d084f397aa80f99163ea /vp8/encoder/encodeframe.c
parent57d953479bdb811eb12039167b64010e77ee1b28 (diff)
downloadlibvpx-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.c32
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(