mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-03-13 00:49:55 +00:00
I had to solve a bunch of things simultaneously to make this work. Refactor AWavLoader to be a streaming loader rather than a one-shot one. The constructor parses the header, and if everything looks good, you can repeatedly ask the AWavLoader for sample buffers until it runs out. Also send a message from AudioServer when a buffer has finished playing. That allows us to implement a blocking variant of play(). Use all of this in aplay to play WAV files chunk-at-a-time. This is definitely not perfect and it's a little glitchy and skippy, but I think it's a step in the right direction.
16 lines
346 B
C++
16 lines
346 B
C++
#pragma once
|
|
|
|
#include <LibAudio/ASAPI.h>
|
|
#include <LibCore/CoreIPCClient.h>
|
|
|
|
class ABuffer;
|
|
|
|
class AClientConnection : public IPC::Client::Connection<ASAPI_ServerMessage, ASAPI_ClientMessage> {
|
|
C_OBJECT(AClientConnection)
|
|
public:
|
|
AClientConnection();
|
|
|
|
virtual void handshake() override;
|
|
void play(const ABuffer&, bool block);
|
|
};
|