summaryrefslogtreecommitdiff
path: root/vp9/decoder
diff options
context:
space:
mode:
authorFrank Galligan <fgalligan@google.com>2014-02-11 18:33:02 -0800
committerFrank Galligan <fgalligan@google.com>2014-02-11 18:34:21 -0800
commit1604ad21491c3982e68395a7d43961781f111e8c (patch)
treebb35a9891f53c65119d10b341bbbc4b94d1a4a8b /vp9/decoder
parent9453c6472630cf1485161ef7499e658f5c378ceb (diff)
downloadlibvpx-1604ad21491c3982e68395a7d43961781f111e8c.tar
libvpx-1604ad21491c3982e68395a7d43961781f111e8c.tar.gz
libvpx-1604ad21491c3982e68395a7d43961781f111e8c.tar.bz2
libvpx-1604ad21491c3982e68395a7d43961781f111e8c.zip
Fix frames that have no references to them.
BasicRateTargeting3TemporalLayers found an error with the get/release frame buffer management. Change-Id: Iccff25cba1d2f276f2a0d0fb7b20cf99b4405549
Diffstat (limited to 'vp9/decoder')
-rw-r--r--vp9/decoder/vp9_onyxd_if.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/vp9/decoder/vp9_onyxd_if.c b/vp9/decoder/vp9_onyxd_if.c
index fd3488355..1d3522e13 100644
--- a/vp9/decoder/vp9_onyxd_if.c
+++ b/vp9/decoder/vp9_onyxd_if.c
@@ -342,6 +342,10 @@ int vp9_receive_compressed_data(VP9D_PTR ptr,
cm->frame_refs[0].buf->corrupted = 1;
}
+ // 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)
+ 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);
if (setjmp(cm->error.jmp)) {