@ -2168,22 +2168,23 @@ enum CodecID av_codec_get_id(const AVCodecTag * const *tags, unsigned int tag)
static void compute_chapters_end ( AVFormatContext * s )
{
unsigned int i ;
unsigned int i , j ;
int64_t max_time = s - > duration + ( s - > start_time = = AV_NOPTS_VALUE ) ? 0 : s - > start_time ;
for ( i = 0 ; i + 1 < s - > nb_chapters ; i + + )
for ( i = 0 ; i < s - > nb_chapters ; i + + )
if ( s - > chapters [ i ] - > end = = AV_NOPTS_VALUE ) {
assert ( s - > chapters [ i ] - > start < = s - > chapters [ i + 1 ] - > start ) ;
assert ( ! av_cmp_q ( s - > chapters [ i ] - > time_base , s - > chapters [ i + 1 ] - > time_base ) ) ;
s - > chapters [ i ] - > end = s - > chapters [ i + 1 ] - > start ;
AVChapter * ch = s - > chapters [ i ] ;
int64_t end = max_time ? av_rescale_q ( max_time , AV_TIME_BASE_Q , ch - > time_base )
: INT64_MAX ;
for ( j = 0 ; j < s - > nb_chapters ; j + + ) {
AVChapter * ch1 = s - > chapters [ j ] ;
int64_t next_start = av_rescale_q ( ch1 - > start , ch1 - > time_base , ch - > time_base ) ;
if ( j ! = i & & next_start > ch - > start & & next_start < end )
end = next_start ;
}
ch - > end = ( end = = INT64_MAX ) ? ch - > start : end ;
}
if ( s - > nb_chapters & & s - > chapters [ i ] - > end = = AV_NOPTS_VALUE ) {
assert ( s - > start_time ! = AV_NOPTS_VALUE ) ;
assert ( s - > duration > 0 ) ;
s - > chapters [ i ] - > end = av_rescale_q ( s - > start_time + s - > duration ,
AV_TIME_BASE_Q ,
s - > chapters [ i ] - > time_base ) ;
}
}
static int get_std_framerate ( int i ) {