From 9a6a2f70c64ae28e6ad79bc2d536d8a7a05f63c7 Mon Sep 17 00:00:00 2001 From: Jacek Jendrzej Date: Mon, 17 Feb 2014 16:24:44 +0100 Subject: [PATCH] CFfmpegDec::Decoder -fix possible floating point exception --- src/driver/audiodec/ffmpegdec.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/driver/audiodec/ffmpegdec.cpp b/src/driver/audiodec/ffmpegdec.cpp index 7f0bb32fb..63713e7cf 100644 --- a/src/driver/audiodec/ffmpegdec.cpp +++ b/src/driver/audiodec/ffmpegdec.cpp @@ -247,16 +247,20 @@ CBaseDec::RetCode CFfmpegDec::Decoder(FILE *_in, int /*OutputFd*/, State* state, AVFrame *frame = NULL; AVPacket rpacket; av_init_packet(&rpacket); + c->channel_layout = c->channel_layout ? c->channel_layout : AV_CH_LAYOUT_STEREO; av_opt_set_int(swr, "in_channel_layout", c->channel_layout, 0); //av_opt_set_int(swr, "out_channel_layout", c->channel_layout, 0); av_opt_set_int(swr, "out_channel_layout", AV_CH_LAYOUT_STEREO, 0); av_opt_set_int(swr, "in_sample_rate", c->sample_rate, 0); av_opt_set_int(swr, "out_sample_rate", c->sample_rate, 0); - av_opt_set_int(swr, "in_sample_fmt", c->sample_fmt, 0); - av_opt_set_int(swr, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0); + av_opt_set_sample_fmt(swr, "in_sample_fmt", c->sample_fmt, 0); + av_opt_set_sample_fmt(swr, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0); - swr_init(swr); + if (( swr_init(swr)) < 0) { + Status=DATA_ERR; + return Status; + } uint8_t *outbuf = NULL; int outsamples = 0;