From 3f89f77429b0501aa50148dde7e7faefeea4d178 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 4 Nov 2010 20:04:15 +0100 Subject: decoder/ffmpeg: check AVCodecContext.sample_fmt value .. instead of av_get_bits_per_sample_format(). The SampleFormat enum value is authoritative. --- src/decoder/ffmpeg_decoder_plugin.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/decoder/ffmpeg_decoder_plugin.c b/src/decoder/ffmpeg_decoder_plugin.c index d47356581..ea5b97d08 100644 --- a/src/decoder/ffmpeg_decoder_plugin.c +++ b/src/decoder/ffmpeg_decoder_plugin.c @@ -231,16 +231,18 @@ static enum sample_format ffmpeg_sample_format(G_GNUC_UNUSED const AVCodecContext *codec_context) { #if LIBAVCODEC_VERSION_INT >= ((51<<16)+(41<<8)+0) - int bits = (uint8_t) av_get_bits_per_sample_format(codec_context->sample_fmt); + switch (codec_context->sample_fmt) { + case SAMPLE_FMT_S16: + return SAMPLE_FORMAT_S16; - /* XXX implement & test other sample formats */ + case SAMPLE_FMT_S32: + return SAMPLE_FORMAT_S32; - switch (bits) { - case 16: - return SAMPLE_FORMAT_S16; + default: + g_warning("Unsupported libavcodec SampleFormat value: %d", + codec_context->sample_fmt); + return SAMPLE_FORMAT_UNDEFINED; } - - return SAMPLE_FORMAT_UNDEFINED; #else /* XXX fixme 16-bit for older ffmpeg (13 Aug 2007) */ return SAMPLE_FORMAT_S16; -- cgit v1.2.3