OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 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 13 matching lines...) Expand all Loading... |
24 #endif | 24 #endif |
25 #ifdef WEBRTC_CODEC_ISACFX | 25 #ifdef WEBRTC_CODEC_ISACFX |
26 #include "webrtc/modules/audio_coding/codecs/isac/fix/interface/audio_encoder_is
acfix.h" | 26 #include "webrtc/modules/audio_coding/codecs/isac/fix/interface/audio_encoder_is
acfix.h" |
27 #endif | 27 #endif |
28 #ifdef WEBRTC_CODEC_ISAC | 28 #ifdef WEBRTC_CODEC_ISAC |
29 #include "webrtc/modules/audio_coding/codecs/isac/main/interface/audio_encoder_i
sac.h" | 29 #include "webrtc/modules/audio_coding/codecs/isac/main/interface/audio_encoder_i
sac.h" |
30 #endif | 30 #endif |
31 #ifdef WEBRTC_CODEC_OPUS | 31 #ifdef WEBRTC_CODEC_OPUS |
32 #include "webrtc/modules/audio_coding/codecs/opus/interface/audio_decoder_opus.h
" | 32 #include "webrtc/modules/audio_coding/codecs/opus/interface/audio_decoder_opus.h
" |
33 #endif | 33 #endif |
34 #ifdef WEBRTC_CODEC_PCM16 | |
35 #include "webrtc/modules/audio_coding/codecs/pcm16b/include/pcm16b.h" | 34 #include "webrtc/modules/audio_coding/codecs/pcm16b/include/pcm16b.h" |
36 #endif | |
37 | 35 |
38 namespace webrtc { | 36 namespace webrtc { |
39 | 37 |
40 // PCMu | 38 // PCMu |
41 | 39 |
42 void AudioDecoderPcmU::Reset() { | 40 void AudioDecoderPcmU::Reset() { |
43 } | 41 } |
44 size_t AudioDecoderPcmU::Channels() const { | 42 size_t AudioDecoderPcmU::Channels() const { |
45 return 1; | 43 return 1; |
46 } | 44 } |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 size_t encoded_len) const { | 89 size_t encoded_len) const { |
92 // One encoded byte per sample per channel. | 90 // One encoded byte per sample per channel. |
93 return static_cast<int>(encoded_len / Channels()); | 91 return static_cast<int>(encoded_len / Channels()); |
94 } | 92 } |
95 | 93 |
96 size_t AudioDecoderPcmAMultiCh::Channels() const { | 94 size_t AudioDecoderPcmAMultiCh::Channels() const { |
97 return channels_; | 95 return channels_; |
98 } | 96 } |
99 | 97 |
100 // PCM16B | 98 // PCM16B |
101 #ifdef WEBRTC_CODEC_PCM16 | |
102 AudioDecoderPcm16B::AudioDecoderPcm16B() {} | 99 AudioDecoderPcm16B::AudioDecoderPcm16B() {} |
103 | 100 |
104 void AudioDecoderPcm16B::Reset() { | 101 void AudioDecoderPcm16B::Reset() { |
105 } | 102 } |
106 size_t AudioDecoderPcm16B::Channels() const { | 103 size_t AudioDecoderPcm16B::Channels() const { |
107 return 1; | 104 return 1; |
108 } | 105 } |
109 | 106 |
110 int AudioDecoderPcm16B::DecodeInternal(const uint8_t* encoded, | 107 int AudioDecoderPcm16B::DecodeInternal(const uint8_t* encoded, |
111 size_t encoded_len, | 108 size_t encoded_len, |
(...skipping 15 matching lines...) Expand all Loading... |
127 } | 124 } |
128 | 125 |
129 AudioDecoderPcm16BMultiCh::AudioDecoderPcm16BMultiCh(size_t num_channels) | 126 AudioDecoderPcm16BMultiCh::AudioDecoderPcm16BMultiCh(size_t num_channels) |
130 : channels_(num_channels) { | 127 : channels_(num_channels) { |
131 DCHECK(num_channels > 0); | 128 DCHECK(num_channels > 0); |
132 } | 129 } |
133 | 130 |
134 size_t AudioDecoderPcm16BMultiCh::Channels() const { | 131 size_t AudioDecoderPcm16BMultiCh::Channels() const { |
135 return channels_; | 132 return channels_; |
136 } | 133 } |
137 #endif | |
138 | 134 |
139 // iLBC | 135 // iLBC |
140 #ifdef WEBRTC_CODEC_ILBC | 136 #ifdef WEBRTC_CODEC_ILBC |
141 AudioDecoderIlbc::AudioDecoderIlbc() { | 137 AudioDecoderIlbc::AudioDecoderIlbc() { |
142 WebRtcIlbcfix_DecoderCreate(&dec_state_); | 138 WebRtcIlbcfix_DecoderCreate(&dec_state_); |
143 WebRtcIlbcfix_Decoderinit30Ms(dec_state_); | 139 WebRtcIlbcfix_Decoderinit30Ms(dec_state_); |
144 } | 140 } |
145 | 141 |
146 AudioDecoderIlbc::~AudioDecoderIlbc() { | 142 AudioDecoderIlbc::~AudioDecoderIlbc() { |
147 WebRtcIlbcfix_DecoderFree(dec_state_); | 143 WebRtcIlbcfix_DecoderFree(dec_state_); |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 #ifdef WEBRTC_CODEC_ILBC | 341 #ifdef WEBRTC_CODEC_ILBC |
346 case kDecoderILBC: | 342 case kDecoderILBC: |
347 #endif | 343 #endif |
348 #if defined(WEBRTC_CODEC_ISACFX) || defined(WEBRTC_CODEC_ISAC) | 344 #if defined(WEBRTC_CODEC_ISACFX) || defined(WEBRTC_CODEC_ISAC) |
349 case kDecoderISAC: | 345 case kDecoderISAC: |
350 #endif | 346 #endif |
351 #ifdef WEBRTC_CODEC_ISAC | 347 #ifdef WEBRTC_CODEC_ISAC |
352 case kDecoderISACswb: | 348 case kDecoderISACswb: |
353 case kDecoderISACfb: | 349 case kDecoderISACfb: |
354 #endif | 350 #endif |
355 #ifdef WEBRTC_CODEC_PCM16 | |
356 case kDecoderPCM16B: | 351 case kDecoderPCM16B: |
357 case kDecoderPCM16Bwb: | 352 case kDecoderPCM16Bwb: |
358 case kDecoderPCM16Bswb32kHz: | 353 case kDecoderPCM16Bswb32kHz: |
359 case kDecoderPCM16Bswb48kHz: | 354 case kDecoderPCM16Bswb48kHz: |
360 case kDecoderPCM16B_2ch: | 355 case kDecoderPCM16B_2ch: |
361 case kDecoderPCM16Bwb_2ch: | 356 case kDecoderPCM16Bwb_2ch: |
362 case kDecoderPCM16Bswb32kHz_2ch: | 357 case kDecoderPCM16Bswb32kHz_2ch: |
363 case kDecoderPCM16Bswb48kHz_2ch: | 358 case kDecoderPCM16Bswb48kHz_2ch: |
364 case kDecoderPCM16B_5ch: | 359 case kDecoderPCM16B_5ch: |
365 #endif | |
366 #ifdef WEBRTC_CODEC_G722 | 360 #ifdef WEBRTC_CODEC_G722 |
367 case kDecoderG722: | 361 case kDecoderG722: |
368 case kDecoderG722_2ch: | 362 case kDecoderG722_2ch: |
369 #endif | 363 #endif |
370 #ifdef WEBRTC_CODEC_OPUS | 364 #ifdef WEBRTC_CODEC_OPUS |
371 case kDecoderOpus: | 365 case kDecoderOpus: |
372 case kDecoderOpus_2ch: | 366 case kDecoderOpus_2ch: |
373 #endif | 367 #endif |
374 case kDecoderRED: | 368 case kDecoderRED: |
375 case kDecoderAVT: | 369 case kDecoderAVT: |
(...skipping 12 matching lines...) Expand all Loading... |
388 | 382 |
389 int CodecSampleRateHz(NetEqDecoder codec_type) { | 383 int CodecSampleRateHz(NetEqDecoder codec_type) { |
390 switch (codec_type) { | 384 switch (codec_type) { |
391 case kDecoderPCMu: | 385 case kDecoderPCMu: |
392 case kDecoderPCMa: | 386 case kDecoderPCMa: |
393 case kDecoderPCMu_2ch: | 387 case kDecoderPCMu_2ch: |
394 case kDecoderPCMa_2ch: | 388 case kDecoderPCMa_2ch: |
395 #ifdef WEBRTC_CODEC_ILBC | 389 #ifdef WEBRTC_CODEC_ILBC |
396 case kDecoderILBC: | 390 case kDecoderILBC: |
397 #endif | 391 #endif |
398 #ifdef WEBRTC_CODEC_PCM16 | |
399 case kDecoderPCM16B: | 392 case kDecoderPCM16B: |
400 case kDecoderPCM16B_2ch: | 393 case kDecoderPCM16B_2ch: |
401 case kDecoderPCM16B_5ch: | 394 case kDecoderPCM16B_5ch: |
402 #endif | |
403 case kDecoderCNGnb: { | 395 case kDecoderCNGnb: { |
404 return 8000; | 396 return 8000; |
405 } | 397 } |
406 #if defined(WEBRTC_CODEC_ISACFX) || defined(WEBRTC_CODEC_ISAC) | 398 #if defined(WEBRTC_CODEC_ISACFX) || defined(WEBRTC_CODEC_ISAC) |
407 case kDecoderISAC: | 399 case kDecoderISAC: |
408 #endif | 400 #endif |
409 #ifdef WEBRTC_CODEC_PCM16 | |
410 case kDecoderPCM16Bwb: | 401 case kDecoderPCM16Bwb: |
411 case kDecoderPCM16Bwb_2ch: | 402 case kDecoderPCM16Bwb_2ch: |
412 #endif | |
413 #ifdef WEBRTC_CODEC_G722 | 403 #ifdef WEBRTC_CODEC_G722 |
414 case kDecoderG722: | 404 case kDecoderG722: |
415 case kDecoderG722_2ch: | 405 case kDecoderG722_2ch: |
416 #endif | 406 #endif |
417 case kDecoderCNGwb: { | 407 case kDecoderCNGwb: { |
418 return 16000; | 408 return 16000; |
419 } | 409 } |
420 #ifdef WEBRTC_CODEC_ISAC | 410 #ifdef WEBRTC_CODEC_ISAC |
421 case kDecoderISACswb: | 411 case kDecoderISACswb: |
422 case kDecoderISACfb: | 412 case kDecoderISACfb: |
423 #endif | 413 #endif |
424 #ifdef WEBRTC_CODEC_PCM16 | |
425 case kDecoderPCM16Bswb32kHz: | 414 case kDecoderPCM16Bswb32kHz: |
426 case kDecoderPCM16Bswb32kHz_2ch: | 415 case kDecoderPCM16Bswb32kHz_2ch: |
427 #endif | |
428 case kDecoderCNGswb32kHz: { | 416 case kDecoderCNGswb32kHz: { |
429 return 32000; | 417 return 32000; |
430 } | 418 } |
431 #ifdef WEBRTC_CODEC_PCM16 | |
432 case kDecoderPCM16Bswb48kHz: | 419 case kDecoderPCM16Bswb48kHz: |
433 case kDecoderPCM16Bswb48kHz_2ch: { | 420 case kDecoderPCM16Bswb48kHz_2ch: { |
434 return 48000; | 421 return 48000; |
435 } | 422 } |
436 #endif | |
437 #ifdef WEBRTC_CODEC_OPUS | 423 #ifdef WEBRTC_CODEC_OPUS |
438 case kDecoderOpus: | 424 case kDecoderOpus: |
439 case kDecoderOpus_2ch: { | 425 case kDecoderOpus_2ch: { |
440 return 48000; | 426 return 48000; |
441 } | 427 } |
442 #endif | 428 #endif |
443 case kDecoderCNGswb48kHz: { | 429 case kDecoderCNGswb48kHz: { |
444 // TODO(tlegrand): Remove limitation once ACM has full 48 kHz support. | 430 // TODO(tlegrand): Remove limitation once ACM has full 48 kHz support. |
445 return 32000; | 431 return 32000; |
446 } | 432 } |
(...skipping 22 matching lines...) Expand all Loading... |
469 #endif | 455 #endif |
470 #if defined(WEBRTC_CODEC_ISACFX) | 456 #if defined(WEBRTC_CODEC_ISACFX) |
471 case kDecoderISAC: | 457 case kDecoderISAC: |
472 return new AudioDecoderIsacFix(); | 458 return new AudioDecoderIsacFix(); |
473 #elif defined(WEBRTC_CODEC_ISAC) | 459 #elif defined(WEBRTC_CODEC_ISAC) |
474 case kDecoderISAC: | 460 case kDecoderISAC: |
475 case kDecoderISACswb: | 461 case kDecoderISACswb: |
476 case kDecoderISACfb: | 462 case kDecoderISACfb: |
477 return new AudioDecoderIsac(); | 463 return new AudioDecoderIsac(); |
478 #endif | 464 #endif |
479 #ifdef WEBRTC_CODEC_PCM16 | |
480 case kDecoderPCM16B: | 465 case kDecoderPCM16B: |
481 case kDecoderPCM16Bwb: | 466 case kDecoderPCM16Bwb: |
482 case kDecoderPCM16Bswb32kHz: | 467 case kDecoderPCM16Bswb32kHz: |
483 case kDecoderPCM16Bswb48kHz: | 468 case kDecoderPCM16Bswb48kHz: |
484 return new AudioDecoderPcm16B; | 469 return new AudioDecoderPcm16B; |
485 case kDecoderPCM16B_2ch: | 470 case kDecoderPCM16B_2ch: |
486 case kDecoderPCM16Bwb_2ch: | 471 case kDecoderPCM16Bwb_2ch: |
487 case kDecoderPCM16Bswb32kHz_2ch: | 472 case kDecoderPCM16Bswb32kHz_2ch: |
488 case kDecoderPCM16Bswb48kHz_2ch: | 473 case kDecoderPCM16Bswb48kHz_2ch: |
489 return new AudioDecoderPcm16BMultiCh(2); | 474 return new AudioDecoderPcm16BMultiCh(2); |
490 case kDecoderPCM16B_5ch: | 475 case kDecoderPCM16B_5ch: |
491 return new AudioDecoderPcm16BMultiCh(5); | 476 return new AudioDecoderPcm16BMultiCh(5); |
492 #endif | |
493 #ifdef WEBRTC_CODEC_G722 | 477 #ifdef WEBRTC_CODEC_G722 |
494 case kDecoderG722: | 478 case kDecoderG722: |
495 return new AudioDecoderG722; | 479 return new AudioDecoderG722; |
496 case kDecoderG722_2ch: | 480 case kDecoderG722_2ch: |
497 return new AudioDecoderG722Stereo; | 481 return new AudioDecoderG722Stereo; |
498 #endif | 482 #endif |
499 #ifdef WEBRTC_CODEC_OPUS | 483 #ifdef WEBRTC_CODEC_OPUS |
500 case kDecoderOpus: | 484 case kDecoderOpus: |
501 return new AudioDecoderOpus(1); | 485 return new AudioDecoderOpus(1); |
502 case kDecoderOpus_2ch: | 486 case kDecoderOpus_2ch: |
503 return new AudioDecoderOpus(2); | 487 return new AudioDecoderOpus(2); |
504 #endif | 488 #endif |
505 case kDecoderCNGnb: | 489 case kDecoderCNGnb: |
506 case kDecoderCNGwb: | 490 case kDecoderCNGwb: |
507 case kDecoderCNGswb32kHz: | 491 case kDecoderCNGswb32kHz: |
508 case kDecoderCNGswb48kHz: | 492 case kDecoderCNGswb48kHz: |
509 return new AudioDecoderCng; | 493 return new AudioDecoderCng; |
510 case kDecoderRED: | 494 case kDecoderRED: |
511 case kDecoderAVT: | 495 case kDecoderAVT: |
512 case kDecoderArbitrary: | 496 case kDecoderArbitrary: |
513 default: { | 497 default: { |
514 return NULL; | 498 return NULL; |
515 } | 499 } |
516 } | 500 } |
517 } | 501 } |
518 | 502 |
519 } // namespace webrtc | 503 } // namespace webrtc |
OLD | NEW |