[FFmpeg-devel] [PATCH] ffplay: provide some feedback in case the codec cannot be set
Marton Balint
cus at passwd.hu
Sat Dec 15 23:50:33 CET 2012
On Sat, 15 Dec 2012, Stefano Sabatini wrote:
> ---
> ffplay.c | 16 +++++++++++-----
> 1 file changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/ffplay.c b/ffplay.c
> index a45def4..109609c 100644
> --- a/ffplay.c
> +++ b/ffplay.c
> @@ -2300,6 +2300,7 @@ static int stream_component_open(VideoState *is, int stream_index)
> AVFormatContext *ic = is->ic;
> AVCodecContext *avctx;
> AVCodec *codec;
> + const char *forced_codec_name;
You should initialize this to NULL.
> AVDictionary *opts;
> AVDictionaryEntry *t = NULL;
>
> @@ -2310,12 +2311,17 @@ static int stream_component_open(VideoState *is, int stream_index)
> codec = avcodec_find_decoder(avctx->codec_id);
>
> switch(avctx->codec_type){
> - case AVMEDIA_TYPE_AUDIO : is->last_audio_stream = stream_index; if(audio_codec_name ) codec= avcodec_find_decoder_by_name( audio_codec_name); break;
> - case AVMEDIA_TYPE_SUBTITLE: is->last_subtitle_stream = stream_index; if(subtitle_codec_name) codec= avcodec_find_decoder_by_name(subtitle_codec_name); break;
> - case AVMEDIA_TYPE_VIDEO : is->last_video_stream = stream_index; if(video_codec_name ) codec= avcodec_find_decoder_by_name( video_codec_name); break;
> - }
> - if (!codec)
> + case AVMEDIA_TYPE_AUDIO : is->last_audio_stream = stream_index; forced_codec_name = audio_codec_name; break;
> + case AVMEDIA_TYPE_SUBTITLE: is->last_subtitle_stream = stream_index; forced_codec_name = subtitle_codec_name; break;
> + case AVMEDIA_TYPE_VIDEO : is->last_video_stream = stream_index; forced_codec_name = video_codec_name; break;
> + }
> + if (forced_codec_name)
> + codec = avcodec_find_decoder_by_name(forced_codec_name);
> + if (!codec) {
> + if (forced_codec_name) fprintf(stderr, "No codec could be found with name '%s'\n", forced_codec_name);
> + else fprintf(stderr, "No codec could be found with id %d\n", avctx->codec_id);
> return -1;
> + }
>
> avctx->codec_id = codec->id;
> avctx->workaround_bugs = workaround_bugs;
Otherwise LGTM, thanks.
Marton
More information about the ffmpeg-devel
mailing list