avformat/utils: Fix bitrate overflow check

The check added in df33a58e53 does not work
at all, rather it broke the summing of bitrates completely.
The comparission was wrong way around.
This commit replaces it by a simpler and hopefully clearer check

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit a5d67bc796)

Conflicts:

	libavformat/utils.c

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer
2013-09-03 14:36:12 +02:00
parent dfe0ba46bf
commit 5c6aea5c31

View File

@@ -2253,22 +2253,19 @@ static void fill_all_stream_timings(AVFormatContext *ic)
static void estimate_timings_from_bit_rate(AVFormatContext *ic) static void estimate_timings_from_bit_rate(AVFormatContext *ic)
{ {
int64_t filesize, duration; int64_t filesize, duration;
int bit_rate, i; int i;
AVStream *st; AVStream *st;
/* if bit_rate is already set, we believe it */ /* if bit_rate is already set, we believe it */
if (ic->bit_rate <= 0) { if (ic->bit_rate <= 0) {
bit_rate = 0; int64_t bit_rate = 0;
for(i=0;i<ic->nb_streams;i++) { for(i=0;i<ic->nb_streams;i++) {
st = ic->streams[i]; st = ic->streams[i];
if (st->codec->bit_rate > 0) { if (st->codec->bit_rate > 0) {
if (INT_MAX - st->codec->bit_rate > bit_rate) {
bit_rate = 0;
break;
}
bit_rate += st->codec->bit_rate; bit_rate += st->codec->bit_rate;
} }
} }
if (bit_rate <= INT_MAX)
ic->bit_rate = bit_rate; ic->bit_rate = bit_rate;
} }