| Index: content/renderer/media/webmediaplayer_impl.h
|
| diff --git a/content/renderer/media/webmediaplayer_impl.h b/content/renderer/media/webmediaplayer_impl.h
|
| deleted file mode 100644
|
| index 7c2892b8c855be3a189606cfef62a4f38f49b9af..0000000000000000000000000000000000000000
|
| --- a/content/renderer/media/webmediaplayer_impl.h
|
| +++ /dev/null
|
| @@ -1,322 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_IMPL_H_
|
| -#define CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_IMPL_H_
|
| -
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "base/threading/thread.h"
|
| -#include "content/renderer/media/buffered_data_source_host_impl.h"
|
| -#include "content/renderer/media/video_frame_compositor.h"
|
| -#include "media/base/audio_renderer_sink.h"
|
| -// TODO(xhwang): Remove when we remove prefixed EME implementation.
|
| -#include "media/base/media_keys.h"
|
| -#include "media/base/pipeline.h"
|
| -#include "media/base/text_track.h"
|
| -#include "media/filters/skcanvas_video_renderer.h"
|
| -#include "skia/ext/platform_canvas.h"
|
| -#include "third_party/WebKit/public/platform/WebAudioSourceProvider.h"
|
| -#include "third_party/WebKit/public/platform/WebContentDecryptionModuleResult.h"
|
| -#include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
|
| -#include "third_party/WebKit/public/platform/WebMediaPlayer.h"
|
| -#include "third_party/WebKit/public/platform/WebMediaPlayerClient.h"
|
| -#include "url/gurl.h"
|
| -
|
| -namespace blink {
|
| -class WebLocalFrame;
|
| -}
|
| -
|
| -namespace base {
|
| -class SingleThreadTaskRunner;
|
| -}
|
| -
|
| -namespace cc_blink {
|
| -class WebLayerImpl;
|
| -}
|
| -
|
| -namespace media {
|
| -class AudioHardwareConfig;
|
| -class ChunkDemuxer;
|
| -class GpuVideoAcceleratorFactories;
|
| -class MediaLog;
|
| -}
|
| -
|
| -
|
| -namespace content {
|
| -class BufferedDataSource;
|
| -class EncryptedMediaPlayerSupport;
|
| -class VideoFrameCompositor;
|
| -class WebAudioSourceProviderImpl;
|
| -class WebMediaPlayerDelegate;
|
| -class WebMediaPlayerParams;
|
| -class WebTextTrackImpl;
|
| -
|
| -// The canonical implementation of blink::WebMediaPlayer that's backed by
|
| -// media::Pipeline. Handles normal resource loading, Media Source, and
|
| -// Encrypted Media.
|
| -class WebMediaPlayerImpl
|
| - : public blink::WebMediaPlayer,
|
| - public base::SupportsWeakPtr<WebMediaPlayerImpl> {
|
| - public:
|
| - // Constructs a WebMediaPlayer implementation using Chromium's media stack.
|
| - // |delegate| may be null.
|
| - WebMediaPlayerImpl(blink::WebLocalFrame* frame,
|
| - blink::WebMediaPlayerClient* client,
|
| - base::WeakPtr<WebMediaPlayerDelegate> delegate,
|
| - const WebMediaPlayerParams& params);
|
| - virtual ~WebMediaPlayerImpl();
|
| -
|
| - virtual void load(LoadType load_type,
|
| - const blink::WebURL& url,
|
| - CORSMode cors_mode);
|
| -
|
| - // Playback controls.
|
| - virtual void play();
|
| - virtual void pause();
|
| - virtual bool supportsSave() const;
|
| - virtual void seek(double seconds);
|
| - virtual void setRate(double rate);
|
| - virtual void setVolume(double volume);
|
| - virtual void setPreload(blink::WebMediaPlayer::Preload preload);
|
| - virtual blink::WebTimeRanges buffered() const;
|
| - virtual double maxTimeSeekable() const;
|
| -
|
| - // Methods for painting.
|
| - virtual void paint(blink::WebCanvas* canvas,
|
| - const blink::WebRect& rect,
|
| - unsigned char alpha,
|
| - SkXfermode::Mode mode);
|
| - // TODO(dshwang): remove it because above method replaces. crbug.com/401027
|
| - virtual void paint(blink::WebCanvas* canvas,
|
| - const blink::WebRect& rect,
|
| - unsigned char alpha);
|
| -
|
| - // True if the loaded media has a playable video/audio track.
|
| - virtual bool hasVideo() const;
|
| - virtual bool hasAudio() const;
|
| -
|
| - // Dimensions of the video.
|
| - virtual blink::WebSize naturalSize() const;
|
| -
|
| - // Getters of playback state.
|
| - virtual bool paused() const;
|
| - virtual bool seeking() const;
|
| - virtual double duration() const;
|
| - virtual double timelineOffset() const;
|
| - virtual double currentTime() const;
|
| -
|
| - // Internal states of loading and network.
|
| - // TODO(hclam): Ask the pipeline about the state rather than having reading
|
| - // them from members which would cause race conditions.
|
| - virtual blink::WebMediaPlayer::NetworkState networkState() const;
|
| - virtual blink::WebMediaPlayer::ReadyState readyState() const;
|
| -
|
| - virtual bool didLoadingProgress();
|
| -
|
| - virtual bool hasSingleSecurityOrigin() const;
|
| - virtual bool didPassCORSAccessCheck() const;
|
| -
|
| - virtual double mediaTimeForTimeValue(double timeValue) const;
|
| -
|
| - virtual unsigned decodedFrameCount() const;
|
| - virtual unsigned droppedFrameCount() const;
|
| - virtual unsigned audioDecodedByteCount() const;
|
| - virtual unsigned videoDecodedByteCount() const;
|
| -
|
| - virtual bool copyVideoTextureToPlatformTexture(
|
| - blink::WebGraphicsContext3D* web_graphics_context,
|
| - unsigned int texture,
|
| - unsigned int level,
|
| - unsigned int internal_format,
|
| - unsigned int type,
|
| - bool premultiply_alpha,
|
| - bool flip_y);
|
| -
|
| - virtual blink::WebAudioSourceProvider* audioSourceProvider();
|
| -
|
| - virtual MediaKeyException generateKeyRequest(
|
| - const blink::WebString& key_system,
|
| - const unsigned char* init_data,
|
| - unsigned init_data_length);
|
| -
|
| - virtual MediaKeyException addKey(const blink::WebString& key_system,
|
| - const unsigned char* key,
|
| - unsigned key_length,
|
| - const unsigned char* init_data,
|
| - unsigned init_data_length,
|
| - const blink::WebString& session_id);
|
| -
|
| - virtual MediaKeyException cancelKeyRequest(
|
| - const blink::WebString& key_system,
|
| - const blink::WebString& session_id);
|
| -
|
| - // TODO(jrummell): Remove this method once Blink updated to use the other
|
| - // two methods.
|
| - virtual void setContentDecryptionModule(
|
| - blink::WebContentDecryptionModule* cdm);
|
| - virtual void setContentDecryptionModule(
|
| - blink::WebContentDecryptionModule* cdm,
|
| - blink::WebContentDecryptionModuleResult result);
|
| - virtual void setContentDecryptionModuleSync(
|
| - blink::WebContentDecryptionModule* cdm);
|
| -
|
| - void OnPipelineSeeked(bool time_changed, media::PipelineStatus status);
|
| - void OnPipelineEnded();
|
| - void OnPipelineError(media::PipelineStatus error);
|
| - void OnPipelineMetadata(media::PipelineMetadata metadata);
|
| - void OnPipelineBufferingStateChanged(media::BufferingState buffering_state);
|
| - void OnDemuxerOpened();
|
| - void OnAddTextTrack(const media::TextTrackConfig& config,
|
| - const media::AddTextTrackDoneCB& done_cb);
|
| -
|
| - private:
|
| - // Called after |defer_load_cb_| has decided to allow the load. If
|
| - // |defer_load_cb_| is null this is called immediately.
|
| - void DoLoad(LoadType load_type,
|
| - const blink::WebURL& url,
|
| - CORSMode cors_mode);
|
| -
|
| - // Called after asynchronous initialization of a data source completed.
|
| - void DataSourceInitialized(bool success);
|
| -
|
| - // Called when the data source is downloading or paused.
|
| - void NotifyDownloading(bool is_downloading);
|
| -
|
| - // Creates a media::Renderer that will be used by the |pipeline_|.
|
| - scoped_ptr<media::Renderer> CreateRenderer();
|
| -
|
| - // Finishes starting the pipeline due to a call to load().
|
| - void StartPipeline();
|
| -
|
| - // Helpers that set the network/ready state and notifies the client if
|
| - // they've changed.
|
| - void SetNetworkState(blink::WebMediaPlayer::NetworkState state);
|
| - void SetReadyState(blink::WebMediaPlayer::ReadyState state);
|
| -
|
| - // Gets the duration value reported by the pipeline.
|
| - double GetPipelineDuration() const;
|
| -
|
| - // Callbacks from |pipeline_| that are forwarded to |client_|.
|
| - void OnDurationChanged();
|
| - void OnNaturalSizeChanged(gfx::Size size);
|
| - void OnOpacityChanged(bool opaque);
|
| -
|
| - // Called by VideoRendererImpl on its internal thread with the new frame to be
|
| - // painted.
|
| - void FrameReady(const scoped_refptr<media::VideoFrame>& frame);
|
| -
|
| - // Returns the current video frame from |compositor_|. Blocks until the
|
| - // compositor can return the frame.
|
| - scoped_refptr<media::VideoFrame> GetCurrentFrameFromCompositor();
|
| -
|
| - blink::WebLocalFrame* frame_;
|
| -
|
| - // TODO(hclam): get rid of these members and read from the pipeline directly.
|
| - blink::WebMediaPlayer::NetworkState network_state_;
|
| - blink::WebMediaPlayer::ReadyState ready_state_;
|
| -
|
| - // Preload state for when |data_source_| is created after setPreload().
|
| - BufferedDataSource::Preload preload_;
|
| -
|
| - // Task runner for posting tasks on Chrome's main thread. Also used
|
| - // for DCHECKs so methods calls won't execute in the wrong thread.
|
| - const scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
|
| -
|
| - scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
|
| - scoped_refptr<media::MediaLog> media_log_;
|
| - media::Pipeline pipeline_;
|
| -
|
| - // The LoadType passed in the |load_type| parameter of the load() call.
|
| - LoadType load_type_;
|
| -
|
| - // Cache of metadata for answering hasAudio(), hasVideo(), and naturalSize().
|
| - media::PipelineMetadata pipeline_metadata_;
|
| -
|
| - // Whether the video is known to be opaque or not.
|
| - bool opaque_;
|
| -
|
| - // Playback state.
|
| - //
|
| - // TODO(scherkus): we have these because Pipeline favours the simplicity of a
|
| - // single "playback rate" over worrying about paused/stopped etc... It forces
|
| - // all clients to manage the pause+playback rate externally, but is that
|
| - // really a bad thing?
|
| - //
|
| - // TODO(scherkus): since SetPlaybackRate(0) is asynchronous and we don't want
|
| - // to hang the render thread during pause(), we record the time at the same
|
| - // time we pause and then return that value in currentTime(). Otherwise our
|
| - // clock can creep forward a little bit while the asynchronous
|
| - // SetPlaybackRate(0) is being executed.
|
| - bool paused_;
|
| - bool seeking_;
|
| - double playback_rate_;
|
| - base::TimeDelta paused_time_;
|
| -
|
| - // TODO(scherkus): Replace with an explicit ended signal to HTMLMediaElement,
|
| - // see http://crbug.com/409280
|
| - bool ended_;
|
| -
|
| - // Seek gets pending if another seek is in progress. Only last pending seek
|
| - // will have effect.
|
| - bool pending_seek_;
|
| - double pending_seek_seconds_;
|
| -
|
| - // Tracks whether to issue time changed notifications during buffering state
|
| - // changes.
|
| - bool should_notify_time_changed_;
|
| -
|
| - blink::WebMediaPlayerClient* client_;
|
| -
|
| - base::WeakPtr<WebMediaPlayerDelegate> delegate_;
|
| -
|
| - base::Callback<void(const base::Closure&)> defer_load_cb_;
|
| -
|
| - // Factories for supporting video accelerators. May be null.
|
| - scoped_refptr<media::GpuVideoAcceleratorFactories> gpu_factories_;
|
| -
|
| - // Routes audio playback to either AudioRendererSink or WebAudio.
|
| - scoped_refptr<WebAudioSourceProviderImpl> audio_source_provider_;
|
| -
|
| - bool supports_save_;
|
| -
|
| - // These two are mutually exclusive:
|
| - // |data_source_| is used for regular resource loads.
|
| - // |chunk_demuxer_| is used for Media Source resource loads.
|
| - //
|
| - // |demuxer_| will contain the appropriate demuxer based on which resource
|
| - // load strategy we're using.
|
| - scoped_ptr<BufferedDataSource> data_source_;
|
| - scoped_ptr<media::Demuxer> demuxer_;
|
| - media::ChunkDemuxer* chunk_demuxer_;
|
| -
|
| - BufferedDataSourceHostImpl buffered_data_source_host_;
|
| -
|
| - // Video rendering members.
|
| - scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_;
|
| - VideoFrameCompositor* compositor_; // Deleted on |compositor_task_runner_|.
|
| - media::SkCanvasVideoRenderer skcanvas_video_renderer_;
|
| -
|
| - // The compositor layer for displaying the video content when using composited
|
| - // playback.
|
| - scoped_ptr<cc_blink::WebLayerImpl> video_weblayer_;
|
| -
|
| - // Text track objects get a unique index value when they're created.
|
| - int text_track_index_;
|
| -
|
| - scoped_ptr<EncryptedMediaPlayerSupport> encrypted_media_support_;
|
| -
|
| - const media::AudioHardwareConfig& audio_hardware_config_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerImpl);
|
| -};
|
| -
|
| -} // namespace content
|
| -
|
| -#endif // CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_IMPL_H_
|
|
|