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 #include "media/base/audio_buffer.h" | 5 #include "media/base/audio_buffer.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "media/base/audio_bus.h" | 10 #include "media/base/audio_bus.h" |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 int trim_start, | 310 int trim_start, |
311 Dest* dest_data) { | 311 Dest* dest_data) { |
312 switch (sample_format) { | 312 switch (sample_format) { |
313 case kSampleFormatU8: | 313 case kSampleFormatU8: |
314 NOTREACHED(); | 314 NOTREACHED(); |
315 break; | 315 break; |
316 case kSampleFormatS16: | 316 case kSampleFormatS16: |
317 InterleaveAndConvert<int16, Dest>( | 317 InterleaveAndConvert<int16, Dest>( |
318 channel_data, frames_to_copy * channel_count, trim_start, dest_data); | 318 channel_data, frames_to_copy * channel_count, trim_start, dest_data); |
319 break; | 319 break; |
| 320 case kSampleFormatS24: |
320 case kSampleFormatS32: | 321 case kSampleFormatS32: |
321 InterleaveAndConvert<int32, Dest>( | 322 InterleaveAndConvert<int32, Dest>( |
322 channel_data, frames_to_copy * channel_count, trim_start, dest_data); | 323 channel_data, frames_to_copy * channel_count, trim_start, dest_data); |
323 break; | 324 break; |
324 case kSampleFormatF32: | 325 case kSampleFormatF32: |
325 InterleaveAndConvert<float, Dest>( | 326 InterleaveAndConvert<float, Dest>( |
326 channel_data, frames_to_copy * channel_count, trim_start, dest_data); | 327 channel_data, frames_to_copy * channel_count, trim_start, dest_data); |
327 break; | 328 break; |
328 case kSampleFormatPlanarS16: | 329 case kSampleFormatPlanarS16: |
329 InterleaveAndConvert<int16, Dest>(channel_data, frames_to_copy, | 330 InterleaveAndConvert<int16, Dest>(channel_data, frames_to_copy, |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 case kSampleFormatPlanarS32: | 398 case kSampleFormatPlanarS32: |
398 // Planar data must be shifted per channel. | 399 // Planar data must be shifted per channel. |
399 for (int ch = 0; ch < channel_count_; ++ch) { | 400 for (int ch = 0; ch < channel_count_; ++ch) { |
400 memmove(channel_data_[ch] + (trim_start_ + start) * bytes_per_channel, | 401 memmove(channel_data_[ch] + (trim_start_ + start) * bytes_per_channel, |
401 channel_data_[ch] + (trim_start_ + end) * bytes_per_channel, | 402 channel_data_[ch] + (trim_start_ + end) * bytes_per_channel, |
402 bytes_per_channel * frames_to_copy); | 403 bytes_per_channel * frames_to_copy); |
403 } | 404 } |
404 break; | 405 break; |
405 case kSampleFormatU8: | 406 case kSampleFormatU8: |
406 case kSampleFormatS16: | 407 case kSampleFormatS16: |
| 408 case kSampleFormatS24: |
407 case kSampleFormatS32: | 409 case kSampleFormatS32: |
408 case kSampleFormatF32: { | 410 case kSampleFormatF32: { |
409 // Interleaved data can be shifted all at once. | 411 // Interleaved data can be shifted all at once. |
410 const int frame_size = channel_count_ * bytes_per_channel; | 412 const int frame_size = channel_count_ * bytes_per_channel; |
411 memmove(channel_data_[0] + (trim_start_ + start) * frame_size, | 413 memmove(channel_data_[0] + (trim_start_ + start) * frame_size, |
412 channel_data_[0] + (trim_start_ + end) * frame_size, | 414 channel_data_[0] + (trim_start_ + end) * frame_size, |
413 frame_size * frames_to_copy); | 415 frame_size * frames_to_copy); |
414 break; | 416 break; |
415 } | 417 } |
416 case kUnknownSampleFormat: | 418 case kUnknownSampleFormat: |
417 NOTREACHED() << "Invalid sample format!"; | 419 NOTREACHED() << "Invalid sample format!"; |
418 } | 420 } |
419 } else { | 421 } else { |
420 CHECK_EQ(frames_to_copy, 0); | 422 CHECK_EQ(frames_to_copy, 0); |
421 } | 423 } |
422 | 424 |
423 // Trim the leftover data off the end of the buffer and update duration. | 425 // Trim the leftover data off the end of the buffer and update duration. |
424 TrimEnd(frames_to_trim); | 426 TrimEnd(frames_to_trim); |
425 } | 427 } |
426 | 428 |
427 } // namespace media | 429 } // namespace media |
OLD | NEW |