Files
ladybird/Libraries/LibMedia/Sinks/AudioSink.h
Zaggy1024 0ff330c906 LibMedia: Play audio through PlaybackManager using Providers/Sinks
This commit implements the functionality to play back audio through
PlaybackManager.

To decode the audio data, AudioDataProviders are created for each track
in the provided media data. These providers will fill their audio block
queue, then sit idle until their corresponding tracks are enabled.

In order to output the audio, one AudioMixingSink is created which
manages a PlaybackStream which requests audio blocks from multiple
AudioDataProviders and mixes them into one buffer with sample-perfect
precision.
2025-10-27 17:28:49 -07:00

26 lines
574 B
C++

/*
* Copyright (c) 2025, Gregory Bertilson <gregory@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/AtomicRefCounted.h>
#include <LibMedia/AudioBlock.h>
#include <LibMedia/Export.h>
#include <LibMedia/Forward.h>
#include <LibMedia/Track.h>
namespace Media {
class MEDIA_API AudioSink : public AtomicRefCounted<AudioSink> {
public:
virtual ~AudioSink() = default;
virtual void set_provider(Track const&, RefPtr<AudioDataProvider> const&) = 0;
virtual RefPtr<AudioDataProvider> provider(Track const&) const = 0;
};
}