diff options
Diffstat (limited to 'fix-ffmpeg-build-for-tgcalls.patch')
-rw-r--r-- | fix-ffmpeg-build-for-tgcalls.patch | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/fix-ffmpeg-build-for-tgcalls.patch b/fix-ffmpeg-build-for-tgcalls.patch new file mode 100644 index 000000000000..c8c9ee5e3a15 --- /dev/null +++ b/fix-ffmpeg-build-for-tgcalls.patch @@ -0,0 +1,72 @@ +From da288b3cf4f91937da5bb8de0570dfa64871f4d9 Mon Sep 17 00:00:00 2001 +From: Nicholas Guriev <nicholas@guriev.su> +Date: Mon, 7 Mar 2022 11:52:01 +0300 +Subject: [PATCH] Fix build against FFmpeg v5.0 + +It has been released on January 17th. This patch keeps source compatibility +with older versions. +--- + tgcalls/group/AudioStreamingPartInternal.cpp | 5 ++++- + tgcalls/group/AudioStreamingPartPersistentDecoder.cpp | 2 +- + tgcalls/group/VideoStreamingPart.cpp | 5 ++++- + 3 files changed, 9 insertions(+), 3 deletions(-) + +diff --git a/tgcalls/group/AudioStreamingPartInternal.cpp b/tgcalls/group/AudioStreamingPartInternal.cpp +index 27a71cb..5639036 100644 +--- a/tgcalls/group/AudioStreamingPartInternal.cpp ++++ b/tgcalls/group/AudioStreamingPartInternal.cpp +@@ -104,6 +104,9 @@ _avIoContext(std::move(fileData)) { + + _frame = av_frame_alloc(); + ++#if LIBAVFORMAT_VERSION_MAJOR >= 59 ++ const ++#endif + AVInputFormat *inputFormat = av_find_input_format(container.c_str()); + if (!inputFormat) { + _didReadToEnd = true; +@@ -144,7 +147,7 @@ _avIoContext(std::move(fileData)) { + + _streamId = i; + +- _durationInMilliseconds = (int)((inStream->duration + inStream->first_dts) * 1000 / 48000); ++ _durationInMilliseconds = (int)(inStream->duration * av_q2d(inStream->time_base) * 1000); + + if (inStream->metadata) { + AVDictionaryEntry *entry = av_dict_get(inStream->metadata, "TG_META", nullptr, 0); +diff --git a/tgcalls/group/AudioStreamingPartPersistentDecoder.cpp b/tgcalls/group/AudioStreamingPartPersistentDecoder.cpp +index e79d430..63ef475 100644 +--- a/tgcalls/group/AudioStreamingPartPersistentDecoder.cpp ++++ b/tgcalls/group/AudioStreamingPartPersistentDecoder.cpp +@@ -32,7 +32,7 @@ class AudioStreamingPartPersistentDecoderState { + AudioStreamingPartPersistentDecoderState(AVCodecParameters const *codecParameters, AVRational timeBase) : + _codecParameters(codecParameters), + _timeBase(timeBase) { +- AVCodec *codec = avcodec_find_decoder(codecParameters->codec_id); ++ const AVCodec *codec = avcodec_find_decoder(codecParameters->codec_id); + if (codec) { + _codecContext = avcodec_alloc_context3(codec); + int ret = avcodec_parameters_to_context(_codecContext, codecParameters); +diff --git a/tgcalls/group/VideoStreamingPart.cpp b/tgcalls/group/VideoStreamingPart.cpp +index a67514a..10457eb 100644 +--- a/tgcalls/group/VideoStreamingPart.cpp ++++ b/tgcalls/group/VideoStreamingPart.cpp +@@ -280,6 +280,9 @@ class VideoStreamingPartInternal { + + int ret = 0; + ++#if LIBAVFORMAT_VERSION_MAJOR >= 59 ++ const ++#endif + AVInputFormat *inputFormat = av_find_input_format(container.c_str()); + if (!inputFormat) { + _didReadToEnd = true; +@@ -323,7 +326,7 @@ class VideoStreamingPartInternal { + } + + if (videoCodecParameters && videoStream) { +- AVCodec *codec = avcodec_find_decoder(videoCodecParameters->codec_id); ++ const AVCodec *codec = avcodec_find_decoder(videoCodecParameters->codec_id); + if (codec) { + _codecContext = avcodec_alloc_context3(codec); + ret = avcodec_parameters_to_context(_codecContext, videoCodecParameters); |