MediaRecorderPrivate.h [plain text]
#pragma once
#if PLATFORM(COCOA) && ENABLE(GPU_PROCESS) && ENABLE(MEDIA_STREAM) && HAVE(AVASSETWRITERDELEGATE)
#include "MediaRecorderIdentifier.h"
#include "SharedRingBufferStorage.h"
#include <WebCore/MediaRecorderPrivate.h>
#include <wtf/MediaTime.h>
#include <wtf/WeakPtr.h>
namespace IPC {
class Connection;
}
namespace WebCore {
class MediaStreamPrivate;
}
namespace WebKit {
class MediaRecorderPrivate final
: public WebCore::MediaRecorderPrivate
, public SharedRingBufferStorage::Client
, public CanMakeWeakPtr<MediaRecorderPrivate> {
WTF_MAKE_FAST_ALLOCATED;
public:
MediaRecorderPrivate(WebCore::MediaStreamPrivate&, const WebCore::MediaRecorderPrivateOptions&);
~MediaRecorderPrivate();
private:
void videoSampleAvailable(WebCore::MediaSample&) final;
void fetchData(CompletionHandler<void(RefPtr<WebCore::SharedBuffer>&&, const String& mimeType)>&&) final;
void stopRecording() final;
void startRecording(StartRecordingCallback&&) final;
void audioSamplesAvailable(const WTF::MediaTime&, const WebCore::PlatformAudioData&, const WebCore::AudioStreamDescription&, size_t) final;
const String& mimeType() const final;
void storageChanged(SharedMemory*);
MediaRecorderIdentifier m_identifier;
Ref<MediaStreamPrivate> m_stream;
Ref<IPC::Connection> m_connection;
std::unique_ptr<WebCore::CARingBuffer> m_ringBuffer;
WebCore::CAAudioStreamDescription m_description { };
int64_t m_numberOfFrames { 0 };
WebCore::MediaRecorderPrivateOptions m_options;
bool m_hasVideo { false };
};
}
#endif // PLATFORM(COCOA) && ENABLE(GPU_PROCESS) && ENABLE(MEDIA_STREAM) && HAVE(AVASSETWRITERDELEGATE)