[FFmpeg-devel] [PATCH v5] avformat/utils: Don't create unnecessary references

Andreas Rheinhardt andreas.rheinhardt at gmail.com
Sat Sep 28 05:42:24 EEST 2019


When AVFMT_FLAG_GENPTS is set, av_read_frame would put a reference to a
packet in the packet list (via av_packet_ref) and then immediately
thereafter unreference the original packet. This has been changed to
move the reference instead.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
---
Updated the commit message in light of the fact that ff_packet_list_put
now ensures that the packets are refcounted.

 libavformat/utils.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/libavformat/utils.c b/libavformat/utils.c
index 1292fef3df..fe40ead438 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -1858,10 +1858,11 @@ int av_read_frame(AVFormatContext *s, AVPacket *pkt)
 
         ret = ff_packet_list_put(&s->internal->packet_buffer,
                                  &s->internal->packet_buffer_end,
-                                 pkt, FF_PACKETLIST_FLAG_REF_PACKET);
-        av_packet_unref(pkt);
-        if (ret < 0)
+                                 pkt, 0);
+        if (ret < 0) {
+            av_packet_unref(pkt);
             return ret;
+        }
     }
 
 return_packet:
-- 
2.20.1



More information about the ffmpeg-devel mailing list