aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2022-09-11 22:38:44 +0200
committerdec05eba <dec05eba@protonmail.com>2022-09-11 22:38:44 +0200
commit948d285f82ab9bf9006fface1ae065fcb4ff0729 (patch)
tree31f0a37687fb92bfa7b40e533e396444329b8dbf
parent4917c0406cd4b38167a52dbd8247bba706fa49a7 (diff)
Fix build for old ffmpeg (ubuntu, pop os lts)
-rw-r--r--src/main.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/main.cpp b/src/main.cpp
index d170dc5..fbc8725 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -65,6 +65,8 @@ extern "C" {
//#include <CL/cl.h>
+// TODO: Remove LIBAVUTIL_VERSION_MAJOR checks in the future when ubuntu, pop os LTS etc update ffmpeg to >= 5.0
+
static const int VIDEO_STREAM_INDEX = 0;
static thread_local char av_error_buffer[AV_ERROR_MAX_STRING_SIZE];
@@ -387,7 +389,12 @@ static AVCodecContext* create_audio_codec_context(AVFormatContext *av_format_con
//codec_context->bit_rate = 64000;
codec_context->sample_rate = 48000;
codec_context->profile = FF_PROFILE_AAC_LOW;
+#if LIBAVUTIL_VERSION_MAJOR < 54
+ codec_context->channel_layout = AV_CH_LAYOUT_STEREO;
+ codec_context->channels = 2;
+#else
av_channel_layout_default(&codec_context->ch_layout, 2);
+#endif
codec_context->time_base.num = 1;
codec_context->time_base.den = AV_TIME_BASE;
@@ -513,7 +520,12 @@ static AVFrame* open_audio(AVCodecContext *audio_codec_context) {
frame->nb_samples = audio_codec_context->frame_size;
frame->format = audio_codec_context->sample_fmt;
+#if LIBAVUTIL_VERSION_MAJOR < 54
+ frame->channels = audio_codec_context->channels;
+ frame->channel_layout = audio_codec_context->channel_layout;
+#else
av_channel_layout_copy(&frame->ch_layout, &audio_codec_context->ch_layout);
+#endif
ret = av_frame_get_buffer(frame, 0);
if(ret < 0) {
@@ -1189,7 +1201,13 @@ int main(int argc, char **argv) {
audio_tracks.push_back({ audio_codec_context, audio_frame, audio_stream, audio_input, {}, {}, audio_stream_index });
- if(sound_device_get_by_name(&audio_tracks.back().sound_device, audio_tracks.back().input_name, audio_codec_context->ch_layout.nb_channels, audio_codec_context->frame_size) != 0) {
+#if LIBAVUTIL_VERSION_MAJOR < 54
+ const int num_channels = audio_codec_context->channels;
+#else
+ const int num_channels = audio_codec_context->ch_layout.nb_channels;
+#endif
+
+ if(sound_device_get_by_name(&audio_tracks.back().sound_device, audio_tracks.back().input_name, num_channels, audio_codec_context->frame_size) != 0) {
fprintf(stderr, "failed to get 'pulse' sound device\n");
exit(1);
}