Skip to content
Snippets Groups Projects
Commit f121dbd9 authored by Luca Barbato's avatar Luca Barbato
Browse files

mpegts: Provide an option to override the pcr period

Certain hardware demuxer have specific restrictions for PCR periodicity.
parent 3f7e94ec
No related branches found
No related tags found
No related merge requests found
...@@ -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 },
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment