diff options
author | Adrian Grange <agrange@google.com> | 2010-09-28 15:23:41 +0100 |
---|---|---|
committer | Adrian Grange <agrange@google.com> | 2010-09-28 15:23:41 +0100 |
commit | 1b2f8308e48704b1c784484b070f243ffb575b88 (patch) | |
tree | 3103d8c11208109d02223968887c9b783c3d8bad /vp8/encoder/encodeframe.c | |
parent | 305be4e4179214c58796de91e86badadbca29451 (diff) | |
download | libvpx-1b2f8308e48704b1c784484b070f243ffb575b88.tar libvpx-1b2f8308e48704b1c784484b070f243ffb575b88.tar.gz libvpx-1b2f8308e48704b1c784484b070f243ffb575b88.tar.bz2 libvpx-1b2f8308e48704b1c784484b070f243ffb575b88.zip |
Made AltRef filter adaptive & added motion compensation
Modified AltRef temporal filter to adapt filter length based
on macroblock coding modes selected during first-pass
encode.
Also added sub-pixel motion compensation to the AltRef
filter.
Diffstat (limited to 'vp8/encoder/encodeframe.c')
-rw-r--r-- | vp8/encoder/encodeframe.c | 44 |
1 files changed, 21 insertions, 23 deletions
diff --git a/vp8/encoder/encodeframe.c b/vp8/encoder/encodeframe.c index d8a76d5b5..8c40a18e8 100644 --- a/vp8/encoder/encodeframe.c +++ b/vp8/encoder/encodeframe.c @@ -545,31 +545,29 @@ void vp8_encode_frame(VP8_COMP *cpi) int segment_counts[MAX_MB_SEGMENTS]; int totalrate; - if (cm->frame_type != KEY_FRAME) + // Functions setup for all frame types so we can use MC in AltRef + if (cm->mcomp_filter_type == SIXTAP) { - if (cm->mcomp_filter_type == SIXTAP) - { - xd->subpixel_predict = SUBPIX_INVOKE(&cpi->common.rtcd.subpix, sixtap4x4); - xd->subpixel_predict8x4 = SUBPIX_INVOKE(&cpi->common.rtcd.subpix, sixtap8x4); - xd->subpixel_predict8x8 = SUBPIX_INVOKE(&cpi->common.rtcd.subpix, sixtap8x8); - xd->subpixel_predict16x16 = SUBPIX_INVOKE(&cpi->common.rtcd.subpix, sixtap16x16); - } - else - { - xd->subpixel_predict = SUBPIX_INVOKE(&cpi->common.rtcd.subpix, bilinear4x4); - xd->subpixel_predict8x4 = SUBPIX_INVOKE(&cpi->common.rtcd.subpix, bilinear8x4); - xd->subpixel_predict8x8 = SUBPIX_INVOKE(&cpi->common.rtcd.subpix, bilinear8x8); - xd->subpixel_predict16x16 = SUBPIX_INVOKE(&cpi->common.rtcd.subpix, bilinear16x16); - } + xd->subpixel_predict = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, sixtap4x4); + xd->subpixel_predict8x4 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, sixtap8x4); + xd->subpixel_predict8x8 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, sixtap8x8); + xd->subpixel_predict16x16 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, sixtap16x16); + } + else + { + xd->subpixel_predict = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, bilinear4x4); + xd->subpixel_predict8x4 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, bilinear8x4); + xd->subpixel_predict8x8 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, bilinear8x8); + xd->subpixel_predict16x16 = SUBPIX_INVOKE( + &cpi->common.rtcd.subpix, bilinear16x16); } - - //else // Key Frame - //{ - // For key frames make sure the intra ref frame probability value - // is set to "all intra" - //cpi->prob_intra_coded = 255; - //} - x->gf_active_ptr = (signed char *)cpi->gf_active_flags; // Point to base of GF active flags data structure |