From da7cd6291e0484a0238d4f5b3828784f3df8e2c2 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 10 Mar 2023 11:13:14 +0400 Subject: [PATCH] Proper check for atempo filter existance. --- Telegram/CMakeLists.txt | 2 - .../SourceFiles/media/audio/media_audio.cpp | 7 +- .../media/audio/media_openal_functions.cpp | 90 ------------------- .../media/audio/media_openal_functions.h | 56 ------------ 4 files changed, 6 insertions(+), 149 deletions(-) delete mode 100644 Telegram/SourceFiles/media/audio/media_openal_functions.cpp delete mode 100644 Telegram/SourceFiles/media/audio/media_openal_functions.h diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index fbdec9dc9..04122b039 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -946,8 +946,6 @@ PRIVATE media/audio/media_audio_track.h media/audio/media_child_ffmpeg_loader.cpp media/audio/media_child_ffmpeg_loader.h - media/audio/media_openal_functions.cpp - media/audio/media_openal_functions.h media/player/media_player_button.cpp media/player/media_player_button.h media/player/media_player_float.cpp diff --git a/Telegram/SourceFiles/media/audio/media_audio.cpp b/Telegram/SourceFiles/media/audio/media_audio.cpp index 0d6a9e599..691280c7c 100644 --- a/Telegram/SourceFiles/media/audio/media_audio.cpp +++ b/Telegram/SourceFiles/media/audio/media_audio.cpp @@ -272,7 +272,12 @@ void StopDetachIfNotUsedSafe() { } bool SupportsSpeedControl() { - return true; + static const auto result = [] { + return avfilter_get_by_name("abuffer") + && avfilter_get_by_name("abuffersink") + && avfilter_get_by_name("atempo"); + }(); + return result; } } // namespace Audio diff --git a/Telegram/SourceFiles/media/audio/media_openal_functions.cpp b/Telegram/SourceFiles/media/audio/media_openal_functions.cpp deleted file mode 100644 index 8b3390ec9..000000000 --- a/Telegram/SourceFiles/media/audio/media_openal_functions.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/* -This file is part of Telegram Desktop, -the official desktop application for the Telegram messaging service. - -For license and copyright information please follow this link: -https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL -*/ -#include "media/audio/media_openal_functions.h" - -#include - -namespace OpenAL { - -void LoadEFXExtension() { -#define LOAD_PROC(x) ((x) = reinterpret_cast(alGetProcAddress(#x))) - LOAD_PROC(alGenEffects); - LOAD_PROC(alDeleteEffects); - LOAD_PROC(alIsEffect); - LOAD_PROC(alEffecti); - LOAD_PROC(alEffectiv); - LOAD_PROC(alEffectf); - LOAD_PROC(alEffectfv); - LOAD_PROC(alGetEffecti); - LOAD_PROC(alGetEffectiv); - LOAD_PROC(alGetEffectf); - LOAD_PROC(alGetEffectfv); - - LOAD_PROC(alGenFilters); - LOAD_PROC(alDeleteFilters); - LOAD_PROC(alIsFilter); - LOAD_PROC(alFilteri); - LOAD_PROC(alFilteriv); - LOAD_PROC(alFilterf); - LOAD_PROC(alFilterfv); - LOAD_PROC(alGetFilteri); - LOAD_PROC(alGetFilteriv); - LOAD_PROC(alGetFilterf); - LOAD_PROC(alGetFilterfv); - - LOAD_PROC(alGenAuxiliaryEffectSlots); - LOAD_PROC(alDeleteAuxiliaryEffectSlots); - LOAD_PROC(alIsAuxiliaryEffectSlot); - LOAD_PROC(alAuxiliaryEffectSloti); - LOAD_PROC(alAuxiliaryEffectSlotiv); - LOAD_PROC(alAuxiliaryEffectSlotf); - LOAD_PROC(alAuxiliaryEffectSlotfv); - LOAD_PROC(alGetAuxiliaryEffectSloti); - LOAD_PROC(alGetAuxiliaryEffectSlotiv); - LOAD_PROC(alGetAuxiliaryEffectSlotf); - LOAD_PROC(alGetAuxiliaryEffectSlotfv); -#undef LOAD_PROC -} - -bool HasEFXExtension() { - return (alGenEffects != nullptr) - && (alDeleteEffects != nullptr) - && (alIsEffect != nullptr) - && (alEffecti != nullptr) - && (alEffectiv != nullptr) - && (alEffectf != nullptr) - && (alEffectfv != nullptr) - && (alGetEffecti != nullptr) - && (alGetEffectiv != nullptr) - && (alGetEffectf != nullptr) - && (alGetEffectfv != nullptr) - && (alGenFilters != nullptr) - && (alDeleteFilters != nullptr) - && (alIsFilter != nullptr) - && (alFilteri != nullptr) - && (alFilteriv != nullptr) - && (alFilterf != nullptr) - && (alFilterfv != nullptr) - && (alGetFilteri != nullptr) - && (alGetFilteriv != nullptr) - && (alGetFilterf != nullptr) - && (alGetFilterfv != nullptr) - && (alGenAuxiliaryEffectSlots != nullptr) - && (alDeleteAuxiliaryEffectSlots != nullptr) - && (alIsAuxiliaryEffectSlot != nullptr) - && (alAuxiliaryEffectSloti != nullptr) - && (alAuxiliaryEffectSlotiv != nullptr) - && (alAuxiliaryEffectSlotf != nullptr) - && (alAuxiliaryEffectSlotfv != nullptr) - && (alGetAuxiliaryEffectSloti != nullptr) - && (alGetAuxiliaryEffectSlotiv != nullptr) - && (alGetAuxiliaryEffectSlotf != nullptr) - && (alGetAuxiliaryEffectSlotfv != nullptr); -} - -} // namespace OpenAL diff --git a/Telegram/SourceFiles/media/audio/media_openal_functions.h b/Telegram/SourceFiles/media/audio/media_openal_functions.h deleted file mode 100644 index a11813623..000000000 --- a/Telegram/SourceFiles/media/audio/media_openal_functions.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -This file is part of Telegram Desktop, -the official desktop application for the Telegram messaging service. - -For license and copyright information please follow this link: -https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL -*/ -#pragma once - -#include - -namespace OpenAL { - -/* Effect object functions */ -inline void (AL_APIENTRY *alGenEffects)(ALsizei, ALuint*); -inline void (AL_APIENTRY *alDeleteEffects)(ALsizei, const ALuint*); -inline ALboolean (AL_APIENTRY *alIsEffect)(ALuint); -inline void (AL_APIENTRY *alEffecti)(ALuint, ALenum, ALint); -inline void (AL_APIENTRY *alEffectiv)(ALuint, ALenum, const ALint*); -inline void (AL_APIENTRY *alEffectf)(ALuint, ALenum, ALfloat); -inline void (AL_APIENTRY *alEffectfv)(ALuint, ALenum, const ALfloat*); -inline void (AL_APIENTRY *alGetEffecti)(ALuint, ALenum, ALint*); -inline void (AL_APIENTRY *alGetEffectiv)(ALuint, ALenum, ALint*); -inline void (AL_APIENTRY *alGetEffectf)(ALuint, ALenum, ALfloat*); -inline void (AL_APIENTRY *alGetEffectfv)(ALuint, ALenum, ALfloat*); - -/* Filter object functions */ -inline void (AL_APIENTRY *alGenFilters)(ALsizei, ALuint*); -inline void (AL_APIENTRY *alDeleteFilters)(ALsizei, const ALuint*); -inline ALboolean (AL_APIENTRY *alIsFilter)(ALuint); -inline void (AL_APIENTRY *alFilteri)(ALuint, ALenum, ALint); -inline void (AL_APIENTRY *alFilteriv)(ALuint, ALenum, const ALint*); -inline void (AL_APIENTRY *alFilterf)(ALuint, ALenum, ALfloat); -inline void (AL_APIENTRY *alFilterfv)(ALuint, ALenum, const ALfloat*); -inline void (AL_APIENTRY *alGetFilteri)(ALuint, ALenum, ALint*); -inline void (AL_APIENTRY *alGetFilteriv)(ALuint, ALenum, ALint*); -inline void (AL_APIENTRY *alGetFilterf)(ALuint, ALenum, ALfloat*); -inline void (AL_APIENTRY *alGetFilterfv)(ALuint, ALenum, ALfloat*); - -/* Auxiliary Effect Slot object functions */ -inline void (AL_APIENTRY *alGenAuxiliaryEffectSlots)(ALsizei, ALuint*); -inline void (AL_APIENTRY *alDeleteAuxiliaryEffectSlots)(ALsizei, const ALuint*); -inline ALboolean (AL_APIENTRY *alIsAuxiliaryEffectSlot)(ALuint); -inline void (AL_APIENTRY *alAuxiliaryEffectSloti)(ALuint, ALenum, ALint); -inline void (AL_APIENTRY *alAuxiliaryEffectSlotiv)(ALuint, ALenum, const ALint*); -inline void (AL_APIENTRY *alAuxiliaryEffectSlotf)(ALuint, ALenum, ALfloat); -inline void (AL_APIENTRY *alAuxiliaryEffectSlotfv)(ALuint, ALenum, const ALfloat*); -inline void (AL_APIENTRY *alGetAuxiliaryEffectSloti)(ALuint, ALenum, ALint*); -inline void (AL_APIENTRY *alGetAuxiliaryEffectSlotiv)(ALuint, ALenum, ALint*); -inline void (AL_APIENTRY *alGetAuxiliaryEffectSlotf)(ALuint, ALenum, ALfloat*); -inline void (AL_APIENTRY *alGetAuxiliaryEffectSlotfv)(ALuint, ALenum, ALfloat*); - -void LoadEFXExtension(); -bool HasEFXExtension(); - -} // namespace OpenAL