From 60c06fec1e45e1ddb285fe54f1106e1fc8838edd Mon Sep 17 00:00:00 2001 From: wm4 Date: Sat, 21 Dec 2013 18:29:42 +0100 Subject: audio/fmt-conversion.c: remove unknown audio format messages Same deal as with video/fmt-conversion.c. --- audio/decode/ad_lavc.c | 5 ++++- audio/filter/af_lavfi.c | 3 +++ audio/fmt-conversion.c | 21 +++++++-------------- audio/out/ao_lavc.c | 5 +++++ 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/audio/decode/ad_lavc.c b/audio/decode/ad_lavc.c index 5f73002d14..b2f29505c2 100644 --- a/audio/decode/ad_lavc.c +++ b/audio/decode/ad_lavc.c @@ -137,7 +137,10 @@ static int setup_format(struct dec_audio *da) // Note: invalid parameters are rejected by dec_audio.c - mp_audio_set_format(&da->decoded, af_from_avformat(lavc_context->sample_fmt)); + int fmt = lavc_context->sample_fmt; + mp_audio_set_format(&da->decoded, af_from_avformat(fmt)); + if (!da->decoded.format) + MP_FATAL(da, "unsupported lavc format %s", av_get_sample_fmt_name(fmt)); da->decoded.rate = lavc_context->sample_rate; if (!da->decoded.rate && sh_audio->wf) { diff --git a/audio/filter/af_lavfi.c b/audio/filter/af_lavfi.c index 30097ee34d..eaec556dc7 100644 --- a/audio/filter/af_lavfi.c +++ b/audio/filter/af_lavfi.c @@ -195,6 +195,9 @@ static int control(struct af_instance *af, int cmd, void *arg) mp_chmap_from_channels(&out_cm, l_out->channels); mp_audio_set_channels(out, &out_cm); + if (!mp_audio_config_valid(out)) + return AF_ERROR; + p->timebase_out = l_out->time_base; // Blatantly incorrect; we don't know what the filters do. diff --git a/audio/fmt-conversion.c b/audio/fmt-conversion.c index 65f84945c1..6072305424 100644 --- a/audio/fmt-conversion.c +++ b/audio/fmt-conversion.c @@ -16,7 +16,6 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include "common/msg.h" #include #include #include "format.h" @@ -43,24 +42,18 @@ static const struct { enum AVSampleFormat af_to_avformat(int fmt) { - int i; - for (i = 0; audio_conversion_map[i].fmt; i++) + for (int i = 0; audio_conversion_map[i].fmt; i++) { if (audio_conversion_map[i].fmt == fmt) - break; - return audio_conversion_map[i].sample_fmt; + return audio_conversion_map[i].sample_fmt; + } + return 0; } int af_from_avformat(enum AVSampleFormat sample_fmt) { - int i; - for (i = 0; audio_conversion_map[i].fmt; i++) + for (int i = 0; audio_conversion_map[i].fmt; i++) { if (audio_conversion_map[i].sample_fmt == sample_fmt) - break; - int fmt = audio_conversion_map[i].fmt; - if (!fmt) { - const char *fmtname = av_get_sample_fmt_name(sample_fmt); - mp_msg(MSGT_GLOBAL, MSGL_ERR, "Unsupported AVSampleFormat %s (%d)\n", - fmtname ? fmtname : "INVALID", sample_fmt); + return audio_conversion_map[i].fmt; } - return fmt; + return 0; } diff --git a/audio/out/ao_lavc.c b/audio/out/ao_lavc.c index 3e4ba01105..359fbae0fa 100644 --- a/audio/out/ao_lavc.c +++ b/audio/out/ao_lavc.c @@ -69,6 +69,11 @@ static void select_format(struct ao *ao, AVCodec *codec) ++sampleformat) { int fmt = af_from_avformat(*sampleformat); + if (!fmt) { + MP_WARN(ao, "unsupported lavc format %s", + av_get_sample_fmt_name(*sampleformat)); + continue; + } int score = af_format_conversion_score(fmt, ao->format); if (score > best_score) { best_score = score; -- cgit v1.2.3