Decrement refcount properly in init_ref_frame_bufs
In init_ref_frame_bufs(), decrement buffer refcount as we release each
reference. Then assert all refcounts are 0.
Change-Id: I833a4409dc518d18ff182bbd9c1d8dde1c4dcc7c
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 43aa678..156febf 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -1971,14 +1971,22 @@
static void init_ref_frame_bufs(AV1_COMP *cpi) {
AV1_COMMON *const cm = &cpi->common;
int i;
- BufferPool *const pool = cm->buffer_pool;
- cm->cur_frame = NULL;
+ if (cm->cur_frame) {
+ cm->cur_frame->ref_count--;
+ cm->cur_frame = NULL;
+ }
for (i = 0; i < REF_FRAMES; ++i) {
- cm->ref_frame_map[i] = NULL;
+ if (cm->ref_frame_map[i]) {
+ cm->ref_frame_map[i]->ref_count--;
+ cm->ref_frame_map[i] = NULL;
+ }
}
+#ifndef NDEBUG
+ BufferPool *const pool = cm->buffer_pool;
for (i = 0; i < FRAME_BUFFERS; ++i) {
- pool->frame_bufs[i].ref_count = 0;
+ assert(pool->frame_bufs[i].ref_count == 0);
}
+#endif
}
void av1_check_initial_width(AV1_COMP *cpi, int use_highbitdepth,