Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_BUFFER_H_ | 5 #ifndef MEDIA_BASE_AUDIO_BUFFER_H_ |
| 6 #define MEDIA_BASE_AUDIO_BUFFER_H_ | 6 #define MEDIA_BASE_AUDIO_BUFFER_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 57 static scoped_refptr<AudioBuffer> CopyFrom( | 57 static scoped_refptr<AudioBuffer> CopyFrom( |
| 58 SampleFormat sample_format, | 58 SampleFormat sample_format, |
| 59 ChannelLayout channel_layout, | 59 ChannelLayout channel_layout, |
| 60 int channel_count, | 60 int channel_count, |
| 61 int sample_rate, | 61 int sample_rate, |
| 62 int frame_count, | 62 int frame_count, |
| 63 const uint8_t* const* data, | 63 const uint8_t* const* data, |
| 64 const base::TimeDelta timestamp, | 64 const base::TimeDelta timestamp, |
| 65 scoped_refptr<AudioBufferMemoryPool> pool = nullptr); | 65 scoped_refptr<AudioBufferMemoryPool> pool = nullptr); |
| 66 | 66 |
| 67 // Create an AudioBuffer for compressed bitstream. Its channel data is copied | |
| 68 // from |data|, and the size is |data_size|. |data| must not be null and | |
| 69 // |frame_count| must be >= 0. | |
| 70 static scoped_refptr<AudioBuffer> CopyBitstreamFrom( | |
| 71 SampleFormat sample_format, | |
| 72 ChannelLayout channel_layout, | |
| 73 int channel_count, | |
| 74 int sample_rate, | |
| 75 int frame_count, | |
| 76 const uint8_t* const* data, | |
| 77 const size_t data_size, | |
| 78 const base::TimeDelta timestamp, | |
| 79 scoped_refptr<AudioBufferMemoryPool> pool = nullptr); | |
| 80 | |
| 67 // Create an AudioBuffer with |frame_count| frames. Buffer is allocated, but | 81 // Create an AudioBuffer with |frame_count| frames. Buffer is allocated, but |
| 68 // not initialized. Timestamp and duration are set to kNoTimestamp. For | 82 // not initialized. Timestamp and duration are set to kNoTimestamp. For |
| 69 // optimal efficiency when many buffers are being created, a | 83 // optimal efficiency when many buffers are being created, a |
| 70 // AudioBufferMemoryPool can be provided to avoid thrashing memory. | 84 // AudioBufferMemoryPool can be provided to avoid thrashing memory. |
| 71 static scoped_refptr<AudioBuffer> CreateBuffer( | 85 static scoped_refptr<AudioBuffer> CreateBuffer( |
| 72 SampleFormat sample_format, | 86 SampleFormat sample_format, |
| 73 ChannelLayout channel_layout, | 87 ChannelLayout channel_layout, |
| 74 int channel_count, | 88 int channel_count, |
| 75 int sample_rate, | 89 int sample_rate, |
| 76 int frame_count, | 90 int frame_count, |
| 77 scoped_refptr<AudioBufferMemoryPool> pool = nullptr); | 91 scoped_refptr<AudioBufferMemoryPool> pool = nullptr); |
| 78 | 92 |
| 93 // Create an AudioBuffer for compressed bitstream. Buffer is allocated, but | |
| 94 // not initialized. Timestamp and duration are set to kNoTimestamp. | |
| 95 static scoped_refptr<AudioBuffer> CreateBitstreamBuffer( | |
| 96 SampleFormat sample_format, | |
| 97 ChannelLayout channel_layout, | |
| 98 int channel_count, | |
| 99 int sample_rate, | |
| 100 int frame_count, | |
| 101 size_t data_size, | |
| 102 scoped_refptr<AudioBufferMemoryPool> pool = nullptr); | |
| 103 | |
| 79 // Create an empty AudioBuffer with |frame_count| frames. | 104 // Create an empty AudioBuffer with |frame_count| frames. |
| 80 static scoped_refptr<AudioBuffer> CreateEmptyBuffer( | 105 static scoped_refptr<AudioBuffer> CreateEmptyBuffer( |
| 81 ChannelLayout channel_layout, | 106 ChannelLayout channel_layout, |
| 82 int channel_count, | 107 int channel_count, |
| 83 int sample_rate, | 108 int sample_rate, |
| 84 int frame_count, | 109 int frame_count, |
| 85 const base::TimeDelta timestamp); | 110 const base::TimeDelta timestamp); |
| 86 | 111 |
| 87 // Create a AudioBuffer indicating we've reached end of stream. | 112 // Create a AudioBuffer indicating we've reached end of stream. |
| 88 // Calling any method other than end_of_stream() on the resulting buffer | 113 // Calling any method other than end_of_stream() on the resulting buffer |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 121 | 146 |
| 122 // Return the number of channels. | 147 // Return the number of channels. |
| 123 int channel_count() const { return channel_count_; } | 148 int channel_count() const { return channel_count_; } |
| 124 | 149 |
| 125 // Return the number of frames held. | 150 // Return the number of frames held. |
| 126 int frame_count() const { return adjusted_frame_count_; } | 151 int frame_count() const { return adjusted_frame_count_; } |
| 127 | 152 |
| 128 // Return the sample rate. | 153 // Return the sample rate. |
| 129 int sample_rate() const { return sample_rate_; } | 154 int sample_rate() const { return sample_rate_; } |
| 130 | 155 |
| 156 // Return the sample format. | |
|
DaleCurtis
2017/05/04 19:05:44
Can we drop this? And instead return IsBitstreamFo
AndyWu
2017/05/06 01:46:48
Done, you are right, IsBitstreamFormat() is enough
| |
| 157 SampleFormat sample_format() const { return sample_format_; } | |
| 158 | |
| 131 // Return the channel layout. | 159 // Return the channel layout. |
| 132 ChannelLayout channel_layout() const { return channel_layout_; } | 160 ChannelLayout channel_layout() const { return channel_layout_; } |
| 133 | 161 |
| 134 base::TimeDelta timestamp() const { return timestamp_; } | 162 base::TimeDelta timestamp() const { return timestamp_; } |
| 135 base::TimeDelta duration() const { return duration_; } | 163 base::TimeDelta duration() const { return duration_; } |
| 136 void set_timestamp(base::TimeDelta timestamp) { timestamp_ = timestamp; } | 164 void set_timestamp(base::TimeDelta timestamp) { timestamp_ = timestamp; } |
| 137 | 165 |
| 138 // If there's no data in this buffer, it represents end of stream. | 166 // If there's no data in this buffer, it represents end of stream. |
| 139 bool end_of_stream() const { return end_of_stream_; } | 167 bool end_of_stream() const { return end_of_stream_; } |
| 140 | 168 |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 161 // [data,data+data_size) to the allocated buffer(s). If |data| is null, no | 189 // [data,data+data_size) to the allocated buffer(s). If |data| is null, no |
| 162 // data is copied. If |create_buffer| is false, no data buffer is created (or | 190 // data is copied. If |create_buffer| is false, no data buffer is created (or |
| 163 // copied to). | 191 // copied to). |
| 164 AudioBuffer(SampleFormat sample_format, | 192 AudioBuffer(SampleFormat sample_format, |
| 165 ChannelLayout channel_layout, | 193 ChannelLayout channel_layout, |
| 166 int channel_count, | 194 int channel_count, |
| 167 int sample_rate, | 195 int sample_rate, |
| 168 int frame_count, | 196 int frame_count, |
| 169 bool create_buffer, | 197 bool create_buffer, |
| 170 const uint8_t* const* data, | 198 const uint8_t* const* data, |
| 199 const size_t data_size, | |
| 171 const base::TimeDelta timestamp, | 200 const base::TimeDelta timestamp, |
| 172 scoped_refptr<AudioBufferMemoryPool> pool); | 201 scoped_refptr<AudioBufferMemoryPool> pool); |
| 173 | 202 |
| 174 virtual ~AudioBuffer(); | 203 virtual ~AudioBuffer(); |
| 175 | 204 |
| 176 const SampleFormat sample_format_; | 205 const SampleFormat sample_format_; |
| 177 const ChannelLayout channel_layout_; | 206 const ChannelLayout channel_layout_; |
| 178 const int channel_count_; | 207 const int channel_count_; |
| 179 int sample_rate_; | 208 int sample_rate_; |
| 180 int adjusted_frame_count_; | 209 int adjusted_frame_count_; |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 226 base::Lock entry_lock_; | 255 base::Lock entry_lock_; |
| 227 using MemoryEntry = std::pair<AudioMemory, size_t>; | 256 using MemoryEntry = std::pair<AudioMemory, size_t>; |
| 228 std::list<MemoryEntry> entries_; | 257 std::list<MemoryEntry> entries_; |
| 229 | 258 |
| 230 DISALLOW_COPY_AND_ASSIGN(AudioBufferMemoryPool); | 259 DISALLOW_COPY_AND_ASSIGN(AudioBufferMemoryPool); |
| 231 }; | 260 }; |
| 232 | 261 |
| 233 } // namespace media | 262 } // namespace media |
| 234 | 263 |
| 235 #endif // MEDIA_BASE_AUDIO_BUFFER_H_ | 264 #endif // MEDIA_BASE_AUDIO_BUFFER_H_ |
| OLD | NEW |