summaryrefslogtreecommitdiff
path: root/vp9/decoder/vp9_decodframe.c
diff options
context:
space:
mode:
authorDeb Mukherjee <debargha@google.com>2013-01-25 11:30:28 -0800
committerDeb Mukherjee <debargha@google.com>2013-01-25 17:16:19 -0800
commitdfd89f2eab26a761d881ec534239b1cff4e0a9db (patch)
treeae891421c44c8110fbb887fe24d8b2fc42f5cd1d /vp9/decoder/vp9_decodframe.c
parent3ca5b35ce5c7a770d4daf2f2b8460a7af1108843 (diff)
downloadlibvpx-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.c14
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);