MediaSourcePrivateRemote.h [plain text]
#pragma once
#if ENABLE(GPU_PROCESS) && ENABLE(MEDIA_SOURCE)
#include "GPUProcessConnection.h"
#include "MessageReceiver.h"
#include "RemoteMediaPlayerMIMETypeCache.h"
#include "RemoteMediaSourceIdentifier.h"
#include <WebCore/ContentType.h>
#include <WebCore/MediaSourcePrivate.h>
#include <WebCore/MediaSourcePrivateClient.h>
#include <WebCore/SourceBufferPrivate.h>
#include <wtf/LoggerHelper.h>
#include <wtf/RefPtr.h>
#include <wtf/Vector.h>
namespace IPC {
class Connection;
class Decoder;
}
namespace WebKit {
class MediaPlayerPrivateRemote;
class SourceBufferPrivateRemote;
class MediaSourcePrivateRemote final
: public WebCore::MediaSourcePrivate
, public CanMakeWeakPtr<MediaSourcePrivateRemote>
, private IPC::MessageReceiver
#if !RELEASE_LOG_DISABLED
, private LoggerHelper
#endif
{
public:
static Ref<MediaSourcePrivateRemote> create(GPUProcessConnection&, RemoteMediaSourceIdentifier, RemoteMediaPlayerMIMETypeCache&, const MediaPlayerPrivateRemote&, WebCore::MediaSourcePrivateClient*);
virtual ~MediaSourcePrivateRemote();
AddStatus addSourceBuffer(const WebCore::ContentType&, bool webMParserEnabled, RefPtr<WebCore::SourceBufferPrivate>&) final;
void durationChanged(const MediaTime&) final;
void markEndOfStream(EndOfStreamStatus) final;
void unmarkEndOfStream() final;
bool isEnded() const final;
WebCore::MediaPlayer::ReadyState readyState() const final;
void setReadyState(WebCore::MediaPlayer::ReadyState) final;
void setIsSeeking(bool) final;
void waitForSeekCompleted() final;
void seekCompleted() final;
void setTimeFudgeFactor(const MediaTime&) final;
#if !RELEASE_LOG_DISABLED
const Logger& logger() const final { return m_logger.get(); }
const void* nextSourceBufferLogIdentifier() { return childLogIdentifier(m_logIdentifier, ++m_nextSourceBufferID); }
#endif
private:
MediaSourcePrivateRemote(GPUProcessConnection&, RemoteMediaSourceIdentifier, RemoteMediaPlayerMIMETypeCache&, const MediaPlayerPrivateRemote&, WebCore::MediaSourcePrivateClient*);
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
void seekToTime(const MediaTime&);
GPUProcessConnection& m_gpuProcessConnection;
RemoteMediaSourceIdentifier m_identifier;
RemoteMediaPlayerMIMETypeCache& m_mimeTypeCache;
WeakPtr<MediaPlayerPrivateRemote> m_mediaPlayerPrivate;
RefPtr<WebCore::MediaSourcePrivateClient> m_client;
Vector<RefPtr<SourceBufferPrivateRemote>> m_sourceBuffers;
MediaTime m_duration;
#if !RELEASE_LOG_DISABLED
const char* logClassName() const override { return "MediaSourcePrivateRemote"; }
const void* logIdentifier() const final { return m_logIdentifier; }
WTFLogChannel& logChannel() const final;
Ref<const Logger> m_logger;
const void* m_logIdentifier;
uint64_t m_nextSourceBufferID { 0 };
#endif
};
}
#endif // ENABLE(GPU_PROCESS) && ENABLE(MEDIA_SOURCE)