mpegencts: Fix overflow in cbr mode period calculations
ts->mux_rate is int (signed 32-bit) type. The period calculations will start to overflow when mux_rate > 5mbps. This fixes overflows by converting first to 64-bit type. Fixes #5044. Signed-off-by: Timo Teräs <timo.teras@iki.fi> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> (cherry picked from commit 64f7db554ee83846f207e82a08946a6a5a6acfe2) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
da87a699ea
commit
76cb34f7f5
@ -751,11 +751,11 @@ static int mpegts_write_header(AVFormatContext *s)
|
||||
ts_st = pcr_st->priv_data;
|
||||
|
||||
if (ts->mux_rate > 1) {
|
||||
service->pcr_packet_period = (ts->mux_rate * ts->pcr_period) /
|
||||
service->pcr_packet_period = (int64_t)ts->mux_rate * ts->pcr_period /
|
||||
(TS_PACKET_SIZE * 8 * 1000);
|
||||
ts->sdt_packet_period = (ts->mux_rate * SDT_RETRANS_TIME) /
|
||||
ts->sdt_packet_period = (int64_t)ts->mux_rate * SDT_RETRANS_TIME /
|
||||
(TS_PACKET_SIZE * 8 * 1000);
|
||||
ts->pat_packet_period = (ts->mux_rate * PAT_RETRANS_TIME) /
|
||||
ts->pat_packet_period = (int64_t)ts->mux_rate * PAT_RETRANS_TIME /
|
||||
(TS_PACKET_SIZE * 8 * 1000);
|
||||
|
||||
if (ts->copyts < 1)
|
||||
|
Loading…
x
Reference in New Issue
Block a user