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

Side by Side Diff: media/audio/audio_parameters.h

Issue 1275783003: Add a virtual beamforming audio device on ChromeOS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use gfx::Point3F. Created 5 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 #ifndef MEDIA_AUDIO_AUDIO_PARAMETERS_H_ 5 #ifndef MEDIA_AUDIO_AUDIO_PARAMETERS_H_
6 #define MEDIA_AUDIO_AUDIO_PARAMETERS_H_ 6 #define MEDIA_AUDIO_AUDIO_PARAMETERS_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <string> 9 #include <string>
10 10
11 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "base/compiler_specific.h" 12 #include "base/compiler_specific.h"
13 #include "base/time/time.h" 13 #include "base/time/time.h"
14 #include "media/audio/point.h"
14 #include "media/base/audio_bus.h" 15 #include "media/base/audio_bus.h"
15 #include "media/base/channel_layout.h" 16 #include "media/base/channel_layout.h"
16 #include "media/base/media_export.h" 17 #include "media/base/media_export.h"
17 18
18 namespace media { 19 namespace media {
19 20
20 // Use a struct-in-struct approach to ensure that we can calculate the required 21 // Use a struct-in-struct approach to ensure that we can calculate the required
21 // size as sizeof(AudioInputBufferParameters) + #(bytes in audio buffer) without 22 // size as sizeof(AudioInputBufferParameters) + #(bytes in audio buffer) without
22 // using packing. Also align AudioInputBufferParameters instead of in 23 // using packing. Also align AudioInputBufferParameters instead of in
23 // AudioInputBuffer to be able to calculate size like so. Use a macro for the 24 // AudioInputBuffer to be able to calculate size like so. Use a macro for the
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 HOTWORD = 0x8, 80 HOTWORD = 0x8,
80 }; 81 };
81 82
82 AudioParameters(); 83 AudioParameters();
83 AudioParameters(Format format, 84 AudioParameters(Format format,
84 ChannelLayout channel_layout, 85 ChannelLayout channel_layout,
85 int sample_rate, 86 int sample_rate,
86 int bits_per_sample, 87 int bits_per_sample,
87 int frames_per_buffer); 88 int frames_per_buffer);
88 89
90 ~AudioParameters();
91
89 // Re-initializes all members. 92 // Re-initializes all members.
90 void Reset(Format format, 93 void Reset(Format format,
91 ChannelLayout channel_layout, 94 ChannelLayout channel_layout,
92 int sample_rate, 95 int sample_rate,
93 int bits_per_sample, 96 int bits_per_sample,
94 int frames_per_buffer); 97 int frames_per_buffer);
95 98
96 // Checks that all values are in the expected range. All limits are specified 99 // Checks that all values are in the expected range. All limits are specified
97 // in media::Limits. 100 // in media::Limits.
98 bool IsValid() const; 101 bool IsValid() const;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 int bits_per_sample() const { return bits_per_sample_; } 144 int bits_per_sample() const { return bits_per_sample_; }
142 145
143 void set_frames_per_buffer(int frames_per_buffer) { 146 void set_frames_per_buffer(int frames_per_buffer) {
144 frames_per_buffer_ = frames_per_buffer; 147 frames_per_buffer_ = frames_per_buffer;
145 } 148 }
146 int frames_per_buffer() const { return frames_per_buffer_; } 149 int frames_per_buffer() const { return frames_per_buffer_; }
147 150
148 void set_effects(int effects) { effects_ = effects; } 151 void set_effects(int effects) { effects_ = effects; }
149 int effects() const { return effects_; } 152 int effects() const { return effects_; }
150 153
151 AudioParameters(const AudioParameters&) = default; 154 void set_mic_positions(const std::vector<Point>& mic_positions) {
152 AudioParameters& operator=(const AudioParameters&) = default; 155 mic_positions_ = mic_positions;
156 }
157 const std::vector<Point>& mic_positions() const { return mic_positions_; }
158
159 AudioParameters(const AudioParameters&);
160 AudioParameters& operator=(const AudioParameters&);
153 161
154 private: 162 private:
155 Format format_; // Format of the stream. 163 Format format_; // Format of the stream.
156 ChannelLayout channel_layout_; // Order of surround sound channels. 164 ChannelLayout channel_layout_; // Order of surround sound channels.
157 int channels_; // Number of channels. Value set based on 165 int channels_; // Number of channels. Value set based on
158 // |channel_layout|. 166 // |channel_layout|.
159 int sample_rate_; // Sampling frequency/rate. 167 int sample_rate_; // Sampling frequency/rate.
160 int bits_per_sample_; // Number of bits per sample. 168 int bits_per_sample_; // Number of bits per sample.
161 int frames_per_buffer_; // Number of frames in a buffer. 169 int frames_per_buffer_; // Number of frames in a buffer.
162 int effects_; // Bitmask using PlatformEffectsMask. 170 int effects_; // Bitmask using PlatformEffectsMask.
171
172 // Microphone positions using Cartesian coordinates:
173 // x: the horizontal dimension, with positive to the right from the camera's
174 // perspective.
175 // y: the depth dimension, with positive forward from the camera's
176 // perspective.
177 // z: the vertical dimension, with positive upwards.
178 //
179 // Usually, the center of the microphone array will be treated as the origin
180 // (often the position of the camera).
181 //
182 // An empty vector indicates unknown positions.
183 std::vector<Point> mic_positions_;
163 }; 184 };
164 185
165 // Comparison is useful when AudioParameters is used with std structures. 186 // Comparison is useful when AudioParameters is used with std structures.
166 inline bool operator<(const AudioParameters& a, const AudioParameters& b) { 187 inline bool operator<(const AudioParameters& a, const AudioParameters& b) {
167 if (a.format() != b.format()) 188 if (a.format() != b.format())
168 return a.format() < b.format(); 189 return a.format() < b.format();
169 if (a.channels() != b.channels()) 190 if (a.channels() != b.channels())
170 return a.channels() < b.channels(); 191 return a.channels() < b.channels();
171 if (a.sample_rate() != b.sample_rate()) 192 if (a.sample_rate() != b.sample_rate())
172 return a.sample_rate() < b.sample_rate(); 193 return a.sample_rate() < b.sample_rate();
173 if (a.bits_per_sample() != b.bits_per_sample()) 194 if (a.bits_per_sample() != b.bits_per_sample())
174 return a.bits_per_sample() < b.bits_per_sample(); 195 return a.bits_per_sample() < b.bits_per_sample();
175 return a.frames_per_buffer() < b.frames_per_buffer(); 196 return a.frames_per_buffer() < b.frames_per_buffer();
176 } 197 }
177 198
178 } // namespace media 199 } // namespace media
179 200
180 #endif // MEDIA_AUDIO_AUDIO_PARAMETERS_H_ 201 #endif // MEDIA_AUDIO_AUDIO_PARAMETERS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698