@ -2574,14 +2574,20 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
return ret ;
}
static AVProgram * find_program_from_stream ( AVFormatContext * ic , int s )
AVProgram * av_ find_program_from_stream( AVFormatContext * ic , AVProgram * last , int s )
{
int i , j ;
for ( i = 0 ; i < ic - > nb_programs ; i + + )
for ( j = 0 ; j < ic - > programs [ i ] - > nb_stream_indexes ; j + + )
if ( ic - > programs [ i ] - > stream_index [ j ] = = s )
return ic - > programs [ i ] ;
for ( i = 0 ; i < ic - > nb_programs ; i + + ) {
if ( ic - > programs [ i ] = = last ) {
last = NULL ;
} else {
if ( ! last )
for ( j = 0 ; j < ic - > programs [ i ] - > nb_stream_indexes ; j + + )
if ( ic - > programs [ i ] - > stream_index [ j ] = = s )
return ic - > programs [ i ] ;
}
}
return NULL ;
}
@ -2598,7 +2604,7 @@ int av_find_best_stream(AVFormatContext *ic,
AVCodec * decoder = NULL , * best_decoder = NULL ;
if ( related_stream > = 0 & & wanted_stream_nb < 0 ) {
AVProgram * p = find_program_from_stream ( ic , related_stream ) ;
AVProgram * p = av_ find_program_from_stream( ic , NULL , related_stream ) ;
if ( p ) {
program = p - > stream_index ;
nb_streams = p - > nb_stream_indexes ;