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

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 1560953002: Implement fallback from WMPI to WMPA. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove completed TODO. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/browser/gpu/gpu_data_manager_impl_private.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_frame_impl.h" 5 #include "content/renderer/render_frame_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 #include "content/renderer/skia_benchmarking_extension.h" 125 #include "content/renderer/skia_benchmarking_extension.h"
126 #include "content/renderer/stats_collection_controller.h" 126 #include "content/renderer/stats_collection_controller.h"
127 #include "content/renderer/usb/web_usb_client_impl.h" 127 #include "content/renderer/usb/web_usb_client_impl.h"
128 #include "content/renderer/wake_lock/wake_lock_dispatcher.h" 128 #include "content/renderer/wake_lock/wake_lock_dispatcher.h"
129 #include "content/renderer/web_frame_utils.h" 129 #include "content/renderer/web_frame_utils.h"
130 #include "content/renderer/web_ui_extension.h" 130 #include "content/renderer/web_ui_extension.h"
131 #include "content/renderer/websharedworker_proxy.h" 131 #include "content/renderer/websharedworker_proxy.h"
132 #include "crypto/sha2.h" 132 #include "crypto/sha2.h"
133 #include "gin/modules/module_registry.h" 133 #include "gin/modules/module_registry.h"
134 #include "media/audio/audio_output_device.h" 134 #include "media/audio/audio_output_device.h"
135 #include "media/base/android/media_codec_util.h"
135 #include "media/base/audio_renderer_mixer_input.h" 136 #include "media/base/audio_renderer_mixer_input.h"
136 #include "media/base/media_log.h" 137 #include "media/base/media_log.h"
137 #include "media/base/media_switches.h" 138 #include "media/base/media_switches.h"
138 #include "media/blink/url_index.h" 139 #include "media/blink/url_index.h"
139 #include "media/blink/webencryptedmediaclient_impl.h" 140 #include "media/blink/webencryptedmediaclient_impl.h"
140 #include "media/blink/webmediaplayer_impl.h" 141 #include "media/blink/webmediaplayer_impl.h"
141 #include "media/renderers/gpu_video_accelerator_factories.h" 142 #include "media/renderers/gpu_video_accelerator_factories.h"
142 #include "mojo/common/url_type_converters.h" 143 #include "mojo/common/url_type_converters.h"
143 #include "net/base/data_url.h" 144 #include "net/base/data_url.h"
144 #include "net/base/net_errors.h" 145 #include "net/base/net_errors.h"
(...skipping 2167 matching lines...) Expand 10 before | Expand all | Expand 10 after
2312 return NULL; 2313 return NULL;
2313 2314
2314 WebPluginParams params_to_use = params; 2315 WebPluginParams params_to_use = params;
2315 params_to_use.mimeType = WebString::fromUTF8(mime_type); 2316 params_to_use.mimeType = WebString::fromUTF8(mime_type);
2316 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); 2317 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */);
2317 #else 2318 #else
2318 return NULL; 2319 return NULL;
2319 #endif // defined(ENABLE_PLUGINS) 2320 #endif // defined(ENABLE_PLUGINS)
2320 } 2321 }
2321 2322
2323 #if defined(OS_ANDROID)
2324 // Checks whether we should use MediaPlayer to play a URL because it is likely
2325 // to be HLS.
2326 static bool IsHLSURL(GURL& url) {
watk 2016/01/06 01:17:21 The style guide says refs must be const (https://g
sandersd (OOO until July 31) 2016/01/06 01:27:01 Done.
2327 // Other schemes are not supported by MediaPlayer for HLS playback.
2328 if (!url.SchemeIsHTTPOrHTTPS() && !url.SchemeIsFile())
2329 return false;
2330
2331 std::string path = url.path();
2332 return base::EndsWith(path, ".m3u8", base::CompareCase::INSENSITIVE_ASCII);
2333 }
2334 #endif // defined(OS_ANDROID)
2335
2322 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( 2336 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
2323 blink::WebLocalFrame* frame, 2337 blink::WebLocalFrame* frame,
2324 const blink::WebURL& url, 2338 const blink::WebURL& url,
2325 WebMediaPlayerClient* client, 2339 WebMediaPlayerClient* client,
2326 WebMediaPlayerEncryptedMediaClient* encrypted_client, 2340 WebMediaPlayerEncryptedMediaClient* encrypted_client,
2327 WebContentDecryptionModule* initial_cdm, 2341 WebContentDecryptionModule* initial_cdm,
2328 const blink::WebString& sink_id) { 2342 const blink::WebString& sink_id) {
2329 #if defined(VIDEO_HOLE) 2343 #if defined(VIDEO_HOLE)
2330 if (!contains_media_player_) { 2344 if (!contains_media_player_) {
2331 render_view_->RegisterVideoHoleFrame(this); 2345 render_view_->RegisterVideoHoleFrame(this);
(...skipping 22 matching lines...) Expand all
2354 static_cast<RenderFrame*>(this), 2368 static_cast<RenderFrame*>(this),
2355 GetWebMediaPlayerDelegate()->has_played_media()), 2369 GetWebMediaPlayerDelegate()->has_played_media()),
2356 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), 2370 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(),
2357 render_thread->GetWorkerTaskRunner(), 2371 render_thread->GetWorkerTaskRunner(),
2358 render_thread->compositor_task_runner(), context_3d_cb, 2372 render_thread->compositor_task_runner(), context_3d_cb,
2359 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, 2373 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory,
2360 base::Unretained(blink::mainThreadIsolate())), 2374 base::Unretained(blink::mainThreadIsolate())),
2361 GetMediaPermission(), initial_cdm); 2375 GetMediaPermission(), initial_cdm);
2362 2376
2363 #if defined(OS_ANDROID) 2377 #if defined(OS_ANDROID)
2378 GURL gurl = url;
watk 2016/01/06 01:17:20 I'm guessing you can delete this and pass url dire
sandersd (OOO until July 31) 2016/01/06 01:27:01 And the world makes sense once again. (Done)
2364 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( 2379 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
2365 switches::kEnableUnifiedMediaPipeline)) { 2380 switches::kEnableUnifiedMediaPipeline) ||
2366 // TODO(sandersd): This check should be grown to include HLS and blacklist 2381 base::CommandLine::ForCurrentProcess()->HasSwitch(
2367 // checks. http://crbug.com/516765 2382 switches::kDisableAcceleratedVideoDecode) ||
2383 !media::MediaCodecUtil::IsMediaCodecAvailable() ||
2384 IsHLSURL(gurl)) {
2368 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); 2385 return CreateAndroidWebMediaPlayer(client, encrypted_client, params);
2369 } 2386 }
2370 #endif // defined(OS_ANDROID) 2387 #endif // defined(OS_ANDROID)
2371 2388
2372 #if defined(ENABLE_MOJO_MEDIA) && !defined(OS_ANDROID) 2389 #if defined(ENABLE_MOJO_MEDIA) && !defined(OS_ANDROID)
2373 scoped_ptr<media::RendererFactory> media_renderer_factory( 2390 scoped_ptr<media::RendererFactory> media_renderer_factory(
2374 new media::MojoRendererFactory(GetMediaServiceFactory())); 2391 new media::MojoRendererFactory(GetMediaServiceFactory()));
2375 #else 2392 #else
2376 scoped_ptr<media::RendererFactory> media_renderer_factory = 2393 scoped_ptr<media::RendererFactory> media_renderer_factory =
2377 GetContentClient()->renderer()->CreateMediaRendererFactory( 2394 GetContentClient()->renderer()->CreateMediaRendererFactory(
(...skipping 3306 matching lines...) Expand 10 before | Expand all | Expand 10 after
5684 media::ConvertToSwitchOutputDeviceCB(web_callbacks); 5701 media::ConvertToSwitchOutputDeviceCB(web_callbacks);
5685 scoped_refptr<media::AudioOutputDevice> device = 5702 scoped_refptr<media::AudioOutputDevice> device =
5686 AudioDeviceFactory::NewOutputDevice(routing_id_, 0, sink_id.utf8(), 5703 AudioDeviceFactory::NewOutputDevice(routing_id_, 0, sink_id.utf8(),
5687 security_origin); 5704 security_origin);
5688 media::OutputDeviceStatus status = device->GetDeviceStatus(); 5705 media::OutputDeviceStatus status = device->GetDeviceStatus();
5689 device->Stop(); 5706 device->Stop();
5690 callback.Run(status); 5707 callback.Run(status);
5691 } 5708 }
5692 5709
5693 } // namespace content 5710 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/gpu/gpu_data_manager_impl_private.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698