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

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

Issue 23731007: Implicit audio output device selection for getUserMedia. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View 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 <list> 7 #include <list>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 device_it != devices->end(); ++device_it) { 733 device_it != devices->end(); ++device_it) {
734 if (IsAudioMediaType(device_it->device.type)) { 734 if (IsAudioMediaType(device_it->device.type)) {
735 // Store the native audio parameters in the device struct. 735 // Store the native audio parameters in the device struct.
736 // TODO(xians): Handle the tab capture sample rate/channel layout 736 // TODO(xians): Handle the tab capture sample rate/channel layout
737 // in AudioInputDeviceManager::Open(). 737 // in AudioInputDeviceManager::Open().
738 if (device_it->device.type != content::MEDIA_TAB_AUDIO_CAPTURE) { 738 if (device_it->device.type != content::MEDIA_TAB_AUDIO_CAPTURE) {
739 const StreamDeviceInfo* info = 739 const StreamDeviceInfo* info =
740 audio_input_device_manager_->GetOpenedDeviceInfoById( 740 audio_input_device_manager_->GetOpenedDeviceInfoById(
741 device_it->session_id); 741 device_it->session_id);
742 DCHECK_EQ(info->device.id, device_it->device.id); 742 DCHECK_EQ(info->device.id, device_it->device.id);
743 device_it->device.sample_rate = info->device.sample_rate; 743 device_it->device.input = info->device.input;
744 device_it->device.channel_layout = info->device.channel_layout; 744 device_it->device.matched_output = info->device.matched_output;
745 } 745 }
746 audio_devices.push_back(*device_it); 746 audio_devices.push_back(*device_it);
747 } else if (IsVideoMediaType(device_it->device.type)) { 747 } else if (IsVideoMediaType(device_it->device.type)) {
748 video_devices.push_back(*device_it); 748 video_devices.push_back(*device_it);
749 } else { 749 } else {
750 NOTREACHED(); 750 NOTREACHED();
751 } 751 }
752 } 752 }
753 753
754 request->requester->StreamGenerated(label, audio_devices, video_devices); 754 request->requester->StreamGenerated(label, audio_devices, video_devices);
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 // initialized. 942 // initialized.
943 if (device_info.device.type == content::MEDIA_TAB_AUDIO_CAPTURE) { 943 if (device_info.device.type == content::MEDIA_TAB_AUDIO_CAPTURE) {
944 const media::AudioParameters parameters = 944 const media::AudioParameters parameters =
945 audio_manager_->GetDefaultOutputStreamParameters(); 945 audio_manager_->GetDefaultOutputStreamParameters();
946 int sample_rate = parameters.sample_rate(); 946 int sample_rate = parameters.sample_rate();
947 // If we weren't able to get the native sampling rate or the sample_rate 947 // If we weren't able to get the native sampling rate or the sample_rate
948 // is outside the valid range for input devices set reasonable defaults. 948 // is outside the valid range for input devices set reasonable defaults.
949 if (sample_rate <= 0 || sample_rate > 96000) 949 if (sample_rate <= 0 || sample_rate > 96000)
950 sample_rate = 44100; 950 sample_rate = 44100;
951 951
952 device_info.device.sample_rate = sample_rate; 952 device_info.device.input.sample_rate = sample_rate;
953 device_info.device.channel_layout = media::CHANNEL_LAYOUT_STEREO; 953 device_info.device.input.channel_layout = media::CHANNEL_LAYOUT_STEREO;
954 } 954 }
955 } 955 }
956 956
957 // Set in_use to false to be able to track if this device has been 957 // Set in_use to false to be able to track if this device has been
958 // opened. in_use might be true if the device type can be used in more 958 // opened. in_use might be true if the device type can be used in more
959 // than one session. 959 // than one session.
960 device_info.in_use = false; 960 device_info.in_use = false;
961 961
962 device_info.session_id = 962 device_info.session_id =
963 GetDeviceManager(device_info.device.type)->Open(device_info); 963 GetDeviceManager(device_info.device.type)->Open(device_info);
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
1106 } 1106 }
1107 1107
1108 // Always do enumeration even though some enumeration is in progress, 1108 // Always do enumeration even though some enumeration is in progress,
1109 // because those enumeration commands could be sent before these devices 1109 // because those enumeration commands could be sent before these devices
1110 // change. 1110 // change.
1111 ++active_enumeration_ref_count_[stream_type]; 1111 ++active_enumeration_ref_count_[stream_type];
1112 GetDeviceManager(stream_type)->EnumerateDevices(stream_type); 1112 GetDeviceManager(stream_type)->EnumerateDevices(stream_type);
1113 } 1113 }
1114 1114
1115 } // namespace content 1115 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/media/audio_renderer_host.cc ('k') | content/common/media/media_stream_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698