diff options
Diffstat (limited to 'net-im/telegram-desktop')
-rw-r--r-- | net-im/telegram-desktop/files/no-webrtc-build.patch | 96 | ||||
-rw-r--r-- | net-im/telegram-desktop/metadata.xml | 1 | ||||
-rw-r--r-- | net-im/telegram-desktop/telegram-desktop-2.4.5.ebuild | 16 |
3 files changed, 110 insertions, 3 deletions
diff --git a/net-im/telegram-desktop/files/no-webrtc-build.patch b/net-im/telegram-desktop/files/no-webrtc-build.patch new file mode 100644 index 000000000000..8ae4113f4406 --- /dev/null +++ b/net-im/telegram-desktop/files/no-webrtc-build.patch @@ -0,0 +1,96 @@ +diff --git a/Telegram/SourceFiles/calls/calls_instance.cpp b/Telegram/SourceFiles/calls/calls_instance.cpp +index e99958109..bb7678d3c 100644 +--- a/Telegram/SourceFiles/calls/calls_instance.cpp ++++ b/Telegram/SourceFiles/calls/calls_instance.cpp +@@ -350,8 +350,11 @@ std::shared_ptr<tgcalls::VideoCaptureInterface> Instance::getVideoCapture() { + return result; + } + auto result = std::shared_ptr<tgcalls::VideoCaptureInterface>( ++ #ifndef DESKTOP_APP_DISABLE_WEBRTC_INTEGRATION + tgcalls::VideoCaptureInterface::Create( +- Core::App().settings().callVideoInputDeviceId().toStdString())); ++ Core::App().settings().callVideoInputDeviceId().toStdString()) ++ #endif ++ ); + _videoCapture = result; + return result; + } +diff --git Telegram/lib_webrtc/CMakeLists.txt b/CMakeLists.txt +index 47796f1..1f54c21 100644 +--- a/Telegram/lib_webrtc/CMakeLists.txt ++++ b/Telegram/lib_webrtc/CMakeLists.txt +@@ -14,8 +14,10 @@ target_precompile_headers(lib_webrtc PRIVATE ${src_loc}/webrtc/webrtc_pch.h) + nice_target_sources(lib_webrtc ${src_loc} + PRIVATE + webrtc/webrtc_audio_input_tester.cpp ++ webrtc/webrtc_audio_input_tester_dummy.cpp + webrtc/webrtc_audio_input_tester.h + webrtc/webrtc_media_devices.cpp ++ webrtc/webrtc_media_devices_dummy.cpp + webrtc/webrtc_media_devices.h + webrtc/webrtc_video_track.cpp + webrtc/webrtc_video_track.h +@@ -40,10 +42,14 @@ PUBLIC + if (DESKTOP_APP_DISABLE_WEBRTC_INTEGRATION) + remove_target_sources(lib_webrtc ${src_loc} + webrtc/webrtc_video_track.cpp ++ webrtc/webrtc_media_devices.cpp ++ webrtc/webrtc_audio_input_tester.cpp + ) + else() + remove_target_sources(lib_webrtc ${src_loc} + webrtc/webrtc_video_track_dummy.cpp ++ webrtc/webrtc_media_devices_dummy.cpp ++ webrtc/webrtc_audio_input_tester_dummy.cpp + ) + target_link_libraries(lib_webrtc + PRIVATE +diff --git Telegram/lib_webrtc/webrtc/webrtc_audio_input_tester.h b/webrtc/webrtc_audio_input_tester.h +index 1ae8d30..008df7e 100644 +--- a/Telegram/lib_webrtc/webrtc/webrtc_audio_input_tester.h ++++ b/Telegram/lib_webrtc/webrtc/webrtc_audio_input_tester.h +@@ -20,11 +20,13 @@ public: + [[nodiscard]] float getAndResetLevel(); + + private: ++#ifndef DESKTOP_APP_DISABLE_WEBRTC_INTEGRATION + class Impl; +- ++#endif + std::shared_ptr<std::atomic<int>> _maxSample; ++#ifndef DESKTOP_APP_DISABLE_WEBRTC_INTEGRATION + crl::object_on_thread<Impl> _impl; +- ++#endif + }; + + } // namespace Webrtc +diff --git Telegram/lib_webrtc/webrtc/webrtc_audio_input_tester_dummy.cpp b/webrtc/webrtc_audio_input_tester_dummy.cpp +new file mode 100644 +index 0000000..4e47eaa +--- a//dev/null ++++ b/Telegram/lib_webrtc/webrtc/webrtc_audio_input_tester_dummy.cpp +@@ -0,0 +1,11 @@ ++#include "webrtc/webrtc_audio_input_tester.h" ++ ++namespace Webrtc { ++AudioInputTester::AudioInputTester(const QString &deviceId) ++: _maxSample(std::make_shared<std::atomic<int>>(0)) {} ++AudioInputTester::~AudioInputTester() {} ++void AudioInputTester::setDeviceId(const QString &deviceId) {}; ++float AudioInputTester::getAndResetLevel() { ++ return _maxSample->exchange(0) / float(INT16_MAX);\ ++} ++} +diff --git Telegram/lib_webrtc/webrtc/webrtc_media_devices_dummy.cpp b/webrtc/webrtc_media_devices_dummy.cpp +new file mode 100644 +index 0000000..8d5d245 +--- a/dev/null ++++ b/Telegram/lib_webrtc/webrtc/webrtc_media_devices_dummy.cpp +@@ -0,0 +1,6 @@ ++#include "webrtc/webrtc_media_devices.h" ++namespace Webrtc { ++std::vector<VideoInput> GetVideoInputList() { return std::vector<VideoInput>(); }; ++std::vector<AudioInput> GetAudioInputList() { return std::vector<AudioInput>(); }; ++std::vector<AudioOutput> GetAudioOutputList() { return std::vector<AudioOutput>(); }; ++} diff --git a/net-im/telegram-desktop/metadata.xml b/net-im/telegram-desktop/metadata.xml index f7ab5b26ef9f..4e1022a426dd 100644 --- a/net-im/telegram-desktop/metadata.xml +++ b/net-im/telegram-desktop/metadata.xml @@ -9,5 +9,6 @@ <flag name="enchant">Enable the app-text/aspell spell-checking backend</flag> <flag name="hunspell">Enable the app-text/hunspell spell-checking backend</flag> <flag name="lto">Enable Link Time Optimization (LTO / IPO)</flag> + <flag name="webrtc">WebRTC based video call support</flag> </use> </pkgmetadata> diff --git a/net-im/telegram-desktop/telegram-desktop-2.4.5.ebuild b/net-im/telegram-desktop/telegram-desktop-2.4.5.ebuild index 953d58208648..ca2ff2db3afa 100644 --- a/net-im/telegram-desktop/telegram-desktop-2.4.5.ebuild +++ b/net-im/telegram-desktop/telegram-desktop-2.4.5.ebuild @@ -17,7 +17,7 @@ SRC_URI="https://github.com/telegramdesktop/tdesktop/releases/download/v${PV}/${ LICENSE="BSD GPL-3-with-openssl-exception LGPL-2+" SLOT="0" KEYWORDS="~amd64 ~ppc64" -IUSE="+dbus enchant +gtk +hunspell libressl lto pulseaudio +spell +X" +IUSE="+dbus enchant +gtk +hunspell libressl lto pulseaudio +spell +webrtc +X" RDEPEND=" !net-im/telegram-desktop-bin @@ -35,11 +35,9 @@ RDEPEND=" media-fonts/open-sans media-libs/alsa-lib media-libs/fontconfig:= - media-libs/libjpeg-turbo:= ~media-libs/libtgvoip-2.4.4_p20201030[pulseaudio=] media-libs/openal[alsa] media-libs/opus:= - ~media-libs/tg_owt-0_pre20201030[pulseaudio=] media-video/ffmpeg:=[alsa,opus] sys-libs/zlib[minizip] virtual/libiconv @@ -58,6 +56,10 @@ RDEPEND=" hunspell? ( >=app-text/hunspell-1.7:= ) !pulseaudio? ( media-sound/apulse[sdk] ) pulseaudio? ( media-sound/pulseaudio ) + webrtc? ( + media-libs/libjpeg-turbo:= + ~media-libs/tg_owt-0_pre20201030[pulseaudio=] + ) " DEPEND=" @@ -77,6 +79,7 @@ REQUIRED_USE=" spell? ( ^^ ( enchant hunspell ) ) + webrtc? ( !libressl ) " S="${WORKDIR}/${MY_P}" @@ -91,6 +94,12 @@ pkg_pretend() { fi } +src_prepare() { + # conditional patching is bad, but we want vanilla telegram with webrtc. + use webrtc || local PATCHES=( "${FILESDIR}/no-webrtc-build.patch" ) + cmake_src_prepare +} + src_configure() { local mycxxflags=( -Wno-deprecated-declarations @@ -116,6 +125,7 @@ src_configure() { -DTDESKTOP_LAUNCHER_BASENAME="${PN}" -DDESKTOP_APP_DISABLE_DBUS_INTEGRATION="$(usex dbus OFF ON)" -DDESKTOP_APP_DISABLE_SPELLCHECK="$(usex spell OFF ON)" # enables hunspell (recommended) + -DDESKTOP_APP_DISABLE_WEBRTC_INTEGRATION="$(usex webrtc OFF ON)" -DDESKTOP_APP_USE_ENCHANT="$(usex enchant ON OFF)" # enables enchant and disables hunspell $(usex lto "-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON" '') ) |