diff --git a/BUILD.gn b/BUILD.gn index a980e851be157a..36ec166a87c440 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -51,6 +51,7 @@ group("root") { "//ipc/mojo", "//jingle:notifier", "//media", + "//media/blink", "//media/cast", "//mojo", "//net", @@ -194,6 +195,7 @@ group("root") { "//extensions/common", "//extensions/common/api", "//extensions/renderer", + "//media/blink", # Blocked on blink "//pdf", # Not compiled on Android in GYP yet, either. "//ppapi:ppapi_c", "//sandbox", diff --git a/content/content_renderer.gypi b/content/content_renderer.gypi index 733bb886728ca9..ee23601eda23e2 100644 --- a/content/content_renderer.gypi +++ b/content/content_renderer.gypi @@ -12,6 +12,7 @@ '../gin/gin.gyp:gin', '../gpu/gpu.gyp:gpu', '../jingle/jingle.gyp:jingle_glue', + '../media/blink/media_blink.gyp:media_blink', '../media/media.gyp:media', '../mojo/mojo_base.gyp:mojo_application_bindings', '../mojo/mojo_base.gyp:mojo_environment_chromium', @@ -209,8 +210,6 @@ 'renderer/java/gin_java_bridge_object.h', 'renderer/java/gin_java_bridge_value_converter.cc', 'renderer/java/gin_java_bridge_value_converter.h', - 'renderer/media/active_loader.cc', - 'renderer/media/active_loader.h', 'renderer/media/aec_dump_message_filter.cc', 'renderer/media/aec_dump_message_filter.h', 'renderer/media/android/audio_decoder_android.cc', @@ -240,20 +239,10 @@ 'renderer/media/audio_message_filter.h', 'renderer/media/audio_renderer_mixer_manager.cc', 'renderer/media/audio_renderer_mixer_manager.h', - 'renderer/media/buffered_data_source.cc', - 'renderer/media/buffered_data_source.h', - 'renderer/media/buffered_data_source_host_impl.h', - 'renderer/media/buffered_data_source_host_impl.cc', - 'renderer/media/buffered_resource_loader.cc', - 'renderer/media/buffered_resource_loader.h', - 'renderer/media/cache_util.cc', - 'renderer/media/cache_util.h', 'renderer/media/cdm_session_adapter.cc', 'renderer/media/cdm_session_adapter.h', 'renderer/media/crypto/content_decryption_module_factory.cc', 'renderer/media/crypto/content_decryption_module_factory.h', - 'renderer/media/crypto/encrypted_media_player_support.cc', - 'renderer/media/crypto/encrypted_media_player_support.h', 'renderer/media/crypto/encrypted_media_player_support_impl.cc', 'renderer/media/crypto/encrypted_media_player_support_impl.h', 'renderer/media/crypto/key_systems.cc', @@ -291,39 +280,20 @@ 'renderer/media/renderer_webaudiodevice_impl.h', 'renderer/media/renderer_webmidiaccessor_impl.cc', 'renderer/media/renderer_webmidiaccessor_impl.h', - 'renderer/media/texttrack_impl.cc', - 'renderer/media/texttrack_impl.h', 'renderer/media/video_capture_impl.cc', 'renderer/media/video_capture_impl.h', 'renderer/media/video_capture_impl_manager.cc', 'renderer/media/video_capture_impl_manager.h', 'renderer/media/video_capture_message_filter.cc', 'renderer/media/video_capture_message_filter.h', - 'renderer/media/video_frame_compositor.cc', - 'renderer/media/video_frame_compositor.h', 'renderer/media/video_frame_provider.cc', 'renderer/media/video_frame_provider.h', - 'renderer/media/webaudiosourceprovider_impl.cc', - 'renderer/media/webaudiosourceprovider_impl.h', 'renderer/media/webcontentdecryptionmodule_impl.cc', 'renderer/media/webcontentdecryptionmodule_impl.h', 'renderer/media/webcontentdecryptionmodulesession_impl.cc', 'renderer/media/webcontentdecryptionmodulesession_impl.h', - 'renderer/media/webinbandtexttrack_impl.cc', - 'renderer/media/webinbandtexttrack_impl.h', - 'renderer/media/webmediaplayer_delegate.h', - 'renderer/media/webmediaplayer_impl.cc', - 'renderer/media/webmediaplayer_impl.h', 'renderer/media/webmediaplayer_ms.cc', 'renderer/media/webmediaplayer_ms.h', - 'renderer/media/webmediaplayer_params.cc', - 'renderer/media/webmediaplayer_params.h', - 'renderer/media/webmediaplayer_util.cc', - 'renderer/media/webmediaplayer_util.h', - 'renderer/media/webmediasource_impl.cc', - 'renderer/media/webmediasource_impl.h', - 'renderer/media/websourcebuffer_impl.cc', - 'renderer/media/websourcebuffer_impl.h', 'renderer/memory_benchmarking_extension.cc', 'renderer/memory_benchmarking_extension.h', 'renderer/menu_item_builder.cc', diff --git a/content/content_shell.gypi b/content/content_shell.gypi index f530e5a2c3c11a..000c6e34b15e2a 100644 --- a/content/content_shell.gypi +++ b/content/content_shell.gypi @@ -50,6 +50,7 @@ '../gin/gin.gyp:gin', '../gpu/gpu.gyp:gpu', '../ipc/ipc.gyp:ipc', + '../media/blink/media_blink.gyp:media_blink', '../media/media.gyp:media', '../net/net.gyp:net', '../net/net.gyp:net_resources', diff --git a/content/content_tests.gypi b/content/content_tests.gypi index dfca6c5198f3c7..77fb2d7e0c2f03 100644 --- a/content/content_tests.gypi +++ b/content/content_tests.gypi @@ -272,6 +272,7 @@ '../cc/blink/cc_blink.gyp:cc_blink', '../cc/cc.gyp:cc', '../cc/cc_tests.gyp:cc_test_support', + '../media/blink/media_blink.gyp:media_blink', '../media/media.gyp:media', '../ppapi/ppapi_internal.gyp:ppapi_host', '../ppapi/ppapi_internal.gyp:ppapi_proxy', @@ -702,19 +703,11 @@ 'renderer/media/android/media_info_loader_unittest.cc', 'renderer/media/audio_message_filter_unittest.cc', 'renderer/media/audio_renderer_mixer_manager_unittest.cc', - 'renderer/media/buffered_data_source_unittest.cc', - 'renderer/media/buffered_data_source_host_impl_unittest.cc', - 'renderer/media/buffered_resource_loader_unittest.cc', - 'renderer/media/cache_util_unittest.cc', 'renderer/media/crypto/key_systems_unittest.cc', 'renderer/media/render_media_log_unittest.cc', - 'renderer/media/test_response_generator.cc', - 'renderer/media/test_response_generator.h', 'renderer/media/video_capture_impl_manager_unittest.cc', 'renderer/media/video_capture_impl_unittest.cc', 'renderer/media/video_capture_message_filter_unittest.cc', - 'renderer/media/video_frame_compositor_unittest.cc', - 'renderer/media/webaudiosourceprovider_impl_unittest.cc', 'renderer/media/webrtc/video_destination_handler_unittest.cc', 'renderer/npapi/webplugin_impl_unittest.cc', 'renderer/pepper/host_var_tracker_unittest.cc', diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn index e59e10827928df..1f0e307748f1f1 100644 --- a/content/renderer/BUILD.gn +++ b/content/renderer/BUILD.gn @@ -29,6 +29,7 @@ source_set("renderer") { "//gin", "//jingle:jingle_glue", "//media", + "//media/blink", "//mojo/bindings/js", "//mojo/environment:chromium", "//mojo/public/js/bindings", @@ -71,7 +72,6 @@ source_set("renderer") { sources -= [ "accessibility/renderer_accessibility_focus_only.cc", "media/audio_decoder.cc", - "media/webmediaplayer_impl.cc", ] sources += [ "external_popup_menu.cc", diff --git a/content/renderer/media/android/media_info_loader.cc b/content/renderer/media/android/media_info_loader.cc index ce3a299b7193b3..95fed0b63a9a7e 100644 --- a/content/renderer/media/android/media_info_loader.cc +++ b/content/renderer/media/android/media_info_loader.cc @@ -83,7 +83,7 @@ void MediaInfoLoader::Start(blink::WebFrame* frame) { // Start the resource loading. loader->loadAsynchronously(request, this); - active_loader_.reset(new ActiveLoader(loader.Pass())); + active_loader_.reset(new media::ActiveLoader(loader.Pass())); } ///////////////////////////////////////////////////////////////////////////// diff --git a/content/renderer/media/android/media_info_loader.h b/content/renderer/media/android/media_info_loader.h index caefc9d16729ce..b421fb3796b58b 100644 --- a/content/renderer/media/android/media_info_loader.h +++ b/content/renderer/media/android/media_info_loader.h @@ -11,7 +11,7 @@ #include "base/memory/scoped_ptr.h" #include "base/time/time.h" #include "content/common/content_export.h" -#include "content/renderer/media/active_loader.h" +#include "media/blink/active_loader.h" #include "third_party/WebKit/public/platform/WebMediaPlayer.h" #include "third_party/WebKit/public/platform/WebURLLoaderClient.h" #include "third_party/WebKit/public/web/WebDocument.h" @@ -113,7 +113,7 @@ class CONTENT_EXPORT MediaInfoLoader : private blink::WebURLLoaderClient { scoped_ptr test_loader_; // Keeps track of an active WebURLLoader and associated state. - scoped_ptr active_loader_; + scoped_ptr active_loader_; bool loader_failed_; GURL url_; diff --git a/content/renderer/media/android/media_source_delegate.cc b/content/renderer/media/android/media_source_delegate.cc index 9e6d9544639581..6b1f206e07a1ab 100644 --- a/content/renderer/media/android/media_source_delegate.cc +++ b/content/renderer/media/android/media_source_delegate.cc @@ -11,12 +11,12 @@ #include "base/message_loop/message_loop_proxy.h" #include "base/strings/string_number_conversions.h" #include "content/renderer/media/android/renderer_demuxer_android.h" -#include "content/renderer/media/webmediaplayer_util.h" -#include "content/renderer/media/webmediasource_impl.h" #include "media/base/android/demuxer_stream_player_params.h" #include "media/base/bind_to_current_loop.h" #include "media/base/demuxer_stream.h" #include "media/base/media_log.h" +#include "media/blink/webmediaplayer_util.h" +#include "media/blink/webmediasource_impl.h" #include "media/filters/chunk_demuxer.h" #include "media/filters/decrypting_demuxer_stream.h" #include "third_party/WebKit/public/platform/WebString.h" @@ -189,7 +189,7 @@ void MediaSourceDelegate::InitializeDemuxer() { } blink::WebTimeRanges MediaSourceDelegate::Buffered() const { - return ConvertToWebTimeRanges(buffered_time_ranges_); + return media::ConvertToWebTimeRanges(buffered_time_ranges_); } size_t MediaSourceDelegate::DecodedFrameCount() const { @@ -662,7 +662,7 @@ base::TimeDelta MediaSourceDelegate::GetDuration() const { if (duration == std::numeric_limits::infinity()) return media::kInfiniteDuration(); - return ConvertSecondsToTimestamp(duration); + return media::ConvertSecondsToTimestamp(duration); } void MediaSourceDelegate::OnDemuxerOpened() { @@ -670,7 +670,7 @@ void MediaSourceDelegate::OnDemuxerOpened() { if (media_source_opened_cb_.is_null()) return; - media_source_opened_cb_.Run(new WebMediaSourceImpl( + media_source_opened_cb_.Run(new media::WebMediaSourceImpl( chunk_demuxer_.get(), base::Bind(&LogMediaSourceError, media_log_))); } diff --git a/content/renderer/media/android/webmediaplayer_android.cc b/content/renderer/media/android/webmediaplayer_android.cc index 6b3a5895c6c99b..67aa9b097a3ed7 100644 --- a/content/renderer/media/android/webmediaplayer_android.cc +++ b/content/renderer/media/android/webmediaplayer_android.cc @@ -26,8 +26,6 @@ #include "content/renderer/media/crypto/key_systems.h" #include "content/renderer/media/crypto/renderer_cdm_manager.h" #include "content/renderer/media/webcontentdecryptionmodule_impl.h" -#include "content/renderer/media/webmediaplayer_delegate.h" -#include "content/renderer/media/webmediaplayer_util.h" #include "content/renderer/render_frame_impl.h" #include "content/renderer/render_thread_impl.h" #include "gpu/GLES2/gl2extchromium.h" @@ -40,6 +38,8 @@ #include "media/base/media_log.h" #include "media/base/media_switches.h" #include "media/base/video_frame.h" +#include "media/blink/webmediaplayer_delegate.h" +#include "media/blink/webmediaplayer_util.h" #include "net/base/mime_util.h" #include "third_party/WebKit/public/platform/Platform.h" #include "third_party/WebKit/public/platform/WebContentDecryptionModuleResult.h" @@ -111,7 +111,7 @@ namespace content { WebMediaPlayerAndroid::WebMediaPlayerAndroid( blink::WebFrame* frame, blink::WebMediaPlayerClient* client, - base::WeakPtr delegate, + base::WeakPtr delegate, RendererMediaPlayerManager* player_manager, RendererCdmManager* cdm_manager, scoped_refptr factory, @@ -200,7 +200,7 @@ void WebMediaPlayerAndroid::load(LoadType load_type, const blink::WebURL& url, CORSMode cors_mode) { DCHECK(main_thread_checker_.CalledOnValidThread()); - ReportMediaSchemeUma(GURL(url)); + media::ReportMediaSchemeUma(GURL(url)); switch (load_type) { case LoadTypeURL: @@ -331,7 +331,7 @@ void WebMediaPlayerAndroid::seek(double seconds) { DCHECK(main_thread_checker_.CalledOnValidThread()); DVLOG(1) << __FUNCTION__ << "(" << seconds << ")"; - base::TimeDelta new_seek_time = ConvertSecondsToTimestamp(seconds); + base::TimeDelta new_seek_time = media::ConvertSecondsToTimestamp(seconds); if (seeking_) { if (new_seek_time == seek_time_) { @@ -672,7 +672,7 @@ bool WebMediaPlayerAndroid::didPassCORSAccessCheck() const { } double WebMediaPlayerAndroid::mediaTimeForTimeValue(double timeValue) const { - return ConvertSecondsToTimestamp(timeValue).InSecondsF(); + return media::ConvertSecondsToTimestamp(timeValue).InSecondsF(); } unsigned WebMediaPlayerAndroid::decodedFrameCount() const { diff --git a/content/renderer/media/android/webmediaplayer_android.h b/content/renderer/media/android/webmediaplayer_android.h index b3864e6a4f98fb..bf290b71229ca9 100644 --- a/content/renderer/media/android/webmediaplayer_android.h +++ b/content/renderer/media/android/webmediaplayer_android.h @@ -56,13 +56,13 @@ struct MailboxHolder; namespace media { class MediaLog; +class WebMediaPlayerDelegate; } namespace content { class RendererCdmManager; class RendererMediaPlayerManager; class WebContentDecryptionModuleImpl; -class WebMediaPlayerDelegate; // This class implements blink::WebMediaPlayer by keeping the android // media player in the browser process. It listens to all the status changes @@ -81,7 +81,7 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer, WebMediaPlayerAndroid( blink::WebFrame* frame, blink::WebMediaPlayerClient* client, - base::WeakPtr delegate, + base::WeakPtr delegate, RendererMediaPlayerManager* player_manager, RendererCdmManager* cdm_manager, scoped_refptr factory, @@ -331,7 +331,7 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer, // TODO(qinmin): Currently android mediaplayer takes care of the screen // lock. So this is only used for media source. Will apply this to regular // media tag once http://crbug.com/247892 is fixed. - base::WeakPtr delegate_; + base::WeakPtr delegate_; // Save the list of buffered time ranges. blink::WebTimeRanges buffered_; diff --git a/content/renderer/media/crypto/encrypted_media_player_support_impl.cc b/content/renderer/media/crypto/encrypted_media_player_support_impl.cc index b15cd81adf31a4..c884cd6ac227e4 100644 --- a/content/renderer/media/crypto/encrypted_media_player_support_impl.cc +++ b/content/renderer/media/crypto/encrypted_media_player_support_impl.cc @@ -16,6 +16,7 @@ #include "content/renderer/media/webcontentdecryptionmodule_impl.h" #include "content/renderer/pepper/pepper_webplugin_impl.h" #include "media/base/bind_to_current_loop.h" +#include "media/blink/encrypted_media_player_support.h" #include "third_party/WebKit/public/platform/WebContentDecryptionModule.h" #include "third_party/WebKit/public/platform/WebContentDecryptionModuleResult.h" #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" @@ -123,8 +124,8 @@ static std::string GuessInitDataType(const unsigned char* init_data, return "video/mp4"; } -scoped_ptr EncryptedMediaPlayerSupportImpl::Create( - blink::WebMediaPlayerClient* client) { +scoped_ptr +EncryptedMediaPlayerSupportImpl::Create(blink::WebMediaPlayerClient* client) { return scoped_ptr( new EncryptedMediaPlayerSupportImpl(client)); } diff --git a/content/renderer/media/crypto/encrypted_media_player_support_impl.h b/content/renderer/media/crypto/encrypted_media_player_support_impl.h index 76063e62c90060..f0299d84d09f8e 100644 --- a/content/renderer/media/crypto/encrypted_media_player_support_impl.h +++ b/content/renderer/media/crypto/encrypted_media_player_support_impl.h @@ -9,8 +9,8 @@ #include #include "base/memory/weak_ptr.h" -#include "content/renderer/media/crypto/encrypted_media_player_support.h" #include "content/renderer/media/crypto/proxy_decryptor.h" +#include "media/blink/encrypted_media_player_support.h" namespace blink { class WebMediaPlayerClient; @@ -21,7 +21,7 @@ namespace content { class WebContentDecryptionModuleImpl; class EncryptedMediaPlayerSupportImpl - : public EncryptedMediaPlayerSupport, + : public media::EncryptedMediaPlayerSupport, public base::SupportsWeakPtr { public: static scoped_ptr Create( diff --git a/content/renderer/media/webmediaplayer_ms.cc b/content/renderer/media/webmediaplayer_ms.cc index b8ecc146c2f99b..5aefdd987923c4 100644 --- a/content/renderer/media/webmediaplayer_ms.cc +++ b/content/renderer/media/webmediaplayer_ms.cc @@ -16,13 +16,13 @@ #include "content/renderer/media/media_stream_audio_renderer.h" #include "content/renderer/media/media_stream_renderer_factory.h" #include "content/renderer/media/video_frame_provider.h" -#include "content/renderer/media/webmediaplayer_delegate.h" -#include "content/renderer/media/webmediaplayer_util.h" #include "content/renderer/render_frame_impl.h" #include "media/base/media_log.h" #include "media/base/video_frame.h" #include "media/base/video_rotation.h" #include "media/base/video_util.h" +#include "media/blink/webmediaplayer_delegate.h" +#include "media/blink/webmediaplayer_util.h" #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" #include "third_party/WebKit/public/platform/WebRect.h" #include "third_party/WebKit/public/platform/WebSize.h" @@ -81,7 +81,7 @@ namespace content { WebMediaPlayerMS::WebMediaPlayerMS( blink::WebFrame* frame, blink::WebMediaPlayerClient* client, - base::WeakPtr delegate, + base::WeakPtr delegate, media::MediaLog* media_log, scoped_ptr factory) : frame_(frame), @@ -358,7 +358,7 @@ bool WebMediaPlayerMS::didPassCORSAccessCheck() const { } double WebMediaPlayerMS::mediaTimeForTimeValue(double timeValue) const { - return ConvertSecondsToTimestamp(timeValue).InSecondsF(); + return media::ConvertSecondsToTimestamp(timeValue).InSecondsF(); } unsigned WebMediaPlayerMS::decodedFrameCount() const { diff --git a/content/renderer/media/webmediaplayer_ms.h b/content/renderer/media/webmediaplayer_ms.h index eea5c0376aeca2..eb67d3d1802f1f 100644 --- a/content/renderer/media/webmediaplayer_ms.h +++ b/content/renderer/media/webmediaplayer_ms.h @@ -23,6 +23,7 @@ class WebMediaPlayerClient; namespace media { class MediaLog; +class WebMediaPlayerDelegate; } namespace cc_blink { @@ -33,7 +34,6 @@ namespace content { class MediaStreamAudioRenderer; class MediaStreamRendererFactory; class VideoFrameProvider; -class WebMediaPlayerDelegate; // WebMediaPlayerMS delegates calls from WebCore::MediaPlayerPrivate to // Chrome's media player when "src" is from media stream. @@ -58,7 +58,7 @@ class WebMediaPlayerMS // a MediaStreamClient which provides VideoFrameProvider. WebMediaPlayerMS(blink::WebFrame* frame, blink::WebMediaPlayerClient* client, - base::WeakPtr delegate, + base::WeakPtr delegate, media::MediaLog* media_log, scoped_ptr factory); virtual ~WebMediaPlayerMS(); @@ -155,7 +155,7 @@ class WebMediaPlayerMS blink::WebMediaPlayerClient* client_; - base::WeakPtr delegate_; + base::WeakPtr delegate_; // Specify content:: to disambiguate from cc::. scoped_refptr video_frame_provider_; diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index 549004c1d6864e..e2b1bfa076d3d9 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc @@ -74,9 +74,7 @@ #include "content/renderer/media/render_media_log.h" #include "content/renderer/media/user_media_client_impl.h" #include "content/renderer/media/webcontentdecryptionmodule_impl.h" -#include "content/renderer/media/webmediaplayer_impl.h" #include "content/renderer/media/webmediaplayer_ms.h" -#include "content/renderer/media/webmediaplayer_params.h" #include "content/renderer/notification_permission_dispatcher.h" #include "content/renderer/notification_provider.h" #include "content/renderer/npapi/plugin_channel_host.h" @@ -93,6 +91,8 @@ #include "content/renderer/v8_value_converter_impl.h" #include "content/renderer/websharedworker_proxy.h" #include "media/base/audio_renderer_mixer_input.h" +#include "media/blink/webmediaplayer_impl.h" +#include "media/blink/webmediaplayer_params.h" #include "media/filters/gpu_video_accelerator_factories.h" #include "net/base/data_url.h" #include "net/base/net_errors.h" @@ -1602,7 +1602,7 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( return CreateAndroidWebMediaPlayer(url, client); #else RenderThreadImpl* render_thread = RenderThreadImpl::current(); - WebMediaPlayerParams params( + media::WebMediaPlayerParams params( base::Bind(&ContentRendererClient::DeferMediaLoad, base::Unretained(GetContentClient()->renderer()), static_cast(this)), @@ -1614,8 +1614,10 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( render_thread->GetMediaThreadTaskRunner(), render_thread->compositor_message_loop_proxy(), base::Bind(&EncryptedMediaPlayerSupportImpl::Create)); - return new WebMediaPlayerImpl(frame, client, weak_factory_.GetWeakPtr(), - params); + return new media::WebMediaPlayerImpl(frame, + client, + weak_factory_.GetWeakPtr(), + params); #endif // defined(OS_ANDROID) } diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h index 31f05cc374fdb4..d8cdfc38ac5ace 100644 --- a/content/renderer/render_frame_impl.h +++ b/content/renderer/render_frame_impl.h @@ -19,10 +19,10 @@ #include "content/public/common/javascript_message_type.h" #include "content/public/common/referrer.h" #include "content/public/renderer/render_frame.h" -#include "content/renderer/media/webmediaplayer_delegate.h" #include "content/renderer/render_frame_proxy.h" #include "content/renderer/renderer_webcookiejar_impl.h" #include "ipc/ipc_message.h" +#include "media/blink/webmediaplayer_delegate.h" #include "third_party/WebKit/public/web/WebAXObject.h" #include "third_party/WebKit/public/web/WebDataSource.h" #include "third_party/WebKit/public/web/WebFrameClient.h" @@ -83,7 +83,7 @@ struct CustomContextMenuContext; class CONTENT_EXPORT RenderFrameImpl : public RenderFrame, NON_EXPORTED_BASE(public blink::WebFrameClient), - NON_EXPORTED_BASE(public WebMediaPlayerDelegate) { + NON_EXPORTED_BASE(public media::WebMediaPlayerDelegate) { public: // Creates a new RenderFrame. |render_view| is the RenderView object that this // frame belongs to. diff --git a/media/DEPS b/media/DEPS index f723644c89dc98..f9c29befabdd58 100644 --- a/media/DEPS +++ b/media/DEPS @@ -11,4 +11,5 @@ include_rules = [ "+ui/gfx", "+ui/gl", "+ui/ozone", + "-media/blink", ] diff --git a/media/base/data_source.cc b/media/base/data_source.cc index c8ab4461b5d0f7..b6999c2c35b67f 100644 --- a/media/base/data_source.cc +++ b/media/base/data_source.cc @@ -8,9 +8,6 @@ namespace media { -// static -const int DataSource::kReadError = -1; - DataSource::DataSource() {} DataSource::~DataSource() {} diff --git a/media/base/data_source.h b/media/base/data_source.h index e0b73738a7eb4d..42566a9a13d5e4 100644 --- a/media/base/data_source.h +++ b/media/base/data_source.h @@ -15,7 +15,8 @@ class MEDIA_EXPORT DataSource { public: typedef base::Callback StatusCallback; typedef base::Callback ReadCB; - static const int kReadError; + + enum { kReadError = -1 }; DataSource(); virtual ~DataSource(); diff --git a/media/blink/BUILD.gn b/media/blink/BUILD.gn new file mode 100644 index 00000000000000..ad52f6289b5d98 --- /dev/null +++ b/media/blink/BUILD.gn @@ -0,0 +1,87 @@ +# Copyright 2014 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. +component("blink") { + output_name = "media_blink" + + deps = [ + "//base", + "//cc", + "//cc/blink", + "//media", + "//net", + "//third_party/WebKit/public:blink", + "//ui/gfx", + "//ui/gfx/geometry", + ] + + defines = [ "MEDIA_IMPLEMENTATION" ] + + sources = [ + "active_loader.cc", + "active_loader.h", + "buffered_data_source.cc", + "buffered_data_source.h", + "buffered_data_source_host_impl.cc", + "buffered_data_source_host_impl.h", + "buffered_resource_loader.cc", + "buffered_resource_loader.h", + "encrypted_media_player_support.cc", + "encrypted_media_player_support.h", + "cache_util.cc", + "cache_util.h", + "texttrack_impl.cc", + "texttrack_impl.h", + "video_frame_compositor.cc", + "video_frame_compositor.h", + "webaudiosourceprovider_impl.cc", + "webaudiosourceprovider_impl.h", + "webinbandtexttrack_impl.cc", + "webinbandtexttrack_impl.h", + "webmediaplayer_delegate.h", + "webmediaplayer_impl.cc", + "webmediaplayer_impl.h", + "webmediaplayer_params.cc", + "webmediaplayer_params.h", + "webmediaplayer_util.cc", + "webmediaplayer_util.h", + "webmediasource_impl.cc", + "webmediasource_impl.h", + "websourcebuffer_impl.cc", + "websourcebuffer_impl.h", + ] +} + +test("media_blink_unittests") { + deps = [ + ":blink", + "//base", + "//base/test:test_support", + "//cc", + "//cc/blink", + "//media", + "//media/base:test_support", + "//net", + "//testing/gmock", + "//testing/gtest", + "//third_party/WebKit/public:blink", + "//ui/gfx/geometry", + "//ui/gfx:test_support", + "//url", + ] + + sources = [ + "buffered_data_source_host_impl_unittest.cc", + "buffered_data_source_unittest.cc", + "buffered_resource_loader_unittest.cc", + "cache_util_unittest.cc", + "mock_webframeclient.h", + "mock_weburlloader.cc", + "mock_weburlloader.h", + "run_all_unittests.cc", + "test_response_generator.cc", + "test_response_generator.h", + "video_frame_compositor_unittest.cc", + "webaudiosourceprovider_impl_unittest.cc", + ] +} diff --git a/media/blink/DEPS b/media/blink/DEPS new file mode 100644 index 00000000000000..5c058166257266 --- /dev/null +++ b/media/blink/DEPS @@ -0,0 +1,10 @@ +include_rules = [ + "+cc/layers/video_frame_provider.h", + "+cc/layers/video_layer.h", + "+cc/blink/web_layer_impl.h", + "+media", + "+net/base", + "+net/http", + "+third_party/WebKit/public/platform", + "+third_party/WebKit/public/web", +] \ No newline at end of file diff --git a/content/renderer/media/active_loader.cc b/media/blink/active_loader.cc similarity index 77% rename from content/renderer/media/active_loader.cc rename to media/blink/active_loader.cc index 6951514e5b1129..2f1e084ebcaa9f 100644 --- a/content/renderer/media/active_loader.cc +++ b/media/blink/active_loader.cc @@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/active_loader.h" +#include "media/blink/active_loader.h" -#include "content/renderer/media/buffered_resource_loader.h" +#include "media/blink/buffered_resource_loader.h" #include "third_party/WebKit/public/platform/WebURLLoader.h" -namespace content { +namespace media { ActiveLoader::ActiveLoader(scoped_ptr loader) : loader_(loader.Pass()), @@ -23,4 +23,4 @@ void ActiveLoader::SetDeferred(bool deferred) { loader_->setDefersLoading(deferred); } -} // namespace content +} // namespace media diff --git a/content/renderer/media/active_loader.h b/media/blink/active_loader.h similarity index 80% rename from content/renderer/media/active_loader.h rename to media/blink/active_loader.h index 1c30214b92cfa6..d8c60df8e8b3ba 100644 --- a/content/renderer/media/active_loader.h +++ b/media/blink/active_loader.h @@ -2,22 +2,23 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_MEDIA_ACTIVE_LOADER_H_ -#define CONTENT_RENDERER_MEDIA_ACTIVE_LOADER_H_ +#ifndef MEDIA_BLINK_ACTIVE_LOADER_H_ +#define MEDIA_BLINK_ACTIVE_LOADER_H_ #include "base/basictypes.h" #include "base/memory/scoped_ptr.h" +#include "media/base/media_export.h" namespace blink { class WebURLLoader; } -namespace content { +namespace media { // Wraps an active WebURLLoader with some additional state. // // Handles deferring and deletion of loaders. -class ActiveLoader { +class MEDIA_EXPORT ActiveLoader { public: // Creates an ActiveLoader with the given loader. It is assumed that the // initial state of |loader| is loading and not deferred. @@ -37,6 +38,6 @@ class ActiveLoader { DISALLOW_IMPLICIT_CONSTRUCTORS(ActiveLoader); }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_ACTIVE_LOADER_H_ +#endif // MEDIA_BLINK_ACTIVE_LOADER_H_ diff --git a/content/renderer/media/buffered_data_source.cc b/media/blink/buffered_data_source.cc similarity index 97% rename from content/renderer/media/buffered_data_source.cc rename to media/blink/buffered_data_source.cc index 5fc0c59fb6d927..91ed1a254c8c43 100644 --- a/content/renderer/media/buffered_data_source.cc +++ b/media/blink/buffered_data_source.cc @@ -2,12 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/buffered_data_source.h" +#include "media/blink/buffered_data_source.h" #include "base/bind.h" #include "base/callback_helpers.h" #include "base/single_thread_task_runner.h" -#include "content/public/common/url_constants.h" #include "media/base/media_log.h" #include "net/base/net_errors.h" @@ -26,12 +25,12 @@ const int kNumCacheMissRetries = 3; } // namespace -namespace content { +namespace media { class BufferedDataSource::ReadOperation { public: ReadOperation(int64 position, int size, uint8* data, - const media::DataSource::ReadCB& callback); + const DataSource::ReadCB& callback); ~ReadOperation(); // Runs |callback_| with the given |result|, deleting the operation @@ -52,14 +51,14 @@ class BufferedDataSource::ReadOperation { const int64 position_; const int size_; uint8* data_; - media::DataSource::ReadCB callback_; + DataSource::ReadCB callback_; DISALLOW_IMPLICIT_CONSTRUCTORS(ReadOperation); }; BufferedDataSource::ReadOperation::ReadOperation( int64 position, int size, uint8* data, - const media::DataSource::ReadCB& callback) + const DataSource::ReadCB& callback) : retries_(0), position_(position), size_(size), @@ -83,7 +82,7 @@ BufferedDataSource::BufferedDataSource( BufferedResourceLoader::CORSMode cors_mode, const scoped_refptr& task_runner, WebFrame* frame, - media::MediaLog* media_log, + MediaLog* media_log, BufferedDataSourceHost* host, const DownloadingCB& downloading_cb) : url_(url), @@ -206,7 +205,7 @@ void BufferedDataSource::MediaIsPaused() { } ///////////////////////////////////////////////////////////////////////////// -// media::DataSource implementation. +// DataSource implementation. void BufferedDataSource::Stop() { { base::AutoLock auto_lock(lock_); @@ -227,7 +226,7 @@ void BufferedDataSource::SetBitrate(int bitrate) { void BufferedDataSource::Read( int64 position, int size, uint8* data, - const media::DataSource::ReadCB& read_cb) { + const DataSource::ReadCB& read_cb) { DVLOG(1) << "Read: " << position << " offset, " << size << " bytes"; DCHECK(!read_cb.is_null()); @@ -533,4 +532,4 @@ void BufferedDataSource::UpdateDeferStrategy(bool paused) { loader_->UpdateDeferStrategy(BufferedResourceLoader::kCapacityDefer); } -} // namespace content +} // namespace media diff --git a/content/renderer/media/buffered_data_source.h b/media/blink/buffered_data_source.h similarity index 92% rename from content/renderer/media/buffered_data_source.h rename to media/blink/buffered_data_source.h index c2fd174c621394..5ae7d935c62293 100644 --- a/content/renderer/media/buffered_data_source.h +++ b/media/blink/buffered_data_source.h @@ -2,18 +2,18 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_MEDIA_BUFFERED_DATA_SOURCE_H_ -#define CONTENT_RENDERER_MEDIA_BUFFERED_DATA_SOURCE_H_ +#ifndef MEDIA_BLINK_BUFFERED_DATA_SOURCE_H_ +#define MEDIA_BLINK_BUFFERED_DATA_SOURCE_H_ #include #include "base/callback.h" #include "base/memory/scoped_ptr.h" #include "base/synchronization/lock.h" -#include "content/common/content_export.h" -#include "content/renderer/media/buffered_resource_loader.h" #include "media/base/data_source.h" +#include "media/base/media_export.h" #include "media/base/ranges.h" +#include "media/blink/buffered_resource_loader.h" #include "url/gurl.h" namespace base { @@ -22,11 +22,8 @@ class SingleThreadTaskRunner; namespace media { class MediaLog; -} - -namespace content { -class CONTENT_EXPORT BufferedDataSourceHost { +class MEDIA_EXPORT BufferedDataSourceHost { public: // Notify the host of the total size of the media file. virtual void SetTotalBytes(int64 total_bytes) = 0; @@ -45,7 +42,7 @@ class CONTENT_EXPORT BufferedDataSourceHost { // // BufferedDataSource must be created and initialized on the render thread // before being passed to other threads. It may be deleted on any thread. -class CONTENT_EXPORT BufferedDataSource : public media::DataSource { +class MEDIA_EXPORT BufferedDataSource : public DataSource { public: // Used to specify video preload states. They are "hints" to the browser about // how aggressively the browser should load and buffer data. @@ -69,7 +66,7 @@ class CONTENT_EXPORT BufferedDataSource : public media::DataSource { BufferedResourceLoader::CORSMode cors_mode, const scoped_refptr& task_runner, blink::WebFrame* frame, - media::MediaLog* media_log, + MediaLog* media_log, BufferedDataSourceHost* host, const DownloadingCB& downloading_cb); virtual ~BufferedDataSource(); @@ -108,12 +105,12 @@ class CONTENT_EXPORT BufferedDataSource : public media::DataSource { // Returns true if the resource is local. bool assume_fully_buffered() { return !url_.SchemeIsHTTPOrHTTPS(); } - // media::DataSource implementation. + // DataSource implementation. // Called from demuxer thread. virtual void Stop() OVERRIDE; virtual void Read(int64 position, int size, uint8* data, - const media::DataSource::ReadCB& read_cb) OVERRIDE; + const DataSource::ReadCB& read_cb) OVERRIDE; virtual bool GetSize(int64* size_out) OVERRIDE; virtual bool IsStreaming() OVERRIDE; virtual void SetBitrate(int bitrate) OVERRIDE; @@ -225,7 +222,7 @@ class CONTENT_EXPORT BufferedDataSource : public media::DataSource { // Current playback rate. float playback_rate_; - scoped_refptr media_log_; + scoped_refptr media_log_; // Host object to report buffered byte range changes to. BufferedDataSourceHost* host_; @@ -238,6 +235,6 @@ class CONTENT_EXPORT BufferedDataSource : public media::DataSource { DISALLOW_COPY_AND_ASSIGN(BufferedDataSource); }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_BUFFERED_DATA_SOURCE_H_ +#endif // MEDIA_BLINK_BUFFERED_DATA_SOURCE_H_ diff --git a/content/renderer/media/buffered_data_source_host_impl.cc b/media/blink/buffered_data_source_host_impl.cc similarity index 86% rename from content/renderer/media/buffered_data_source_host_impl.cc rename to media/blink/buffered_data_source_host_impl.cc index 3ffee07481a2fc..42f9822dab7d76 100644 --- a/content/renderer/media/buffered_data_source_host_impl.cc +++ b/media/blink/buffered_data_source_host_impl.cc @@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/buffered_data_source_host_impl.h" +#include "media/blink/buffered_data_source_host_impl.h" -namespace content { +namespace media { BufferedDataSourceHostImpl::BufferedDataSourceHostImpl() : total_bytes_(0), @@ -34,10 +34,10 @@ static base::TimeDelta TimeForByteOffset( } void BufferedDataSourceHostImpl::AddBufferedTimeRanges( - media::Ranges* buffered_time_ranges, + Ranges* buffered_time_ranges, base::TimeDelta media_duration) const { - DCHECK(media_duration != media::kNoTimestamp()); - DCHECK(media_duration != media::kInfiniteDuration()); + DCHECK(media_duration != kNoTimestamp()); + DCHECK(media_duration != kInfiniteDuration()); if (total_bytes_ && buffered_byte_ranges_.size()) { for (size_t i = 0; i < buffered_byte_ranges_.size(); ++i) { int64 start = buffered_byte_ranges_.start(i); @@ -55,4 +55,4 @@ bool BufferedDataSourceHostImpl::DidLoadingProgress() { return ret; } -} // namespace content +} // namespace media diff --git a/content/renderer/media/buffered_data_source_host_impl.h b/media/blink/buffered_data_source_host_impl.h similarity index 71% rename from content/renderer/media/buffered_data_source_host_impl.h rename to media/blink/buffered_data_source_host_impl.h index d04d4671cc5ea2..fde5bb2eedac4c 100644 --- a/content/renderer/media/buffered_data_source_host_impl.h +++ b/media/blink/buffered_data_source_host_impl.h @@ -2,19 +2,19 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_MEDIA_BUFFERED_DATA_SOURCE_HOST_IMPL_H_ -#define CONTENT_RENDERER_MEDIA_BUFFERED_DATA_SOURCE_HOST_IMPL_H_ +#ifndef MEDIA_BLINK_BUFFERED_DATA_SOURCE_HOST_IMPL_H_ +#define MEDIA_BLINK_BUFFERED_DATA_SOURCE_HOST_IMPL_H_ #include "base/time/time.h" -#include "content/common/content_export.h" -#include "content/renderer/media/buffered_data_source.h" +#include "media/base/media_export.h" #include "media/base/ranges.h" +#include "media/blink/buffered_data_source.h" -namespace content { +namespace media { // Provides an implementation of BufferedDataSourceHost that translates the // buffered byte ranges into estimated time ranges. -class CONTENT_EXPORT BufferedDataSourceHostImpl +class MEDIA_EXPORT BufferedDataSourceHostImpl : public BufferedDataSourceHost { public: BufferedDataSourceHostImpl(); @@ -27,7 +27,7 @@ class CONTENT_EXPORT BufferedDataSourceHostImpl // Translate the byte ranges to time ranges and append them to the list. // TODO(sandersd): This is a confusing name, find something better. void AddBufferedTimeRanges( - media::Ranges* buffered_time_ranges, + Ranges* buffered_time_ranges, base::TimeDelta media_duration) const; bool DidLoadingProgress(); @@ -37,7 +37,7 @@ class CONTENT_EXPORT BufferedDataSourceHostImpl int64 total_bytes_; // List of buffered byte ranges for estimating buffered time. - media::Ranges buffered_byte_ranges_; + Ranges buffered_byte_ranges_; // True when AddBufferedByteRange() has been called more recently than // DidLoadingProgress(). @@ -46,6 +46,6 @@ class CONTENT_EXPORT BufferedDataSourceHostImpl DISALLOW_COPY_AND_ASSIGN(BufferedDataSourceHostImpl); }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_BUFFERED_DATA_SOURCE_HOST_IMPL_H_ +#endif // MEDIA_BLINK_BUFFERED_DATA_SOURCE_HOST_IMPL_H_ diff --git a/content/renderer/media/buffered_data_source_host_impl_unittest.cc b/media/blink/buffered_data_source_host_impl_unittest.cc similarity index 93% rename from content/renderer/media/buffered_data_source_host_impl_unittest.cc rename to media/blink/buffered_data_source_host_impl_unittest.cc index 6b5a5ecf14a6dd..ef0a461afa5236 100644 --- a/content/renderer/media/buffered_data_source_host_impl_unittest.cc +++ b/media/blink/buffered_data_source_host_impl_unittest.cc @@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/buffered_data_source_host_impl.h" +#include "media/blink/buffered_data_source_host_impl.h" #include "testing/gtest/include/gtest/gtest.h" -namespace content { +namespace media { class BufferedDataSourceHostImplTest : public testing::Test { public: @@ -17,7 +17,7 @@ class BufferedDataSourceHostImplTest : public testing::Test { protected: BufferedDataSourceHostImpl host_; - media::Ranges ranges_; + Ranges ranges_; DISALLOW_COPY_AND_ASSIGN(BufferedDataSourceHostImplTest); }; @@ -72,4 +72,4 @@ TEST_F(BufferedDataSourceHostImplTest, DidLoadingProgress) { EXPECT_FALSE(host_.DidLoadingProgress()); } -} // namespace content +} // namespace media diff --git a/content/renderer/media/buffered_data_source_unittest.cc b/media/blink/buffered_data_source_unittest.cc similarity index 98% rename from content/renderer/media/buffered_data_source_unittest.cc rename to media/blink/buffered_data_source_unittest.cc index 9749991681475a..a76beb00080e61 100644 --- a/content/renderer/media/buffered_data_source_unittest.cc +++ b/media/blink/buffered_data_source_unittest.cc @@ -4,14 +4,13 @@ #include "base/bind.h" #include "base/message_loop/message_loop.h" -#include "content/public/common/url_constants.h" -#include "content/renderer/media/buffered_data_source.h" -#include "content/renderer/media/test_response_generator.h" -#include "content/test/mock_webframeclient.h" -#include "content/test/mock_weburlloader.h" #include "media/base/media_log.h" #include "media/base/mock_filters.h" #include "media/base/test_helpers.h" +#include "media/blink/buffered_data_source.h" +#include "media/blink/mock_webframeclient.h" +#include "media/blink/mock_weburlloader.h" +#include "media/blink/test_response_generator.h" #include "third_party/WebKit/public/platform/WebURLResponse.h" #include "third_party/WebKit/public/web/WebLocalFrame.h" #include "third_party/WebKit/public/web/WebView.h" @@ -29,7 +28,7 @@ using blink::WebURLLoader; using blink::WebURLResponse; using blink::WebView; -namespace content { +namespace media { class MockBufferedDataSourceHost : public BufferedDataSourceHost { public: @@ -49,12 +48,12 @@ class MockBufferedDataSource : public BufferedDataSource { public: MockBufferedDataSource( const GURL& url, - const scoped_refptr& message_loop, + const scoped_refptr& task_runner, WebLocalFrame* frame, BufferedDataSourceHost* host) : BufferedDataSource(url, BufferedResourceLoader::kUnspecified, - message_loop, + task_runner, frame, new media::MediaLog(), host, @@ -777,4 +776,4 @@ TEST_F(BufferedDataSourceTest, Stop(); } -} // namespace content +} // namespace media diff --git a/content/renderer/media/buffered_resource_loader.cc b/media/blink/buffered_resource_loader.cc similarity index 98% rename from content/renderer/media/buffered_resource_loader.cc rename to media/blink/buffered_resource_loader.cc index b43359c9829144..d88266d06b22db 100644 --- a/content/renderer/media/buffered_resource_loader.cc +++ b/media/blink/buffered_resource_loader.cc @@ -2,16 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/buffered_resource_loader.h" +#include "media/blink/buffered_resource_loader.h" #include "base/bits.h" #include "base/callback_helpers.h" #include "base/metrics/histogram.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" -#include "content/public/common/url_constants.h" -#include "content/renderer/media/cache_util.h" #include "media/base/media_log.h" +#include "media/blink/cache_util.h" #include "net/http/http_byte_range.h" #include "net/http/http_request_headers.h" #include "third_party/WebKit/public/platform/WebString.h" @@ -28,7 +27,7 @@ using blink::WebURLLoaderOptions; using blink::WebURLRequest; using blink::WebURLResponse; -namespace content { +namespace media { static const int kHttpOK = 200; static const int kHttpPartialContent = 206; @@ -103,7 +102,7 @@ BufferedResourceLoader::BufferedResourceLoader( DeferStrategy strategy, int bitrate, float playback_rate, - media::MediaLog* media_log) + MediaLog* media_log) : buffer_(kMinBufferCapacity, kMinBufferCapacity), loader_failed_(false), defer_strategy_(strategy), @@ -376,8 +375,12 @@ void BufferedResourceLoader::didReceiveResponse( int max_enum = base::bits::Log2Ceiling(kMaxReason); while (reasons) { DCHECK_LT(shift, max_enum); // Sanity check. - if (reasons & 0x1) - UMA_HISTOGRAM_ENUMERATION("Media.UncacheableReason", shift, max_enum); + if (reasons & 0x1) { + UMA_HISTOGRAM_ENUMERATION("Media.UncacheableReason", + shift, + max_enum); // PRESUBMIT_IGNORE_UMA_MAX + } + reasons >>= 1; ++shift; } @@ -784,4 +787,4 @@ void BufferedResourceLoader::Log() { offset_ + buffer_.forward_bytes())); } -} // namespace content +} // namespace media diff --git a/content/renderer/media/buffered_resource_loader.h b/media/blink/buffered_resource_loader.h similarity index 95% rename from content/renderer/media/buffered_resource_loader.h rename to media/blink/buffered_resource_loader.h index 3bdf1388c7f6c0..fb633bed3e799f 100644 --- a/content/renderer/media/buffered_resource_loader.h +++ b/media/blink/buffered_resource_loader.h @@ -2,17 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_MEDIA_BUFFERED_RESOURCE_LOADER_H_ -#define CONTENT_RENDERER_MEDIA_BUFFERED_RESOURCE_LOADER_H_ +#ifndef MEDIA_BLINK_BUFFERED_RESOURCE_LOADER_H_ +#define MEDIA_BLINK_BUFFERED_RESOURCE_LOADER_H_ #include #include "base/callback.h" #include "base/memory/scoped_ptr.h" #include "base/timer/timer.h" -#include "content/common/content_export.h" -#include "content/renderer/media/active_loader.h" +#include "media/base/media_export.h" #include "media/base/seekable_buffer.h" +#include "media/blink/active_loader.h" #include "third_party/WebKit/public/platform/WebURLLoader.h" #include "third_party/WebKit/public/platform/WebURLLoaderClient.h" #include "third_party/WebKit/public/platform/WebURLRequest.h" @@ -22,9 +22,6 @@ namespace media { class MediaLog; class SeekableBuffer; -} - -namespace content { const int64 kPositionNotSpecified = -1; @@ -32,7 +29,7 @@ const int64 kPositionNotSpecified = -1; // render thread. It wraps a WebURLLoader and does in-memory buffering, // pausing resource loading when the in-memory buffer is full and resuming // resource loading when there is available capacity. -class CONTENT_EXPORT BufferedResourceLoader +class MEDIA_EXPORT BufferedResourceLoader : NON_EXPORTED_BASE(public blink::WebURLLoaderClient) { public: // kNeverDefer - Aggresively buffer; never defer loading while paused. @@ -90,7 +87,7 @@ class CONTENT_EXPORT BufferedResourceLoader DeferStrategy strategy, int bitrate, float playback_rate, - media::MediaLog* media_log); + MediaLog* media_log); virtual ~BufferedResourceLoader(); // Start the resource loading with the specified URL and range. @@ -251,7 +248,7 @@ class CONTENT_EXPORT BufferedResourceLoader void Log(); // A sliding window of buffer. - media::SeekableBuffer buffer_; + SeekableBuffer buffer_; // Keeps track of an active WebURLLoader and associated state. scoped_ptr active_loader_; @@ -271,7 +268,7 @@ class CONTENT_EXPORT BufferedResourceLoader bool range_supported_; // Forward capacity to reset to after an extension. - size_t saved_forward_capacity_; + int saved_forward_capacity_; GURL url_; CORSMode cors_mode_; @@ -313,11 +310,11 @@ class CONTENT_EXPORT BufferedResourceLoader // Playback rate of the media. float playback_rate_; - scoped_refptr media_log_; + scoped_refptr media_log_; DISALLOW_COPY_AND_ASSIGN(BufferedResourceLoader); }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_BUFFERED_RESOURCE_LOADER_H_ +#endif // MEDIA_BLINK_BUFFERED_RESOURCE_LOADER_H_ diff --git a/content/renderer/media/buffered_resource_loader_unittest.cc b/media/blink/buffered_resource_loader_unittest.cc similarity index 99% rename from content/renderer/media/buffered_resource_loader_unittest.cc rename to media/blink/buffered_resource_loader_unittest.cc index 7bd23de9e25e26..3e7eaa8a8858d5 100644 --- a/content/renderer/media/buffered_resource_loader_unittest.cc +++ b/media/blink/buffered_resource_loader_unittest.cc @@ -9,11 +9,11 @@ #include "base/format_macros.h" #include "base/message_loop/message_loop.h" #include "base/strings/stringprintf.h" -#include "content/renderer/media/buffered_resource_loader.h" -#include "content/test/mock_webframeclient.h" -#include "content/test/mock_weburlloader.h" #include "media/base/media_log.h" #include "media/base/seekable_buffer.h" +#include "media/blink/buffered_resource_loader.h" +#include "media/blink/mock_webframeclient.h" +#include "media/blink/mock_weburlloader.h" #include "net/base/net_errors.h" #include "net/http/http_request_headers.h" #include "net/http/http_util.h" @@ -36,7 +36,7 @@ using blink::WebURLError; using blink::WebURLResponse; using blink::WebView; -namespace content { +namespace media { static const char* kHttpUrl = "http://test"; static const char kHttpRedirectToSameDomainUrl1[] = "http://test/ing"; @@ -86,7 +86,7 @@ class BufferedResourceLoaderTest : public testing::Test { gurl_, BufferedResourceLoader::kUnspecified, first_position_, last_position_, BufferedResourceLoader::kCapacityDefer, 0, 0, - new media::MediaLog())); + new MediaLog())); // |test_loader_| will be used when Start() is called. url_loader_ = new NiceMock(); @@ -1128,4 +1128,4 @@ TEST(BufferedResourceLoaderStandaloneTest, ParseContentRange) { kPositionNotSpecified); } -} // namespace content +} // namespace media diff --git a/content/renderer/media/cache_util.cc b/media/blink/cache_util.cc similarity index 97% rename from content/renderer/media/cache_util.cc rename to media/blink/cache_util.cc index d79e69230baa78..65bed438fe91cc 100644 --- a/content/renderer/media/cache_util.cc +++ b/media/blink/cache_util.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/cache_util.h" +#include "media/blink/cache_util.h" #include @@ -20,7 +20,7 @@ using base::TimeDelta; using net::HttpVersion; using blink::WebURLResponse; -namespace content { +namespace media { enum { kHttpOK = 200, kHttpPartialContent = 206 }; @@ -84,4 +84,4 @@ uint32 GetReasonsForUncacheability(const WebURLResponse& response) { return reasons; } -} // namespace content +} // namespace media diff --git a/content/renderer/media/cache_util.h b/media/blink/cache_util.h similarity index 81% rename from content/renderer/media/cache_util.h rename to media/blink/cache_util.h index aca8d8a9081c63..5c59f14e74234a 100644 --- a/content/renderer/media/cache_util.h +++ b/media/blink/cache_util.h @@ -2,19 +2,19 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_MEDIA_CACHE_UTIL_H_ -#define CONTENT_RENDERER_MEDIA_CACHE_UTIL_H_ +#ifndef MEDIA_BLINK_CACHE_UTIL_H_ +#define MEDIA_BLINK_CACHE_UTIL_H_ #include #include "base/basictypes.h" -#include "content/common/content_export.h" +#include "media/base/media_export.h" namespace blink { class WebURLResponse; } -namespace content { +namespace media { // Reasons that a cached WebURLResponse will *not* prevent a future request to // the server. Reported via UMA, so don't change/reuse previously-existing @@ -33,9 +33,9 @@ enum UncacheableReason { // Return the logical OR of the reasons "response" cannot be used for a future // request (using the disk cache), or 0 if it might be useful. -uint32 CONTENT_EXPORT GetReasonsForUncacheability( +uint32 MEDIA_EXPORT GetReasonsForUncacheability( const blink::WebURLResponse& response); -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_CACHE_UTIL_H_ +#endif // MEDIA_BLINK_CACHE_UTIL_H_ diff --git a/content/renderer/media/cache_util_unittest.cc b/media/blink/cache_util_unittest.cc similarity index 96% rename from content/renderer/media/cache_util_unittest.cc rename to media/blink/cache_util_unittest.cc index 2db66b94baa2d6..7ea2f130422fc9 100644 --- a/content/renderer/media/cache_util_unittest.cc +++ b/media/blink/cache_util_unittest.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/cache_util.h" +#include "media/blink/cache_util.h" #include @@ -17,7 +17,7 @@ using blink::WebString; using blink::WebURLResponse; -namespace content { +namespace media { // Inputs & expected output for GetReasonsForUncacheability. struct GRFUTestCase { @@ -94,4 +94,4 @@ TEST(CacheUtilTest, GetReasonsForUncacheability) { } } -} // namespace content +} // namespace media diff --git a/content/renderer/media/crypto/encrypted_media_player_support.cc b/media/blink/encrypted_media_player_support.cc similarity index 75% rename from content/renderer/media/crypto/encrypted_media_player_support.cc rename to media/blink/encrypted_media_player_support.cc index 04144960cbee1f..663141f3ddcd72 100644 --- a/content/renderer/media/crypto/encrypted_media_player_support.cc +++ b/media/blink/encrypted_media_player_support.cc @@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/crypto/encrypted_media_player_support.h" +#include "media/blink/encrypted_media_player_support.h" -namespace content { +namespace media { EncryptedMediaPlayerSupport::EncryptedMediaPlayerSupport() { } @@ -12,4 +12,4 @@ EncryptedMediaPlayerSupport::EncryptedMediaPlayerSupport() { EncryptedMediaPlayerSupport::~EncryptedMediaPlayerSupport() { } -} +} // namespace media diff --git a/content/renderer/media/crypto/encrypted_media_player_support.h b/media/blink/encrypted_media_player_support.h similarity index 84% rename from content/renderer/media/crypto/encrypted_media_player_support.h rename to media/blink/encrypted_media_player_support.h index 59a4e2468cb7a2..b3876866c7d150 100644 --- a/content/renderer/media/crypto/encrypted_media_player_support.h +++ b/media/blink/encrypted_media_player_support.h @@ -2,11 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_MEDIA_CRYPTO_ENCRYPTED_MEDIA_PLAYER_SUPPORT_H_ -#define CONTENT_RENDERER_MEDIA_CRYPTO_ENCRYPTED_MEDIA_PLAYER_SUPPORT_H_ +#ifndef MEDIA_BLINK_ENCRYPTED_MEDIA_PLAYER_SUPPORT_H_ +#define MEDIA_BLINK_ENCRYPTED_MEDIA_PLAYER_SUPPORT_H_ #include "media/base/decryptor.h" #include "media/base/demuxer.h" +#include "media/base/media_export.h" #include "third_party/WebKit/public/platform/WebMediaPlayer.h" namespace blink { @@ -17,9 +18,9 @@ class WebMediaPlayerClient; class WebString; } -namespace content { +namespace media { -class EncryptedMediaPlayerSupport { +class MEDIA_EXPORT EncryptedMediaPlayerSupport { public: EncryptedMediaPlayerSupport(); virtual ~EncryptedMediaPlayerSupport(); @@ -59,12 +60,12 @@ class EncryptedMediaPlayerSupport { // Creates a callback that Demuxers can use to signal that the content // requires a key. This method make sure the callback returned can be safely // invoked from any thread. - virtual media::Demuxer::NeedKeyCB CreateNeedKeyCB() = 0; + virtual Demuxer::NeedKeyCB CreateNeedKeyCB() = 0; // Creates a callback that renderers can use to set decryptor // ready callback. This method make sure the callback returned can be safely // invoked from any thread. - virtual media::SetDecryptorReadyCB CreateSetDecryptorReadyCB() = 0; + virtual SetDecryptorReadyCB CreateSetDecryptorReadyCB() = 0; // Called to inform this object that the media pipeline encountered // and handled a decryption error. @@ -74,6 +75,6 @@ class EncryptedMediaPlayerSupport { DISALLOW_COPY_AND_ASSIGN(EncryptedMediaPlayerSupport); }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_CRYPTO_ENCRYPTED_MEDIA_PLAYER_SUPPORT_H_ +#endif // MEDIA_BLINK_ENCRYPTED_MEDIA_PLAYER_SUPPORT_H_ diff --git a/media/blink/media_blink.gyp b/media/blink/media_blink.gyp new file mode 100644 index 00000000000000..975a70143f0e7b --- /dev/null +++ b/media/blink/media_blink.gyp @@ -0,0 +1,104 @@ +# Copyright 2014 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. + +{ + 'targets': [ + { + # GN version: //media/blink + 'target_name': 'media_blink', + 'type': '<(component)', + 'dependencies': [ + '../../base/base.gyp:base', + '../../cc/cc.gyp:cc', + '../../cc/blink/cc_blink.gyp:cc_blink', + '../../ui/gfx/gfx.gyp:gfx_geometry', + '../../net/net.gyp:net', + '../../third_party/WebKit/public/blink.gyp:blink', + '../media.gyp:media', + '../media.gyp:shared_memory_support', + '../../url/url.gyp:url_lib', + ], + 'defines': [ + 'MEDIA_IMPLEMENTATION', + ], + # This sources list is duplicated in //media/blink/BUILD.gn + 'sources': [ + 'active_loader.cc', + 'active_loader.h', + 'buffered_data_source.cc', + 'buffered_data_source.h', + 'buffered_data_source_host_impl.cc', + 'buffered_data_source_host_impl.h', + 'buffered_resource_loader.cc', + 'buffered_resource_loader.h', + 'encrypted_media_player_support.cc', + 'encrypted_media_player_support.h', + 'cache_util.cc', + 'cache_util.h', + 'texttrack_impl.cc', + 'texttrack_impl.h', + 'video_frame_compositor.cc', + 'video_frame_compositor.h', + 'webaudiosourceprovider_impl.cc', + 'webaudiosourceprovider_impl.h', + 'webinbandtexttrack_impl.cc', + 'webinbandtexttrack_impl.h', + 'webmediaplayer_delegate.h', + 'webmediaplayer_impl.cc', + 'webmediaplayer_impl.h', + 'webmediaplayer_params.cc', + 'webmediaplayer_params.h', + 'webmediaplayer_util.cc', + 'webmediaplayer_util.h', + 'webmediasource_impl.cc', + 'webmediasource_impl.h', + 'websourcebuffer_impl.cc', + 'websourcebuffer_impl.h', + ], + 'conditions': [ + ['OS=="android"', { + 'sources!': [ + 'webmediaplayer_impl.cc', + ], + }, + ], + ], + }, + { + 'target_name': 'media_blink_unittests', + 'type': '<(gtest_target_type)', + 'dependencies': [ + 'media_blink', + '../media.gyp:media', + '../media.gyp:media_test_support', + '../../base/base.gyp:base', + '../../base/base.gyp:test_support_base', + '../../cc/cc.gyp:cc', + '../../cc/blink/cc_blink.gyp:cc_blink', + '../../net/net.gyp:net', + '../../testing/gmock.gyp:gmock', + '../../testing/gtest.gyp:gtest', + '../../third_party/WebKit/public/blink.gyp:blink', + '../../ui/gfx/gfx.gyp:gfx', + '../../ui/gfx/gfx.gyp:gfx_geometry', + '../../ui/gfx/gfx.gyp:gfx_test_support', + '../../url/url.gyp:url_lib', + ], + 'sources': [ + 'buffered_data_source_host_impl_unittest.cc', + 'buffered_data_source_unittest.cc', + 'buffered_resource_loader_unittest.cc', + 'cache_util_unittest.cc', + 'mock_webframeclient.h', + 'mock_weburlloader.cc', + 'mock_weburlloader.h', + 'run_all_unittests.cc', + 'test_response_generator.cc', + 'test_response_generator.h', + 'video_frame_compositor_unittest.cc', + 'webaudiosourceprovider_impl_unittest.cc', + ], + }, + ] +} diff --git a/media/blink/mock_webframeclient.h b/media/blink/mock_webframeclient.h new file mode 100644 index 00000000000000..7a633583150568 --- /dev/null +++ b/media/blink/mock_webframeclient.h @@ -0,0 +1,16 @@ +// Copyright 2014 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 MEDIA_BLINK_MOCK_WEBFRAMECLIENT_H_ +#define MEDIA_BLINK_MOCK_WEBFRAMECLIENT_H_ + +#include "third_party/WebKit/public/web/WebFrameClient.h" + +namespace media { + +class MockWebFrameClient : public blink::WebFrameClient {}; + +} // namespace media + +#endif // MEDIA_BLINK_MOCK_WEBFRAMECLIENT_H_ diff --git a/media/blink/mock_weburlloader.cc b/media/blink/mock_weburlloader.cc new file mode 100644 index 00000000000000..578476a0d00ed8 --- /dev/null +++ b/media/blink/mock_weburlloader.cc @@ -0,0 +1,18 @@ +// Copyright 2014 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. + +#include "media/blink/mock_weburlloader.h" + +#include "third_party/WebKit/public/platform/WebData.h" +#include "third_party/WebKit/public/platform/WebURLError.h" +#include "third_party/WebKit/public/platform/WebURLRequest.h" +#include "third_party/WebKit/public/platform/WebURLResponse.h" + +namespace media { + +MockWebURLLoader::MockWebURLLoader() {} + +MockWebURLLoader::~MockWebURLLoader() {} + +} // namespace media diff --git a/media/blink/mock_weburlloader.h b/media/blink/mock_weburlloader.h new file mode 100644 index 00000000000000..70dd5a6b175c31 --- /dev/null +++ b/media/blink/mock_weburlloader.h @@ -0,0 +1,33 @@ +// Copyright 2014 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 MEDIA_BLINK_MOCK_WEBURLLOADER_H_ +#define MEDIA_BLINK_MOCK_WEBURLLOADER_H_ + +#include "testing/gmock/include/gmock/gmock.h" +#include "third_party/WebKit/public/platform/WebURLLoader.h" + +namespace media { + +class MockWebURLLoader : public blink::WebURLLoader { + public: + MockWebURLLoader(); + virtual ~MockWebURLLoader(); + + MOCK_METHOD4(loadSynchronously, void(const blink::WebURLRequest& request, + blink::WebURLResponse& response, + blink::WebURLError& error, + blink::WebData& data)); + MOCK_METHOD2(loadAsynchronously, void(const blink::WebURLRequest& request, + blink::WebURLLoaderClient* client)); + MOCK_METHOD0(cancel, void()); + MOCK_METHOD1(setDefersLoading, void(bool value)); + + private: + DISALLOW_COPY_AND_ASSIGN(MockWebURLLoader); +}; + +} // namespace media + +#endif // MEDIA_BLINK_MOCK_WEBURLLOADER_H_ diff --git a/media/blink/run_all_unittests.cc b/media/blink/run_all_unittests.cc new file mode 100644 index 00000000000000..081a121418e55c --- /dev/null +++ b/media/blink/run_all_unittests.cc @@ -0,0 +1,85 @@ +// Copyright 2014 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. + +#include "base/bind.h" +#include "base/test/launcher/unit_test_launcher.h" +#include "base/test/test_suite.h" +#include "build/build_config.h" +#include "media/base/media.h" +#include "third_party/WebKit/public/web/WebKit.h" + +#if defined(OS_ANDROID) +#include "base/android/jni_android.h" +#include "media/base/android/media_jni_registrar.h" +#include "ui/gl/android/gl_jni_registrar.h" +#endif + +class TestBlinkPlatformSupport : NON_EXPORTED_BASE(public blink::Platform) { + public: + virtual ~TestBlinkPlatformSupport(); + + virtual void cryptographicallyRandomValues(unsigned char* buffer, + size_t length) OVERRIDE; + virtual const unsigned char* getTraceCategoryEnabledFlag( + const char* categoryName) OVERRIDE; +}; + +TestBlinkPlatformSupport::~TestBlinkPlatformSupport() {} + +void TestBlinkPlatformSupport::cryptographicallyRandomValues( + unsigned char* buffer, + size_t length) { +} + +const unsigned char* TestBlinkPlatformSupport::getTraceCategoryEnabledFlag( + const char* categoryName) { + static const unsigned char tracingIsDisabled = 0; + return &tracingIsDisabled; +} + +class BlinkMediaTestSuite : public base::TestSuite { + public: + BlinkMediaTestSuite(int argc, char** argv); + virtual ~BlinkMediaTestSuite(); + + protected: + virtual void Initialize() OVERRIDE; + + private: + scoped_ptr blink_platform_support_; +}; + +BlinkMediaTestSuite::BlinkMediaTestSuite(int argc, char** argv) + : TestSuite(argc, argv), + blink_platform_support_(new TestBlinkPlatformSupport()) { +} + +BlinkMediaTestSuite::~BlinkMediaTestSuite() {} + +void BlinkMediaTestSuite::Initialize() { + // Run TestSuite::Initialize first so that logging is initialized. + base::TestSuite::Initialize(); + +#if defined(OS_ANDROID) + // Register JNI bindings for android. + JNIEnv* env = base::android::AttachCurrentThread(); + // Needed for surface texture support. + ui::gl::android::RegisterJni(env); + media::RegisterJni(env); +#endif + + // Run this here instead of main() to ensure an AtExitManager is already + // present. + media::InitializeMediaLibraryForTesting(); + + blink::initialize(blink_platform_support_.get()); +} + +int main(int argc, char** argv) { + BlinkMediaTestSuite test_suite(argc, argv); + + return base::LaunchUnitTests( + argc, argv, base::Bind(&BlinkMediaTestSuite::Run, + base::Unretained(&test_suite))); +} diff --git a/content/renderer/media/test_response_generator.cc b/media/blink/test_response_generator.cc similarity index 96% rename from content/renderer/media/test_response_generator.cc rename to media/blink/test_response_generator.cc index 64f82e78f505a3..aa3b74890ce18b 100644 --- a/content/renderer/media/test_response_generator.cc +++ b/media/blink/test_response_generator.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/test_response_generator.h" +#include "media/blink/test_response_generator.h" #include "base/format_macros.h" #include "base/strings/string_number_conversions.h" @@ -15,7 +15,7 @@ using blink::WebString; using blink::WebURLError; using blink::WebURLResponse; -namespace content { +namespace media { TestResponseGenerator::TestResponseGenerator(const GURL& gurl, int64 content_length) @@ -98,4 +98,4 @@ WebURLResponse TestResponseGenerator::GenerateFileResponse( return response; } -} // namespace content +} // namespace media diff --git a/content/renderer/media/test_response_generator.h b/media/blink/test_response_generator.h similarity index 90% rename from content/renderer/media/test_response_generator.h rename to media/blink/test_response_generator.h index dcbcc0544e4dee..7e3e98d910a1a4 100644 --- a/content/renderer/media/test_response_generator.h +++ b/media/blink/test_response_generator.h @@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_MEDIA_TEST_RESPONSE_GENERATOR_H_ -#define CONTENT_RENDERER_MEDIA_TEST_RESPONSE_GENERATOR_H_ +#ifndef MEDIA_BLINK_TEST_RESPONSE_GENERATOR_H_ +#define MEDIA_BLINK_TEST_RESPONSE_GENERATOR_H_ #include "base/basictypes.h" #include "third_party/WebKit/public/platform/WebURLError.h" #include "third_party/WebKit/public/platform/WebURLResponse.h" #include "url/gurl.h" -namespace content { +namespace media { // Generates WebURLErrors and WebURLResponses suitable for testing purposes. class TestResponseGenerator { @@ -61,6 +61,6 @@ class TestResponseGenerator { DISALLOW_COPY_AND_ASSIGN(TestResponseGenerator); }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_TEST_RESPONSE_GENERATOR_H_ +#endif // MEDIA_BLINK_TEST_RESPONSE_GENERATOR_H_ diff --git a/content/renderer/media/texttrack_impl.cc b/media/blink/texttrack_impl.cc similarity index 93% rename from content/renderer/media/texttrack_impl.cc rename to media/blink/texttrack_impl.cc index 565689ff040fe5..1d58af9fb5a3e6 100644 --- a/content/renderer/media/texttrack_impl.cc +++ b/media/blink/texttrack_impl.cc @@ -2,17 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/texttrack_impl.h" +#include "media/blink/texttrack_impl.h" #include "base/bind.h" #include "base/location.h" #include "base/single_thread_task_runner.h" -#include "content/renderer/media/webinbandtexttrack_impl.h" #include "media/base/bind_to_current_loop.h" +#include "media/blink/webinbandtexttrack_impl.h" #include "third_party/WebKit/public/platform/WebInbandTextTrackClient.h" #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" -namespace content { +namespace media { TextTrackImpl::TextTrackImpl( const scoped_refptr& task_runner, @@ -67,4 +67,4 @@ void TextTrackImpl::OnRemoveTrack( client->removeTextTrack(text_track.get()); } -} // namespace content +} // namespace media diff --git a/content/renderer/media/texttrack_impl.h b/media/blink/texttrack_impl.h similarity index 87% rename from content/renderer/media/texttrack_impl.h rename to media/blink/texttrack_impl.h index 436d4eab0e0f5e..1d85bde72eff38 100644 --- a/content/renderer/media/texttrack_impl.h +++ b/media/blink/texttrack_impl.h @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_MEDIA_TEXTTRACK_IMPL_H_ -#define CONTENT_RENDERER_MEDIA_TEXTTRACK_IMPL_H_ +#ifndef MEDIA_BLINK_TEXTTRACK_IMPL_H_ +#define MEDIA_BLINK_TEXTTRACK_IMPL_H_ #include @@ -20,11 +20,11 @@ class WebInbandTextTrackClient; class WebMediaPlayerClient; } -namespace content { +namespace media { class WebInbandTextTrackImpl; -class TextTrackImpl : public media::TextTrack { +class TextTrackImpl : public TextTrack { public: // Constructor assumes ownership of the |text_track| object. TextTrackImpl(const scoped_refptr& task_runner, @@ -56,6 +56,6 @@ class TextTrackImpl : public media::TextTrack { DISALLOW_COPY_AND_ASSIGN(TextTrackImpl); }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_TEXTTRACK_IMPL_H_ +#endif // MEDIA_BLINK_TEXTTRACK_IMPL_H_ diff --git a/content/renderer/media/video_frame_compositor.cc b/media/blink/video_frame_compositor.cc similarity index 66% rename from content/renderer/media/video_frame_compositor.cc rename to media/blink/video_frame_compositor.cc index 50dd8c992feed2..7f254d4bc84c68 100644 --- a/content/renderer/media/video_frame_compositor.cc +++ b/media/blink/video_frame_compositor.cc @@ -2,28 +2,28 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/video_frame_compositor.h" +#include "media/blink/video_frame_compositor.h" #include "media/base/video_frame.h" -namespace content { +namespace media { -static bool IsOpaque(const scoped_refptr& frame) { +static bool IsOpaque(const scoped_refptr& frame) { switch (frame->format()) { - case media::VideoFrame::UNKNOWN: - case media::VideoFrame::YV12: - case media::VideoFrame::YV12J: - case media::VideoFrame::YV16: - case media::VideoFrame::I420: - case media::VideoFrame::YV24: - case media::VideoFrame::NV12: + case VideoFrame::UNKNOWN: + case VideoFrame::YV12: + case VideoFrame::YV12J: + case VideoFrame::YV16: + case VideoFrame::I420: + case VideoFrame::YV24: + case VideoFrame::NV12: return true; - case media::VideoFrame::YV12A: + case VideoFrame::YV12A: #if defined(VIDEO_HOLE) - case media::VideoFrame::HOLE: + case VideoFrame::HOLE: #endif // defined(VIDEO_HOLE) - case media::VideoFrame::NATIVE_TEXTURE: + case VideoFrame::NATIVE_TEXTURE: break; } return false; @@ -49,16 +49,16 @@ void VideoFrameCompositor::SetVideoFrameProviderClient( client_ = client; } -scoped_refptr VideoFrameCompositor::GetCurrentFrame() { +scoped_refptr VideoFrameCompositor::GetCurrentFrame() { return current_frame_; } void VideoFrameCompositor::PutCurrentFrame( - const scoped_refptr& frame) { + const scoped_refptr& frame) { } void VideoFrameCompositor::UpdateCurrentFrame( - const scoped_refptr& frame) { + const scoped_refptr& frame) { if (current_frame_.get() && current_frame_->natural_size() != frame->natural_size()) { natural_size_changed_cb_.Run(frame->natural_size()); @@ -74,4 +74,4 @@ void VideoFrameCompositor::UpdateCurrentFrame( client_->DidReceiveFrame(); } -} // namespace content +} // namespace media diff --git a/content/renderer/media/video_frame_compositor.h b/media/blink/video_frame_compositor.h similarity index 79% rename from content/renderer/media/video_frame_compositor.h rename to media/blink/video_frame_compositor.h index 91e5d0cd17ef18..9fc8b6a663deca 100644 --- a/content/renderer/media/video_frame_compositor.h +++ b/media/blink/video_frame_compositor.h @@ -2,20 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_MEDIA_VIDEO_FRAME_COMPOSITOR_H_ -#define CONTENT_RENDERER_MEDIA_VIDEO_FRAME_COMPOSITOR_H_ +#ifndef MEDIA_BLINK_VIDEO_FRAME_COMPOSITOR_H_ +#define MEDIA_BLINK_VIDEO_FRAME_COMPOSITOR_H_ #include "base/callback.h" #include "base/memory/ref_counted.h" #include "cc/layers/video_frame_provider.h" -#include "content/common/content_export.h" +#include "media/base/media_export.h" #include "ui/gfx/size.h" namespace media { class VideoFrame; -} - -namespace content { // VideoFrameCompositor handles incoming frames by notifying the compositor and // dispatching callbacks when detecting changes in video frames. @@ -25,7 +22,7 @@ namespace content { // changes in video frames and firing callbacks as needed. // // VideoFrameCompositor must live on the same thread as the compositor. -class CONTENT_EXPORT VideoFrameCompositor +class MEDIA_EXPORT VideoFrameCompositor : NON_EXPORTED_BASE(public cc::VideoFrameProvider) { public: // |natural_size_changed_cb| is run with the new natural size of the video @@ -48,12 +45,12 @@ class CONTENT_EXPORT VideoFrameCompositor // cc::VideoFrameProvider implementation. virtual void SetVideoFrameProviderClient( cc::VideoFrameProvider::Client* client) OVERRIDE; - virtual scoped_refptr GetCurrentFrame() OVERRIDE; + virtual scoped_refptr GetCurrentFrame() OVERRIDE; virtual void PutCurrentFrame( - const scoped_refptr& frame) OVERRIDE; + const scoped_refptr& frame) OVERRIDE; // Updates the current frame and notifies the compositor. - void UpdateCurrentFrame(const scoped_refptr& frame); + void UpdateCurrentFrame(const scoped_refptr& frame); private: base::Callback natural_size_changed_cb_; @@ -61,11 +58,11 @@ class CONTENT_EXPORT VideoFrameCompositor cc::VideoFrameProvider::Client* client_; - scoped_refptr current_frame_; + scoped_refptr current_frame_; DISALLOW_COPY_AND_ASSIGN(VideoFrameCompositor); }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_VIDEO_FRAME_COMPOSITOR_H_ +#endif // MEDIA_BLINK_VIDEO_FRAME_COMPOSITOR_H_ diff --git a/content/renderer/media/video_frame_compositor_unittest.cc b/media/blink/video_frame_compositor_unittest.cc similarity index 97% rename from content/renderer/media/video_frame_compositor_unittest.cc rename to media/blink/video_frame_compositor_unittest.cc index 801c9e3cf64a61..a7c46cac7a8399 100644 --- a/content/renderer/media/video_frame_compositor_unittest.cc +++ b/media/blink/video_frame_compositor_unittest.cc @@ -4,13 +4,11 @@ #include "base/bind.h" #include "cc/layers/video_frame_provider.h" -#include "content/renderer/media/video_frame_compositor.h" #include "media/base/video_frame.h" +#include "media/blink/video_frame_compositor.h" #include "testing/gtest/include/gtest/gtest.h" -namespace content { - -using media::VideoFrame; +namespace media { class VideoFrameCompositorTest : public testing::Test, public cc::VideoFrameProvider::Client { @@ -159,4 +157,4 @@ TEST_F(VideoFrameCompositorTest, OpacityChanged) { EXPECT_EQ(2, opacity_changed_count()); } -} // namespace content +} // namespace media diff --git a/content/renderer/media/webaudiosourceprovider_impl.cc b/media/blink/webaudiosourceprovider_impl.cc similarity index 87% rename from content/renderer/media/webaudiosourceprovider_impl.cc rename to media/blink/webaudiosourceprovider_impl.cc index 4d878ce4ba7544..6637719b0a6980 100644 --- a/content/renderer/media/webaudiosourceprovider_impl.cc +++ b/media/blink/webaudiosourceprovider_impl.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/webaudiosourceprovider_impl.h" +#include "media/blink/webaudiosourceprovider_impl.h" #include @@ -14,7 +14,7 @@ using blink::WebVector; -namespace content { +namespace media { namespace { @@ -47,7 +47,7 @@ class AutoTryLock { } // namespace WebAudioSourceProviderImpl::WebAudioSourceProviderImpl( - const scoped_refptr& sink) + const scoped_refptr& sink) : channels_(0), sample_rate_(0), volume_(1.0), @@ -70,7 +70,7 @@ void WebAudioSourceProviderImpl::setClient( // The client will now take control by calling provideInput() periodically. client_ = client; - set_format_cb_ = media::BindToCurrentLoop(base::Bind( + set_format_cb_ = BindToCurrentLoop(base::Bind( &WebAudioSourceProviderImpl::OnSetFormat, weak_factory_.GetWeakPtr())); // If |renderer_| is set, then run |set_format_cb_| to send |client_| @@ -95,12 +95,12 @@ void WebAudioSourceProviderImpl::provideInput( const WebVector& audio_data, size_t number_of_frames) { if (!bus_wrapper_ || static_cast(bus_wrapper_->channels()) != audio_data.size()) { - bus_wrapper_ = media::AudioBus::CreateWrapper(audio_data.size()); + bus_wrapper_ = AudioBus::CreateWrapper(static_cast(audio_data.size())); } - bus_wrapper_->set_frames(number_of_frames); + bus_wrapper_->set_frames(static_cast(number_of_frames)); for (size_t i = 0; i < audio_data.size(); ++i) - bus_wrapper_->SetChannelData(i, audio_data[i]); + bus_wrapper_->SetChannelData(static_cast(i), audio_data[i]); // Use a try lock to avoid contention in the real-time audio thread. AutoTryLock auto_try_lock(sink_lock_); @@ -114,9 +114,13 @@ void WebAudioSourceProviderImpl::provideInput( DCHECK(renderer_); DCHECK(client_); DCHECK_EQ(channels_, bus_wrapper_->channels()); - const size_t frames = renderer_->Render(bus_wrapper_.get(), 0); - if (frames < number_of_frames) - bus_wrapper_->ZeroFramesPartial(frames, number_of_frames - frames); + const int frames = renderer_->Render(bus_wrapper_.get(), 0); + if (frames < static_cast(number_of_frames)) { + bus_wrapper_->ZeroFramesPartial( + frames, + static_cast(number_of_frames - frames)); + } + bus_wrapper_->Scale(volume_); } @@ -160,7 +164,7 @@ bool WebAudioSourceProviderImpl::SetVolume(double volume) { } void WebAudioSourceProviderImpl::Initialize( - const media::AudioParameters& params, + const AudioParameters& params, RenderCallback* renderer) { base::AutoLock auto_lock(sink_lock_); CHECK(!renderer_); @@ -186,4 +190,4 @@ void WebAudioSourceProviderImpl::OnSetFormat() { client_->setFormat(channels_, sample_rate_); } -} // namespace content +} // namespace media diff --git a/content/renderer/media/webaudiosourceprovider_impl.h b/media/blink/webaudiosourceprovider_impl.h similarity index 76% rename from content/renderer/media/webaudiosourceprovider_impl.h rename to media/blink/webaudiosourceprovider_impl.h index aca9d830021cb5..e686e9d617ae04 100644 --- a/content/renderer/media/webaudiosourceprovider_impl.h +++ b/media/blink/webaudiosourceprovider_impl.h @@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_MEDIA_WEBAUDIOSOURCEPROVIDER_IMPL_H_ -#define CONTENT_RENDERER_MEDIA_WEBAUDIOSOURCEPROVIDER_IMPL_H_ +#ifndef MEDIA_BLINK_WEBAUDIOSOURCEPROVIDER_IMPL_H_ +#define MEDIA_BLINK_WEBAUDIOSOURCEPROVIDER_IMPL_H_ #include "base/callback.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/lock.h" -#include "content/common/content_export.h" #include "media/base/audio_renderer_sink.h" +#include "media/base/media_export.h" #include "third_party/WebKit/public/platform/WebAudioSourceProvider.h" #include "third_party/WebKit/public/platform/WebVector.h" @@ -17,10 +17,10 @@ namespace blink { class WebAudioSourceProviderClient; } -namespace content { +namespace media { // WebAudioSourceProviderImpl provides a bridge between classes: -// blink::WebAudioSourceProvider <---> media::AudioRendererSink +// blink::WebAudioSourceProvider <---> AudioRendererSink // // WebAudioSourceProviderImpl wraps an existing audio sink that is used unless // WebKit has set a client via setClient(). While a client is set WebKit will @@ -28,25 +28,25 @@ namespace content { // sample-frames using the sink's RenderCallback to get the data. // // All calls are protected by a lock. -class CONTENT_EXPORT WebAudioSourceProviderImpl +class MEDIA_EXPORT WebAudioSourceProviderImpl : NON_EXPORTED_BASE(public blink::WebAudioSourceProvider), - NON_EXPORTED_BASE(public media::AudioRendererSink) { + NON_EXPORTED_BASE(public AudioRendererSink) { public: explicit WebAudioSourceProviderImpl( - const scoped_refptr& sink); + const scoped_refptr& sink); // blink::WebAudioSourceProvider implementation. virtual void setClient(blink::WebAudioSourceProviderClient* client); virtual void provideInput(const blink::WebVector& audio_data, size_t number_of_frames); - // media::AudioRendererSink implementation. + // AudioRendererSink implementation. virtual void Start() OVERRIDE; virtual void Stop() OVERRIDE; virtual void Play() OVERRIDE; virtual void Pause() OVERRIDE; virtual bool SetVolume(double volume) OVERRIDE; - virtual void Initialize(const media::AudioParameters& params, + virtual void Initialize(const AudioParameters& params, RenderCallback* renderer) OVERRIDE; protected: @@ -69,15 +69,15 @@ class CONTENT_EXPORT WebAudioSourceProviderImpl PlaybackState state_; // Where audio comes from. - media::AudioRendererSink::RenderCallback* renderer_; + AudioRendererSink::RenderCallback* renderer_; // When set via setClient() it overrides |sink_| for consuming audio. blink::WebAudioSourceProviderClient* client_; // Where audio ends up unless overridden by |client_|. base::Lock sink_lock_; - scoped_refptr sink_; - scoped_ptr bus_wrapper_; + scoped_refptr sink_; + scoped_ptr bus_wrapper_; // NOTE: Weak pointers must be invalidated before all other member variables. base::WeakPtrFactory weak_factory_; @@ -85,6 +85,6 @@ class CONTENT_EXPORT WebAudioSourceProviderImpl DISALLOW_IMPLICIT_CONSTRUCTORS(WebAudioSourceProviderImpl); }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_WEBAUDIOSOURCEPROVIDER_IMPL_H_ +#endif // MEDIA_BLINK_WEBAUDIOSOURCEPROVIDER_IMPL_H_ diff --git a/content/renderer/media/webaudiosourceprovider_impl_unittest.cc b/media/blink/webaudiosourceprovider_impl_unittest.cc similarity index 92% rename from content/renderer/media/webaudiosourceprovider_impl_unittest.cc rename to media/blink/webaudiosourceprovider_impl_unittest.cc index 8a59822debc05e..c1725fa5d06aa6 100644 --- a/content/renderer/media/webaudiosourceprovider_impl_unittest.cc +++ b/media/blink/webaudiosourceprovider_impl_unittest.cc @@ -4,15 +4,15 @@ #include "base/message_loop/message_loop.h" #include "base/run_loop.h" -#include "content/renderer/media/webaudiosourceprovider_impl.h" #include "media/audio/audio_parameters.h" #include "media/base/fake_audio_render_callback.h" #include "media/base/mock_audio_renderer_sink.h" +#include "media/blink/webaudiosourceprovider_impl.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/WebKit/public/platform/WebAudioSourceProviderClient.h" -namespace content { +namespace media { namespace { const float kTestVolume = 0.25; @@ -23,10 +23,10 @@ class WebAudioSourceProviderImplTest public blink::WebAudioSourceProviderClient { public: WebAudioSourceProviderImplTest() - : params_(media::AudioParameters::AUDIO_PCM_LINEAR, - media::CHANNEL_LAYOUT_STEREO, 48000, 16, 64), + : params_(AudioParameters::AUDIO_PCM_LINEAR, + CHANNEL_LAYOUT_STEREO, 48000, 16, 64), fake_callback_(0.1), - mock_sink_(new media::MockAudioRendererSink()), + mock_sink_(new MockAudioRendererSink()), wasp_impl_(new WebAudioSourceProviderImpl(mock_sink_)) { } @@ -67,7 +67,7 @@ class WebAudioSourceProviderImplTest testing::Mock::VerifyAndClear(this); } - bool CompareBusses(const media::AudioBus* bus1, const media::AudioBus* bus2) { + bool CompareBusses(const AudioBus* bus1, const AudioBus* bus2) { EXPECT_EQ(bus1->channels(), bus2->channels()); EXPECT_EQ(bus1->frames(), bus2->frames()); for (int ch = 0; ch < bus1->channels(); ++ch) { @@ -83,9 +83,9 @@ class WebAudioSourceProviderImplTest MOCK_METHOD2(setFormat, void(size_t numberOfChannels, float sampleRate)); protected: - media::AudioParameters params_; - media::FakeAudioRenderCallback fake_callback_; - scoped_refptr mock_sink_; + AudioParameters params_; + FakeAudioRenderCallback fake_callback_; + scoped_refptr mock_sink_; scoped_refptr wasp_impl_; base::MessageLoop message_loop_; @@ -156,8 +156,8 @@ TEST_F(WebAudioSourceProviderImplTest, SinkStateRestored) { // Test the AudioRendererSink state machine and its effects on provideInput(). TEST_F(WebAudioSourceProviderImplTest, ProvideInput) { - scoped_ptr bus1 = media::AudioBus::Create(params_); - scoped_ptr bus2 = media::AudioBus::Create(params_); + scoped_ptr bus1 = AudioBus::Create(params_); + scoped_ptr bus2 = AudioBus::Create(params_); // Point the WebVector into memory owned by |bus1|. blink::WebVector audio_data(static_cast(bus1->channels())); @@ -237,4 +237,4 @@ TEST_F(WebAudioSourceProviderImplTest, ProvideInput) { ASSERT_TRUE(CompareBusses(bus1.get(), bus2.get())); } -} // namespace content +} // namespace media diff --git a/content/renderer/media/webinbandtexttrack_impl.cc b/media/blink/webinbandtexttrack_impl.cc similarity index 91% rename from content/renderer/media/webinbandtexttrack_impl.cc rename to media/blink/webinbandtexttrack_impl.cc index e83af8f3451fba..49a4880a4d7868 100644 --- a/content/renderer/media/webinbandtexttrack_impl.cc +++ b/media/blink/webinbandtexttrack_impl.cc @@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/webinbandtexttrack_impl.h" +#include "media/blink/webinbandtexttrack_impl.h" #include "base/logging.h" -namespace content { +namespace media { WebInbandTextTrackImpl::WebInbandTextTrackImpl( Kind kind, @@ -55,4 +55,4 @@ int WebInbandTextTrackImpl::textTrackIndex() const { return index_; } -} // namespace content +} // namespace media diff --git a/content/renderer/media/webinbandtexttrack_impl.h b/media/blink/webinbandtexttrack_impl.h similarity index 84% rename from content/renderer/media/webinbandtexttrack_impl.h rename to media/blink/webinbandtexttrack_impl.h index 293fbd3fac9391..c08bfad69c2abd 100644 --- a/content/renderer/media/webinbandtexttrack_impl.h +++ b/media/blink/webinbandtexttrack_impl.h @@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_MEDIA_WEBINBANDTEXTTRACK_IMPL_H_ -#define CONTENT_RENDERER_MEDIA_WEBINBANDTEXTTRACK_IMPL_H_ +#ifndef MEDIA_BLINK_WEBINBANDTEXTTRACK_IMPL_H_ +#define MEDIA_BLINK_WEBINBANDTEXTTRACK_IMPL_H_ #include "third_party/WebKit/public/platform/WebInbandTextTrack.h" #include "third_party/WebKit/public/platform/WebString.h" -namespace content { +namespace media { class WebInbandTextTrackImpl : public blink::WebInbandTextTrack { public: @@ -40,6 +40,6 @@ class WebInbandTextTrackImpl : public blink::WebInbandTextTrack { DISALLOW_COPY_AND_ASSIGN(WebInbandTextTrackImpl); }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_WEBINBANDTEXTTRACK_IMPL_H_ +#endif // MEDIA_BLINK_WEBINBANDTEXTTRACK_IMPL_H_ diff --git a/content/renderer/media/webmediaplayer_delegate.h b/media/blink/webmediaplayer_delegate.h similarity index 78% rename from content/renderer/media/webmediaplayer_delegate.h rename to media/blink/webmediaplayer_delegate.h index 868abce6407139..7139676daedb2a 100644 --- a/content/renderer/media/webmediaplayer_delegate.h +++ b/media/blink/webmediaplayer_delegate.h @@ -2,13 +2,13 @@ // 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_DELEGATE_H_ -#define CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_DELEGATE_H_ +#ifndef MEDIA_BLINK_WEBMEDIAPLAYER_DELEGATE_H_ +#define MEDIA_BLINK_WEBMEDIAPLAYER_DELEGATE_H_ namespace blink { class WebMediaPlayer; } -namespace content { +namespace media { // An interface to allow a WebMediaPlayerImpl to communicate changes of state // to objects that need to know. @@ -29,6 +29,6 @@ class WebMediaPlayerDelegate { virtual ~WebMediaPlayerDelegate() {} }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_DELEGATE_H_ +#endif // MEDIA_BLINK_WEBMEDIAPLAYER_DELEGATE_H_ diff --git a/content/renderer/media/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc similarity index 89% rename from content/renderer/media/webmediaplayer_impl.cc rename to media/blink/webmediaplayer_impl.cc index 83e620267aef10..bed92998d3670c 100644 --- a/content/renderer/media/webmediaplayer_impl.cc +++ b/media/blink/webmediaplayer_impl.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/webmediaplayer_impl.h" +#include "media/blink/webmediaplayer_impl.h" #include #include @@ -21,15 +21,6 @@ #include "base/synchronization/waitable_event.h" #include "cc/blink/web_layer_impl.h" #include "cc/layers/video_layer.h" -#include "content/renderer/media/buffered_data_source.h" -#include "content/renderer/media/crypto/encrypted_media_player_support.h" -#include "content/renderer/media/texttrack_impl.h" -#include "content/renderer/media/webaudiosourceprovider_impl.h" -#include "content/renderer/media/webinbandtexttrack_impl.h" -#include "content/renderer/media/webmediaplayer_delegate.h" -#include "content/renderer/media/webmediaplayer_params.h" -#include "content/renderer/media/webmediaplayer_util.h" -#include "content/renderer/media/webmediasource_impl.h" #include "gpu/GLES2/gl2extchromium.h" #include "gpu/command_buffer/common/mailbox_holder.h" #include "media/audio/null_audio_sink.h" @@ -40,6 +31,15 @@ #include "media/base/pipeline.h" #include "media/base/text_renderer.h" #include "media/base/video_frame.h" +#include "media/blink/buffered_data_source.h" +#include "media/blink/encrypted_media_player_support.h" +#include "media/blink/texttrack_impl.h" +#include "media/blink/webaudiosourceprovider_impl.h" +#include "media/blink/webinbandtexttrack_impl.h" +#include "media/blink/webmediaplayer_delegate.h" +#include "media/blink/webmediaplayer_params.h" +#include "media/blink/webmediaplayer_util.h" +#include "media/blink/webmediasource_impl.h" #include "media/filters/audio_renderer_impl.h" #include "media/filters/chunk_demuxer.h" #include "media/filters/ffmpeg_audio_decoder.h" @@ -65,7 +65,6 @@ using blink::WebMediaPlayer; using blink::WebRect; using blink::WebSize; using blink::WebString; -using media::PipelineStatus; namespace { @@ -107,7 +106,7 @@ class SyncPointClientImpl : public media::VideoFrame::SyncPointClient { } // namespace -namespace content { +namespace media { class BufferedDataSourceHostImpl; @@ -122,13 +121,13 @@ COMPILE_ASSERT_MATCHING_ENUM(UseCredentials); #define BIND_TO_RENDER_LOOP(function) \ (DCHECK(main_task_runner_->BelongsToCurrentThread()), \ - media::BindToCurrentLoop(base::Bind(function, AsWeakPtr()))) + BindToCurrentLoop(base::Bind(function, AsWeakPtr()))) #define BIND_TO_RENDER_LOOP1(function, arg1) \ (DCHECK(main_task_runner_->BelongsToCurrentThread()), \ - media::BindToCurrentLoop(base::Bind(function, AsWeakPtr(), arg1))) + BindToCurrentLoop(base::Bind(function, AsWeakPtr(), arg1))) -static void LogMediaSourceError(const scoped_refptr& media_log, +static void LogMediaSourceError(const scoped_refptr& media_log, const std::string& error) { media_log->AddEvent(media_log->CreateMediaSourceErrorEvent(error)); } @@ -176,7 +175,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( compositor_task_runner_ = base::MessageLoopProxy::current(); media_log_->AddEvent( - media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); + media_log_->CreateEvent(MediaLogEvent::WEBMEDIAPLAYER_CREATED)); // |gpu_factories_| requires that its entry points be called on its // |GetTaskRunner()|. Since |pipeline_| will own decoders created from the @@ -188,7 +187,7 @@ WebMediaPlayerImpl::WebMediaPlayerImpl( audio_source_provider_ = new WebAudioSourceProviderImpl( params.audio_renderer_sink().get() ? params.audio_renderer_sink() - : new media::NullAudioSink(media_task_runner_)); + : new NullAudioSink(media_task_runner_)); } WebMediaPlayerImpl::~WebMediaPlayerImpl() { @@ -196,7 +195,7 @@ WebMediaPlayerImpl::~WebMediaPlayerImpl() { DCHECK(main_task_runner_->BelongsToCurrentThread()); media_log_->AddEvent( - media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_DESTROYED)); + media_log_->CreateEvent(MediaLogEvent::WEBMEDIAPLAYER_DESTROYED)); if (delegate_.get()) delegate_->PlayerGone(this); @@ -280,7 +279,7 @@ void WebMediaPlayerImpl::play() { if (data_source_) data_source_->MediaIsPlaying(); - media_log_->AddEvent(media_log_->CreateEvent(media::MediaLogEvent::PLAY)); + media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::PLAY)); if (delegate_.get()) delegate_->DidPlay(this); @@ -296,7 +295,7 @@ void WebMediaPlayerImpl::pause() { data_source_->MediaIsPaused(); paused_time_ = pipeline_.GetMediaTime(); - media_log_->AddEvent(media_log_->CreateEvent(media::MediaLogEvent::PAUSE)); + media_log_->AddEvent(media_log_->CreateEvent(MediaLogEvent::PAUSE)); if (delegate_.get()) delegate_->DidPause(this); @@ -469,11 +468,11 @@ WebMediaPlayer::ReadyState WebMediaPlayerImpl::readyState() const { blink::WebTimeRanges WebMediaPlayerImpl::buffered() const { DCHECK(main_task_runner_->BelongsToCurrentThread()); - media::Ranges buffered_time_ranges = + Ranges buffered_time_ranges = pipeline_.GetBufferedTimeRanges(); const base::TimeDelta duration = pipeline_.GetMediaDuration(); - if (duration != media::kInfiniteDuration()) { + if (duration != kInfiniteDuration()) { buffered_data_source_host_.AddBufferedTimeRanges( &buffered_time_ranges, duration); } @@ -519,7 +518,7 @@ void WebMediaPlayerImpl::paint(blink::WebCanvas* canvas, // - We haven't reached HAVE_CURRENT_DATA and need to paint black // - We're painting to a canvas // See http://crbug.com/341225 http://crbug.com/342621 for details. - scoped_refptr video_frame = + scoped_refptr video_frame = GetCurrentFrameFromCompositor(); gfx::Rect gfx_rect(rect); @@ -551,28 +550,28 @@ double WebMediaPlayerImpl::mediaTimeForTimeValue(double timeValue) const { unsigned WebMediaPlayerImpl::decodedFrameCount() const { DCHECK(main_task_runner_->BelongsToCurrentThread()); - media::PipelineStatistics stats = pipeline_.GetStatistics(); + PipelineStatistics stats = pipeline_.GetStatistics(); return stats.video_frames_decoded; } unsigned WebMediaPlayerImpl::droppedFrameCount() const { DCHECK(main_task_runner_->BelongsToCurrentThread()); - media::PipelineStatistics stats = pipeline_.GetStatistics(); + PipelineStatistics stats = pipeline_.GetStatistics(); return stats.video_frames_dropped; } unsigned WebMediaPlayerImpl::audioDecodedByteCount() const { DCHECK(main_task_runner_->BelongsToCurrentThread()); - media::PipelineStatistics stats = pipeline_.GetStatistics(); + PipelineStatistics stats = pipeline_.GetStatistics(); return stats.audio_bytes_decoded; } unsigned WebMediaPlayerImpl::videoDecodedByteCount() const { DCHECK(main_task_runner_->BelongsToCurrentThread()); - media::PipelineStatistics stats = pipeline_.GetStatistics(); + PipelineStatistics stats = pipeline_.GetStatistics(); return stats.video_bytes_decoded; } @@ -586,12 +585,12 @@ bool WebMediaPlayerImpl::copyVideoTextureToPlatformTexture( bool flip_y) { TRACE_EVENT0("media", "WebMediaPlayerImpl:copyVideoTextureToPlatformTexture"); - scoped_refptr video_frame = + scoped_refptr video_frame = GetCurrentFrameFromCompositor(); if (!video_frame.get()) return false; - if (video_frame->format() != media::VideoFrame::NATIVE_TEXTURE) + if (video_frame->format() != VideoFrame::NATIVE_TEXTURE) return false; const gpu::MailboxHolder* mailbox_holder = video_frame->mailbox_holder(); @@ -693,7 +692,7 @@ void WebMediaPlayerImpl::OnPipelineSeeked(bool time_changed, return; } - if (status != media::PIPELINE_OK) { + if (status != PIPELINE_OK) { OnPipelineError(status); return; } @@ -719,7 +718,7 @@ void WebMediaPlayerImpl::OnPipelineEnded() { void WebMediaPlayerImpl::OnPipelineError(PipelineStatus error) { DCHECK(main_task_runner_->BelongsToCurrentThread()); - DCHECK_NE(error, media::PIPELINE_OK); + DCHECK_NE(error, PIPELINE_OK); if (ready_state_ == WebMediaPlayer::ReadyStateHaveNothing) { // Any error that occurs before reaching ReadyStateHaveMetadata should @@ -730,19 +729,19 @@ void WebMediaPlayerImpl::OnPipelineError(PipelineStatus error) { SetNetworkState(PipelineErrorToNetworkState(error)); - if (error == media::PIPELINE_ERROR_DECRYPT) + if (error == PIPELINE_ERROR_DECRYPT) encrypted_media_support_->OnPipelineDecryptError(); } void WebMediaPlayerImpl::OnPipelineMetadata( - media::PipelineMetadata metadata) { + PipelineMetadata metadata) { DVLOG(1) << __FUNCTION__; pipeline_metadata_ = metadata; UMA_HISTOGRAM_ENUMERATION("Media.VideoRotation", metadata.video_rotation, - media::VIDEO_ROTATION_MAX + 1); + VIDEO_ROTATION_MAX + 1); SetReadyState(WebMediaPlayer::ReadyStateHaveMetadata); if (hasVideo()) { @@ -750,8 +749,8 @@ void WebMediaPlayerImpl::OnPipelineMetadata( scoped_refptr layer = cc::VideoLayer::Create(compositor_, pipeline_metadata_.video_rotation); - if (pipeline_metadata_.video_rotation == media::VIDEO_ROTATION_90 || - pipeline_metadata_.video_rotation == media::VIDEO_ROTATION_270) { + if (pipeline_metadata_.video_rotation == VIDEO_ROTATION_90 || + pipeline_metadata_.video_rotation == VIDEO_ROTATION_270) { gfx::Size size = pipeline_metadata_.natural_size; pipeline_metadata_.natural_size = gfx::Size(size.height(), size.width()); } @@ -763,7 +762,7 @@ void WebMediaPlayerImpl::OnPipelineMetadata( } void WebMediaPlayerImpl::OnPipelineBufferingStateChanged( - media::BufferingState buffering_state) { + BufferingState buffering_state) { DVLOG(1) << __FUNCTION__ << "(" << buffering_state << ")"; // Ignore buffering state changes until we've completed all outstanding seeks. @@ -772,7 +771,7 @@ void WebMediaPlayerImpl::OnPipelineBufferingStateChanged( // TODO(scherkus): Handle other buffering states when Pipeline starts using // them and translate them ready state changes http://crbug.com/144683 - DCHECK_EQ(buffering_state, media::BUFFERING_HAVE_ENOUGH); + DCHECK_EQ(buffering_state, BUFFERING_HAVE_ENOUGH); SetReadyState(WebMediaPlayer::ReadyStateHaveEnoughData); // Blink expects a timeChanged() in response to a seek(). @@ -787,8 +786,8 @@ void WebMediaPlayerImpl::OnDemuxerOpened() { } void WebMediaPlayerImpl::OnAddTextTrack( - const media::TextTrackConfig& config, - const media::AddTextTrackDoneCB& done_cb) { + const TextTrackConfig& config, + const AddTextTrackDoneCB& done_cb) { DCHECK(main_task_runner_->BelongsToCurrentThread()); const WebInbandTextTrackImpl::Kind web_kind = @@ -804,7 +803,7 @@ void WebMediaPlayerImpl::OnAddTextTrack( new WebInbandTextTrackImpl(web_kind, web_label, web_language, web_id, text_track_index_++)); - scoped_ptr text_track(new TextTrackImpl( + scoped_ptr text_track(new TextTrackImpl( main_task_runner_, client_, web_inband_text_track.Pass())); done_cb.Run(text_track.Pass()); @@ -828,25 +827,24 @@ void WebMediaPlayerImpl::NotifyDownloading(bool is_downloading) { SetNetworkState(WebMediaPlayer::NetworkStateLoading); media_log_->AddEvent( media_log_->CreateBooleanEvent( - media::MediaLogEvent::NETWORK_ACTIVITY_SET, + MediaLogEvent::NETWORK_ACTIVITY_SET, "is_downloading_data", is_downloading)); } // TODO(xhwang): Move this to a factory class so that we can create different // renderers. -scoped_ptr WebMediaPlayerImpl::CreateRenderer() { - media::SetDecryptorReadyCB set_decryptor_ready_cb = +scoped_ptr WebMediaPlayerImpl::CreateRenderer() { + SetDecryptorReadyCB set_decryptor_ready_cb = encrypted_media_support_->CreateSetDecryptorReadyCB(); // Create our audio decoders and renderer. - ScopedVector audio_decoders; + ScopedVector audio_decoders; - media::LogCB log_cb = base::Bind(&LogMediaSourceError, media_log_); - audio_decoders.push_back(new media::FFmpegAudioDecoder(media_task_runner_, - log_cb)); - audio_decoders.push_back(new media::OpusAudioDecoder(media_task_runner_)); + LogCB log_cb = base::Bind(&LogMediaSourceError, media_log_); + audio_decoders.push_back(new FFmpegAudioDecoder(media_task_runner_, log_cb)); + audio_decoders.push_back(new OpusAudioDecoder(media_task_runner_)); - scoped_ptr audio_renderer(new media::AudioRendererImpl( + scoped_ptr audio_renderer(new AudioRendererImpl( media_task_runner_, audio_source_provider_.get(), audio_decoders.Pass(), @@ -854,21 +852,21 @@ scoped_ptr WebMediaPlayerImpl::CreateRenderer() { audio_hardware_config_)); // Create our video decoders and renderer. - ScopedVector video_decoders; + ScopedVector video_decoders; if (gpu_factories_.get()) { video_decoders.push_back( - new media::GpuVideoDecoder(gpu_factories_, media_log_)); + new GpuVideoDecoder(gpu_factories_, media_log_)); } #if !defined(MEDIA_DISABLE_LIBVPX) - video_decoders.push_back(new media::VpxVideoDecoder(media_task_runner_)); + video_decoders.push_back(new VpxVideoDecoder(media_task_runner_)); #endif // !defined(MEDIA_DISABLE_LIBVPX) - video_decoders.push_back(new media::FFmpegVideoDecoder(media_task_runner_)); + video_decoders.push_back(new FFmpegVideoDecoder(media_task_runner_)); - scoped_ptr video_renderer( - new media::VideoRendererImpl( + scoped_ptr video_renderer( + new VideoRendererImpl( media_task_runner_, video_decoders.Pass(), set_decryptor_ready_cb, @@ -876,7 +874,7 @@ scoped_ptr WebMediaPlayerImpl::CreateRenderer() { true)); // Create renderer. - return scoped_ptr(new media::RendererImpl( + return scoped_ptr(new RendererImpl( media_task_runner_, demuxer_.get(), audio_renderer.Pass(), @@ -890,8 +888,8 @@ void WebMediaPlayerImpl::StartPipeline() { UMA_HISTOGRAM_BOOLEAN("Media.MSE.Playback", (load_type_ == LoadTypeMediaSource)); - media::LogCB mse_log_cb; - media::Demuxer::NeedKeyCB need_key_cb = + LogCB mse_log_cb; + Demuxer::NeedKeyCB need_key_cb = encrypted_media_support_->CreateNeedKeyCB(); // Figure out which demuxer to use. @@ -899,7 +897,7 @@ void WebMediaPlayerImpl::StartPipeline() { DCHECK(!chunk_demuxer_); DCHECK(data_source_); - demuxer_.reset(new media::FFmpegDemuxer( + demuxer_.reset(new FFmpegDemuxer( media_task_runner_, data_source_.get(), need_key_cb, media_log_)); @@ -909,7 +907,7 @@ void WebMediaPlayerImpl::StartPipeline() { mse_log_cb = base::Bind(&LogMediaSourceError, media_log_); - chunk_demuxer_ = new media::ChunkDemuxer( + chunk_demuxer_ = new ChunkDemuxer( BIND_TO_RENDER_LOOP(&WebMediaPlayerImpl::OnDemuxerOpened), need_key_cb, mse_log_cb, @@ -962,7 +960,7 @@ double WebMediaPlayerImpl::GetPipelineDuration() const { // Return positive infinity if the resource is unbounded. // http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#dom-media-duration - if (duration == media::kInfiniteDuration()) + if (duration == kInfiniteDuration()) return std::numeric_limits::infinity(); return duration.InSecondsF(); @@ -997,7 +995,7 @@ void WebMediaPlayerImpl::OnOpacityChanged(bool opaque) { } void WebMediaPlayerImpl::FrameReady( - const scoped_refptr& frame) { + const scoped_refptr& frame) { compositor_task_runner_->PostTask( FROM_HERE, base::Bind(&VideoFrameCompositor::UpdateCurrentFrame, @@ -1007,14 +1005,14 @@ void WebMediaPlayerImpl::FrameReady( static void GetCurrentFrameAndSignal( VideoFrameCompositor* compositor, - scoped_refptr* video_frame_out, + scoped_refptr* video_frame_out, base::WaitableEvent* event) { TRACE_EVENT0("media", "GetCurrentFrameAndSignal"); *video_frame_out = compositor->GetCurrentFrame(); event->Signal(); } -scoped_refptr +scoped_refptr WebMediaPlayerImpl::GetCurrentFrameFromCompositor() { TRACE_EVENT0("media", "WebMediaPlayerImpl::GetCurrentFrameFromCompositor"); if (compositor_task_runner_->BelongsToCurrentThread()) @@ -1022,7 +1020,7 @@ WebMediaPlayerImpl::GetCurrentFrameFromCompositor() { // Use a posted task and waitable event instead of a lock otherwise // WebGL/Canvas can see different content than what the compositor is seeing. - scoped_refptr video_frame; + scoped_refptr video_frame; base::WaitableEvent event(false, false); compositor_task_runner_->PostTask(FROM_HERE, base::Bind(&GetCurrentFrameAndSignal, @@ -1033,4 +1031,4 @@ WebMediaPlayerImpl::GetCurrentFrameFromCompositor() { return video_frame; } -} // namespace content +} // namespace media diff --git a/content/renderer/media/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h similarity index 86% rename from content/renderer/media/webmediaplayer_impl.h rename to media/blink/webmediaplayer_impl.h index 7c2892b8c855be..bbdf0802697939 100644 --- a/content/renderer/media/webmediaplayer_impl.h +++ b/media/blink/webmediaplayer_impl.h @@ -2,26 +2,28 @@ // 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_ +#ifndef MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_ +#define MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_ #include #include #include "base/basictypes.h" +#include "base/compiler_specific.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" +#include "media/base/media_export.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/blink/buffered_data_source.h" +#include "media/blink/buffered_data_source_host_impl.h" +#include "media/blink/video_frame_compositor.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" @@ -44,14 +46,9 @@ class WebLayerImpl; namespace media { class AudioHardwareConfig; class ChunkDemuxer; +class EncryptedMediaPlayerSupport; class GpuVideoAcceleratorFactories; class MediaLog; -} - - -namespace content { -class BufferedDataSource; -class EncryptedMediaPlayerSupport; class VideoFrameCompositor; class WebAudioSourceProviderImpl; class WebMediaPlayerDelegate; @@ -59,10 +56,10 @@ class WebMediaPlayerParams; class WebTextTrackImpl; // The canonical implementation of blink::WebMediaPlayer that's backed by -// media::Pipeline. Handles normal resource loading, Media Source, and +// Pipeline. Handles normal resource loading, Media Source, and // Encrypted Media. -class WebMediaPlayerImpl - : public blink::WebMediaPlayer, +class MEDIA_EXPORT WebMediaPlayerImpl + : public NON_EXPORTED_BASE(blink::WebMediaPlayer), public base::SupportsWeakPtr { public: // Constructs a WebMediaPlayer implementation using Chromium's media stack. @@ -167,14 +164,14 @@ class WebMediaPlayerImpl virtual void setContentDecryptionModuleSync( blink::WebContentDecryptionModule* cdm); - void OnPipelineSeeked(bool time_changed, media::PipelineStatus status); + void OnPipelineSeeked(bool time_changed, PipelineStatus status); void OnPipelineEnded(); - void OnPipelineError(media::PipelineStatus error); - void OnPipelineMetadata(media::PipelineMetadata metadata); - void OnPipelineBufferingStateChanged(media::BufferingState buffering_state); + void OnPipelineError(PipelineStatus error); + void OnPipelineMetadata(PipelineMetadata metadata); + void OnPipelineBufferingStateChanged(BufferingState buffering_state); void OnDemuxerOpened(); - void OnAddTextTrack(const media::TextTrackConfig& config, - const media::AddTextTrackDoneCB& done_cb); + void OnAddTextTrack(const TextTrackConfig& config, + const AddTextTrackDoneCB& done_cb); private: // Called after |defer_load_cb_| has decided to allow the load. If @@ -189,8 +186,8 @@ class WebMediaPlayerImpl // 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 CreateRenderer(); + // Creates a Renderer that will be used by the |pipeline_|. + scoped_ptr CreateRenderer(); // Finishes starting the pipeline due to a call to load(). void StartPipeline(); @@ -210,11 +207,11 @@ class WebMediaPlayerImpl // Called by VideoRendererImpl on its internal thread with the new frame to be // painted. - void FrameReady(const scoped_refptr& frame); + void FrameReady(const scoped_refptr& frame); // Returns the current video frame from |compositor_|. Blocks until the // compositor can return the frame. - scoped_refptr GetCurrentFrameFromCompositor(); + scoped_refptr GetCurrentFrameFromCompositor(); blink::WebLocalFrame* frame_; @@ -230,14 +227,14 @@ class WebMediaPlayerImpl const scoped_refptr main_task_runner_; scoped_refptr media_task_runner_; - scoped_refptr media_log_; - media::Pipeline pipeline_; + scoped_refptr media_log_; + 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_; + PipelineMetadata pipeline_metadata_; // Whether the video is known to be opaque or not. bool opaque_; @@ -279,7 +276,7 @@ class WebMediaPlayerImpl base::Callback defer_load_cb_; // Factories for supporting video accelerators. May be null. - scoped_refptr gpu_factories_; + scoped_refptr gpu_factories_; // Routes audio playback to either AudioRendererSink or WebAudio. scoped_refptr audio_source_provider_; @@ -293,15 +290,15 @@ class WebMediaPlayerImpl // |demuxer_| will contain the appropriate demuxer based on which resource // load strategy we're using. scoped_ptr data_source_; - scoped_ptr demuxer_; - media::ChunkDemuxer* chunk_demuxer_; + scoped_ptr demuxer_; + ChunkDemuxer* chunk_demuxer_; BufferedDataSourceHostImpl buffered_data_source_host_; // Video rendering members. scoped_refptr compositor_task_runner_; VideoFrameCompositor* compositor_; // Deleted on |compositor_task_runner_|. - media::SkCanvasVideoRenderer skcanvas_video_renderer_; + SkCanvasVideoRenderer skcanvas_video_renderer_; // The compositor layer for displaying the video content when using composited // playback. @@ -312,11 +309,11 @@ class WebMediaPlayerImpl scoped_ptr encrypted_media_support_; - const media::AudioHardwareConfig& audio_hardware_config_; + const AudioHardwareConfig& audio_hardware_config_; DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerImpl); }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_IMPL_H_ +#endif // MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_ diff --git a/content/renderer/media/webmediaplayer_params.cc b/media/blink/webmediaplayer_params.cc similarity index 78% rename from content/renderer/media/webmediaplayer_params.cc rename to media/blink/webmediaplayer_params.cc index 5daa7d0f5632bf..c157e3483b03c0 100644 --- a/content/renderer/media/webmediaplayer_params.cc +++ b/media/blink/webmediaplayer_params.cc @@ -2,21 +2,21 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/webmediaplayer_params.h" +#include "media/blink/webmediaplayer_params.h" #include "base/single_thread_task_runner.h" #include "media/base/audio_renderer_sink.h" #include "media/base/media_log.h" #include "media/filters/gpu_video_accelerator_factories.h" -namespace content { +namespace media { WebMediaPlayerParams::WebMediaPlayerParams( const base::Callback& defer_load_cb, - const scoped_refptr& audio_renderer_sink, - const media::AudioHardwareConfig& audio_hardware_config, - const scoped_refptr& media_log, - const scoped_refptr& gpu_factories, + const scoped_refptr& audio_renderer_sink, + const AudioHardwareConfig& audio_hardware_config, + const scoped_refptr& media_log, + const scoped_refptr& gpu_factories, const scoped_refptr& media_task_runner, const scoped_refptr& @@ -41,4 +41,4 @@ WebMediaPlayerParams::CreateEncryptedMediaPlayerSupport( return encrypted_media_player_support_cb_.Run(client); } -} // namespace content +} // namespace media diff --git a/content/renderer/media/webmediaplayer_params.h b/media/blink/webmediaplayer_params.h similarity index 68% rename from content/renderer/media/webmediaplayer_params.h rename to media/blink/webmediaplayer_params.h index cfaff62cc1d080..5cdf95ee2a6758 100644 --- a/content/renderer/media/webmediaplayer_params.h +++ b/media/blink/webmediaplayer_params.h @@ -2,12 +2,13 @@ // 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_PARAMS_H_ -#define CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_PARAMS_H_ +#ifndef MEDIA_BLINK_WEBMEDIAPLAYER_PARAMS_H_ +#define MEDIA_BLINK_WEBMEDIAPLAYER_PARAMS_H_ #include "base/callback.h" #include "base/memory/ref_counted.h" -#include "content/renderer/media/crypto/encrypted_media_player_support.h" +#include "media/base/media_export.h" +#include "media/blink/encrypted_media_player_support.h" namespace base { class SingleThreadTaskRunner; @@ -22,13 +23,10 @@ class AudioHardwareConfig; class AudioRendererSink; class GpuVideoAcceleratorFactories; class MediaLog; -} - -namespace content { // Holds parameters for constructing WebMediaPlayerImpl without having // to plumb arguments through various abstraction layers. -class WebMediaPlayerParams { +class MEDIA_EXPORT WebMediaPlayerParams { public: // Callback used to create EncryptedMediaPlayerSupport instances. This // callback must always return a valid EncryptedMediaPlayerSupport object. @@ -39,10 +37,10 @@ class WebMediaPlayerParams { // null. WebMediaPlayerParams( const base::Callback& defer_load_cb, - const scoped_refptr& audio_renderer_sink, - const media::AudioHardwareConfig& audio_hardware_config, - const scoped_refptr& media_log, - const scoped_refptr& gpu_factories, + const scoped_refptr& audio_renderer_sink, + const AudioHardwareConfig& audio_hardware_config, + const scoped_refptr& media_log, + const scoped_refptr& gpu_factories, const scoped_refptr& media_task_runner, const scoped_refptr& @@ -56,19 +54,19 @@ class WebMediaPlayerParams { return defer_load_cb_; } - const scoped_refptr& audio_renderer_sink() const { + const scoped_refptr& audio_renderer_sink() const { return audio_renderer_sink_; } - const media::AudioHardwareConfig& audio_hardware_config() const { + const AudioHardwareConfig& audio_hardware_config() const { return audio_hardware_config_; } - const scoped_refptr& media_log() const { + const scoped_refptr& media_log() const { return media_log_; } - const scoped_refptr& + const scoped_refptr& gpu_factories() const { return gpu_factories_; } @@ -88,10 +86,10 @@ class WebMediaPlayerParams { private: base::Callback defer_load_cb_; - scoped_refptr audio_renderer_sink_; - const media::AudioHardwareConfig& audio_hardware_config_; - scoped_refptr media_log_; - scoped_refptr gpu_factories_; + scoped_refptr audio_renderer_sink_; + const AudioHardwareConfig& audio_hardware_config_; + scoped_refptr media_log_; + scoped_refptr gpu_factories_; scoped_refptr media_task_runner_; scoped_refptr compositor_task_runner_; EncryptedMediaPlayerSupportCreateCB encrypted_media_player_support_cb_; @@ -99,6 +97,6 @@ class WebMediaPlayerParams { DISALLOW_IMPLICIT_CONSTRUCTORS(WebMediaPlayerParams); }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_PARAMS_H_ +#endif // MEDIA_BLINK_WEBMEDIAPLAYER_PARAMS_H_ diff --git a/content/renderer/media/webmediaplayer_util.cc b/media/blink/webmediaplayer_util.cc similarity index 74% rename from content/renderer/media/webmediaplayer_util.cc rename to media/blink/webmediaplayer_util.cc index 6d1b1e25aa8953..bcaf13567aa21e 100644 --- a/content/renderer/media/webmediaplayer_util.cc +++ b/media/blink/webmediaplayer_util.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/webmediaplayer_util.h" +#include "media/blink/webmediaplayer_util.h" #include @@ -10,14 +10,14 @@ #include "media/base/media_keys.h" #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" -namespace content { +namespace media { // Compile asserts shared by all platforms. #define COMPILE_ASSERT_MATCHING_ENUM(name) \ COMPILE_ASSERT( \ static_cast(blink::WebMediaPlayerClient::MediaKeyErrorCode ## name) == \ - static_cast(media::MediaKeys::k ## name ## Error), \ + static_cast(MediaKeys::k ## name ## Error), \ mismatching_enums) COMPILE_ASSERT_MATCHING_ENUM(Unknown); COMPILE_ASSERT_MATCHING_ENUM(Client); @@ -30,7 +30,7 @@ base::TimeDelta ConvertSecondsToTimestamp(double seconds) { } blink::WebTimeRanges ConvertToWebTimeRanges( - const media::Ranges& ranges) { + const Ranges& ranges) { blink::WebTimeRanges result(ranges.size()); for (size_t i = 0; i < ranges.size(); ++i) { result[i].start = ranges.start(i).InSecondsF(); @@ -40,38 +40,38 @@ blink::WebTimeRanges ConvertToWebTimeRanges( } blink::WebMediaPlayer::NetworkState PipelineErrorToNetworkState( - media::PipelineStatus error) { - DCHECK_NE(error, media::PIPELINE_OK); + PipelineStatus error) { + DCHECK_NE(error, PIPELINE_OK); switch (error) { - case media::PIPELINE_ERROR_NETWORK: - case media::PIPELINE_ERROR_READ: + case PIPELINE_ERROR_NETWORK: + case PIPELINE_ERROR_READ: return blink::WebMediaPlayer::NetworkStateNetworkError; // TODO(vrk): Because OnPipelineInitialize() directly reports the // NetworkStateFormatError instead of calling OnPipelineError(), I believe // this block can be deleted. Should look into it! (crbug.com/126070) - case media::PIPELINE_ERROR_INITIALIZATION_FAILED: - case media::PIPELINE_ERROR_COULD_NOT_RENDER: - case media::PIPELINE_ERROR_URL_NOT_FOUND: - case media::DEMUXER_ERROR_COULD_NOT_OPEN: - case media::DEMUXER_ERROR_COULD_NOT_PARSE: - case media::DEMUXER_ERROR_NO_SUPPORTED_STREAMS: - case media::DECODER_ERROR_NOT_SUPPORTED: + case PIPELINE_ERROR_INITIALIZATION_FAILED: + case PIPELINE_ERROR_COULD_NOT_RENDER: + case PIPELINE_ERROR_URL_NOT_FOUND: + case DEMUXER_ERROR_COULD_NOT_OPEN: + case DEMUXER_ERROR_COULD_NOT_PARSE: + case DEMUXER_ERROR_NO_SUPPORTED_STREAMS: + case DECODER_ERROR_NOT_SUPPORTED: return blink::WebMediaPlayer::NetworkStateFormatError; - case media::PIPELINE_ERROR_DECODE: - case media::PIPELINE_ERROR_ABORT: - case media::PIPELINE_ERROR_OPERATION_PENDING: - case media::PIPELINE_ERROR_INVALID_STATE: + case PIPELINE_ERROR_DECODE: + case PIPELINE_ERROR_ABORT: + case PIPELINE_ERROR_OPERATION_PENDING: + case PIPELINE_ERROR_INVALID_STATE: return blink::WebMediaPlayer::NetworkStateDecodeError; - case media::PIPELINE_ERROR_DECRYPT: + case PIPELINE_ERROR_DECRYPT: // TODO(xhwang): Change to use NetworkStateDecryptError once it's added in // Webkit (see http://crbug.com/124486). return blink::WebMediaPlayer::NetworkStateDecodeError; - case media::PIPELINE_OK: + case PIPELINE_OK: NOTREACHED() << "Unexpected status! " << error; } return blink::WebMediaPlayer::NetworkStateFormatError; @@ -113,7 +113,8 @@ URLSchemeForHistogram URLScheme(const GURL& url) { } // namespace void ReportMediaSchemeUma(const GURL& url) { - UMA_HISTOGRAM_ENUMERATION("Media.URLScheme", URLScheme(url), kMaxURLScheme); + UMA_HISTOGRAM_ENUMERATION("Media.URLScheme", URLScheme(url), + kMaxURLScheme + 1); } -} // namespace content +} // namespace media diff --git a/content/renderer/media/webmediaplayer_util.h b/media/blink/webmediaplayer_util.h similarity index 53% rename from content/renderer/media/webmediaplayer_util.h rename to media/blink/webmediaplayer_util.h index d401c39089c151..159be7714ceeae 100644 --- a/content/renderer/media/webmediaplayer_util.h +++ b/media/blink/webmediaplayer_util.h @@ -2,33 +2,34 @@ // 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_UTIL_H_ -#define CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_UTIL_H_ +#ifndef MEDIA_BLINK_WEBMEDIAPLAYER_UTIL_H_ +#define MEDIA_BLINK_WEBMEDIAPLAYER_UTIL_H_ #include "base/time/time.h" +#include "media/base/media_export.h" #include "media/base/pipeline_status.h" #include "media/base/ranges.h" #include "third_party/WebKit/public/platform/WebMediaPlayer.h" #include "third_party/WebKit/public/platform/WebTimeRange.h" #include "url/gurl.h" -namespace content { +namespace media { // Platform independent method for converting and rounding floating point // seconds to an int64 timestamp. // // Refer to https://bugs.webkit.org/show_bug.cgi?id=52697 for details. -base::TimeDelta ConvertSecondsToTimestamp(double seconds); +base::TimeDelta MEDIA_EXPORT ConvertSecondsToTimestamp(double seconds); -blink::WebTimeRanges ConvertToWebTimeRanges( - const media::Ranges& ranges); +blink::WebTimeRanges MEDIA_EXPORT ConvertToWebTimeRanges( + const Ranges& ranges); -blink::WebMediaPlayer::NetworkState PipelineErrorToNetworkState( - media::PipelineStatus error); +blink::WebMediaPlayer::NetworkState MEDIA_EXPORT PipelineErrorToNetworkState( + PipelineStatus error); // Report the scheme of Media URIs. -void ReportMediaSchemeUma(const GURL& url); +void MEDIA_EXPORT ReportMediaSchemeUma(const GURL& url); -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_WEBMEDIAPLAYER_UTIL_H_ +#endif // MEDIA_BLINK_WEBMEDIAPLAYER_UTIL_H_ diff --git a/content/renderer/media/webmediasource_impl.cc b/media/blink/webmediasource_impl.cc similarity index 83% rename from content/renderer/media/webmediasource_impl.cc rename to media/blink/webmediasource_impl.cc index b3078f7edcd526..aecad6f307f491 100644 --- a/content/renderer/media/webmediasource_impl.cc +++ b/media/blink/webmediasource_impl.cc @@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/webmediasource_impl.h" +#include "media/blink/webmediasource_impl.h" #include "base/guid.h" -#include "content/renderer/media/websourcebuffer_impl.h" +#include "media/blink/websourcebuffer_impl.h" #include "media/filters/chunk_demuxer.h" #include "third_party/WebKit/public/platform/WebCString.h" #include "third_party/WebKit/public/platform/WebString.h" @@ -13,11 +13,11 @@ using ::blink::WebString; using ::blink::WebMediaSource; -namespace content { +namespace media { #define COMPILE_ASSERT_MATCHING_STATUS_ENUM(webkit_name, chromium_name) \ COMPILE_ASSERT(static_cast(WebMediaSource::webkit_name) == \ - static_cast(media::ChunkDemuxer::chromium_name), \ + static_cast(ChunkDemuxer::chromium_name), \ mismatching_status_enums) COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddStatusOk, kOk); COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddStatusNotSupported, kNotSupported); @@ -25,7 +25,7 @@ COMPILE_ASSERT_MATCHING_STATUS_ENUM(AddStatusReachedIdLimit, kReachedIdLimit); #undef COMPILE_ASSERT_MATCHING_STATUS_ENUM WebMediaSourceImpl::WebMediaSourceImpl( - media::ChunkDemuxer* demuxer, media::LogCB log_cb) + ChunkDemuxer* demuxer, LogCB log_cb) : demuxer_(demuxer), log_cb_(log_cb) { DCHECK(demuxer_); @@ -63,16 +63,16 @@ void WebMediaSourceImpl::setDuration(double new_duration) { void WebMediaSourceImpl::markEndOfStream( WebMediaSource::EndOfStreamStatus status) { - media::PipelineStatus pipeline_status = media::PIPELINE_OK; + PipelineStatus pipeline_status = PIPELINE_OK; switch (status) { case WebMediaSource::EndOfStreamStatusNoError: break; case WebMediaSource::EndOfStreamStatusNetworkError: - pipeline_status = media::PIPELINE_ERROR_NETWORK; + pipeline_status = PIPELINE_ERROR_NETWORK; break; case WebMediaSource::EndOfStreamStatusDecodeError: - pipeline_status = media::PIPELINE_ERROR_DECODE; + pipeline_status = PIPELINE_ERROR_DECODE; break; } @@ -83,4 +83,4 @@ void WebMediaSourceImpl::unmarkEndOfStream() { demuxer_->UnmarkEndOfStream(); } -} // namespace content +} // namespace media diff --git a/content/renderer/media/webmediasource_impl.h b/media/blink/webmediasource_impl.h similarity index 65% rename from content/renderer/media/webmediasource_impl.h rename to media/blink/webmediasource_impl.h index c788a663079e71..ac442f02d37bcd 100644 --- a/content/renderer/media/webmediasource_impl.h +++ b/media/blink/webmediasource_impl.h @@ -2,24 +2,23 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_MEDIA_WEBMEDIASOURCE_IMPL_H_ -#define CONTENT_RENDERER_MEDIA_WEBMEDIASOURCE_IMPL_H_ +#ifndef MEDIA_BLINK_WEBMEDIASOURCE_IMPL_H_ +#define MEDIA_BLINK_WEBMEDIASOURCE_IMPL_H_ #include #include +#include "media/base/media_export.h" #include "media/base/media_log.h" #include "third_party/WebKit/public/platform/WebMediaSource.h" namespace media { class ChunkDemuxer; -} -namespace content { - -class WebMediaSourceImpl : public blink::WebMediaSource { +class MEDIA_EXPORT WebMediaSourceImpl + : NON_EXPORTED_BASE(public blink::WebMediaSource) { public: - WebMediaSourceImpl(media::ChunkDemuxer* demuxer, media::LogCB log_cb); + WebMediaSourceImpl(ChunkDemuxer* demuxer, LogCB log_cb); virtual ~WebMediaSourceImpl(); // blink::WebMediaSource implementation. @@ -33,12 +32,12 @@ class WebMediaSourceImpl : public blink::WebMediaSource { virtual void unmarkEndOfStream(); private: - media::ChunkDemuxer* demuxer_; // Owned by WebMediaPlayerImpl. - media::LogCB log_cb_; + ChunkDemuxer* demuxer_; // Owned by WebMediaPlayerImpl. + LogCB log_cb_; DISALLOW_COPY_AND_ASSIGN(WebMediaSourceImpl); }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_WEBMEDIASOURCE_IMPL_H_ +#endif // MEDIA_BLINK_WEBMEDIASOURCE_IMPL_H_ diff --git a/content/renderer/media/websourcebuffer_impl.cc b/media/blink/websourcebuffer_impl.cc similarity index 92% rename from content/renderer/media/websourcebuffer_impl.cc rename to media/blink/websourcebuffer_impl.cc index 1b8e4fa143561c..c87c2b986308e7 100644 --- a/content/renderer/media/websourcebuffer_impl.cc +++ b/media/blink/websourcebuffer_impl.cc @@ -2,21 +2,21 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/renderer/media/websourcebuffer_impl.h" +#include "media/blink/websourcebuffer_impl.h" #include #include "base/float_util.h" #include "media/filters/chunk_demuxer.h" -namespace content { +namespace media { static base::TimeDelta DoubleToTimeDelta(double time) { DCHECK(!base::IsNaN(time)); DCHECK_NE(time, -std::numeric_limits::infinity()); if (time == std::numeric_limits::infinity()) - return media::kInfiniteDuration(); + return kInfiniteDuration(); // Don't use base::TimeDelta::Max() here, as we want the largest finite time // delta. @@ -31,10 +31,10 @@ static base::TimeDelta DoubleToTimeDelta(double time) { } WebSourceBufferImpl::WebSourceBufferImpl( - const std::string& id, media::ChunkDemuxer* demuxer) + const std::string& id, ChunkDemuxer* demuxer) : id_(id), demuxer_(demuxer), - append_window_end_(media::kInfiniteDuration()) { + append_window_end_(kInfiniteDuration()) { DCHECK(demuxer_); } @@ -60,7 +60,7 @@ bool WebSourceBufferImpl::setMode(WebSourceBuffer::AppendMode mode) { } blink::WebTimeRanges WebSourceBufferImpl::buffered() { - media::Ranges ranges = demuxer_->GetBufferedRanges(id_); + Ranges ranges = demuxer_->GetBufferedRanges(id_); blink::WebTimeRanges result(ranges.size()); for (size_t i = 0; i < ranges.size(); i++) { result[i].start = ranges.start(i).InSecondsF(); @@ -131,4 +131,4 @@ void WebSourceBufferImpl::removedFromMediaSource() { demuxer_ = NULL; } -} // namespace content +} // namespace media diff --git a/content/renderer/media/websourcebuffer_impl.h b/media/blink/websourcebuffer_impl.h similarity index 79% rename from content/renderer/media/websourcebuffer_impl.h rename to media/blink/websourcebuffer_impl.h index b0e4fa686aed73..e9381788adb300 100644 --- a/content/renderer/media/websourcebuffer_impl.h +++ b/media/blink/websourcebuffer_impl.h @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_RENDERER_MEDIA_WEBSOURCEBUFFER_IMPL_H_ -#define CONTENT_RENDERER_MEDIA_WEBSOURCEBUFFER_IMPL_H_ +#ifndef MEDIA_BLINK_WEBSOURCEBUFFER_IMPL_H_ +#define MEDIA_BLINK_WEBSOURCEBUFFER_IMPL_H_ #include @@ -14,13 +14,10 @@ namespace media { class ChunkDemuxer; -} - -namespace content { class WebSourceBufferImpl : public blink::WebSourceBuffer { public: - WebSourceBufferImpl(const std::string& id, media::ChunkDemuxer* demuxer); + WebSourceBufferImpl(const std::string& id, ChunkDemuxer* demuxer); virtual ~WebSourceBufferImpl(); // blink::WebSourceBuffer implementation. @@ -39,7 +36,7 @@ class WebSourceBufferImpl : public blink::WebSourceBuffer { private: std::string id_; - media::ChunkDemuxer* demuxer_; // Owned by WebMediaPlayerImpl. + ChunkDemuxer* demuxer_; // Owned by WebMediaPlayerImpl. // Controls the offset applied to timestamps when processing appended media // segments. It is initially 0, which indicates that no offset is being @@ -52,6 +49,6 @@ class WebSourceBufferImpl : public blink::WebSourceBuffer { DISALLOW_COPY_AND_ASSIGN(WebSourceBufferImpl); }; -} // namespace content +} // namespace media -#endif // CONTENT_RENDERER_MEDIA_WEBSOURCEBUFFER_IMPL_H_ +#endif // MEDIA_BLINK_WEBSOURCEBUFFER_IMPL_H_