Browse Source

Don't override duration from file header with bitrate duration

This is most noticable on matroska files which has duration
as part of it's header.
tags/n0.9
Joakim Plate 13 years ago
parent
commit
cdced09ef6
1 changed files with 5 additions and 3 deletions
  1. +5
    -3
      libavformat/utils.c

+ 5
- 3
libavformat/utils.c View File

@@ -1856,6 +1856,8 @@ static int has_duration(AVFormatContext *ic)
{ {
int i; int i;
AVStream *st; AVStream *st;
if(ic->duration != AV_NOPTS_VALUE)
return 1;


for(i = 0;i < ic->nb_streams; i++) { for(i = 0;i < ic->nb_streams; i++) {
st = ic->streams[i]; st = ic->streams[i];
@@ -1913,14 +1915,14 @@ static void update_stream_timings(AVFormatContext *ic)
duration = end_time - start_time; duration = end_time - start_time;
} }
} }
if (duration != INT64_MIN) {
if (duration != INT64_MIN && ic->duration == AV_NOPTS_VALUE) {
ic->duration = duration; ic->duration = duration;
if (ic->file_size > 0) {
}
if (ic->file_size > 0 && ic->duration != AV_NOPTS_VALUE) {
/* compute the bitrate */ /* compute the bitrate */
ic->bit_rate = (double)ic->file_size * 8.0 * AV_TIME_BASE / ic->bit_rate = (double)ic->file_size * 8.0 * AV_TIME_BASE /
(double)ic->duration; (double)ic->duration;
} }
}
} }


static void fill_all_stream_timings(AVFormatContext *ic) static void fill_all_stream_timings(AVFormatContext *ic)


Loading…
Cancel
Save