ladybird/Libraries/LibMedia/CMakeLists.txt
Zaggy1024 5a120bff33 LibMedia: Use a combined status to exit the seeking/buffering states
Instead of tracking in-flight seeks across all the sinks in the seeking
state handler, move the logic to PlaybackManager to determine the
overall status and then notify the state of that status to potentially
trigger resumption.

The buffering state handler can then share essentially the same logic
instead of having the playback manager specifically track the blocked
tracks for it.
2026-06-11 05:49:14 -05:00

77 lines
2.8 KiB
CMake

include(audio)
set(SOURCES
Audio/AudioBuffer.cpp
Audio/AudioDevices.cpp
Audio/WSOLAAlgorithm.cpp
Audio/WSOLAInternals.cpp
Audio/WSOLATimeStretcher.cpp
Codecs/FLAC.cpp
Codecs/Opus.cpp
Codecs/Vorbis.cpp
Containers/ConstantBitrateContainerNavigator.cpp
Containers/FLACNavigator.cpp
Containers/IndexedContainerNavigator.cpp
Containers/MP3Navigator.cpp
Containers/OggNavigator.cpp
Containers/Matroska/MatroskaDemuxer.cpp
Containers/Matroska/Reader.cpp
Containers/Matroska/SampleIterator.cpp
Containers/Matroska/Streamer.cpp
GenericTimeProvider.cpp
IncrementallyPopulatedStream.cpp
PlaybackManager.cpp
PlaybackStates/BufferingStateHandler.cpp
PlaybackStates/PlayingStateHandler.cpp
PlaybackStates/StartingStateHandler.cpp
PlaybackStates/PausedStateHandler.cpp
PlaybackStates/PlaybackStateHandler.cpp
PlaybackStates/ResumingStateHandler.cpp
Processors/AudioMixer.cpp
Processors/AudioTimeStretchProcessor.cpp
Producers/DecodedAudioProducer.cpp
Producers/DecodedVideoProducer.cpp
Sinks/AudioPlaybackSink.cpp
Sinks/DisplayingVideoSink.cpp
TimeRanges.cpp
VideoFrame.cpp
)
ladybird_lib(LibMedia media EXPLICIT_SYMBOL_EXPORT)
target_link_libraries(LibMedia PRIVATE LibCore LibCrypto LibIPC LibGfx LibSync LibThreading LibUnicode)
target_sources(LibMedia PRIVATE
FFmpeg/FFmpegAudioConverter.cpp
FFmpeg/FFmpegAudioDecoder.cpp
FFmpeg/FFmpegDemuxer.cpp
FFmpeg/FFmpegHelpers.cpp
FFmpeg/FFmpegIOContext.cpp
FFmpeg/FFmpegVideoDecoder.cpp
)
if (NOT ANDROID)
target_link_libraries(LibMedia PRIVATE PkgConfig::AVCODEC PkgConfig::AVFORMAT PkgConfig::AVUTIL PkgConfig::LIBSWRESAMPLE)
else()
target_include_directories(LibMedia PRIVATE ${FFMPEG_INCLUDE_DIRS})
target_link_directories(LibMedia PRIVATE ${FFMPEG_LIBRARY_DIRS})
target_link_libraries(LibMedia PRIVATE ${FFMPEG_LIBRARIES})
endif()
if (LADYBIRD_AUDIO_BACKEND STREQUAL "PULSE")
target_sources(LibMedia PRIVATE
Audio/PlaybackStreamPulseAudio.cpp
Audio/PulseAudioWrappers.cpp
)
target_link_libraries(LibMedia PRIVATE PkgConfig::PULSEAUDIO)
elseif (LADYBIRD_AUDIO_BACKEND STREQUAL "AUDIO_UNIT")
target_sources(LibMedia PRIVATE Audio/PlaybackStreamAudioUnit.cpp)
find_library(AUDIO_TOOLBOX AudioToolbox REQUIRED)
target_link_libraries(LibMedia PRIVATE ${AUDIO_TOOLBOX})
elseif(LADYBIRD_AUDIO_BACKEND STREQUAL "WASAPI")
target_sources(LibMedia PRIVATE Audio/PlaybackStreamWasapi.cpp)
target_link_libraries(LibMedia PRIVATE ole32 avrt winmm)
elseif (DEFINED LADYBIRD_AUDIO_BACKEND)
message(FATAL_ERROR "Please update ${CMAKE_CURRENT_LIST_FILE} for audio backend ${LADYBIRD_AUDIO_BACKEND}")
else ()
target_sources(LibMedia PRIVATE Audio/PlaybackStream.cpp)
endif()