[FFmpeg-cvslog] avformat: Always return ref-counted AVPacket

Luca Barbato git at videolan.org
Tue Oct 27 14:15:47 CET 2015


ffmpeg | branch: master | Luca Barbato <lu_zero at gentoo.org> | Fri Oct 23 11:11:30 2015 +0200| [a5d42043093a39636a1f4021a37dd9c612479f6f] | committer: Luca Barbato

avformat: Always return ref-counted AVPacket

And drop the av_dup_packet from the input_thread.

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

 avconv.c            |    1 -
 avplay.c            |    4 ----
 libavformat/utils.c |    8 ++++++++
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/avconv.c b/avconv.c
index c52f292..f6bcb02 100644
--- a/avconv.c
+++ b/avconv.c
@@ -2130,7 +2130,6 @@ static void *input_thread(void *arg)
         while (!av_fifo_space(f->fifo))
             pthread_cond_wait(&f->fifo_cond, &f->fifo_lock);
 
-        av_dup_packet(&pkt);
         av_fifo_generic_write(f->fifo, &pkt, sizeof(pkt), NULL);
 
         pthread_mutex_unlock(&f->fifo_lock);
diff --git a/avplay.c b/avplay.c
index dd2073c..55e018a 100644
--- a/avplay.c
+++ b/avplay.c
@@ -320,10 +320,6 @@ static int packet_queue_put(PacketQueue *q, AVPacket *pkt)
 {
     AVPacketList *pkt1;
 
-    /* duplicate the packet */
-    if (pkt != &flush_pkt && av_dup_packet(pkt) < 0)
-        return -1;
-
     pkt1 = av_malloc(sizeof(AVPacketList));
     if (!pkt1)
         return -1;
diff --git a/libavformat/utils.c b/libavformat/utils.c
index f8926bd..fd96b9d 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -413,6 +413,14 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt)
             continue;
         }
 
+        if (!pkt->buf) {
+            AVPacket tmp = { 0 };
+            ret = av_packet_ref(&tmp, pkt);
+            if (ret < 0)
+                return ret;
+            *pkt = tmp;
+        }
+
         if ((s->flags & AVFMT_FLAG_DISCARD_CORRUPT) &&
             (pkt->flags & AV_PKT_FLAG_CORRUPT)) {
             av_log(s, AV_LOG_WARNING,



More information about the ffmpeg-cvslog mailing list