diff options
author | Timo Teräs <[email protected]> | 2015-11-28 08:27:39 +0200 |
---|---|---|
committer | Michael Niedermayer <[email protected]> | 2015-12-14 16:51:00 +0100 |
commit | 76cb34f7f5b8608670d1998b587ef9e12856ab99 (patch) | |
tree | 4768e5c2e4bc32768962aceebb3ee2debf999d10 | |
parent | da87a699ea9c1ba0b330413528dbca29bcc54ef8 (diff) |
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 <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 64f7db554ee83846f207e82a08946a6a5a6acfe2)
Signed-off-by: Michael Niedermayer <[email protected]>
-rw-r--r-- | libavformat/mpegtsenc.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 9efa9fc362..043a80f4e6 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -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) |