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

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

Issue 10537121: Adds AudioDevice factory for all audio clients in Chrome (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Moved factory to content/renderer/media Created 8 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_view_impl.h" 5 #include "content/renderer/render_view_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 #include "content/renderer/devtools_agent.h" 64 #include "content/renderer/devtools_agent.h"
65 #include "content/renderer/dom_automation_controller.h" 65 #include "content/renderer/dom_automation_controller.h"
66 #include "content/renderer/dom_storage/webstoragenamespace_impl.h" 66 #include "content/renderer/dom_storage/webstoragenamespace_impl.h"
67 #include "content/renderer/external_popup_menu.h" 67 #include "content/renderer/external_popup_menu.h"
68 #include "content/renderer/geolocation_dispatcher.h" 68 #include "content/renderer/geolocation_dispatcher.h"
69 #include "content/renderer/gpu/compositor_thread.h" 69 #include "content/renderer/gpu/compositor_thread.h"
70 #include "content/renderer/idle_user_detector.h" 70 #include "content/renderer/idle_user_detector.h"
71 #include "content/renderer/input_tag_speech_dispatcher.h" 71 #include "content/renderer/input_tag_speech_dispatcher.h"
72 #include "content/renderer/java/java_bridge_dispatcher.h" 72 #include "content/renderer/java/java_bridge_dispatcher.h"
73 #include "content/renderer/load_progress_tracker.h" 73 #include "content/renderer/load_progress_tracker.h"
74 #include "content/renderer/media/audio_device.h"
75 #include "content/renderer/media/audio_device_factory.h"
74 #include "content/renderer/media/audio_message_filter.h" 76 #include "content/renderer/media/audio_message_filter.h"
75 #include "content/renderer/media/media_stream_dependency_factory.h" 77 #include "content/renderer/media/media_stream_dependency_factory.h"
76 #include "content/renderer/media/media_stream_dispatcher.h" 78 #include "content/renderer/media/media_stream_dispatcher.h"
77 #include "content/renderer/media/media_stream_impl.h" 79 #include "content/renderer/media/media_stream_impl.h"
78 #include "content/renderer/media/render_audiosourceprovider.h" 80 #include "content/renderer/media/render_audiosourceprovider.h"
79 #include "content/renderer/media/render_media_log.h" 81 #include "content/renderer/media/render_media_log.h"
80 #include "content/renderer/media/renderer_gpu_video_decoder_factories.h" 82 #include "content/renderer/media/renderer_gpu_video_decoder_factories.h"
81 #include "content/renderer/mhtml_generator.h" 83 #include "content/renderer/mhtml_generator.h"
82 #include "content/renderer/notification_provider.h" 84 #include "content/renderer/notification_provider.h"
83 #include "content/renderer/p2p/socket_dispatcher.h" 85 #include "content/renderer/p2p/socket_dispatcher.h"
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 560
559 // Ensure we start with a valid next_page_id_ from the browser. 561 // Ensure we start with a valid next_page_id_ from the browser.
560 DCHECK_GE(next_page_id_, 0); 562 DCHECK_GE(next_page_id_, 0);
561 563
562 #if defined(ENABLE_NOTIFICATIONS) 564 #if defined(ENABLE_NOTIFICATIONS)
563 notification_provider_ = new NotificationProvider(this); 565 notification_provider_ = new NotificationProvider(this);
564 #else 566 #else
565 notification_provider_ = NULL; 567 notification_provider_ = NULL;
566 #endif 568 #endif
567 569
570 // Create the audio device factory to ensure that it can be injected into
571 // WebRTC, WebAudio and HTML5 <audio>/<video> clients.
572 audio_device_factory_.reset(
573 new AudioDeviceFactory<AudioDevice, AudioMessageFilter>(
574 RenderThreadImpl::current()->audio_message_filter()));
575
568 webwidget_ = WebView::create(this); 576 webwidget_ = WebView::create(this);
569 webwidget_mouse_lock_target_.reset(new WebWidgetLockTarget(webwidget_)); 577 webwidget_mouse_lock_target_.reset(new WebWidgetLockTarget(webwidget_));
570 578
571 if (counter) { 579 if (counter) {
572 shared_popup_counter_ = counter; 580 shared_popup_counter_ = counter;
573 // Only count this if it isn't swapped out upon creation. 581 // Only count this if it isn't swapped out upon creation.
574 if (!swapped_out) 582 if (!swapped_out)
575 shared_popup_counter_->data++; 583 shared_popup_counter_->data++;
576 decrement_shared_popup_at_destruction_ = true; 584 decrement_shared_popup_at_destruction_ = true;
577 } else { 585 } else {
(...skipping 1744 matching lines...) Expand 10 before | Expand all | Expand 10 after
2322 return new WebSharedWorkerProxy(RenderThreadImpl::current(), 2330 return new WebSharedWorkerProxy(RenderThreadImpl::current(),
2323 document_id, 2331 document_id,
2324 exists, 2332 exists,
2325 route_id, 2333 route_id,
2326 routing_id_); 2334 routing_id_);
2327 } 2335 }
2328 } 2336 }
2329 2337
2330 WebMediaPlayer* RenderViewImpl::createMediaPlayer( 2338 WebMediaPlayer* RenderViewImpl::createMediaPlayer(
2331 WebFrame* frame, WebMediaPlayerClient* client) { 2339 WebFrame* frame, WebMediaPlayerClient* client) {
2340 DVLOG(1) << "RenderViewImpl::createMediaPlayer()";
2332 FOR_EACH_OBSERVER( 2341 FOR_EACH_OBSERVER(
2333 RenderViewObserver, observers_, WillCreateMediaPlayer(frame, client)); 2342 RenderViewObserver, observers_, WillCreateMediaPlayer(frame, client));
2334 2343
2335 #if defined(OS_ANDROID) 2344 #if defined(OS_ANDROID)
2336 // TODO(qinmin): upstream the implementation of StreamTextureFactoryImpl 2345 // TODO(qinmin): upstream the implementation of StreamTextureFactoryImpl
2337 // to replace the NULL param here. 2346 // to replace the NULL param here.
2338 return new webkit_media::WebMediaPlayerAndroid( 2347 return new webkit_media::WebMediaPlayerAndroid(
2339 frame, client, cookieJar(frame), media_player_manager_.get(), NULL); 2348 frame, client, cookieJar(frame), media_player_manager_.get(), NULL);
2340 #endif 2349 #endif
2341 2350
2342 media::MessageLoopFactory* message_loop_factory = 2351 media::MessageLoopFactory* message_loop_factory =
2343 new media::MessageLoopFactory(); 2352 new media::MessageLoopFactory();
2344 media::FilterCollection* collection = new media::FilterCollection(); 2353 media::FilterCollection* collection = new media::FilterCollection();
2345 RenderMediaLog* render_media_log = new RenderMediaLog(); 2354 RenderMediaLog* render_media_log = new RenderMediaLog();
2346 2355
2347 RenderAudioSourceProvider* audio_source_provider = NULL; 2356 RenderAudioSourceProvider* audio_source_provider = NULL;
2348 2357
2349 // Add in any custom filter factories first. 2358 // Add in any custom filter factories first.
2350 const CommandLine* cmd_line = CommandLine::ForCurrentProcess(); 2359 const CommandLine* cmd_line = CommandLine::ForCurrentProcess();
2351 if (!cmd_line->HasSwitch(switches::kDisableAudio)) { 2360 if (!cmd_line->HasSwitch(switches::kDisableAudio)) {
2352 // audio_source_provider is a "provider" to WebKit, and a sink 2361 // audio_source_provider is a "provider" to WebKit, and a sink
2353 // from the perspective of the audio renderer. 2362 // from the perspective of the audio renderer.
2354 audio_source_provider = new RenderAudioSourceProvider(); 2363 audio_source_provider = new RenderAudioSourceProvider(
2364 audio_device_factory());
2355 2365
2356 // Add the chrome specific audio renderer, using audio_source_provider 2366 // Add the chrome specific audio renderer, using audio_source_provider
2357 // as the sink. 2367 // as the sink.
2358 media::AudioRendererImpl* audio_renderer = 2368 media::AudioRendererImpl* audio_renderer =
2359 new media::AudioRendererImpl(audio_source_provider); 2369 new media::AudioRendererImpl(audio_source_provider);
2360 collection->AddAudioRenderer(audio_renderer); 2370 collection->AddAudioRenderer(audio_renderer);
2361 } 2371 }
2362 2372
2363 // Currently only cros/arm has any HW video decode support in 2373 // Currently only cros/arm has any HW video decode support in
2364 // GpuVideoDecodeAccelerator so we don't even try to use it on other 2374 // GpuVideoDecodeAccelerator so we don't even try to use it on other
(...skipping 1125 matching lines...) Expand 10 before | Expand all | Expand 10 after
3490 return; 3500 return;
3491 3501
3492 #if defined(ENABLE_WEBRTC) 3502 #if defined(ENABLE_WEBRTC)
3493 if (!p2p_socket_dispatcher_) 3503 if (!p2p_socket_dispatcher_)
3494 p2p_socket_dispatcher_ = new content::P2PSocketDispatcher(this); 3504 p2p_socket_dispatcher_ = new content::P2PSocketDispatcher(this);
3495 3505
3496 if (!media_stream_dispatcher_) 3506 if (!media_stream_dispatcher_)
3497 media_stream_dispatcher_ = new MediaStreamDispatcher(this); 3507 media_stream_dispatcher_ = new MediaStreamDispatcher(this);
3498 3508
3499 if (!media_stream_impl_) { 3509 if (!media_stream_impl_) {
3510 DCHECK(audio_device_factory());
3500 MediaStreamDependencyFactory* factory = new MediaStreamDependencyFactory( 3511 MediaStreamDependencyFactory* factory = new MediaStreamDependencyFactory(
3501 RenderThreadImpl::current()->video_capture_impl_manager()); 3512 RenderThreadImpl::current()->video_capture_impl_manager());
3502 media_stream_impl_ = new MediaStreamImpl( 3513 media_stream_impl_ = new MediaStreamImpl(
3503 this, 3514 this,
3504 media_stream_dispatcher_, 3515 media_stream_dispatcher_,
3505 p2p_socket_dispatcher_, 3516 p2p_socket_dispatcher_,
3506 RenderThreadImpl::current()->video_capture_impl_manager(), 3517 RenderThreadImpl::current()->video_capture_impl_manager(),
3507 factory); 3518 factory,
3519 audio_device_factory());
3508 } 3520 }
3509 #endif 3521 #endif
3510 } 3522 }
3511 3523
3512 void RenderViewImpl::didChangeContentsSize(WebFrame* frame, 3524 void RenderViewImpl::didChangeContentsSize(WebFrame* frame,
3513 const WebSize& size) { 3525 const WebSize& size) {
3514 if (webview()->mainFrame() != frame) 3526 if (webview()->mainFrame() != frame)
3515 return; 3527 return;
3516 WebView* frameView = frame->view(); 3528 WebView* frameView = frame->view();
3517 if (!frameView) 3529 if (!frameView)
(...skipping 2061 matching lines...) Expand 10 before | Expand all | Expand 10 after
5579 WebKit::WebPageVisibilityStateVisible; 5591 WebKit::WebPageVisibilityStateVisible;
5580 WebKit::WebPageVisibilityState override_state = current_state; 5592 WebKit::WebPageVisibilityState override_state = current_state;
5581 if (content::GetContentClient()->renderer()-> 5593 if (content::GetContentClient()->renderer()->
5582 ShouldOverridePageVisibilityState(this, 5594 ShouldOverridePageVisibilityState(this,
5583 &override_state)) 5595 &override_state))
5584 return override_state; 5596 return override_state;
5585 return current_state; 5597 return current_state;
5586 } 5598 }
5587 5599
5588 WebKit::WebUserMediaClient* RenderViewImpl::userMediaClient() { 5600 WebKit::WebUserMediaClient* RenderViewImpl::userMediaClient() {
5601 DVLOG(1) << "RenderViewImpl::userMediaClient()";
5589 EnsureMediaStreamImpl(); 5602 EnsureMediaStreamImpl();
5590 return media_stream_impl_; 5603 return media_stream_impl_;
5591 } 5604 }
5592 5605
5593 void RenderViewImpl::OnAsyncFileOpened( 5606 void RenderViewImpl::OnAsyncFileOpened(
5594 base::PlatformFileError error_code, 5607 base::PlatformFileError error_code,
5595 IPC::PlatformFileForTransit file_for_transit, 5608 IPC::PlatformFileForTransit file_for_transit,
5596 int message_id) { 5609 int message_id) {
5597 pepper_delegate_.OnAsyncFileOpened( 5610 pepper_delegate_.OnAsyncFileOpened(
5598 error_code, 5611 error_code,
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
5658 bool RenderViewImpl::WebWidgetHandlesCompositorScheduling() const { 5671 bool RenderViewImpl::WebWidgetHandlesCompositorScheduling() const {
5659 return !!RenderThreadImpl::current()->compositor_thread(); 5672 return !!RenderThreadImpl::current()->compositor_thread();
5660 } 5673 }
5661 5674
5662 void RenderViewImpl::OnJavaBridgeInit() { 5675 void RenderViewImpl::OnJavaBridgeInit() {
5663 DCHECK(!java_bridge_dispatcher_); 5676 DCHECK(!java_bridge_dispatcher_);
5664 #if defined(ENABLE_JAVA_BRIDGE) 5677 #if defined(ENABLE_JAVA_BRIDGE)
5665 java_bridge_dispatcher_ = new JavaBridgeDispatcher(this); 5678 java_bridge_dispatcher_ = new JavaBridgeDispatcher(this);
5666 #endif 5679 #endif
5667 } 5680 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698