diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-08-11 01:34:34 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-08-11 01:34:34 +0200 |
commit | f4e814f787d050ac65f507b1304dcdc4ffa56f29 (patch) | |
tree | a6b5b2ef78882adf50fc54a8d0018a8bb036e460 /libswresample | |
parent | c4ac48c5a1464e20bb02ef62da2503906349e297 (diff) | |
download | ffmpeg-f4e814f787d050ac65f507b1304dcdc4ffa56f29.tar.gz |
swresample: check av_opt_set for failure in swr_alloc_set_opts()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libswresample')
-rw-r--r-- | libswresample/swresample.c | 40 |
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){ |