AudioMediaStreamTrackRenderer.h [plain text]
#pragma once
#if PLATFORM(COCOA) && ENABLE(GPU_PROCESS) && ENABLE(MEDIA_STREAM)
#include "AudioMediaStreamTrackRendererIdentifier.h"
#include "SharedRingBufferStorage.h"
#include <WebCore/AudioMediaStreamTrackRenderer.h>
#include <wtf/MediaTime.h>
namespace IPC {
class Connection;
}
namespace WebKit {
class AudioMediaStreamTrackRenderer final : public WebCore::AudioMediaStreamTrackRenderer {
WTF_MAKE_FAST_ALLOCATED;
public:
static std::unique_ptr<WebCore::AudioMediaStreamTrackRenderer> create();
~AudioMediaStreamTrackRenderer();
AudioMediaStreamTrackRendererIdentifier identifier() const { return m_identifier; }
private:
explicit AudioMediaStreamTrackRenderer(Ref<IPC::Connection>&&);
void storageChanged(SharedMemory*, const WebCore::CAAudioStreamDescription& format, size_t frameCount);
void start() final;
void stop() final;
void clear() final;
void setVolume(float) final;
void pushSamples(const MediaTime&, const WebCore::PlatformAudioData&, const WebCore::AudioStreamDescription&, size_t) final;
Ref<IPC::Connection> m_connection;
AudioMediaStreamTrackRendererIdentifier m_identifier;
std::unique_ptr<WebCore::CARingBuffer> m_ringBuffer;
WebCore::CAAudioStreamDescription m_description { };
int64_t m_numberOfFrames { 0 };
bool m_isPlaying { false };
};
}
#endif // PLATFORM(COCOA) && ENABLE(GPU_PROCESS) && ENABLE(MEDIA_STREAM)