1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 17:47:36 +00:00

AudioServer: Clean up ClientAudioStream APIs

- Use Optional references instead of pointers
- Clean up some const and nullability weirdness
- Use proper error return value for get_next_sample
This commit is contained in:
kleines Filmröllchen 2023-08-11 15:57:31 +02:00 committed by Andrew Kaster
parent aacb4fc590
commit d905498fb6
3 changed files with 29 additions and 25 deletions

View file

@ -10,7 +10,6 @@
#include "ConnectionFromClient.h"
#include "FadingProperty.h"
#include <AK/Atomic.h>
#include <AK/Badge.h>
#include <AK/Debug.h>
#include <AK/RefCounted.h>
#include <AK/WeakPtr.h>
@ -20,22 +19,29 @@ namespace AudioServer {
class ClientAudioStream : public RefCounted<ClientAudioStream> {
public:
enum class ErrorState {
ClientDisconnected,
ClientPaused,
ClientUnderrun,
ResamplingError,
};
explicit ClientAudioStream(ConnectionFromClient&);
~ClientAudioStream() = default;
bool get_next_sample(Audio::Sample& sample, u32 audiodevice_sample_rate);
ErrorOr<Audio::Sample, ErrorState> get_next_sample(u32 audiodevice_sample_rate);
void clear();
bool is_connected() const;
ConnectionFromClient* client();
Optional<ConnectionFromClient&> client();
void set_buffer(OwnPtr<Audio::AudioQueue> buffer);
void set_buffer(NonnullOwnPtr<Audio::AudioQueue> buffer);
void set_paused(bool paused);
FadingProperty<double>& volume();
double volume() const;
void set_volume(double const volume);
void set_volume(double volume);
bool is_muted() const;
void set_muted(bool muted);
u32 sample_rate() const;