summaryrefslogtreecommitdiff
path: root/vp9/decoder/vp9_decoder.c
diff options
context:
space:
mode:
authorhkuang <hkuang@google.com>2014-06-24 14:22:09 -0700
committerhkuang <hkuang@google.com>2014-06-25 11:21:37 -0700
commitb336356198b8ada50fbb59f04f11cefceaf5ff95 (patch)
treed0bd2f133756a3e8c0925bbfb50af8bb46ea3369 /vp9/decoder/vp9_decoder.c
parent5e7242dfda069046dced13cac8170bfe0fdb5f05 (diff)
downloadlibvpx-b336356198b8ada50fbb59f04f11cefceaf5ff95.tar
libvpx-b336356198b8ada50fbb59f04f11cefceaf5ff95.tar.gz
libvpx-b336356198b8ada50fbb59f04f11cefceaf5ff95.tar.bz2
libvpx-b336356198b8ada50fbb59f04f11cefceaf5ff95.zip
Revert "Revert 3 patches from Hangyu to get Chrome to build:"
This patch reverts the previous revert from Jim and also add a variable user_priv in the FrameWorker to save the user_priv passed from the application. In the decoder_get_frame function, the user_priv will be binded with the img. This change is needed or it will fail the unit test added here: https://gerrit.chromium.org/gerrit/#/c/70610/ This reverts commit 9be46e4565f553460a1bbbf58d9f99067d3242ce. Change-Id: I376d9a12ee196faffdf3c792b59e6137c56132c1
Diffstat (limited to 'vp9/decoder/vp9_decoder.c')
-rw-r--r--vp9/decoder/vp9_decoder.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/vp9/decoder/vp9_decoder.c b/vp9/decoder/vp9_decoder.c
index 84cb84aec..245c5f195 100644
--- a/vp9/decoder/vp9_decoder.c
+++ b/vp9/decoder/vp9_decoder.c
@@ -210,7 +210,10 @@ static void swap_frame_buffers(VP9Decoder *pbi) {
}
cm->frame_to_show = get_frame_new_buffer(cm);
- cm->frame_bufs[cm->new_fb_idx].ref_count--;
+
+ if (!pbi->frame_parallel_decode || !cm->show_frame) {
+ --cm->frame_bufs[cm->new_fb_idx].ref_count;
+ }
// Invalidate these references until the next frame starts.
for (ref_index = 0; ref_index < 3; ref_index++)
@@ -239,7 +242,9 @@ int vp9_receive_compressed_data(VP9Decoder *pbi,
}
// Check if the previous frame was a frame without any references to it.
- if (cm->new_fb_idx >= 0 && cm->frame_bufs[cm->new_fb_idx].ref_count == 0)
+ // Release frame buffer if not decoding in frame parallel mode.
+ if (!pbi->frame_parallel_decode && cm->new_fb_idx >= 0
+ && cm->frame_bufs[cm->new_fb_idx].ref_count == 0)
cm->release_fb_cb(cm->cb_priv,
&cm->frame_bufs[cm->new_fb_idx].raw_frame_buffer);
cm->new_fb_idx = get_free_fb(cm);