feat: initial fft spectrum visualization support

The final goal is actually still clone ShadowPlayer's spectrum
visualization, tho.
This commit is contained in:
2024-10-13 21:07:45 +08:00
parent 64c75263bf
commit cf90e2d70c
6 changed files with 191 additions and 7 deletions

View File

@ -3,7 +3,8 @@ cmake_minimum_required(VERSION 3.12)
project(pineapple-music LANGUAGES CXX)
include (GNUInstallDirs)
include (FeatureSummary)
include (FeatureSummary)
include (FetchContent)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
@ -18,7 +19,18 @@ option(USE_QTEXTCODEC "Use QTextCodec instead of QStringConverter, in case Qt is
find_package(Qt6 6.6 COMPONENTS Widgets Multimedia Network LinguistTools REQUIRED)
find_package(TagLib 2.0.0)
find_package(KF6Codecs 6.1.0)
find_package(KF6Codecs 6.1.0)
FetchContent_Declare(
kissfft
GIT_REPOSITORY https://github.com/mborgerding/kissfft.git
GIT_TAG f5f2a3b2f2cd02bf80639adb12cbeed125bdf420
)
set(KISSFFT_PKGCONFIG OFF CACHE BOOL "dep(kissfft): pkgconfig support")
set(KISSFFT_STATIC ON CACHE BOOL "dep(kissfft): static linking")
set(KISSFFT_TEST OFF CACHE BOOL "dep(kissfft): enable testing")
set(KISSFFT_TOOLS OFF CACHE BOOL "dep(kissfft): build tools")
FetchContent_MakeAvailable(kissfft)
if (USE_QTEXTCODEC)
find_package(Qt6 6.6 COMPONENTS Core5Compat REQUIRED)
@ -31,7 +43,8 @@ set (PMUSIC_CPP_FILES
playlistmanager.cpp
singleapplicationmanager.cpp
lrcbar.cpp
lyricsmanager.cpp
lyricsmanager.cpp
fftspectrum.cpp
)
set (PMUSIC_HEADER_FILES
@ -40,7 +53,8 @@ set (PMUSIC_HEADER_FILES
playlistmanager.h
singleapplicationmanager.h
lrcbar.h
lyricsmanager.h
lyricsmanager.h
fftspectrum.h
)
set (PMUSIC_UI_FILES
@ -80,7 +94,7 @@ if (TARGET KF6::Codecs)
target_link_libraries (${EXE_NAME} PRIVATE KF6::Codecs)
endif ()
target_link_libraries(${EXE_NAME} PRIVATE Qt::Widgets Qt::Multimedia Qt::Network)
target_link_libraries(${EXE_NAME} PRIVATE Qt::Widgets Qt::Multimedia Qt::Network kissfft::kissfft)
if (USE_QTEXTCODEC)
target_compile_definitions(${EXE_NAME} PRIVATE USE_QTEXTCODEC=1)