| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 }; | 136 }; |
| 137 | 137 |
| 138 // Helper class for storage of fundamental audio parameters such as sample rate, | 138 // Helper class for storage of fundamental audio parameters such as sample rate, |
| 139 // number of channels, native buffer size etc. | 139 // number of channels, native buffer size etc. |
| 140 // Note that one audio frame can contain more than one channel sample and each | 140 // Note that one audio frame can contain more than one channel sample and each |
| 141 // sample is assumed to be a 16-bit PCM sample. Hence, one audio frame in | 141 // sample is assumed to be a 16-bit PCM sample. Hence, one audio frame in |
| 142 // stereo contains 2 * (16/8) = 4 bytes of data. | 142 // stereo contains 2 * (16/8) = 4 bytes of data. |
| 143 class AudioParameters { | 143 class AudioParameters { |
| 144 public: | 144 public: |
| 145 // This implementation does only support 16-bit PCM samples. | 145 // This implementation does only support 16-bit PCM samples. |
| 146 enum { kBitsPerSample = 16 }; | 146 static const size_t kBitsPerSample = 16; |
| 147 AudioParameters() | 147 AudioParameters() |
| 148 : sample_rate_(0), | 148 : sample_rate_(0), |
| 149 channels_(0), | 149 channels_(0), |
| 150 frames_per_buffer_(0), | 150 frames_per_buffer_(0), |
| 151 frames_per_10ms_buffer_(0) {} | 151 frames_per_10ms_buffer_(0) {} |
| 152 AudioParameters(int sample_rate, int channels, int frames_per_buffer) | 152 AudioParameters(int sample_rate, int channels, size_t frames_per_buffer) |
| 153 : sample_rate_(sample_rate), | 153 : sample_rate_(sample_rate), |
| 154 channels_(channels), | 154 channels_(channels), |
| 155 frames_per_buffer_(frames_per_buffer), | 155 frames_per_buffer_(frames_per_buffer), |
| 156 frames_per_10ms_buffer_(static_cast<size_t>(sample_rate / 100)) {} | 156 frames_per_10ms_buffer_(static_cast<size_t>(sample_rate / 100)) {} |
| 157 void reset(int sample_rate, int channels, int frames_per_buffer) { | 157 void reset(int sample_rate, int channels, size_t frames_per_buffer) { |
| 158 sample_rate_ = sample_rate; | 158 sample_rate_ = sample_rate; |
| 159 channels_ = channels; | 159 channels_ = channels; |
| 160 frames_per_buffer_ = frames_per_buffer; | 160 frames_per_buffer_ = frames_per_buffer; |
| 161 frames_per_10ms_buffer_ = static_cast<size_t>(sample_rate / 100); | 161 frames_per_10ms_buffer_ = static_cast<size_t>(sample_rate / 100); |
| 162 } | 162 } |
| 163 int bits_per_sample() const { return kBitsPerSample; } | 163 size_t bits_per_sample() const { return kBitsPerSample; } |
| 164 int sample_rate() const { return sample_rate_; } | 164 int sample_rate() const { return sample_rate_; } |
| 165 int channels() const { return channels_; } | 165 int channels() const { return channels_; } |
| 166 int frames_per_buffer() const { return frames_per_buffer_; } | 166 size_t frames_per_buffer() const { return frames_per_buffer_; } |
| 167 size_t frames_per_10ms_buffer() const { return frames_per_10ms_buffer_; } | 167 size_t frames_per_10ms_buffer() const { return frames_per_10ms_buffer_; } |
| 168 bool is_valid() const { | 168 bool is_valid() const { |
| 169 return ((sample_rate_ > 0) && (channels_ > 0) && (frames_per_buffer_ > 0)); | 169 return ((sample_rate_ > 0) && (channels_ > 0) && (frames_per_buffer_ > 0)); |
| 170 } | 170 } |
| 171 int GetBytesPerFrame() const { return channels_ * kBitsPerSample / 8; } | 171 size_t GetBytesPerFrame() const { return channels_ * kBitsPerSample / 8; } |
| 172 int GetBytesPerBuffer() const { | 172 size_t GetBytesPerBuffer() const { |
| 173 return frames_per_buffer_ * GetBytesPerFrame(); | 173 return frames_per_buffer_ * GetBytesPerFrame(); |
| 174 } | 174 } |
| 175 size_t GetBytesPer10msBuffer() const { | 175 size_t GetBytesPer10msBuffer() const { |
| 176 return frames_per_10ms_buffer_ * GetBytesPerFrame(); | 176 return frames_per_10ms_buffer_ * GetBytesPerFrame(); |
| 177 } | 177 } |
| 178 float GetBufferSizeInMilliseconds() const { | 178 float GetBufferSizeInMilliseconds() const { |
| 179 if (sample_rate_ == 0) | 179 if (sample_rate_ == 0) |
| 180 return 0.0f; | 180 return 0.0f; |
| 181 return frames_per_buffer_ / (sample_rate_ / 1000.0f); | 181 return frames_per_buffer_ / (sample_rate_ / 1000.0f); |
| 182 } | 182 } |
| 183 | 183 |
| 184 private: | 184 private: |
| 185 int sample_rate_; | 185 int sample_rate_; |
| 186 int channels_; | 186 int channels_; |
| 187 int frames_per_buffer_; | 187 size_t frames_per_buffer_; |
| 188 size_t frames_per_10ms_buffer_; | 188 size_t frames_per_10ms_buffer_; |
| 189 }; | 189 }; |
| 190 | 190 |
| 191 } // namespace webrtc | 191 } // namespace webrtc |
| 192 | 192 |
| 193 #endif // WEBRTC_AUDIO_DEVICE_AUDIO_DEVICE_DEFINES_H | 193 #endif // WEBRTC_AUDIO_DEVICE_AUDIO_DEVICE_DEFINES_H |
| OLD | NEW |