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.
77 lines
2.8 KiB
CMake
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()
|