SampleBufferDisplayLayer.h [plain text]
#pragma once
#if PLATFORM(COCOA) && ENABLE(GPU_PROCESS) && ENABLE(MEDIA_STREAM)
#include "MessageReceiver.h"
#include "SampleBufferDisplayLayerIdentifier.h"
#include <WebCore/SampleBufferDisplayLayer.h>
#include <wtf/WeakPtr.h>
namespace WebKit {
class SampleBufferDisplayLayerManager;
class SampleBufferDisplayLayer final : public WebCore::SampleBufferDisplayLayer, public IPC::MessageReceiver, public CanMakeWeakPtr<SampleBufferDisplayLayer> {
public:
static std::unique_ptr<SampleBufferDisplayLayer> create(SampleBufferDisplayLayerManager&, Client&);
~SampleBufferDisplayLayer();
SampleBufferDisplayLayerIdentifier identifier() const { return m_identifier; }
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
private:
SampleBufferDisplayLayer(SampleBufferDisplayLayerManager&, Client&);
void initialize(bool hideRootLayer, WebCore::IntSize, CompletionHandler<void(bool)>&&) final;
bool didFail() const final;
void updateDisplayMode(bool hideDisplayLayer, bool hideRootLayer) final;
void updateAffineTransform(CGAffineTransform) final;
void updateBoundsAndPosition(CGRect, WebCore::MediaSample::VideoRotation) final;
void flush() final;
void flushAndRemoveImage() final;
void play() final;
void pause() final;
void enqueueSample(WebCore::MediaSample&) final;
void clearEnqueuedSamples() final;
PlatformLayer* rootLayer() final;
void setDidFail(bool);
WeakPtr<SampleBufferDisplayLayerManager> m_manager;
Ref<IPC::Connection> m_connection;
SampleBufferDisplayLayerIdentifier m_identifier;
PlatformLayerContainer m_videoLayer;
bool m_didFail { false };
};
}
#endif // PLATFORM(COCOA) && ENABLE(GPU_PROCESS) && ENABLE(MEDIA_STREAM)