From e3bf55dedbe9c95824f53a22a241166579e50dbe Mon Sep 17 00:00:00 2001 From: hkuang Date: Fri, 17 Oct 2014 10:09:56 -0700 Subject: [PATCH] Correct the logic of ready_for_new_data. This should be set right after decoder really start to decode frame instead setting at the end. Even decoder does not have a displayable frame to show and return NULL to application, this should be set too. Change-Id: If0313a834bc64e3b0f05a84f4459d444d9eab0d8 --- vp9/decoder/vp9_decoder.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/vp9/decoder/vp9_decoder.c b/vp9/decoder/vp9_decoder.c index 3c9469c4c..baf6ab7ef 100644 --- a/vp9/decoder/vp9_decoder.c +++ b/vp9/decoder/vp9_decoder.c @@ -232,6 +232,8 @@ int vp9_receive_compressed_data(VP9Decoder *pbi, cm->frame_refs[0].buf->corrupted = 1; } + pbi->ready_for_new_data = 0; + // 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, @@ -279,8 +281,6 @@ int vp9_receive_compressed_data(VP9Decoder *pbi, cm->current_video_frame++; } - pbi->ready_for_new_data = 0; - cm->error.setjmp = 0; return retcode; } @@ -296,12 +296,12 @@ int vp9_get_raw_frame(VP9Decoder *pbi, YV12_BUFFER_CONFIG *sd, if (pbi->ready_for_new_data == 1) return ret; + pbi->ready_for_new_data = 1; + /* no raw frame to show!!! */ if (!cm->show_frame) return ret; - pbi->ready_for_new_data = 1; - #if CONFIG_VP9_POSTPROC if (!cm->show_existing_frame) { ret = vp9_post_proc_frame(cm, sd, flags);