- resampler = swr_alloc_set_opts(nullptr,
- /*out_ch_layout=*/AV_CH_LAYOUT_STEREO_DOWNMIX,
- /*out_sample_fmt=*/dst_format,
- /*out_sample_rate=*/OUTPUT_FREQUENCY,
- /*in_ch_layout=*/channel_layout,
- /*in_sample_fmt=*/AVSampleFormat(audio_avframe->format),
- /*in_sample_rate=*/audio_avframe->sample_rate,
- /*log_offset=*/0,
- /*log_ctx=*/nullptr);
-
- if (resampler == nullptr) {
+ resampler = nullptr;
+ int err = swr_alloc_set_opts2(&resampler,
+ /*out_ch_layout=*/&stereo_downmix,
+ /*out_sample_fmt=*/dst_format,
+ /*out_sample_rate=*/OUTPUT_FREQUENCY,
+ /*in_ch_layout=*/&channel_layout,
+ /*in_sample_fmt=*/AVSampleFormat(audio_avframe->format),
+ /*in_sample_rate=*/audio_avframe->sample_rate,
+ /*log_offset=*/0,
+ /*log_ctx=*/nullptr);
+
+ if (err != 0 || resampler == nullptr) {