|
|
@@ -76,6 +76,17 @@ 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 |
|
|
|
enum { |
|
|
|
MPEGTS_SERVICE_TYPE_DIGITAL_TV = 0x01, |
|
|
|
MPEGTS_SERVICE_TYPE_DIGITAL_RADIO = 0x02, |
|
|
|
MPEGTS_SERVICE_TYPE_TELETEXT = 0x03, |
|
|
|
MPEGTS_SERVICE_TYPE_ADVANCED_CODEC_DIGITAL_RADIO = 0x0A, |
|
|
|
MPEGTS_SERVICE_TYPE_MPEG2_DIGITAL_HDTV = 0x11, |
|
|
|
MPEGTS_SERVICE_TYPE_ADVANCED_CODEC_DIGITAL_SDTV = 0x16, |
|
|
|
MPEGTS_SERVICE_TYPE_ADVANCED_CODEC_DIGITAL_HDTV = 0x19 |
|
|
|
}; |
|
|
|
|
|
|
|
int pmt_start_pid; |
|
|
|
int start_pid; |
|
|
@@ -521,7 +532,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 +1445,30 @@ 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", "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", "Digital Radio.", |
|
|
|
0, AV_OPT_TYPE_CONST, { .i64 = MPEGTS_SERVICE_TYPE_DIGITAL_RADIO }, 0x01, 0xff, |
|
|
|
AV_OPT_FLAG_ENCODING_PARAM, "mpegts_service_type" }, |
|
|
|
{ "teletext", "Teletext.", |
|
|
|
0, AV_OPT_TYPE_CONST, { .i64 = MPEGTS_SERVICE_TYPE_TELETEXT }, 0x01, 0xff, |
|
|
|
AV_OPT_FLAG_ENCODING_PARAM, "mpegts_service_type" }, |
|
|
|
{ "advanced_codec_digital_radio", "Advanced Codec Digital Radio.", |
|
|
|
0, AV_OPT_TYPE_CONST, { .i64 = MPEGTS_SERVICE_TYPE_ADVANCED_CODEC_DIGITAL_RADIO }, 0x01, 0xff, |
|
|
|
AV_OPT_FLAG_ENCODING_PARAM, "mpegts_service_type" }, |
|
|
|
{ "mpeg2_digital_hdtv", "MPEG2 Digital HDTV.", |
|
|
|
0, AV_OPT_TYPE_CONST, { .i64 = MPEGTS_SERVICE_TYPE_MPEG2_DIGITAL_HDTV }, 0x01, 0xff, |
|
|
|
AV_OPT_FLAG_ENCODING_PARAM, "mpegts_service_type" }, |
|
|
|
{ "advanced_codec_digital_sdtv", "Advanced Codec Digital SDTV.", |
|
|
|
0, AV_OPT_TYPE_CONST, { .i64 = MPEGTS_SERVICE_TYPE_ADVANCED_CODEC_DIGITAL_SDTV }, 0x01, 0xff, |
|
|
|
AV_OPT_FLAG_ENCODING_PARAM, "mpegts_service_type" }, |
|
|
|
{ "advanced_codec_digital_hdtv", "Advanced Codec Digital HDTV.", |
|
|
|
0, AV_OPT_TYPE_CONST, { .i64 = MPEGTS_SERVICE_TYPE_ADVANCED_CODEC_DIGITAL_HDTV }, 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 }, |
|
|
|