aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-08-11 01:34:34 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-08-11 01:34:34 +0200
commitf4e814f787d050ac65f507b1304dcdc4ffa56f29 (patch)
treea6b5b2ef78882adf50fc54a8d0018a8bb036e460
parentc4ac48c5a1464e20bb02ef62da2503906349e297 (diff)
downloadffmpeg-f4e814f787d050ac65f507b1304dcdc4ffa56f29.tar.gz
swresample: check av_opt_set for failure in swr_alloc_set_opts()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libswresample/swresample.c40
1 files changed, 31 insertions, 9 deletions
diff --git a/libswresample/swresample.c b/libswresample/swresample.c
index 81c04b2a3c..32bbee3340 100644
--- a/libswresample/swresample.c
+++ b/libswresample/swresample.c
@@ -62,17 +62,39 @@ struct SwrContext *swr_alloc_set_opts(struct SwrContext *s,
s->log_level_offset= log_offset;
s->log_ctx= log_ctx;
- av_opt_set_int(s, "ocl", out_ch_layout, 0);
- av_opt_set_int(s, "osf", out_sample_fmt, 0);
- av_opt_set_int(s, "osr", out_sample_rate, 0);
- av_opt_set_int(s, "icl", in_ch_layout, 0);
- av_opt_set_int(s, "isf", in_sample_fmt, 0);
- av_opt_set_int(s, "isr", in_sample_rate, 0);
- av_opt_set_int(s, "tsf", AV_SAMPLE_FMT_NONE, 0);
- av_opt_set_int(s, "ich", av_get_channel_layout_nb_channels(s-> in_ch_layout), 0);
- av_opt_set_int(s, "och", av_get_channel_layout_nb_channels(s->out_ch_layout), 0);
+ if (av_opt_set_int(s, "ocl", out_ch_layout, 0) < 0)
+ goto fail;
+
+ if (av_opt_set_int(s, "osf", out_sample_fmt, 0) < 0)
+ goto fail;
+
+ if (av_opt_set_int(s, "osr", out_sample_rate, 0) < 0)
+ goto fail;
+
+ if (av_opt_set_int(s, "icl", in_ch_layout, 0) < 0)
+ goto fail;
+
+ if (av_opt_set_int(s, "isf", in_sample_fmt, 0) < 0)
+ goto fail;
+
+ if (av_opt_set_int(s, "isr", in_sample_rate, 0) < 0)
+ goto fail;
+
+ if (av_opt_set_int(s, "tsf", AV_SAMPLE_FMT_NONE, 0) < 0)
+ goto fail;
+
+ if (av_opt_set_int(s, "ich", av_get_channel_layout_nb_channels(s-> in_ch_layout), 0) < 0)
+ goto fail;
+
+ if (av_opt_set_int(s, "och", av_get_channel_layout_nb_channels(s->out_ch_layout), 0) < 0)
+ goto fail;
+
av_opt_set_int(s, "uch", 0, 0);
return s;
+fail:
+ av_log(s, AV_LOG_ERROR, "Failed to set option\n");
+ swr_free(&s);
+ return NULL;
}
static void set_audiodata_fmt(AudioData *a, enum AVSampleFormat fmt){