[FFmpeg-cvslog] frame-mt: return consumed packet size in ff_thread_decode_frame

Janne Grunau git at videolan.org
Sat Nov 26 01:17:41 CET 2011


ffmpeg | branch: master | Janne Grunau <janne-libav at jannau.net> | Thu Nov 24 01:50:05 2011 +0100| [117e2a30f254820e0fd4e4d5d9fbab757f17590f] | committer: Janne Grunau

frame-mt: return consumed packet size in ff_thread_decode_frame

This is required to fulfill avcodec_decode_video2() promise to return
the number of consumed bytes on success.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=117e2a30f254820e0fd4e4d5d9fbab757f17590f
---

 libavcodec/pthread.c |    5 +++--
 libavcodec/thread.h  |    3 +++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/libavcodec/pthread.c b/libavcodec/pthread.c
index 9c3453f..3364376 100644
--- a/libavcodec/pthread.c
+++ b/libavcodec/pthread.c
@@ -522,7 +522,7 @@ int ff_thread_decode_frame(AVCodecContext *avctx,
         if (fctx->next_decoding >= (avctx->thread_count-1)) fctx->delaying = 0;
 
         *got_picture_ptr=0;
-        return 0;
+        return avpkt->size;
     }
 
     /*
@@ -563,7 +563,8 @@ int ff_thread_decode_frame(AVCodecContext *avctx,
 
     fctx->next_finished = finished;
 
-    return p->result;
+    /* return the size of the consumed packet if no error occurred */
+    return (p->result >= 0) ? avpkt->size : p->result;
 }
 
 void ff_thread_report_progress(AVFrame *f, int n, int field)
diff --git a/libavcodec/thread.h b/libavcodec/thread.h
index 401c4d2..dfd261d 100644
--- a/libavcodec/thread.h
+++ b/libavcodec/thread.h
@@ -42,6 +42,9 @@ void ff_thread_flush(AVCodecContext *avctx);
  * Submits a new frame to a decoding thread.
  * Returns the next available frame in picture. *got_picture_ptr
  * will be 0 if none is available.
+ * The return value on success is the size of the consumed packet for
+ * compatiblity with avcodec_decode_video2(). This means the decoder
+ * has to consume the full packet.
  *
  * Parameters are the same as avcodec_decode_video2().
  */



More information about the ffmpeg-cvslog mailing list