|
|
|
@@ -2304,7 +2304,7 @@ static void fill_all_stream_timings(AVFormatContext *ic) |
|
|
|
static void estimate_timings_from_bit_rate(AVFormatContext *ic) |
|
|
|
{ |
|
|
|
int64_t filesize, duration; |
|
|
|
int bit_rate, i; |
|
|
|
int bit_rate, i, show_warning = 0; |
|
|
|
AVStream *st; |
|
|
|
|
|
|
|
/* if bit_rate is already set, we believe it */ |
|
|
|
@@ -2329,10 +2329,13 @@ static void estimate_timings_from_bit_rate(AVFormatContext *ic) |
|
|
|
&& st->duration == AV_NOPTS_VALUE) { |
|
|
|
duration= av_rescale(8*filesize, st->time_base.den, ic->bit_rate*(int64_t)st->time_base.num); |
|
|
|
st->duration = duration; |
|
|
|
show_warning = 1; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (show_warning) |
|
|
|
av_log(ic, AV_LOG_WARNING, "Estimating duration from bitrate, this may be inaccurate\n"); |
|
|
|
} |
|
|
|
|
|
|
|
#define DURATION_MAX_READ_SIZE 250000LL |
|
|
|
@@ -2440,7 +2443,6 @@ static void estimate_timings(AVFormatContext *ic, int64_t old_offset) |
|
|
|
fill_all_stream_timings(ic); |
|
|
|
ic->duration_estimation_method = AVFMT_DURATION_FROM_STREAM; |
|
|
|
} else { |
|
|
|
av_log(ic, AV_LOG_WARNING, "Estimating duration from bitrate, this may be inaccurate\n"); |
|
|
|
/* less precise: use bitrate info */ |
|
|
|
estimate_timings_from_bit_rate(ic); |
|
|
|
ic->duration_estimation_method = AVFMT_DURATION_FROM_BITRATE; |
|
|
|
|