[FFmpeg-cvslog] avformat/rtpenc_mpegts: convey options for rtp muxer

Gyan Doshi git at videolan.org
Fri Mar 26 11:15:28 EET 2021


ffmpeg | branch: release/4.4 | Gyan Doshi <ffmpeg at gyani.pro> | Tue Mar 23 11:14:10 2021 +0530| [fd80c0b95f602a2fe79d5c1b6787e0890d3faac5] | committer: Gyan Doshi

avformat/rtpenc_mpegts: convey options for rtp muxer

Cherry-picked 2c806aa2b4

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

 libavformat/rtpenc_mpegts.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/libavformat/rtpenc_mpegts.c b/libavformat/rtpenc_mpegts.c
index 22881461e4..f7ee5a4448 100644
--- a/libavformat/rtpenc_mpegts.c
+++ b/libavformat/rtpenc_mpegts.c
@@ -29,6 +29,7 @@ typedef struct MuxChain {
     AVFormatContext *rtp_ctx;
     AVPacket *pkt;
     AVDictionary* mpegts_muxer_options;
+    AVDictionary* rtp_muxer_options;
 } MuxChain;
 
 static int rtp_mpegts_write_close(AVFormatContext *s)
@@ -59,6 +60,7 @@ static int rtp_mpegts_write_header(AVFormatContext *s)
     int i, ret = AVERROR(ENOMEM);
     AVStream *st;
     AVDictionary *mpegts_muxer_options = NULL;
+    AVDictionary *rtp_muxer_options = NULL;
 
     if (!mpegts_format || !rtp_format)
         return AVERROR(ENOSYS);
@@ -108,7 +110,8 @@ static int rtp_mpegts_write_header(AVFormatContext *s)
     st->time_base.den   = 90000;
     st->codecpar->codec_id = AV_CODEC_ID_MPEG2TS;
     rtp_ctx->pb = s->pb;
-    if ((ret = avformat_write_header(rtp_ctx, NULL)) < 0)
+    av_dict_copy(&rtp_muxer_options, chain->rtp_muxer_options, 0);
+    if ((ret = avformat_write_header(rtp_ctx, &rtp_muxer_options)) < 0)
         goto fail;
     chain->rtp_ctx = rtp_ctx;
 
@@ -121,6 +124,7 @@ fail:
         av_dict_free(&mpegts_muxer_options);
         avformat_free_context(mpegts_ctx);
     }
+    av_dict_free(&rtp_muxer_options);
     avformat_free_context(rtp_ctx);
     rtp_mpegts_write_close(s);
     return ret;
@@ -167,6 +171,7 @@ static int rtp_mpegts_write_packet(AVFormatContext *s, AVPacket *pkt)
 #define E AV_OPT_FLAG_ENCODING_PARAM
 static const AVOption options[] = {
     { "mpegts_muxer_options", "set list of options for the MPEG-TS muxer", OFFSET(mpegts_muxer_options), AV_OPT_TYPE_DICT, {.str = NULL}, 0, 0, E },
+    { "rtp_muxer_options",    "set list of options for the RTP muxer",     OFFSET(rtp_muxer_options),    AV_OPT_TYPE_DICT, {.str = NULL}, 0, 0, E },
     { NULL },
 };
 



More information about the ffmpeg-cvslog mailing list