OLD | NEW |
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_BASE_AUDIO_PARAMETERS_H_ | 5 #ifndef MEDIA_BASE_AUDIO_PARAMETERS_H_ |
6 #define MEDIA_BASE_AUDIO_PARAMETERS_H_ | 6 #define MEDIA_BASE_AUDIO_PARAMETERS_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 int8_t audio[1]; | 65 int8_t audio[1]; |
66 }; | 66 }; |
67 | 67 |
68 class MEDIA_EXPORT AudioParameters { | 68 class MEDIA_EXPORT AudioParameters { |
69 public: | 69 public: |
70 // TODO(miu): Rename this enum to something that correctly reflects its | 70 // TODO(miu): Rename this enum to something that correctly reflects its |
71 // semantics, such as "TransportScheme." | 71 // semantics, such as "TransportScheme." |
72 enum Format { | 72 enum Format { |
73 AUDIO_PCM_LINEAR = 0, // PCM is 'raw' amplitude samples. | 73 AUDIO_PCM_LINEAR = 0, // PCM is 'raw' amplitude samples. |
74 AUDIO_PCM_LOW_LATENCY, // Linear PCM, low latency requested. | 74 AUDIO_PCM_LOW_LATENCY, // Linear PCM, low latency requested. |
| 75 AUDIO_BITSTREAM_AC3, // Compressed AC3 bitstream. |
| 76 AUDIO_BITSTREAM_EAC3, // Compressed E-AC3 bitstream. |
75 AUDIO_FAKE, // Creates a fake AudioOutputStream object. | 77 AUDIO_FAKE, // Creates a fake AudioOutputStream object. |
76 AUDIO_FORMAT_LAST = AUDIO_FAKE, // Only used for validation of format. | 78 AUDIO_FORMAT_LAST = AUDIO_FAKE, // Only used for validation of format. |
77 }; | 79 }; |
78 | 80 |
79 enum { | 81 enum { |
80 // Telephone quality sample rate, mostly for speech-only audio. | 82 // Telephone quality sample rate, mostly for speech-only audio. |
81 kTelephoneSampleRate = 8000, | 83 kTelephoneSampleRate = 8000, |
82 // CD sampling rate is 44.1 KHz or conveniently 2x2x3x3x5x5x7x7. | 84 // CD sampling rate is 44.1 KHz or conveniently 2x2x3x3x5x5x7x7. |
83 kAudioCDSampleRate = 44100, | 85 kAudioCDSampleRate = 44100, |
84 }; | 86 }; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 // can lead to audio/video sync drift. | 134 // can lead to audio/video sync drift. |
133 double GetMicrosecondsPerFrame() const; | 135 double GetMicrosecondsPerFrame() const; |
134 | 136 |
135 // Returns the duration of this buffer as calculated from frames_per_buffer() | 137 // Returns the duration of this buffer as calculated from frames_per_buffer() |
136 // and sample_rate(). | 138 // and sample_rate(). |
137 base::TimeDelta GetBufferDuration() const; | 139 base::TimeDelta GetBufferDuration() const; |
138 | 140 |
139 // Comparison with other AudioParams. | 141 // Comparison with other AudioParams. |
140 bool Equals(const AudioParameters& other) const; | 142 bool Equals(const AudioParameters& other) const; |
141 | 143 |
| 144 // Return true if |format_| is compressed bitstream. |
| 145 bool IsBitstreamFormat() const; |
| 146 |
142 void set_format(Format format) { format_ = format; } | 147 void set_format(Format format) { format_ = format; } |
143 Format format() const { return format_; } | 148 Format format() const { return format_; } |
144 | 149 |
145 // A setter for channel_layout_ is intentionally excluded. | 150 // A setter for channel_layout_ is intentionally excluded. |
146 ChannelLayout channel_layout() const { return channel_layout_; } | 151 ChannelLayout channel_layout() const { return channel_layout_; } |
147 | 152 |
148 // The number of channels is usually computed from channel_layout_. Setting | 153 // The number of channels is usually computed from channel_layout_. Setting |
149 // this explictly is only required with CHANNEL_LAYOUT_DISCRETE. | 154 // this explictly is only required with CHANNEL_LAYOUT_DISCRETE. |
150 void set_channels_for_discrete(int channels) { | 155 void set_channels_for_discrete(int channels) { |
151 DCHECK(channel_layout_ == CHANNEL_LAYOUT_DISCRETE || | 156 DCHECK(channel_layout_ == CHANNEL_LAYOUT_DISCRETE || |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 if (a.sample_rate() != b.sample_rate()) | 228 if (a.sample_rate() != b.sample_rate()) |
224 return a.sample_rate() < b.sample_rate(); | 229 return a.sample_rate() < b.sample_rate(); |
225 if (a.bits_per_sample() != b.bits_per_sample()) | 230 if (a.bits_per_sample() != b.bits_per_sample()) |
226 return a.bits_per_sample() < b.bits_per_sample(); | 231 return a.bits_per_sample() < b.bits_per_sample(); |
227 return a.frames_per_buffer() < b.frames_per_buffer(); | 232 return a.frames_per_buffer() < b.frames_per_buffer(); |
228 } | 233 } |
229 | 234 |
230 } // namespace media | 235 } // namespace media |
231 | 236 |
232 #endif // MEDIA_BASE_AUDIO_PARAMETERS_H_ | 237 #endif // MEDIA_BASE_AUDIO_PARAMETERS_H_ |
OLD | NEW |