--- Clément, how about this? I only added these few as they seems the most usefull, though maybe I'll just drop teletext?
doc/muxers.texi | 3 +++ libavformat/mpegtsenc.c | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/doc/muxers.texi b/doc/muxers.texi index 7ca6409..879b229 100644 --- a/doc/muxers.texi +++ b/doc/muxers.texi @@ -690,6 +690,9 @@ Set the transport_stream_id (default 0x0001). This identifies a transponder in DVB. @item -mpegts_service_id @var{number} Set the service_id (default 0x0001) also known as program in DVB. +@item -mpegts_service_type @var{number} +Set the program service_type (default 0x01, max 0xff). For the list of valid +values see ETSI 300 468. @item -mpegts_pmt_start_pid @var{number} Set the first PID for PMT (default 0x1000, max 0x1f00). @item -mpegts_start_pid @var{number} diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 8d0da0b..9c0465b 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -76,6 +76,11 @@ typedef struct MpegTSWrite { int transport_stream_id; int original_network_id; int service_id; + int service_type; +// service_type values as defined in ETSI 300 468 +#define MPEGTS_SERVICE_TYPE_DIGITAL_TV 0x01 +#define MPEGTS_SERVICE_TYPE_DIGITAL_RADIO 0x02 +#define MPEGTS_SERVICE_TYPE_TELETEXT 0x03 int pmt_start_pid; int start_pid; @@ -521,7 +526,7 @@ static void mpegts_write_sdt(AVFormatContext *s) *q++ = 0x48; desc_len_ptr = q; q++; - *q++ = 0x01; /* digital television service */ + *q++ = ts->service_type; putstr8(&q, service->provider_name); putstr8(&q, service->name); desc_len_ptr[0] = q - desc_len_ptr - 1; @@ -1434,6 +1439,18 @@ static const AVOption options[] = { { "mpegts_service_id", "Set service_id field.", offsetof(MpegTSWrite, service_id), AV_OPT_TYPE_INT, { .i64 = 0x0001 }, 0x0001, 0xffff, AV_OPT_FLAG_ENCODING_PARAM }, + { "mpegts_service_type", "Set service_type field.", + offsetof(MpegTSWrite, service_type), AV_OPT_TYPE_INT, + { .i64 = 0x01 }, 0x01, 0xff, AV_OPT_FLAG_ENCODING_PARAM, "mpegts_service_type" }, + { "digital_tv", "Set service_type field as digital television.", + 0, AV_OPT_TYPE_CONST, { .i64 = MPEGTS_SERVICE_TYPE_DIGITAL_TV }, 0x01, 0xff, + AV_OPT_FLAG_ENCODING_PARAM, "mpegts_service_type" }, + { "digital_radio", "Set service_type field as digital radio.", + 0, AV_OPT_TYPE_CONST, { .i64 = MPEGTS_SERVICE_TYPE_DIGITAL_RADIO }, 0x01, 0xff, + AV_OPT_FLAG_ENCODING_PARAM, "mpegts_service_type" }, + { "teletext", "Set service_type field as teletext.", + 0, AV_OPT_TYPE_CONST, { .i64 = MPEGTS_SERVICE_TYPE_TELETEXT }, 0x01, 0xff, + AV_OPT_FLAG_ENCODING_PARAM, "mpegts_service_type" }, { "mpegts_pmt_start_pid", "Set the first pid of the PMT.", offsetof(MpegTSWrite, pmt_start_pid), AV_OPT_TYPE_INT, { .i64 = 0x1000 }, 0x0010, 0x1f00, AV_OPT_FLAG_ENCODING_PARAM }, -- 2.2.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel