diff options
-rw-r--r-- | vp9/decoder/vp9_decoder.c | 4 | ||||
-rw-r--r-- | vp9/decoder/vp9_decoder.h | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/vp9/decoder/vp9_decoder.c b/vp9/decoder/vp9_decoder.c index 4e88819b1..f5da07ea0 100644 --- a/vp9/decoder/vp9_decoder.c +++ b/vp9/decoder/vp9_decoder.c @@ -243,7 +243,7 @@ static void swap_frame_buffers(VP9Decoder *pbi) { decrease_ref_count(old_idx, frame_bufs, pool); // Release the reference frame in reference map. - if ((mask & 1) && old_idx >= 0) { + if (mask & 1) { decrease_ref_count(old_idx, frame_bufs, pool); } cm->ref_frame_map[ref_index] = cm->next_ref_frame_map[ref_index]; @@ -350,7 +350,7 @@ int vp9_receive_compressed_data(VP9Decoder *pbi, decrease_ref_count(old_idx, frame_bufs, pool); // Release the reference frame in reference map. - if ((mask & 1) && old_idx >= 0) { + if (mask & 1) { decrease_ref_count(old_idx, frame_bufs, pool); } ++ref_index; diff --git a/vp9/decoder/vp9_decoder.h b/vp9/decoder/vp9_decoder.h index 4a5188f8f..afa400941 100644 --- a/vp9/decoder/vp9_decoder.h +++ b/vp9/decoder/vp9_decoder.h @@ -128,7 +128,7 @@ void vp9_decoder_remove(struct VP9Decoder *pbi); static INLINE void decrease_ref_count(int idx, RefCntBuffer *const frame_bufs, BufferPool *const pool) { - if (idx >= 0) { + if (idx >= 0 && frame_bufs[idx].ref_count > 0) { --frame_bufs[idx].ref_count; // A worker may only get a free framebuffer index when calling get_free_fb. // But the private buffer is not set up until finish decoding header. |