Commit f121dbd9 authored by Luca Barbato's avatar Luca Barbato

mpegts: Provide an option to override the pcr period

Certain hardware demuxer have specific restrictions for PCR periodicity.
parent 3f7e94ec
...@@ -405,6 +405,9 @@ Set the first PID for PMT (default 0x1000, max 0x1f00). ...@@ -405,6 +405,9 @@ Set the first PID for PMT (default 0x1000, max 0x1f00).
Set the first PID for data packets (default 0x0100, max 0x0f00). Set the first PID for data packets (default 0x0100, max 0x0f00).
@item -muxrate @var{number} @item -muxrate @var{number}
Set a constant muxrate (default VBR). Set a constant muxrate (default VBR).
@item -pcr_period @var{numer}
Override the default PCR retransmission time (default 20ms), ignored
if variable muxrate is selected.
@end table @end table
The recognized metadata settings in mpegts muxer are @code{service_provider} The recognized metadata settings in mpegts muxer are @code{service_provider}
......
...@@ -79,6 +79,7 @@ typedef struct MpegTSWrite { ...@@ -79,6 +79,7 @@ typedef struct MpegTSWrite {
int reemit_pat_pmt; // backward compatibility int reemit_pat_pmt; // backward compatibility
int pcr_period;
#define MPEGTS_FLAG_REEMIT_PAT_PMT 0x01 #define MPEGTS_FLAG_REEMIT_PAT_PMT 0x01
#define MPEGTS_FLAG_AAC_LATM 0x02 #define MPEGTS_FLAG_AAC_LATM 0x02
int flags; int flags;
...@@ -559,7 +560,7 @@ static int mpegts_write_header(AVFormatContext *s) ...@@ -559,7 +560,7 @@ static int mpegts_write_header(AVFormatContext *s)
} }
if (ts->mux_rate > 1) { if (ts->mux_rate > 1) {
service->pcr_packet_period = (ts->mux_rate * PCR_RETRANS_TIME) / service->pcr_packet_period = (ts->mux_rate * ts->pcr_period) /
(TS_PACKET_SIZE * 8 * 1000); (TS_PACKET_SIZE * 8 * 1000);
ts->sdt_packet_period = (ts->mux_rate * SDT_RETRANS_TIME) / ts->sdt_packet_period = (ts->mux_rate * SDT_RETRANS_TIME) /
(TS_PACKET_SIZE * 8 * 1000); (TS_PACKET_SIZE * 8 * 1000);
...@@ -1154,6 +1155,8 @@ static const AVOption options[] = { ...@@ -1154,6 +1155,8 @@ static const AVOption options[] = {
// backward compatibility // backward compatibility
{ "resend_headers", "Reemit PAT/PMT before writing the next packet", { "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}, offsetof(MpegTSWrite, reemit_pat_pmt), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM},
{ "pcr_period", "PCR retransmission time",
offsetof(MpegTSWrite, pcr_period), AV_OPT_TYPE_INT, { .i64 = PCR_RETRANS_TIME }, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM },
{ NULL }, { NULL },
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment