[FFmpeg-devel] [PATCH] ffplay: provide some feedback in case the codec cannot be set

Stefano Sabatini stefasab at gmail.com
Sun Dec 16 11:05:17 CET 2012


On date Saturday 2012-12-15 23:50:33 +0100, Marton Balint encoded:
> 
> 
> 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.

Fixed, applied, thanks.
-- 
FFmpeg = Free and Funny Merciful Prodigious Exciting Genius


More information about the ffmpeg-devel mailing list