summaryrefslogtreecommitdiff
path: root/net-im/telegram-desktop/files/tdesktop-3.6.0-support-ffmpeg5.patch
diff options
context:
space:
mode:
Diffstat (limited to 'net-im/telegram-desktop/files/tdesktop-3.6.0-support-ffmpeg5.patch')
-rw-r--r--net-im/telegram-desktop/files/tdesktop-3.6.0-support-ffmpeg5.patch75
1 files changed, 75 insertions, 0 deletions
diff --git a/net-im/telegram-desktop/files/tdesktop-3.6.0-support-ffmpeg5.patch b/net-im/telegram-desktop/files/tdesktop-3.6.0-support-ffmpeg5.patch
new file mode 100644
index 000000000000..32959acd5482
--- /dev/null
+++ b/net-im/telegram-desktop/files/tdesktop-3.6.0-support-ffmpeg5.patch
@@ -0,0 +1,75 @@
+Support FFmpeg 5
+
+I'm not comfortable changing the _durationInMilliseconds formula on older
+versions of ffmpeg. Doing that only for newer versions also reduces the amount
+of testing this patch needs (of which it'll get very minimal amounts, this is a
+job better left for upstream when they get to it).
+
+Also it doesn't compile under ffmpeg 4 if the variables are constants :/
+
+--- tdesktop-3.6.0-full.orig/Telegram/ThirdParty/tgcalls/tgcalls/group/AudioStreamingPartInternal.cpp
++++ tdesktop-3.6.0-full/Telegram/ThirdParty/tgcalls/tgcalls/group/AudioStreamingPartInternal.cpp
+@@ -104,7 +104,11 @@
+
+ _frame = av_frame_alloc();
+
++#if LIBAVFORMAT_VERSION_MAJOR >= 59
++ const AVInputFormat *inputFormat = av_find_input_format(container.c_str());
++#else
+ AVInputFormat *inputFormat = av_find_input_format(container.c_str());
++#endif
+ if (!inputFormat) {
+ _didReadToEnd = true;
+ return;
+@@ -144,7 +148,11 @@
+
+ _streamId = i;
+
++#if LIBAVFORMAT_VERSION_MAJOR >= 59
++ _durationInMilliseconds = inStream->duration * 1000 / 48000;
++#else
+ _durationInMilliseconds = (int)((inStream->duration + inStream->first_dts) * 1000 / 48000);
++#endif
+
+ if (inStream->metadata) {
+ AVDictionaryEntry *entry = av_dict_get(inStream->metadata, "TG_META", nullptr, 0);
+--- tdesktop-3.6.0-full.orig/Telegram/ThirdParty/tgcalls/tgcalls/group/AudioStreamingPartPersistentDecoder.cpp
++++ tdesktop-3.6.0-full/Telegram/ThirdParty/tgcalls/tgcalls/group/AudioStreamingPartPersistentDecoder.cpp
+@@ -32,7 +32,11 @@
+ AudioStreamingPartPersistentDecoderState(AVCodecParameters const *codecParameters, AVRational timeBase) :
+ _codecParameters(codecParameters),
+ _timeBase(timeBase) {
++#ifdef LIBAVCODEC_VERSION_MAJOR >= 59
++ const AVCodec *codec = avcodec_find_decoder(codecParameters->codec_id);
++#else
+ AVCodec *codec = avcodec_find_decoder(codecParameters->codec_id);
++#endif
+ if (codec) {
+ _codecContext = avcodec_alloc_context3(codec);
+ int ret = avcodec_parameters_to_context(_codecContext, codecParameters);
+--- tdesktop-3.6.0-full.orig/Telegram/ThirdParty/tgcalls/tgcalls/group/VideoStreamingPart.cpp
++++ tdesktop-3.6.0-full/Telegram/ThirdParty/tgcalls/tgcalls/group/VideoStreamingPart.cpp
+@@ -280,7 +280,11 @@
+
+ int ret = 0;
+
++#if LIBAVFORMAT_VERSION_MAJOR >= 59
++ const AVInputFormat *inputFormat = av_find_input_format(container.c_str());
++#else
+ AVInputFormat *inputFormat = av_find_input_format(container.c_str());
++#endif
+ if (!inputFormat) {
+ _didReadToEnd = true;
+ return;
+@@ -323,7 +327,11 @@
+ }
+
+ if (videoCodecParameters && videoStream) {
++#if LIBAVCODEC_VERSION_MAJOR >= 59
++ const AVCodec *codec = avcodec_find_decoder(videoCodecParameters->codec_id);
++#else
+ AVCodec *codec = avcodec_find_decoder(videoCodecParameters->codec_id);
++#endif
+ if (codec) {
+ _codecContext = avcodec_alloc_context3(codec);
+ ret = avcodec_parameters_to_context(_codecContext, videoCodecParameters);