[vlc-commits] avcodec: specify which encoder failed to initialize (fixes #9418)
Rémi Denis-Courmont
git at videolan.org
Sun Sep 22 11:01:32 CEST 2013
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sun Sep 22 12:00:59 2013 +0300| [334303f469656689cecf93dcb7e00d045dd59503] | committer: Rémi Denis-Courmont
avcodec: specify which encoder failed to initialize (fixes #9418)
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=334303f469656689cecf93dcb7e00d045dd59503
---
modules/codec/avcodec/encoder.c | 28 ++++++++++++++++++----------
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
index 92aa28d..f53ddbb 100644
--- a/modules/codec/avcodec/encoder.c
+++ b/modules/codec/avcodec/encoder.c
@@ -758,10 +758,25 @@ int OpenEncoder( vlc_object_t *p_this )
if( p_enc->fmt_in.i_cat != AUDIO_ES ||
(p_context->channels <= 2 && i_codec_id != AV_CODEC_ID_MP2
&& i_codec_id != AV_CODEC_ID_MP3) )
+errmsg:
{
- msg_Err( p_enc, "cannot open encoder" );
+ static const char types[][12] = {
+ [UNKNOWN_ES] = N_("unknown"), [VIDEO_ES] = N_("video"),
+ [AUDIO_ES] = N_("audio"), [SPU_ES] = N_("subpicture"),
+ };
+ const char *type = types[0];
+ union
+ {
+ vlc_fourcc_t value;
+ char txt[4];
+ } fcc = { .value = p_enc->fmt_out.i_codec };
+
+ if (likely((unsigned)p_enc->fmt_in.i_cat < sizeof (types) / sizeof (types[0])))
+ type = types[p_enc->fmt_in.i_cat];
+ msg_Err( p_enc, "cannot open %4.4s %s encoder", fcc.txt, type );
dialog_Fatal( p_enc, _("Streaming / Transcoding failed"),
- "%s", _("VLC could not open the encoder.") );
+ _("VLC could not open the %4.4s %s encoder."),
+ fcc.txt, vlc_gettext(type) );
av_dict_free(&options);
goto error;
}
@@ -810,14 +825,7 @@ int OpenEncoder( vlc_object_t *p_this )
ret = avcodec_open2( p_context, p_codec, options ? &options : NULL );
vlc_avcodec_unlock();
if( ret )
- {
- msg_Err( p_enc, "cannot open encoder" );
- dialog_Fatal( p_enc,
- _("Streaming / Transcoding failed"),
- "%s", _("VLC could not open the encoder.") );
- av_dict_free(&options);
- goto error;
- }
+ goto errmsg;
}
av_dict_free(&options);
More information about the vlc-commits
mailing list