diff options
author | hkuang <hkuang@google.com> | 2014-06-24 14:22:09 -0700 |
---|---|---|
committer | hkuang <hkuang@google.com> | 2014-06-25 11:21:37 -0700 |
commit | b336356198b8ada50fbb59f04f11cefceaf5ff95 (patch) | |
tree | d0bd2f133756a3e8c0925bbfb50af8bb46ea3369 /vp9/decoder/vp9_decoder.c | |
parent | 5e7242dfda069046dced13cac8170bfe0fdb5f05 (diff) | |
download | libvpx-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.c | 9 |
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); |