diff options
author | wm4 <wm4@mplayer2.org> | 2012-07-28 17:07:49 +0200 |
---|---|---|
committer | wm4 <wm4@mplayer2.org> | 2012-07-28 17:24:05 +0200 |
commit | 51e198c2a1e43b74ad35ef358628dcd8791158d9 (patch) | |
tree | 60f6c2255ed912a7a4866b71728104a2cb2442f1 /libmpcodecs/ad_ffmpeg.c | |
parent | 2793e7eb70a342b346788f83e1ed660c8e0d491e (diff) | |
parent | 7dfaaa95104a8e6dc024fddaf1b49c71768f1be7 (diff) | |
download | mpv-51e198c2a1e43b74ad35ef358628dcd8791158d9.tar.bz2 mpv-51e198c2a1e43b74ad35ef358628dcd8791158d9.tar.xz |
Merge remote-tracking branch 'origin/master'
Conflicts:
.gitignore
bstr.c
cfg-mplayer.h
defaultopts.c
libvo/video_out.c
The conflict in bstr.c is due to uau adding a bstr_getline function in
commit 2ba8b91a97e7e8. This function already existed in this branch.
While uau's function is obviously derived from mine, it's incompatible.
His function preserves line breaks, while mine strips them. Add a
bstr_strip_linebreaks function, fix all other uses of bstr_getline, and
pick uau's implementation.
In .gitignore, change vo_gl3_shaders.h to use an absolute path
additional to resolving the merge conflict.
Diffstat (limited to 'libmpcodecs/ad_ffmpeg.c')
-rw-r--r-- | libmpcodecs/ad_ffmpeg.c | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/libmpcodecs/ad_ffmpeg.c b/libmpcodecs/ad_ffmpeg.c index 0bfc5e5f0a..a20689eab8 100644 --- a/libmpcodecs/ad_ffmpeg.c +++ b/libmpcodecs/ad_ffmpeg.c @@ -38,11 +38,12 @@ static const ad_info_t info = { - "FFmpeg/libavcodec audio decoders", + "libavcodec audio decoders", "ffmpeg", - "Nick Kurshev", - "ffmpeg.sf.net", - "" + "", + "", + "", + .print_name = "libavcodec", }; LIBAD_EXTERN(ffmpeg) @@ -112,16 +113,31 @@ static int init(sh_audio_t *sh_audio) AVCodecContext *lavc_context; AVCodec *lavc_codec; - mp_msg(MSGT_DECAUDIO, MSGL_V, "FFmpeg's libavcodec audio codec\n"); - - lavc_codec = avcodec_find_decoder_by_name(sh_audio->codec->dll); - if (!lavc_codec) { - mp_tmsg(MSGT_DECAUDIO, MSGL_ERR, - "Cannot find codec '%s' in libavcodec...\n", - sh_audio->codec->dll); + if (sh_audio->codec->dll) { + lavc_codec = avcodec_find_decoder_by_name(sh_audio->codec->dll); + if (!lavc_codec) { + mp_tmsg(MSGT_DECAUDIO, MSGL_ERR, + "Cannot find codec '%s' in libavcodec...\n", + sh_audio->codec->dll); + return 0; + } + } else if (!sh_audio->libav_codec_id) { + mp_tmsg(MSGT_DECAUDIO, MSGL_INFO, "No Libav codec ID known. " + "Generic lavc decoder is not applicable.\n"); return 0; + } else { + lavc_codec = avcodec_find_decoder(sh_audio->libav_codec_id); + if (!lavc_codec) { + mp_tmsg(MSGT_DECAUDIO, MSGL_INFO, "Libavcodec has no decoder " + "for this codec\n"); + return 0; + } } + sh_audio->codecname = lavc_codec->long_name; + if (!sh_audio->codecname) + sh_audio->codecname = lavc_codec->name; + struct priv *ctx = talloc_zero(NULL, struct priv); sh_audio->context = ctx; lavc_context = avcodec_alloc_context3(lavc_codec); @@ -217,6 +233,7 @@ static int init(sh_audio_t *sh_audio) static void uninit(sh_audio_t *sh) { + sh->codecname = NULL; struct priv *ctx = sh->context; if (!ctx) return; |