#ifndef WebMediaPlayer_h
#define WebMediaPlayer_h
#include "WebTimeRange.h"
#include "WebVideoFrame.h"
#include "platform/WebCanvas.h"
#include "platform/WebString.h"
namespace WebKit {
class WebAudioSourceProvider;
class WebAudioSourceProviderClient;
class WebMediaPlayerClient;
class WebStreamTextureClient;
class WebString;
class WebURL;
struct WebRect;
struct WebSize;
class WebMediaPlayer {
public:
enum NetworkState {
NetworkStateEmpty,
NetworkStateIdle,
NetworkStateLoading,
NetworkStateLoaded,
NetworkStateFormatError,
NetworkStateNetworkError,
NetworkStateDecodeError,
};
enum ReadyState {
ReadyStateHaveNothing,
ReadyStateHaveMetadata,
ReadyStateHaveCurrentData,
ReadyStateHaveFutureData,
ReadyStateHaveEnoughData,
};
enum MovieLoadType {
MovieLoadTypeUnknown,
MovieLoadTypeDownload,
MovieLoadTypeStoredStream,
MovieLoadTypeLiveStream,
};
enum Preload {
PreloadNone,
PreloadMetaData,
PreloadAuto,
};
enum AddIdStatus {
AddIdStatusOk,
AddIdStatusNotSupported,
AddIdStatusReachedIdLimit
};
enum EndOfStreamStatus {
EndOfStreamStatusNoError,
EndOfStreamStatusNetworkError,
EndOfStreamStatusDecodeError,
};
enum MediaKeyException {
MediaKeyExceptionNoError,
MediaKeyExceptionInvalidPlayerState,
MediaKeyExceptionKeySystemNotSupported,
};
virtual ~WebMediaPlayer() {}
virtual void load(const WebURL&) = 0;
virtual void cancelLoad() = 0;
virtual void play() = 0;
virtual void pause() = 0;
virtual bool supportsFullscreen() const = 0;
virtual bool supportsSave() const = 0;
virtual void seek(float seconds) = 0;
virtual void setEndTime(float seconds) = 0;
virtual void setRate(float) = 0;
virtual void setVolume(float) = 0;
virtual void setVisible(bool) = 0;
virtual void setPreload(Preload) { };
virtual bool totalBytesKnown() = 0;
virtual const WebTimeRanges& buffered() = 0;
virtual float maxTimeSeekable() const = 0;
virtual void setSize(const WebSize&) = 0;
virtual void paint(WebCanvas*, const WebRect&, uint8_t alpha) = 0;
virtual bool hasVideo() const = 0;
virtual bool hasAudio() const = 0;
virtual WebSize naturalSize() const = 0;
virtual bool paused() const = 0;
virtual bool seeking() const = 0;
virtual float duration() const = 0;
virtual float currentTime() const = 0;
virtual int dataRate() const = 0;
virtual NetworkState networkState() const = 0;
virtual ReadyState readyState() const = 0;
virtual unsigned long long bytesLoaded() const = 0;
virtual unsigned long long totalBytes() const = 0;
virtual bool hasSingleSecurityOrigin() const = 0;
virtual MovieLoadType movieLoadType() const = 0;
virtual float mediaTimeForTimeValue(float timeValue) const = 0;
virtual unsigned decodedFrameCount() const = 0;
virtual unsigned droppedFrameCount() const = 0;
virtual unsigned audioDecodedByteCount() const = 0;
virtual unsigned videoDecodedByteCount() const = 0;
virtual WebVideoFrame* getCurrentFrame() { return 0; }
virtual void putCurrentFrame(WebVideoFrame*) { }
virtual void setStreamTextureClient(WebStreamTextureClient*) { }
virtual WebAudioSourceProvider* audioSourceProvider() { return 0; }
virtual AddIdStatus sourceAddId(const WebString& id, const WebString& type) { return AddIdStatusNotSupported; }
virtual bool sourceRemoveId(const WebString& id) { return false; }
virtual bool sourceAppend(const unsigned char* data, unsigned length) { return false; }
virtual void sourceEndOfStream(EndOfStreamStatus) { }
virtual MediaKeyException generateKeyRequest(const WebString& keySystem, const unsigned char* initData, unsigned initDataLength) { return MediaKeyExceptionKeySystemNotSupported; }
virtual MediaKeyException addKey(const WebString& keySystem, const unsigned char* key, unsigned keyLength, const unsigned char* initData, unsigned initDataLength, const WebString& sessionId) { return MediaKeyExceptionKeySystemNotSupported; }
virtual MediaKeyException cancelKeyRequest(const WebString& keySystem, const WebString& sessionId) { return MediaKeyExceptionKeySystemNotSupported; }
virtual bool enterFullscreen() { return false; }
virtual void exitFullscreen() { }
};
}
#endif