Index: content/public/common/media_stream_request.h |
diff --git a/content/public/common/media_stream_request.h b/content/public/common/media_stream_request.h |
index cbbf232d1b31e74abc1731a346264096e7610de5..26fe9c1f8a59000ad9fab0b26b20b50115bca2a0 100644 |
--- a/content/public/common/media_stream_request.h |
+++ b/content/public/common/media_stream_request.h |
@@ -71,7 +71,8 @@ struct CONTENT_EXPORT MediaStreamDevice { |
const std::string& id, |
const std::string& name, |
int sample_rate, |
- int channel_layout); |
+ int channel_layout, |
+ int frames_per_buffer); |
~MediaStreamDevice(); |
@@ -81,20 +82,53 @@ struct CONTENT_EXPORT MediaStreamDevice { |
// The device's unique ID. |
std::string id; |
+ // The device id of a matched output device if any (otherwise empty). |
+ // Only applicable to audio devices. |
+ std::string matched_output_device_id; |
+ |
// The device's "friendly" name. Not guaranteed to be unique. |
std::string name; |
- // Preferred sample rate in samples per second for the device. |
- // Only utilized for audio devices. Will be set to 0 if the constructor |
- // with three parameters (intended for video) is used. |
- int sample_rate; |
- |
- // Preferred channel configuration for the device. |
- // Only utilized for audio devices. Will be set to 0 if the constructor |
- // with three parameters (intended for video) is used. |
- // TODO(henrika): ideally, we would like to use media::ChannelLayout here |
- // but including media/base/channel_layout.h violates checkdeps rules. |
- int channel_layout; |
+ // Contains properties that match directly with those with the same name |
+ // in media::AudioParameters. |
+ struct AudioDeviceParameters { |
+ AudioDeviceParameters() |
+ : sample_rate(), channel_layout(), frames_per_buffer() { |
+ } |
+ |
+ AudioDeviceParameters(int sample_rate, int channel_layout, |
+ int frames_per_buffer) |
+ : sample_rate(sample_rate), |
+ channel_layout(channel_layout), |
+ frames_per_buffer(frames_per_buffer) { |
+ } |
+ |
+ // Preferred sample rate in samples per second for the device. |
+ int sample_rate; |
+ |
+ // Preferred channel configuration for the device. |
+ // TODO(henrika): ideally, we would like to use media::ChannelLayout here |
+ // but including media/base/channel_layout.h violates checkdeps rules. |
+ int channel_layout; |
+ |
+ // Preferred number of frames per buffer for the device. This is filled |
+ // in on the browser side and can be used by the renderer to match the |
+ // expected browser side settings and avoid unnecessary buffering. |
+ // See media::AudioParameters for more. |
+ int frames_per_buffer; |
+ }; |
+ |
+ // These below two member variables are valid only when the type of device is |
+ // audio (i.e. IsAudioMediaType returns true). |
+ |
+ // Contains the device properties of the capture device. |
+ AudioDeviceParameters input; |
+ |
+ // If the capture device has an associated output device (e.g. headphones), |
+ // this will contain the properties for the output device. If no such device |
+ // exists (e.g. webcam w/mic), then the value of this member will be all |
+ // zeros. |
+ AudioDeviceParameters matched_output; |
}; |
typedef std::vector<MediaStreamDevice> MediaStreamDevices; |