|
|
|
@ -2890,6 +2890,7 @@ static int read_thread(void *arg) |
|
|
|
|
AVDictionary **opts; |
|
|
|
|
int orig_nb_streams; |
|
|
|
|
SDL_mutex *wait_mutex = SDL_CreateMutex(); |
|
|
|
|
int scan_all_pmts_set = 0; |
|
|
|
|
|
|
|
|
|
memset(st_index, -1, sizeof(st_index)); |
|
|
|
|
is->last_video_stream = is->video_stream = -1; |
|
|
|
@ -2899,12 +2900,19 @@ static int read_thread(void *arg) |
|
|
|
|
ic = avformat_alloc_context(); |
|
|
|
|
ic->interrupt_callback.callback = decode_interrupt_cb; |
|
|
|
|
ic->interrupt_callback.opaque = is; |
|
|
|
|
if (!av_dict_get(format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE)) { |
|
|
|
|
av_dict_set(&format_opts, "scan_all_pmts", "1", AV_DICT_DONT_OVERWRITE); |
|
|
|
|
scan_all_pmts_set = 1; |
|
|
|
|
} |
|
|
|
|
err = avformat_open_input(&ic, is->filename, is->iformat, &format_opts); |
|
|
|
|
if (err < 0) { |
|
|
|
|
print_error(is->filename, err); |
|
|
|
|
ret = -1; |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
if (scan_all_pmts_set) |
|
|
|
|
av_dict_set(&format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE); |
|
|
|
|
|
|
|
|
|
if ((t = av_dict_get(format_opts, "", NULL, AV_DICT_IGNORE_SUFFIX))) { |
|
|
|
|
av_log(NULL, AV_LOG_ERROR, "Option %s not found.\n", t->key); |
|
|
|
|
ret = AVERROR_OPTION_NOT_FOUND; |
|
|
|
|