Fix/workaround for newer FFmpeg 1.1.3 and MP3 decoder
authorSergey Sharybin <sergey.vfx@gmail.com>
Thu, 28 Feb 2013 18:28:08 +0000 (18:28 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Thu, 28 Feb 2013 18:28:08 +0000 (18:28 +0000)
FFmpeg is now using S16P sampler for MP3 which is not actually
supported by audaspace, so request for S16 sampler instead.

intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp
intern/ffmpeg/ffmpeg_compat.h

index 831e199..47bfe4e 100644 (file)
@@ -133,6 +133,11 @@ void AUD_FFMPEGReader::init()
        if(!aCodec)
                AUD_THROW(AUD_ERROR_FFMPEG, nodecoder_error);
 
+#ifdef FFMPEG_SAMPLE_FMT_S16P_SUPPORTED
+       if(m_codecCtx->sample_fmt == AV_SAMPLE_FMT_S16P)
+               m_codecCtx->request_sample_fmt = AV_SAMPLE_FMT_S16;
+#endif
+
        if(avcodec_open2(m_codecCtx, aCodec, NULL) < 0)
                AUD_THROW(AUD_ERROR_FFMPEG, codecopen_error);
 
index c07dc86..8663c96 100644 (file)
@@ -74,6 +74,7 @@
 
 #if ((LIBAVUTIL_VERSION_MAJOR > 51) || (LIBAVUTIL_VERSION_MAJOR == 51) && (LIBAVUTIL_VERSION_MINOR >= 32))
 #define FFMPEG_FFV1_ALPHA_SUPPORTED
+#define FFMPEG_SAMPLE_FMT_S16P_SUPPORTED
 #endif
 
 #if ((LIBAVUTIL_VERSION_MAJOR < 51) || (LIBAVUTIL_VERSION_MAJOR == 51) && (LIBAVUTIL_VERSION_MINOR < 22))