summarylogtreecommitdiffstats
path: root/fix-ffmpeg-build-for-tgcalls.patch
diff options
context:
space:
mode:
Diffstat (limited to 'fix-ffmpeg-build-for-tgcalls.patch')
-rw-r--r--fix-ffmpeg-build-for-tgcalls.patch72
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);