mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-24 20:19:55 +00:00
parent
cf83c01739
commit
e58a140cf9
21
avplay.c
21
avplay.c
@ -2030,6 +2030,7 @@ static int stream_component_open(VideoState *is, int stream_index)
|
||||
SDL_AudioSpec wanted_spec, spec;
|
||||
AVDictionary *opts;
|
||||
AVDictionaryEntry *t = NULL;
|
||||
int ret = 0;
|
||||
|
||||
if (stream_index < 0 || stream_index >= ic->nb_streams)
|
||||
return -1;
|
||||
@ -2052,11 +2053,13 @@ static int stream_component_open(VideoState *is, int stream_index)
|
||||
if (avctx->codec_type == AVMEDIA_TYPE_VIDEO)
|
||||
av_dict_set(&opts, "refcounted_frames", "1", 0);
|
||||
if (!codec ||
|
||||
avcodec_open2(avctx, codec, &opts) < 0)
|
||||
return -1;
|
||||
(ret = avcodec_open2(avctx, codec, &opts)) < 0) {
|
||||
goto fail;
|
||||
}
|
||||
if ((t = av_dict_get(opts, "", NULL, AV_DICT_IGNORE_SUFFIX))) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Option %s not found.\n", t->key);
|
||||
return AVERROR_OPTION_NOT_FOUND;
|
||||
ret = AVERROR_OPTION_NOT_FOUND;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* prepare audio output */
|
||||
@ -2067,7 +2070,8 @@ static int stream_component_open(VideoState *is, int stream_index)
|
||||
avctx->channel_layout = av_get_default_channel_layout(avctx->channels);
|
||||
if (!avctx->channel_layout) {
|
||||
fprintf(stderr, "unable to guess channel layout\n");
|
||||
return -1;
|
||||
ret = AVERROR_INVALIDDATA;
|
||||
goto fail;
|
||||
}
|
||||
if (avctx->channels == 1)
|
||||
is->sdl_channel_layout = AV_CH_LAYOUT_MONO;
|
||||
@ -2084,7 +2088,8 @@ static int stream_component_open(VideoState *is, int stream_index)
|
||||
wanted_spec.userdata = is;
|
||||
if (SDL_OpenAudio(&wanted_spec, &spec) < 0) {
|
||||
fprintf(stderr, "SDL_OpenAudio: %s\n", SDL_GetError());
|
||||
return -1;
|
||||
ret = AVERROR_UNKNOWN;
|
||||
goto fail;
|
||||
}
|
||||
is->audio_hw_buf_size = spec.size;
|
||||
is->sdl_sample_fmt = AV_SAMPLE_FMT_S16;
|
||||
@ -2129,7 +2134,11 @@ static int stream_component_open(VideoState *is, int stream_index)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
av_dict_free(&opts);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void stream_component_close(VideoState *is, int stream_index)
|
||||
|
Loading…
Reference in New Issue
Block a user