implement new audio engine

This commit is contained in:
2026-06-05 20:30:12 +02:00
parent 16efeb2fde
commit 61eb9a8be5
24 changed files with 1021 additions and 440 deletions
+16 -8
View File
@@ -4,10 +4,9 @@ project(SubWave LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# ── Find Qt6 ─────────────────────────────────────────────────────────────────
find_package(Qt6 REQUIRED COMPONENTS Widgets Multimedia OpenGL OpenGLWidgets)
# ── Find FFmpeg via pkg-config ───────────────────────────────────────────────
# require ffmpeg
find_package(PkgConfig REQUIRED)
pkg_check_modules(FFMPEG REQUIRED IMPORTED_TARGET
libavformat
@@ -15,17 +14,21 @@ pkg_check_modules(FFMPEG REQUIRED IMPORTED_TARGET
libavutil
libswresample
)
# require fftw (fourier transform)
pkg_check_modules(FFTW REQUIRED IMPORTED_TARGET fftw3)
# Auto-generate MOC, and now also RCC for resource files
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
# ── Sources ──────────────────────────────────────────────────────────────────
# source files
set(SOURCES
src/main.cpp
src/MetadataReader.cpp
src/Config.cpp
src/AudioEngine.cpp
src/engine/AudioEngine.cpp
src/engine/FFmpegDecoder.cpp
src/engine/EqProcessor.cpp
src/engine/SpectrumAnalyzer.cpp
src/MusicLibrary.cpp
src/CoverArtWidget.cpp
src/SpectrogramWidget.cpp
@@ -40,7 +43,7 @@ set(HEADERS
src/Track.h
src/MetadataReader.h
src/Config.h
src/AudioEngine.h
src/engine/AudioEngine.h
src/MusicLibrary.h
src/CoverArtWidget.h
src/SpectrogramWidget.h
@@ -51,19 +54,24 @@ set(HEADERS
src/MainWindow.h
)
set(RESOURCES src/shaders.qrc)
set(RESOURCES
src/shaders.qrc
src/application.qrc
)
add_executable(SubWave ${SOURCES} ${HEADERS} ${RESOURCES})
target_include_directories(SubWave PRIVATE src src/engine)
target_link_libraries(SubWave PRIVATE
Qt6::Widgets
Qt6::Multimedia
Qt6::OpenGL
Qt6::OpenGLWidgets
PkgConfig::FFMPEG
PkgConfig::FFTW
)
# ── Copy FFmpeg shared libs next to the binary on Windows ────────────────────
if(WIN32)
add_custom_command(TARGET SubWave POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different