[FFmpeg-devel] [PATCH] avformat/mpegts: add skip_unknown_pids option
Aman Gupta
ffmpeg at tmm1.net
Tue May 8 22:54:17 EEST 2018
From: Aman Gupta <aman at tmm1.net>
Allows the user to skip streams that are not advertised in the PMT.
---
libavformat/mpegts.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 629631f60a..5464f48a8d 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -143,6 +143,7 @@ struct MpegTSContext {
int skip_changes;
int skip_clear;
+ int skip_unknown_pids;
int scan_all_pmts;
@@ -176,6 +177,8 @@ static const AVOption options[] = {
{.i64 = 0}, 0, 1, 0 },
{"skip_clear", "skip clearing programs", offsetof(MpegTSContext, skip_clear), AV_OPT_TYPE_BOOL,
{.i64 = 0}, 0, 1, 0 },
+ {"skip_unknown_pids", "skip streams not advertised in PMT", offsetof(MpegTSContext, skip_unknown_pids), AV_OPT_TYPE_BOOL,
+ {.i64 = 0}, 0, 1, 0 },
{ NULL },
};
@@ -1058,7 +1061,7 @@ static int mpegts_push_data(MpegTSFilter *filter,
/* stream not present in PMT */
if (!pes->st) {
- if (ts->skip_changes)
+ if (ts->skip_changes || ts->skip_unknown_pids)
goto skip;
pes->st = avformat_new_stream(ts->stream, NULL);
@@ -2011,6 +2014,8 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
if (!ts->scan_all_pmts && ts->skip_changes)
return;
+ if (ts->skip_unknown_pids && !get_program(ts, h->id))
+ return;
if (!ts->skip_clear)
clear_program(ts, h->id);
--
2.14.2
More information about the ffmpeg-devel
mailing list