diff options
author | Ronald S. Bultje <rsbultje@gmail.com> | 2015-09-25 20:32:14 -0400 |
---|---|---|
committer | Ronald S. Bultje <rsbultje@gmail.com> | 2015-09-25 20:32:14 -0400 |
commit | 8979e9e387f0308c7cf23929e510f147db652a43 (patch) | |
tree | 1461d5b2e8ddeff34e22c79dcfdf2b6e2a83a430 /vp10/decoder | |
parent | 034c28b0a415e6289f66157766a022f056bca2f1 (diff) | |
download | libvpx-8979e9e387f0308c7cf23929e510f147db652a43.tar libvpx-8979e9e387f0308c7cf23929e510f147db652a43.tar.gz libvpx-8979e9e387f0308c7cf23929e510f147db652a43.tar.bz2 libvpx-8979e9e387f0308c7cf23929e510f147db652a43.zip |
vp10: code reference_mode in uncompressed header.
See issue 1041 point 2.
Change-Id: I6fc6427b1a0edff828e39d43428e3271491f8ac5
Diffstat (limited to 'vp10/decoder')
-rw-r--r-- | vp10/decoder/decodeframe.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/vp10/decoder/decodeframe.c b/vp10/decoder/decodeframe.c index bbea6c789..e9b26fb74 100644 --- a/vp10/decoder/decodeframe.c +++ b/vp10/decoder/decodeframe.c @@ -124,6 +124,18 @@ static void read_inter_mode_probs(FRAME_CONTEXT *fc, vpx_reader *r) { vp10_diff_update_prob(r, &fc->inter_mode_probs[i][j]); } +#if CONFIG_MISC_FIXES +static REFERENCE_MODE read_frame_reference_mode(const VP10_COMMON *cm, + struct vpx_read_bit_buffer *rb) { + if (is_compound_reference_allowed(cm)) { + return vpx_rb_read_bit(rb) ? REFERENCE_MODE_SELECT + : (vpx_rb_read_bit(rb) ? COMPOUND_REFERENCE + : SINGLE_REFERENCE); + } else { + return SINGLE_REFERENCE; + } +} +#else static REFERENCE_MODE read_frame_reference_mode(const VP10_COMMON *cm, vpx_reader *r) { if (is_compound_reference_allowed(cm)) { @@ -134,6 +146,7 @@ static REFERENCE_MODE read_frame_reference_mode(const VP10_COMMON *cm, return SINGLE_REFERENCE; } } +#endif static void read_frame_reference_mode_probs(VP10_COMMON *cm, vpx_reader *r) { FRAME_CONTEXT *const fc = cm->fc; @@ -2023,6 +2036,7 @@ static size_t read_uncompressed_header(VP10Decoder *pbi, setup_segmentation_dequant(cm); #if CONFIG_MISC_FIXES cm->tx_mode = xd->lossless ? ONLY_4X4 : read_tx_mode(rb); + cm->reference_mode = read_frame_reference_mode(cm, rb); #endif setup_tile_info(cm, rb); @@ -2072,7 +2086,9 @@ static int read_compressed_header(VP10Decoder *pbi, const uint8_t *data, for (i = 0; i < INTRA_INTER_CONTEXTS; i++) vp10_diff_update_prob(&r, &fc->intra_inter_prob[i]); +#if !CONFIG_MISC_FIXES cm->reference_mode = read_frame_reference_mode(cm, &r); +#endif if (cm->reference_mode != SINGLE_REFERENCE) setup_compound_reference_mode(cm); read_frame_reference_mode_probs(cm, &r); |