[FFmpeg-cvslog] avformat/tee: Support flushing by writing NULL pkt

Jan Sebechlebsky git at videolan.org
Sat Jul 16 01:48:37 CEST 2016


ffmpeg | branch: master | Jan Sebechlebsky <sebechlebskyjan at gmail.com> | Mon Jul 11 23:27:51 2016 +0200| [e144b86fa4c7e178f2a7a9436ac2a89a82b58b09] | committer: Marton Balint

avformat/tee: Support flushing by writing NULL pkt

This will add support for flushing by writing NULL
packet to the tee muxer, which propagates the action
to slave muxers as expected.

Signed-off-by: Jan Sebechlebsky <sebechlebskyjan at gmail.com>
Signed-off-by: Marton Balint <cus at passwd.hu>

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

 libavformat/tee.c |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/libavformat/tee.c b/libavformat/tee.c
index c276a37..e750752 100644
--- a/libavformat/tee.c
+++ b/libavformat/tee.c
@@ -520,6 +520,17 @@ static int tee_write_packet(AVFormatContext *avf, AVPacket *pkt)
         if (!(avf2 = tee->slaves[i].avf))
             continue;
 
+        /* Flush slave if pkt is NULL*/
+        if (!pkt) {
+            ret = av_interleaved_write_frame(avf2, NULL);
+            if (ret < 0) {
+                ret = tee_process_slave_failure(avf, i, ret);
+                if (!ret_all && ret < 0)
+                    ret_all = ret;
+            }
+            continue;
+        }
+
         s = pkt->stream_index;
         s2 = tee->slaves[i].stream_map[s];
         if (s2 < 0)
@@ -557,5 +568,5 @@ AVOutputFormat ff_tee_muxer = {
     .write_trailer     = tee_write_trailer,
     .write_packet      = tee_write_packet,
     .priv_class        = &tee_muxer_class,
-    .flags             = AVFMT_NOFILE,
+    .flags             = AVFMT_NOFILE | AVFMT_ALLOW_FLUSH,
 };



More information about the ffmpeg-cvslog mailing list