Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(487)

Unified Diff: content/renderer/media/webmediaplayer_impl.h

Issue 495353003: Move WebMediaPlayerImpl and its dependencies to media/blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/media/webmediaplayer_delegate.h ('k') | content/renderer/media/webmediaplayer_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « content/renderer/media/webmediaplayer_delegate.h ('k') | content/renderer/media/webmediaplayer_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698