RemoteAudioMediaStreamTrackRenderer.h [plain text]
#pragma once
#if PLATFORM(COCOA) && ENABLE(GPU_PROCESS) && ENABLE(MEDIA_STREAM)
#include "MessageReceiver.h"
#include "SharedMemory.h"
#include <WebCore/CAAudioStreamDescription.h>
#include <wtf/MediaTime.h>
#include <wtf/UniqueRef.h>
namespace WebCore {
class AudioMediaStreamTrackRenderer;
class CARingBuffer;
class WebAudioBufferList;
}
namespace WebKit {
class RemoteAudioMediaStreamTrackRendererManager;
class SharedRingBufferStorage;
class RemoteAudioMediaStreamTrackRenderer {
WTF_MAKE_FAST_ALLOCATED;
public:
explicit RemoteAudioMediaStreamTrackRenderer(RemoteAudioMediaStreamTrackRendererManager&);
~RemoteAudioMediaStreamTrackRenderer();
void didReceiveMessage(IPC::Connection&, IPC::Decoder&);
private:
void start();
void stop();
void clear();
void setVolume(float);
void audioSamplesStorageChanged(const SharedMemory::IPCHandle&, const WebCore::CAAudioStreamDescription&, uint64_t numberOfFrames);
void audioSamplesAvailable(MediaTime, uint64_t numberOfFrames);
RemoteAudioMediaStreamTrackRendererManager& m_manager;
std::unique_ptr<WebCore::AudioMediaStreamTrackRenderer> m_renderer;
WebCore::CAAudioStreamDescription m_description;
UniqueRef<WebCore::CARingBuffer> m_ringBuffer;
std::unique_ptr<WebCore::WebAudioBufferList> m_audioBufferList;
};
}
#endif // PLATFORM(COCOA) && ENABLE(GPU_PROCESS) && ENABLE(MEDIA_STREAM)