[FFmpeg-cvslog] ffplay: dont leave swresampler in half initialized state

Marton Balint git at videolan.org
Fri Oct 10 00:40:09 CEST 2014


ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Wed Oct  8 23:36:11 2014 +0200| [ce928d7d2b3bd68a222cfbc19a44805ac4cdaf14] | committer: Marton Balint

ffplay: dont leave swresampler in half initialized state

On init failure, let's just free it, so next time it will be recreated from
start.

Also fixes Coverity CID 1241515.

Reviewed-by: Michael Niedermayer <michaelni at gmx.at>
Signed-off-by: Marton Balint <cus at passwd.hu>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ce928d7d2b3bd68a222cfbc19a44805ac4cdaf14
---

 ffplay.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/ffplay.c b/ffplay.c
index 8fa5ca3..37983e9 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -2419,6 +2419,7 @@ static int audio_decode_frame(VideoState *is)
                            "Cannot create sample rate converter for conversion of %d Hz %s %d channels to %d Hz %s %d channels!\n",
                             is->frame->sample_rate, av_get_sample_fmt_name(is->frame->format), av_frame_get_channels(is->frame),
                             is->audio_tgt.freq, av_get_sample_fmt_name(is->audio_tgt.fmt), is->audio_tgt.channels);
+                    swr_free(&is->swr_ctx);
                     break;
                 }
                 is->audio_src.channel_layout = dec_channel_layout;
@@ -2454,7 +2455,8 @@ static int audio_decode_frame(VideoState *is)
                 }
                 if (len2 == out_count) {
                     av_log(NULL, AV_LOG_WARNING, "audio buffer is probably too small\n");
-                    swr_init(is->swr_ctx);
+                    if (swr_init(is->swr_ctx) < 0)
+                        swr_free(&is->swr_ctx);
                 }
                 is->audio_buf = is->audio_buf1;
                 resampled_data_size = len2 * is->audio_tgt.channels * av_get_bytes_per_sample(is->audio_tgt.fmt);



More information about the ffmpeg-cvslog mailing list