@ -254,6 +254,7 @@ static const OptionDef *options;
/* FFprobe context */
static const char * input_filename ;
static const char * print_input_filename ;
static AVInputFormat * iformat = NULL ;
static struct AVHashContext * hash ;
@ -2836,7 +2837,8 @@ static void show_error(WriterContext *w, int err)
writer_print_section_footer ( w ) ;
}
static int open_input_file ( InputFile * ifile , const char * filename )
static int open_input_file ( InputFile * ifile , const char * filename ,
const char * print_filename )
{
int err , i ;
AVFormatContext * fmt_ctx = NULL ;
@ -2858,6 +2860,10 @@ static int open_input_file(InputFile *ifile, const char *filename)
print_error ( filename , err ) ;
return err ;
}
if ( print_filename ) {
av_freep ( & fmt_ctx - > url ) ;
fmt_ctx - > url = av_strdup ( print_filename ) ;
}
ifile - > fmt_ctx = fmt_ctx ;
if ( scan_all_pmts_set )
av_dict_set ( & format_opts , " scan_all_pmts " , NULL , AV_DICT_MATCH_CASE ) ;
@ -2971,7 +2977,8 @@ static void close_input_file(InputFile *ifile)
avformat_close_input ( & ifile - > fmt_ctx ) ;
}
static int probe_file ( WriterContext * wctx , const char * filename )
static int probe_file ( WriterContext * wctx , const char * filename ,
const char * print_filename )
{
InputFile ifile = { 0 } ;
int ret , i ;
@ -2980,7 +2987,7 @@ static int probe_file(WriterContext *wctx, const char *filename)
do_read_frames = do_show_frames | | do_count_frames ;
do_read_packets = do_show_packets | | do_count_packets ;
ret = open_input_file ( & ifile , filename ) ;
ret = open_input_file ( & ifile , filename , print_filename ) ;
if ( ret < 0 )
goto end ;
@ -3286,6 +3293,12 @@ static int opt_input_file_i(void *optctx, const char *opt, const char *arg)
return 0 ;
}
static int opt_print_filename ( void * optctx , const char * opt , const char * arg )
{
print_input_filename = arg ;
return 0 ;
}
void show_help_default ( const char * opt , const char * arg )
{
av_log_set_callback ( log_callback_help ) ;
@ -3544,6 +3557,7 @@ static const OptionDef real_options[] = {
{ " read_intervals " , HAS_ARG , { . func_arg = opt_read_intervals } , " set read intervals " , " read_intervals " } ,
{ " default " , HAS_ARG | OPT_AUDIO | OPT_VIDEO | OPT_EXPERT , { . func_arg = opt_default } , " generic catch all option " , " " } ,
{ " i " , HAS_ARG , { . func_arg = opt_input_file_i } , " read specified file " , " input_file " } ,
{ " print_filename " , HAS_ARG , { . func_arg = opt_print_filename } , " override the printed input filename " , " print_file " } ,
{ " find_stream_info " , OPT_BOOL | OPT_INPUT | OPT_EXPERT , { & find_stream_info } ,
" read and decode the streams to fill missing information with heuristics " } ,
{ NULL , } ,
@ -3692,7 +3706,7 @@ int main(int argc, char **argv)
av_log ( NULL , AV_LOG_ERROR , " Use -h to get full help or, even better, run 'man %s'. \n " , program_name ) ;
ret = AVERROR ( EINVAL ) ;
} else if ( input_filename ) {
ret = probe_file ( wctx , input_filename ) ;
ret = probe_file ( wctx , input_filename , print_input_filename ) ;
if ( ret < 0 & & do_show_error )
show_error ( wctx , ret ) ;
}