void avcodec_open2_cleanup_handler(void *arg) {
debug(3, "avcodec_open2_cleanup_handler");
AVCodecContext *codec_context = arg;
- avcodec_close(codec_context);
+ avcodec_free_context(&codec_context);
}
void av_parser_init_cleanup_handler(void *arg) {
// push a deallocator -- av_packet_free(pkt);
pthread_cleanup_push(swr_alloc_cleanup_handler, &swr);
+
+// FFmpeg 5.1 or later...
+#if LIBAVUTIL_VERSION_MAJOR >= 57
+ av_opt_set_chlayout(swr, "in_chlayout", &(AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO, 0);
+ av_opt_set_chlayout(swr, "out_chlayout", &(AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO, 0);
+#else
av_opt_set_int(swr, "in_channel_layout", AV_CH_LAYOUT_STEREO, 0);
av_opt_set_int(swr, "out_channel_layout", AV_CH_LAYOUT_STEREO, 0);
+#endif
av_opt_set_int(swr, "in_sample_rate", conn->input_rate, 0);
av_opt_set_int(swr, "out_sample_rate", conn->input_rate,
0); // must match or the timing will be wrong`