diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/web/WebMediaPlayerClientImpl.h')
-rw-r--r-- | chromium/third_party/WebKit/Source/web/WebMediaPlayerClientImpl.h | 126 |
1 files changed, 49 insertions, 77 deletions
diff --git a/chromium/third_party/WebKit/Source/web/WebMediaPlayerClientImpl.h b/chromium/third_party/WebKit/Source/web/WebMediaPlayerClientImpl.h index c4bed8ed2b5..79997578012 100644 --- a/chromium/third_party/WebKit/Source/web/WebMediaPlayerClientImpl.h +++ b/chromium/third_party/WebKit/Source/web/WebMediaPlayerClientImpl.h @@ -35,6 +35,7 @@ #include "platform/graphics/media/MediaPlayer.h" #include "public/platform/WebAudioSourceProviderClient.h" #include "public/platform/WebMediaPlayerClient.h" +#include "third_party/khronos/GLES2/gl2.h" #if OS(ANDROID) #include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkRefCnt.h" @@ -47,63 +48,59 @@ namespace WebCore { class AudioSourceProviderClient; -class HTMLMediaSource; +class HTMLMediaElement; } namespace blink { -class WebHelperPluginImpl; class WebAudioSourceProvider; +class WebContentDecryptionModule; class WebMediaPlayer; +class WebGraphicsContext3D; // This class serves as a bridge between WebCore::MediaPlayer and // blink::WebMediaPlayer. -class WebMediaPlayerClientImpl : public WebCore::MediaPlayer, public WebMediaPlayerClient { +class WebMediaPlayerClientImpl FINAL : public WebCore::MediaPlayer, public WebMediaPlayerClient { public: static PassOwnPtr<WebCore::MediaPlayer> create(WebCore::MediaPlayerClient*); - // Returns the encapsulated blink::WebMediaPlayer. - WebMediaPlayer* mediaPlayer() const; + virtual ~WebMediaPlayerClientImpl(); // WebMediaPlayerClient methods: - virtual ~WebMediaPlayerClientImpl(); - virtual void networkStateChanged(); - virtual void readyStateChanged(); - virtual void timeChanged(); - virtual void repaint(); - virtual void durationChanged(); - virtual void sizeChanged(); - virtual void setOpaque(bool); - virtual double volume() const; - virtual void playbackStateChanged(); - virtual WebMediaPlayer::Preload preload() const; - virtual void keyAdded(const WebString& keySystem, const WebString& sessionId); - virtual void keyError(const WebString& keySystem, const WebString& sessionId, MediaKeyErrorCode, unsigned short systemCode); - virtual void keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength, const WebURL& defaultURL); - virtual void keyNeeded(const WebString& keySystem, const WebString& sessionId, const unsigned char* initData, unsigned initDataLength); - virtual WebPlugin* createHelperPlugin(const WebString& pluginType, WebFrame*); - virtual void closeHelperPluginSoon(WebFrame*); - virtual bool needsWebLayerForVideo() const; - virtual void setWebLayer(WebLayer*); - virtual void addTextTrack(WebInbandTextTrack*); - virtual void removeTextTrack(WebInbandTextTrack*); - virtual void mediaSourceOpened(WebMediaSource*); - virtual void requestFullscreen(); - virtual void requestSeek(double); + virtual void networkStateChanged() OVERRIDE; + virtual void readyStateChanged() OVERRIDE; + virtual void timeChanged() OVERRIDE; + virtual void repaint() OVERRIDE; + virtual void durationChanged() OVERRIDE; + virtual void sizeChanged() OVERRIDE; + virtual double volume() const OVERRIDE; + virtual void playbackStateChanged() OVERRIDE; + virtual WebMediaPlayer::Preload preload() const OVERRIDE; + + // WebEncryptedMediaPlayerClient methods: + virtual void keyAdded(const WebString& keySystem, const WebString& sessionId) OVERRIDE; + virtual void keyError(const WebString& keySystem, const WebString& sessionId, MediaKeyErrorCode, unsigned short systemCode) OVERRIDE; + virtual void keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength, const WebURL& defaultURL) OVERRIDE; + virtual void keyNeeded(const WebString& contentType, const unsigned char* initData, unsigned initDataLength) OVERRIDE; + + virtual void setWebLayer(WebLayer*) OVERRIDE; + virtual WebMediaPlayer::TrackId addAudioTrack(const WebString& id, AudioTrackKind, const WebString& label, const WebString& language, bool enabled) OVERRIDE; + virtual void removeAudioTrack(WebMediaPlayer::TrackId) OVERRIDE; + virtual WebMediaPlayer::TrackId addVideoTrack(const WebString& id, VideoTrackKind, const WebString& label, const WebString& language, bool selected) OVERRIDE; + virtual void removeVideoTrack(WebMediaPlayer::TrackId) OVERRIDE; + virtual void addTextTrack(WebInbandTextTrack*) OVERRIDE; + virtual void removeTextTrack(WebInbandTextTrack*) OVERRIDE; + virtual void mediaSourceOpened(WebMediaSource*) OVERRIDE; + virtual void requestFullscreen() OVERRIDE; + virtual void requestSeek(double) OVERRIDE; // MediaPlayer methods: - virtual void load(const WTF::String& url) OVERRIDE; - virtual void load(const WTF::String& url, PassRefPtr<WebCore::HTMLMediaSource>) OVERRIDE; - + virtual WebMediaPlayer* webMediaPlayer() const OVERRIDE; + virtual void load(WebMediaPlayer::LoadType, const WTF::String& url, WebMediaPlayer::CORSMode) OVERRIDE; virtual void play() OVERRIDE; virtual void pause() OVERRIDE; - virtual void prepareToPlay() OVERRIDE; - virtual bool supportsFullscreen() const OVERRIDE; virtual bool supportsSave() const OVERRIDE; - virtual WebCore::IntSize naturalSize() const OVERRIDE; - virtual bool hasVideo() const OVERRIDE; - virtual bool hasAudio() const OVERRIDE; virtual double duration() const OVERRIDE; virtual double currentTime() const OVERRIDE; virtual void seek(double time) OVERRIDE; @@ -111,68 +108,45 @@ public: virtual double rate() const OVERRIDE; virtual void setRate(double) OVERRIDE; virtual bool paused() const OVERRIDE; - virtual void setVolume(double) OVERRIDE; - virtual void setMuted(bool) OVERRIDE; + virtual void setPoster(const WebCore::KURL&) OVERRIDE; virtual WebCore::MediaPlayer::NetworkState networkState() const OVERRIDE; - virtual WebCore::MediaPlayer::ReadyState readyState() const OVERRIDE; virtual double maxTimeSeekable() const OVERRIDE; virtual WTF::PassRefPtr<WebCore::TimeRanges> buffered() const OVERRIDE; virtual bool didLoadingProgress() const OVERRIDE; virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect&) OVERRIDE; - virtual bool copyVideoTextureToPlatformTexture(WebCore::GraphicsContext3D*, Platform3DObject texture, GC3Dint level, GC3Denum type, GC3Denum internalFormat, bool premultiplyAlpha, bool flipY) OVERRIDE; + virtual bool copyVideoTextureToPlatformTexture(WebGraphicsContext3D*, Platform3DObject texture, GLint level, GLenum type, GLenum internalFormat, bool premultiplyAlpha, bool flipY) OVERRIDE; virtual void setPreload(WebCore::MediaPlayer::Preload) OVERRIDE; virtual bool hasSingleSecurityOrigin() const OVERRIDE; - virtual bool didPassCORSAccessCheck() const OVERRIDE; virtual double mediaTimeForTimeValue(double timeValue) const OVERRIDE; - virtual unsigned decodedFrameCount() const OVERRIDE; - virtual unsigned droppedFrameCount() const OVERRIDE; - virtual unsigned corruptedFrameCount() const OVERRIDE; - virtual unsigned audioDecodedByteCount() const OVERRIDE; - virtual unsigned videoDecodedByteCount() const OVERRIDE; - virtual void showFullscreenOverlay() OVERRIDE; - virtual void hideFullscreenOverlay() OVERRIDE; - virtual bool canShowFullscreenOverlay() const OVERRIDE; #if ENABLE(WEB_AUDIO) virtual WebCore::AudioSourceProvider* audioSourceProvider() OVERRIDE; #endif - virtual WebCore::MediaPlayer::MediaKeyException generateKeyRequest(const String& keySystem, const unsigned char* initData, unsigned initDataLength) OVERRIDE; - virtual WebCore::MediaPlayer::MediaKeyException addKey(const String& keySystem, const unsigned char* key, unsigned keyLength, const unsigned char* initData, unsigned initDataLength, const String& sessionId) OVERRIDE; - virtual WebCore::MediaPlayer::MediaKeyException cancelKeyRequest(const String& keySystem, const String& sessionId) OVERRIDE; - private: explicit WebMediaPlayerClientImpl(WebCore::MediaPlayerClient*); - void startDelayedLoad(); - void loadRequested(); - void loadInternal(); + WebCore::HTMLMediaElement& mediaElement() const; + + WebCore::MediaPlayerClient* m_client; + OwnPtr<WebMediaPlayer> m_webMediaPlayer; + WebCore::MediaPlayer::Preload m_preload; + double m_rate; #if OS(ANDROID) // FIXME: This path "only works" on Android. It is a workaround for the problem that Skia could not handle Android's GL_TEXTURE_EXTERNAL_OES // texture internally. It should be removed and replaced by the normal paint path. // https://code.google.com/p/skia/issues/detail?id=1189 - void paintOnAndroid(WebCore::GraphicsContext* context, WebCore::GraphicsContext3D* context3D, const WebCore::IntRect& rect, uint8_t alpha); + void paintOnAndroid(WebCore::GraphicsContext*, const WebCore::IntRect&, uint8_t alpha); SkBitmap m_bitmap; + bool m_usePaintOnAndroid; #endif - WebCore::MediaPlayerClient* m_client; - OwnPtr<WebMediaPlayer> m_webMediaPlayer; - WebCore::KURL m_url; - bool m_isMediaStream; - bool m_delayingLoad; - WebCore::MediaPlayer::Preload m_preload; - RefPtr<WebHelperPluginImpl> m_helperPlugin; - bool m_needsWebLayerForVideo; - double m_volume; - bool m_muted; - double m_rate; - #if ENABLE(WEB_AUDIO) // AudioClientImpl wraps an AudioSourceProviderClient. // When the audio format is known, Chromium calls setFormat() which then dispatches into WebCore. - class AudioClientImpl : public blink::WebAudioSourceProviderClient { + class AudioClientImpl FINAL : public blink::WebAudioSourceProviderClient { public: AudioClientImpl(WebCore::AudioSourceProviderClient* client) : m_client(client) @@ -182,7 +156,7 @@ private: virtual ~AudioClientImpl() { } // WebAudioSourceProviderClient - virtual void setFormat(size_t numberOfChannels, float sampleRate); + virtual void setFormat(size_t numberOfChannels, float sampleRate) OVERRIDE; private: WebCore::AudioSourceProviderClient* m_client; @@ -191,7 +165,7 @@ private: // AudioSourceProviderImpl wraps a WebAudioSourceProvider. // provideInput() calls into Chromium to get a rendered audio stream. - class AudioSourceProviderImpl : public WebCore::AudioSourceProvider { + class AudioSourceProviderImpl FINAL : public WebCore::AudioSourceProvider { public: AudioSourceProviderImpl() : m_webAudioSourceProvider(0) @@ -204,8 +178,8 @@ private: void wrap(WebAudioSourceProvider*); // WebCore::AudioSourceProvider - virtual void setClient(WebCore::AudioSourceProviderClient*); - virtual void provideInput(WebCore::AudioBus*, size_t framesToProcess); + virtual void setClient(WebCore::AudioSourceProviderClient*) OVERRIDE; + virtual void provideInput(WebCore::AudioBus*, size_t framesToProcess) OVERRIDE; private: WebAudioSourceProvider* m_webAudioSourceProvider; @@ -215,8 +189,6 @@ private: AudioSourceProviderImpl m_audioSourceProvider; #endif - - RefPtr<WebCore::HTMLMediaSource> m_mediaSource; }; } // namespace blink |