MediaRecorderPrivateAVFImpl.h [plain text]
#pragma once
#if ENABLE(MEDIA_STREAM) && HAVE(AVASSETWRITERDELEGATE)
#include "CAAudioStreamDescription.h"
#include "MediaRecorderPrivate.h"
#include "MediaRecorderPrivateWriterCocoa.h"
using CVPixelBufferRef = struct __CVBuffer*;
typedef const struct opaqueCMFormatDescription* CMFormatDescriptionRef;
namespace WebCore {
class MediaStreamPrivate;
class WebAudioBufferList;
class MediaRecorderPrivateAVFImpl final
: public MediaRecorderPrivate {
WTF_MAKE_FAST_ALLOCATED;
public:
static std::unique_ptr<MediaRecorderPrivateAVFImpl> create(MediaStreamPrivate&, const MediaRecorderPrivateOptions&);
~MediaRecorderPrivateAVFImpl();
private:
explicit MediaRecorderPrivateAVFImpl(Ref<MediaRecorderPrivateWriter>&&);
void videoSampleAvailable(MediaSample&) final;
void fetchData(FetchDataCallback&&) final;
void audioSamplesAvailable(const WTF::MediaTime&, const PlatformAudioData&, const AudioStreamDescription&, size_t) final;
void startRecording(StartRecordingCallback&& callback) final { callback(String(m_writer->mimeType())); }
const String& mimeType() const final;
void stopRecording();
Ref<MediaRecorderPrivateWriter> m_writer;
RetainPtr<CVPixelBufferRef> m_blackFrame;
RetainPtr<CMFormatDescriptionRef> m_blackFrameDescription;
CAAudioStreamDescription m_description;
std::unique_ptr<WebAudioBufferList> m_audioBuffer;
};
}
#endif // ENABLE(MEDIA_STREAM) && HAVE(AVASSETWRITERDELEGATE)