diff options
author | Deb Mukherjee <debargha@google.com> | 2013-01-25 11:30:28 -0800 |
---|---|---|
committer | Deb Mukherjee <debargha@google.com> | 2013-01-25 17:16:19 -0800 |
commit | dfd89f2eab26a761d881ec534239b1cff4e0a9db (patch) | |
tree | ae891421c44c8110fbb887fe24d8b2fc42f5cd1d /vp9/decoder/vp9_decodframe.c | |
parent | 3ca5b35ce5c7a770d4daf2f2b8460a7af1108843 (diff) | |
download | libvpx-dfd89f2eab26a761d881ec534239b1cff4e0a9db.tar libvpx-dfd89f2eab26a761d881ec534239b1cff4e0a9db.tar.gz libvpx-dfd89f2eab26a761d881ec534239b1cff4e0a9db.tar.bz2 libvpx-dfd89f2eab26a761d881ec534239b1cff4e0a9db.zip |
Adding a frame parallel decoding mode
Adds a flag to disable features that would inhibit frame parallel
decoding. This includes backward adaptation and MV sorting based
on search in ref frame buffer.
Also includes some minor clean-ups.
Change-Id: I434846717a47b7bcb244b37ea670c5cdf776f14d
Diffstat (limited to 'vp9/decoder/vp9_decodframe.c')
-rw-r--r-- | vp9/decoder/vp9_decodframe.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c index 10bcbf953..936251a6a 100644 --- a/vp9/decoder/vp9_decodframe.c +++ b/vp9/decoder/vp9_decodframe.c @@ -1624,7 +1624,13 @@ int vp9_decode_frame(VP9D_COMP *pbi, const unsigned char **p_data_end) { vp9_setup_interp_filters(xd, pc->mcomp_filter_type, pc); } - pc->refresh_entropy_probs = vp9_read_bit(&header_bc); + if (!pc->error_resilient_mode) { + pc->refresh_entropy_probs = vp9_read_bit(&header_bc); + pc->frame_parallel_decoding_mode = vp9_read_bit(&header_bc); + } else { + pc->refresh_entropy_probs = 0; + pc->frame_parallel_decoding_mode = 1; + } pc->frame_context_idx = vp9_read_literal(&header_bc, NUM_FRAME_CONTEXTS_LG2); vpx_memcpy(&pc->fc, &pc->frame_contexts[pc->frame_context_idx], sizeof(pc->fc)); @@ -1771,10 +1777,12 @@ int vp9_decode_frame(VP9D_COMP *pbi, const unsigned char **p_data_end) { "A stream must start with a complete key frame"); } - if (!pc->error_resilient_mode) + if (!pc->error_resilient_mode && + !pc->frame_parallel_decoding_mode) vp9_adapt_coef_probs(pc); if (pc->frame_type != KEY_FRAME) { - if (!pc->error_resilient_mode) { + if (!pc->error_resilient_mode && + !pc->frame_parallel_decoding_mode) { vp9_adapt_mode_probs(pc); vp9_adapt_nmv_probs(pc, xd->allow_high_precision_mv); vp9_adapt_mode_context(&pbi->common); |