|
|
|
@ -88,41 +88,6 @@ typedef struct MpegTSWrite { |
|
|
|
|
#define DEFAULT_PES_HEADER_FREQ 16 |
|
|
|
|
#define DEFAULT_PES_PAYLOAD_SIZE ((DEFAULT_PES_HEADER_FREQ - 1) * 184 + 170) |
|
|
|
|
|
|
|
|
|
static const AVOption options[] = { |
|
|
|
|
{ "mpegts_transport_stream_id", "Set transport_stream_id field.", |
|
|
|
|
offsetof(MpegTSWrite, transport_stream_id), AV_OPT_TYPE_INT, {.i64 = 0x0001 }, 0x0001, 0xffff, AV_OPT_FLAG_ENCODING_PARAM}, |
|
|
|
|
{ "mpegts_original_network_id", "Set original_network_id field.", |
|
|
|
|
offsetof(MpegTSWrite, original_network_id), AV_OPT_TYPE_INT, {.i64 = 0x0001 }, 0x0001, 0xffff, AV_OPT_FLAG_ENCODING_PARAM}, |
|
|
|
|
{ "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_pmt_start_pid", "Set the first pid of the PMT.", |
|
|
|
|
offsetof(MpegTSWrite, pmt_start_pid), AV_OPT_TYPE_INT, {.i64 = 0x1000 }, 0x1000, 0x1f00, AV_OPT_FLAG_ENCODING_PARAM}, |
|
|
|
|
{ "mpegts_start_pid", "Set the first pid.", |
|
|
|
|
offsetof(MpegTSWrite, start_pid), AV_OPT_TYPE_INT, {.i64 = 0x0100 }, 0x0100, 0x0f00, AV_OPT_FLAG_ENCODING_PARAM}, |
|
|
|
|
{ "muxrate", NULL, offsetof(MpegTSWrite, mux_rate), AV_OPT_TYPE_INT, {.i64 = 1}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM}, |
|
|
|
|
{ "pes_payload_size", "Minimum PES packet payload in bytes", |
|
|
|
|
offsetof(MpegTSWrite, pes_payload_size), AV_OPT_TYPE_INT, {.i64 = DEFAULT_PES_PAYLOAD_SIZE}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM}, |
|
|
|
|
{ "mpegts_flags", "MPEG-TS muxing flags", offsetof(MpegTSWrite, flags), AV_OPT_TYPE_FLAGS, {.i64 = 0}, 0, INT_MAX, |
|
|
|
|
AV_OPT_FLAG_ENCODING_PARAM, "mpegts_flags" }, |
|
|
|
|
{ "resend_headers", "Reemit PAT/PMT before writing the next packet", |
|
|
|
|
0, AV_OPT_TYPE_CONST, {.i64 = MPEGTS_FLAG_REEMIT_PAT_PMT}, 0, INT_MAX, |
|
|
|
|
AV_OPT_FLAG_ENCODING_PARAM, "mpegts_flags"}, |
|
|
|
|
{ "latm", "Use LATM packetization for AAC", |
|
|
|
|
0, AV_OPT_TYPE_CONST, {.i64 = MPEGTS_FLAG_AAC_LATM}, 0, INT_MAX, |
|
|
|
|
AV_OPT_FLAG_ENCODING_PARAM, "mpegts_flags"}, |
|
|
|
|
// backward compatibility
|
|
|
|
|
{ "resend_headers", "Reemit PAT/PMT before writing the next packet", |
|
|
|
|
offsetof(MpegTSWrite, reemit_pat_pmt), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM}, |
|
|
|
|
{ NULL }, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const AVClass mpegts_muxer_class = { |
|
|
|
|
.class_name = "MPEGTS muxer", |
|
|
|
|
.item_name = av_default_item_name, |
|
|
|
|
.option = options, |
|
|
|
|
.version = LIBAVUTIL_VERSION_INT, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/* NOTE: 4 bytes must be left at the end for the crc32 */ |
|
|
|
|
static void mpegts_write_section(MpegTSSection *s, uint8_t *buf, int len) |
|
|
|
|
{ |
|
|
|
@ -1164,6 +1129,41 @@ static int mpegts_write_end(AVFormatContext *s) |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static const AVOption options[] = { |
|
|
|
|
{ "mpegts_transport_stream_id", "Set transport_stream_id field.", |
|
|
|
|
offsetof(MpegTSWrite, transport_stream_id), AV_OPT_TYPE_INT, {.i64 = 0x0001 }, 0x0001, 0xffff, AV_OPT_FLAG_ENCODING_PARAM}, |
|
|
|
|
{ "mpegts_original_network_id", "Set original_network_id field.", |
|
|
|
|
offsetof(MpegTSWrite, original_network_id), AV_OPT_TYPE_INT, {.i64 = 0x0001 }, 0x0001, 0xffff, AV_OPT_FLAG_ENCODING_PARAM}, |
|
|
|
|
{ "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_pmt_start_pid", "Set the first pid of the PMT.", |
|
|
|
|
offsetof(MpegTSWrite, pmt_start_pid), AV_OPT_TYPE_INT, {.i64 = 0x1000 }, 0x1000, 0x1f00, AV_OPT_FLAG_ENCODING_PARAM}, |
|
|
|
|
{ "mpegts_start_pid", "Set the first pid.", |
|
|
|
|
offsetof(MpegTSWrite, start_pid), AV_OPT_TYPE_INT, {.i64 = 0x0100 }, 0x0100, 0x0f00, AV_OPT_FLAG_ENCODING_PARAM}, |
|
|
|
|
{ "muxrate", NULL, offsetof(MpegTSWrite, mux_rate), AV_OPT_TYPE_INT, {.i64 = 1}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM}, |
|
|
|
|
{ "pes_payload_size", "Minimum PES packet payload in bytes", |
|
|
|
|
offsetof(MpegTSWrite, pes_payload_size), AV_OPT_TYPE_INT, {.i64 = DEFAULT_PES_PAYLOAD_SIZE}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM}, |
|
|
|
|
{ "mpegts_flags", "MPEG-TS muxing flags", offsetof(MpegTSWrite, flags), AV_OPT_TYPE_FLAGS, {.i64 = 0}, 0, INT_MAX, |
|
|
|
|
AV_OPT_FLAG_ENCODING_PARAM, "mpegts_flags" }, |
|
|
|
|
{ "resend_headers", "Reemit PAT/PMT before writing the next packet", |
|
|
|
|
0, AV_OPT_TYPE_CONST, {.i64 = MPEGTS_FLAG_REEMIT_PAT_PMT}, 0, INT_MAX, |
|
|
|
|
AV_OPT_FLAG_ENCODING_PARAM, "mpegts_flags"}, |
|
|
|
|
{ "latm", "Use LATM packetization for AAC", |
|
|
|
|
0, AV_OPT_TYPE_CONST, {.i64 = MPEGTS_FLAG_AAC_LATM}, 0, INT_MAX, |
|
|
|
|
AV_OPT_FLAG_ENCODING_PARAM, "mpegts_flags"}, |
|
|
|
|
// backward compatibility
|
|
|
|
|
{ "resend_headers", "Reemit PAT/PMT before writing the next packet", |
|
|
|
|
offsetof(MpegTSWrite, reemit_pat_pmt), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM}, |
|
|
|
|
{ NULL }, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const AVClass mpegts_muxer_class = { |
|
|
|
|
.class_name = "MPEGTS muxer", |
|
|
|
|
.item_name = av_default_item_name, |
|
|
|
|
.option = options, |
|
|
|
|
.version = LIBAVUTIL_VERSION_INT, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
AVOutputFormat ff_mpegts_muxer = { |
|
|
|
|
.name = "mpegts", |
|
|
|
|
.long_name = NULL_IF_CONFIG_SMALL("MPEG-TS (MPEG-2 Transport Stream)"), |
|
|
|
|