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

Side by Side Diff: content/browser/renderer_host/media/media_stream_manager.cc

Issue 2696533002: Rmoving the notion of task runner from MediaStreamProvider interface. (Closed)
Patch Set: Created 3 years, 10 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
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/browser/renderer_host/media/media_stream_manager.h" 5 #include "content/browser/renderer_host/media/media_stream_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 1209 matching lines...) Expand 10 before | Expand all | Expand 10 after
1220 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1220 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1221 DCHECK(!device_task_runner_.get()); 1221 DCHECK(!device_task_runner_.get());
1222 device_task_runner_ = audio_manager_->GetTaskRunner(); 1222 device_task_runner_ = audio_manager_->GetTaskRunner();
1223 1223
1224 // TODO(dalecurtis): Remove ScopedTracker below once crbug.com/457525 is 1224 // TODO(dalecurtis): Remove ScopedTracker below once crbug.com/457525 is
1225 // fixed. 1225 // fixed.
1226 tracked_objects::ScopedTracker tracking_profile2( 1226 tracked_objects::ScopedTracker tracking_profile2(
1227 FROM_HERE_WITH_EXPLICIT_FUNCTION( 1227 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1228 "457525 MediaStreamManager::InitializeDeviceManagersOnIOThread 2")); 1228 "457525 MediaStreamManager::InitializeDeviceManagersOnIOThread 2"));
1229 audio_input_device_manager_ = new AudioInputDeviceManager(audio_manager_); 1229 audio_input_device_manager_ = new AudioInputDeviceManager(audio_manager_);
1230 audio_input_device_manager_->Register(this, device_task_runner_); 1230 audio_input_device_manager_->RegisterListener(this);
1231 1231
1232 // TODO(dalecurtis): Remove ScopedTracker below once crbug.com/457525 is 1232 // TODO(dalecurtis): Remove ScopedTracker below once crbug.com/457525 is
1233 // fixed. 1233 // fixed.
1234 tracked_objects::ScopedTracker tracking_profile3( 1234 tracked_objects::ScopedTracker tracking_profile3(
1235 FROM_HERE_WITH_EXPLICIT_FUNCTION( 1235 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1236 "457525 MediaStreamManager::InitializeDeviceManagersOnIOThread 3")); 1236 "457525 MediaStreamManager::InitializeDeviceManagersOnIOThread 3"));
1237 // We want to be notified of IO message loop destruction to delete the thread 1237 // We want to be notified of IO message loop destruction to delete the thread
1238 // and the device managers. 1238 // and the device managers.
1239 base::MessageLoop::current()->AddDestructionObserver(this); 1239 base::MessageLoop::current()->AddDestructionObserver(this);
1240 1240
1241 // TODO(dalecurtis): Remove ScopedTracker below once crbug.com/457525 is 1241 // TODO(dalecurtis): Remove ScopedTracker below once crbug.com/457525 is
1242 // fixed. 1242 // fixed.
1243 tracked_objects::ScopedTracker tracking_profile4( 1243 tracked_objects::ScopedTracker tracking_profile4(
1244 FROM_HERE_WITH_EXPLICIT_FUNCTION( 1244 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1245 "457525 MediaStreamManager::InitializeDeviceManagersOnIOThread 4")); 1245 "457525 MediaStreamManager::InitializeDeviceManagersOnIOThread 4"));
1246 video_capture_manager_ =
1247 new VideoCaptureManager(media::VideoCaptureDeviceFactory::CreateFactory(
1248 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI)));
1249 #if defined(OS_WIN) 1246 #if defined(OS_WIN)
1250 // Use an STA Video Capture Thread to try to avoid crashes on enumeration of 1247 // Use an STA Video Capture Thread to try to avoid crashes on enumeration of
1251 // buggy third party Direct Show modules, http://crbug.com/428958. 1248 // buggy third party Direct Show modules, http://crbug.com/428958.
1252 video_capture_thread_.init_com_with_mta(false); 1249 video_capture_thread_.init_com_with_mta(false);
1253 CHECK(video_capture_thread_.Start()); 1250 CHECK(video_capture_thread_.Start());
1254 video_capture_manager_->Register(this, video_capture_thread_.task_runner()); 1251 video_capture_manager_ = new VideoCaptureManager(
1252 media::VideoCaptureDeviceFactory::CreateFactory(
1253 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI)),
1254 video_capture_thread_.task_runner());
1255 #else 1255 #else
1256 video_capture_manager_->Register(this, device_task_runner_); 1256 video_capture_manager_ = new VideoCaptureManager(
1257 media::VideoCaptureDeviceFactory::CreateFactory(
1258 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI)),
1259 device_task_runner_);
1257 #endif 1260 #endif
1258 1261
1262 video_capture_manager_->RegisterListener(this);
1263
1259 media_devices_manager_.reset( 1264 media_devices_manager_.reset(
1260 new MediaDevicesManager(audio_manager_, video_capture_manager_, this)); 1265 new MediaDevicesManager(audio_manager_, video_capture_manager_, this));
1261 } 1266 }
1262 1267
1263 void MediaStreamManager::Opened(MediaStreamType stream_type, 1268 void MediaStreamManager::Opened(MediaStreamType stream_type,
1264 int capture_session_id) { 1269 int capture_session_id) {
1265 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1270 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1266 DVLOG(1) << "Opened({stream_type = " << stream_type << "} " 1271 DVLOG(1) << "Opened({stream_type = " << stream_type << "} "
1267 << "{capture_session_id = " << capture_session_id << "})"; 1272 << "{capture_session_id = " << capture_session_id << "})";
1268 // Find the request(s) containing this device and mark it as used. 1273 // Find the request(s) containing this device and mark it as used.
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
1536 } 1541 }
1537 } 1542 }
1538 1543
1539 CancelRequest(label); 1544 CancelRequest(label);
1540 } 1545 }
1541 1546
1542 void MediaStreamManager::WillDestroyCurrentMessageLoop() { 1547 void MediaStreamManager::WillDestroyCurrentMessageLoop() {
1543 DVLOG(3) << "MediaStreamManager::WillDestroyCurrentMessageLoop()"; 1548 DVLOG(3) << "MediaStreamManager::WillDestroyCurrentMessageLoop()";
1544 DCHECK(CalledOnIOThread()); 1549 DCHECK(CalledOnIOThread());
1545 DCHECK(requests_.empty()); 1550 DCHECK(requests_.empty());
1546 if (device_task_runner_.get()) { 1551 if (media_devices_manager_)
1547 media_devices_manager_->StopMonitoring(); 1552 media_devices_manager_->StopMonitoring();
1553 if (video_capture_manager_)
1554 video_capture_manager_->UnregisterListener();
1555 if (audio_input_device_manager_)
1556 audio_input_device_manager_->UnregisterListener();
1548 1557
1549 video_capture_manager_->Unregister(); 1558 device_task_runner_ = nullptr;
1550 audio_input_device_manager_->Unregister(); 1559 audio_input_device_manager_ = nullptr;
1551 device_task_runner_ = NULL; 1560 video_capture_manager_ = nullptr;
1552 } 1561 media_devices_manager_ = nullptr;
1553 1562 g_media_stream_manager_tls_ptr.Pointer()->Set(nullptr);
1554 audio_input_device_manager_ = NULL;
1555 video_capture_manager_ = NULL;
1556 media_devices_manager_ = NULL;
1557 g_media_stream_manager_tls_ptr.Pointer()->Set(NULL);
1558 } 1563 }
1559 1564
1560 void MediaStreamManager::NotifyDevicesChanged( 1565 void MediaStreamManager::NotifyDevicesChanged(
1561 MediaDeviceType device_type, 1566 MediaDeviceType device_type,
1562 const MediaDeviceInfoArray& devices) { 1567 const MediaDeviceInfoArray& devices) {
1563 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1568 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1564 MediaObserver* media_observer = 1569 MediaObserver* media_observer =
1565 GetContentClient()->browser()->GetMediaObserver(); 1570 GetContentClient()->browser()->GetMediaObserver();
1566 1571
1567 MediaStreamType stream_type = ConvertToMediaStreamType(device_type); 1572 MediaStreamType stream_type = ConvertToMediaStreamType(device_type);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1606 return true; 1611 return true;
1607 } 1612 }
1608 1613
1609 MediaStreamProvider* MediaStreamManager::GetDeviceManager( 1614 MediaStreamProvider* MediaStreamManager::GetDeviceManager(
1610 MediaStreamType stream_type) { 1615 MediaStreamType stream_type) {
1611 if (IsVideoMediaType(stream_type)) 1616 if (IsVideoMediaType(stream_type))
1612 return video_capture_manager(); 1617 return video_capture_manager();
1613 else if (IsAudioInputMediaType(stream_type)) 1618 else if (IsAudioInputMediaType(stream_type))
1614 return audio_input_device_manager(); 1619 return audio_input_device_manager();
1615 NOTREACHED(); 1620 NOTREACHED();
1616 return NULL; 1621 return nullptr;
1617 } 1622 }
1618 1623
1619 void MediaStreamManager::OnMediaStreamUIWindowId(MediaStreamType video_type, 1624 void MediaStreamManager::OnMediaStreamUIWindowId(MediaStreamType video_type,
1620 StreamDeviceInfoArray devices, 1625 StreamDeviceInfoArray devices,
1621 gfx::NativeViewId window_id) { 1626 gfx::NativeViewId window_id) {
1622 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1627 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1623 if (!window_id) 1628 if (!window_id)
1624 return; 1629 return;
1625 1630
1626 if (video_type != MEDIA_DESKTOP_VIDEO_CAPTURE) 1631 if (video_type != MEDIA_DESKTOP_VIDEO_CAPTURE)
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
1748 return devices; 1753 return devices;
1749 1754
1750 for (auto& device : devices) { 1755 for (auto& device : devices) {
1751 device.camera_calibration = 1756 device.camera_calibration =
1752 video_capture_manager()->GetCameraCalibration(device.id); 1757 video_capture_manager()->GetCameraCalibration(device.id);
1753 } 1758 }
1754 return devices; 1759 return devices;
1755 } 1760 }
1756 1761
1757 } // namespace content 1762 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698