| 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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 int AudioDecoderCng::DecodeInternal(const uint8_t* encoded, | 68 int AudioDecoderCng::DecodeInternal(const uint8_t* encoded, |
| 69 size_t encoded_len, | 69 size_t encoded_len, |
| 70 int sample_rate_hz, | 70 int sample_rate_hz, |
| 71 int16_t* decoded, | 71 int16_t* decoded, |
| 72 SpeechType* speech_type) { | 72 SpeechType* speech_type) { |
| 73 return -1; | 73 return -1; |
| 74 } | 74 } |
| 75 | 75 |
| 76 bool CodecSupported(NetEqDecoder codec_type) { | 76 bool CodecSupported(NetEqDecoder codec_type) { |
| 77 switch (codec_type) { | 77 switch (codec_type) { |
| 78 case kDecoderPCMu: | 78 case NetEqDecoder::kDecoderPCMu: |
| 79 case kDecoderPCMa: | 79 case NetEqDecoder::kDecoderPCMa: |
| 80 case kDecoderPCMu_2ch: | 80 case NetEqDecoder::kDecoderPCMu_2ch: |
| 81 case kDecoderPCMa_2ch: | 81 case NetEqDecoder::kDecoderPCMa_2ch: |
| 82 #ifdef WEBRTC_CODEC_ILBC | 82 #ifdef WEBRTC_CODEC_ILBC |
| 83 case kDecoderILBC: | 83 case NetEqDecoder::kDecoderILBC: |
| 84 #endif | 84 #endif |
| 85 #if defined(WEBRTC_CODEC_ISACFX) || defined(WEBRTC_CODEC_ISAC) | 85 #if defined(WEBRTC_CODEC_ISACFX) || defined(WEBRTC_CODEC_ISAC) |
| 86 case kDecoderISAC: | 86 case NetEqDecoder::kDecoderISAC: |
| 87 #endif | 87 #endif |
| 88 #ifdef WEBRTC_CODEC_ISAC | 88 #ifdef WEBRTC_CODEC_ISAC |
| 89 case kDecoderISACswb: | 89 case NetEqDecoder::kDecoderISACswb: |
| 90 #endif | 90 #endif |
| 91 case kDecoderPCM16B: | 91 case NetEqDecoder::kDecoderPCM16B: |
| 92 case kDecoderPCM16Bwb: | 92 case NetEqDecoder::kDecoderPCM16Bwb: |
| 93 case kDecoderPCM16Bswb32kHz: | 93 case NetEqDecoder::kDecoderPCM16Bswb32kHz: |
| 94 case kDecoderPCM16Bswb48kHz: | 94 case NetEqDecoder::kDecoderPCM16Bswb48kHz: |
| 95 case kDecoderPCM16B_2ch: | 95 case NetEqDecoder::kDecoderPCM16B_2ch: |
| 96 case kDecoderPCM16Bwb_2ch: | 96 case NetEqDecoder::kDecoderPCM16Bwb_2ch: |
| 97 case kDecoderPCM16Bswb32kHz_2ch: | 97 case NetEqDecoder::kDecoderPCM16Bswb32kHz_2ch: |
| 98 case kDecoderPCM16Bswb48kHz_2ch: | 98 case NetEqDecoder::kDecoderPCM16Bswb48kHz_2ch: |
| 99 case kDecoderPCM16B_5ch: | 99 case NetEqDecoder::kDecoderPCM16B_5ch: |
| 100 #ifdef WEBRTC_CODEC_G722 | 100 #ifdef WEBRTC_CODEC_G722 |
| 101 case kDecoderG722: | 101 case NetEqDecoder::kDecoderG722: |
| 102 case kDecoderG722_2ch: | 102 case NetEqDecoder::kDecoderG722_2ch: |
| 103 #endif | 103 #endif |
| 104 #ifdef WEBRTC_CODEC_OPUS | 104 #ifdef WEBRTC_CODEC_OPUS |
| 105 case kDecoderOpus: | 105 case NetEqDecoder::kDecoderOpus: |
| 106 case kDecoderOpus_2ch: | 106 case NetEqDecoder::kDecoderOpus_2ch: |
| 107 #endif | 107 #endif |
| 108 case kDecoderRED: | 108 case NetEqDecoder::kDecoderRED: |
| 109 case kDecoderAVT: | 109 case NetEqDecoder::kDecoderAVT: |
| 110 case kDecoderCNGnb: | 110 case NetEqDecoder::kDecoderCNGnb: |
| 111 case kDecoderCNGwb: | 111 case NetEqDecoder::kDecoderCNGwb: |
| 112 case kDecoderCNGswb32kHz: | 112 case NetEqDecoder::kDecoderCNGswb32kHz: |
| 113 case kDecoderCNGswb48kHz: | 113 case NetEqDecoder::kDecoderCNGswb48kHz: |
| 114 case kDecoderArbitrary: { | 114 case NetEqDecoder::kDecoderArbitrary: { |
| 115 return true; | 115 return true; |
| 116 } | 116 } |
| 117 default: { | 117 default: { |
| 118 return false; | 118 return false; |
| 119 } | 119 } |
| 120 } | 120 } |
| 121 } | 121 } |
| 122 | 122 |
| 123 int CodecSampleRateHz(NetEqDecoder codec_type) { | 123 int CodecSampleRateHz(NetEqDecoder codec_type) { |
| 124 switch (codec_type) { | 124 switch (codec_type) { |
| 125 case kDecoderPCMu: | 125 case NetEqDecoder::kDecoderPCMu: |
| 126 case kDecoderPCMa: | 126 case NetEqDecoder::kDecoderPCMa: |
| 127 case kDecoderPCMu_2ch: | 127 case NetEqDecoder::kDecoderPCMu_2ch: |
| 128 case kDecoderPCMa_2ch: | 128 case NetEqDecoder::kDecoderPCMa_2ch: |
| 129 #ifdef WEBRTC_CODEC_ILBC | 129 #ifdef WEBRTC_CODEC_ILBC |
| 130 case kDecoderILBC: | 130 case NetEqDecoder::kDecoderILBC: |
| 131 #endif | 131 #endif |
| 132 case kDecoderPCM16B: | 132 case NetEqDecoder::kDecoderPCM16B: |
| 133 case kDecoderPCM16B_2ch: | 133 case NetEqDecoder::kDecoderPCM16B_2ch: |
| 134 case kDecoderPCM16B_5ch: | 134 case NetEqDecoder::kDecoderPCM16B_5ch: |
| 135 case kDecoderCNGnb: { | 135 case NetEqDecoder::kDecoderCNGnb: { |
| 136 return 8000; | 136 return 8000; |
| 137 } | 137 } |
| 138 #if defined(WEBRTC_CODEC_ISACFX) || defined(WEBRTC_CODEC_ISAC) | 138 #if defined(WEBRTC_CODEC_ISACFX) || defined(WEBRTC_CODEC_ISAC) |
| 139 case kDecoderISAC: | 139 case NetEqDecoder::kDecoderISAC: |
| 140 #endif | 140 #endif |
| 141 case kDecoderPCM16Bwb: | 141 case NetEqDecoder::kDecoderPCM16Bwb: |
| 142 case kDecoderPCM16Bwb_2ch: | 142 case NetEqDecoder::kDecoderPCM16Bwb_2ch: |
| 143 #ifdef WEBRTC_CODEC_G722 | 143 #ifdef WEBRTC_CODEC_G722 |
| 144 case kDecoderG722: | 144 case NetEqDecoder::kDecoderG722: |
| 145 case kDecoderG722_2ch: | 145 case NetEqDecoder::kDecoderG722_2ch: |
| 146 #endif | 146 #endif |
| 147 case kDecoderCNGwb: { | 147 case NetEqDecoder::kDecoderCNGwb: { |
| 148 return 16000; | 148 return 16000; |
| 149 } | 149 } |
| 150 #ifdef WEBRTC_CODEC_ISAC | 150 #ifdef WEBRTC_CODEC_ISAC |
| 151 case kDecoderISACswb: | 151 case NetEqDecoder::kDecoderISACswb: |
| 152 #endif | 152 #endif |
| 153 case kDecoderPCM16Bswb32kHz: | 153 case NetEqDecoder::kDecoderPCM16Bswb32kHz: |
| 154 case kDecoderPCM16Bswb32kHz_2ch: | 154 case NetEqDecoder::kDecoderPCM16Bswb32kHz_2ch: |
| 155 case kDecoderCNGswb32kHz: { | 155 case NetEqDecoder::kDecoderCNGswb32kHz: { |
| 156 return 32000; | 156 return 32000; |
| 157 } | 157 } |
| 158 case kDecoderPCM16Bswb48kHz: | 158 case NetEqDecoder::kDecoderPCM16Bswb48kHz: |
| 159 case kDecoderPCM16Bswb48kHz_2ch: { | 159 case NetEqDecoder::kDecoderPCM16Bswb48kHz_2ch: { |
| 160 return 48000; | 160 return 48000; |
| 161 } | 161 } |
| 162 #ifdef WEBRTC_CODEC_OPUS | 162 #ifdef WEBRTC_CODEC_OPUS |
| 163 case kDecoderOpus: | 163 case NetEqDecoder::kDecoderOpus: |
| 164 case kDecoderOpus_2ch: { | 164 case NetEqDecoder::kDecoderOpus_2ch: { |
| 165 return 48000; | 165 return 48000; |
| 166 } | 166 } |
| 167 #endif | 167 #endif |
| 168 case kDecoderCNGswb48kHz: { | 168 case NetEqDecoder::kDecoderCNGswb48kHz: { |
| 169 // TODO(tlegrand): Remove limitation once ACM has full 48 kHz support. | 169 // TODO(tlegrand): Remove limitation once ACM has full 48 kHz support. |
| 170 return 32000; | 170 return 32000; |
| 171 } | 171 } |
| 172 default: { | 172 default: { |
| 173 return -1; // Undefined sample rate. | 173 return -1; // Undefined sample rate. |
| 174 } | 174 } |
| 175 } | 175 } |
| 176 } | 176 } |
| 177 | 177 |
| 178 AudioDecoder* CreateAudioDecoder(NetEqDecoder codec_type) { | 178 AudioDecoder* CreateAudioDecoder(NetEqDecoder codec_type) { |
| 179 if (!CodecSupported(codec_type)) { | 179 if (!CodecSupported(codec_type)) { |
| 180 return NULL; | 180 return NULL; |
| 181 } | 181 } |
| 182 switch (codec_type) { | 182 switch (codec_type) { |
| 183 case kDecoderPCMu: | 183 case NetEqDecoder::kDecoderPCMu: |
| 184 return new AudioDecoderPcmU(1); | 184 return new AudioDecoderPcmU(1); |
| 185 case kDecoderPCMa: | 185 case NetEqDecoder::kDecoderPCMa: |
| 186 return new AudioDecoderPcmA(1); | 186 return new AudioDecoderPcmA(1); |
| 187 case kDecoderPCMu_2ch: | 187 case NetEqDecoder::kDecoderPCMu_2ch: |
| 188 return new AudioDecoderPcmU(2); | 188 return new AudioDecoderPcmU(2); |
| 189 case kDecoderPCMa_2ch: | 189 case NetEqDecoder::kDecoderPCMa_2ch: |
| 190 return new AudioDecoderPcmA(2); | 190 return new AudioDecoderPcmA(2); |
| 191 #ifdef WEBRTC_CODEC_ILBC | 191 #ifdef WEBRTC_CODEC_ILBC |
| 192 case kDecoderILBC: | 192 case NetEqDecoder::kDecoderILBC: |
| 193 return new AudioDecoderIlbc; | 193 return new AudioDecoderIlbc; |
| 194 #endif | 194 #endif |
| 195 #if defined(WEBRTC_CODEC_ISACFX) | 195 #if defined(WEBRTC_CODEC_ISACFX) |
| 196 case kDecoderISAC: | 196 case NetEqDecoder::kDecoderISAC: |
| 197 return new AudioDecoderIsacFix(); | 197 return new AudioDecoderIsacFix(); |
| 198 #elif defined(WEBRTC_CODEC_ISAC) | 198 #elif defined(WEBRTC_CODEC_ISAC) |
| 199 case kDecoderISAC: | 199 case NetEqDecoder::kDecoderISAC: |
| 200 case kDecoderISACswb: | 200 case NetEqDecoder::kDecoderISACswb: |
| 201 return new AudioDecoderIsac(); | 201 return new AudioDecoderIsac(); |
| 202 #endif | 202 #endif |
| 203 case kDecoderPCM16B: | 203 case NetEqDecoder::kDecoderPCM16B: |
| 204 case kDecoderPCM16Bwb: | 204 case NetEqDecoder::kDecoderPCM16Bwb: |
| 205 case kDecoderPCM16Bswb32kHz: | 205 case NetEqDecoder::kDecoderPCM16Bswb32kHz: |
| 206 case kDecoderPCM16Bswb48kHz: | 206 case NetEqDecoder::kDecoderPCM16Bswb48kHz: |
| 207 return new AudioDecoderPcm16B(1); | 207 return new AudioDecoderPcm16B(1); |
| 208 case kDecoderPCM16B_2ch: | 208 case NetEqDecoder::kDecoderPCM16B_2ch: |
| 209 case kDecoderPCM16Bwb_2ch: | 209 case NetEqDecoder::kDecoderPCM16Bwb_2ch: |
| 210 case kDecoderPCM16Bswb32kHz_2ch: | 210 case NetEqDecoder::kDecoderPCM16Bswb32kHz_2ch: |
| 211 case kDecoderPCM16Bswb48kHz_2ch: | 211 case NetEqDecoder::kDecoderPCM16Bswb48kHz_2ch: |
| 212 return new AudioDecoderPcm16B(2); | 212 return new AudioDecoderPcm16B(2); |
| 213 case kDecoderPCM16B_5ch: | 213 case NetEqDecoder::kDecoderPCM16B_5ch: |
| 214 return new AudioDecoderPcm16B(5); | 214 return new AudioDecoderPcm16B(5); |
| 215 #ifdef WEBRTC_CODEC_G722 | 215 #ifdef WEBRTC_CODEC_G722 |
| 216 case kDecoderG722: | 216 case NetEqDecoder::kDecoderG722: |
| 217 return new AudioDecoderG722; | 217 return new AudioDecoderG722; |
| 218 case kDecoderG722_2ch: | 218 case NetEqDecoder::kDecoderG722_2ch: |
| 219 return new AudioDecoderG722Stereo; | 219 return new AudioDecoderG722Stereo; |
| 220 #endif | 220 #endif |
| 221 #ifdef WEBRTC_CODEC_OPUS | 221 #ifdef WEBRTC_CODEC_OPUS |
| 222 case kDecoderOpus: | 222 case NetEqDecoder::kDecoderOpus: |
| 223 return new AudioDecoderOpus(1); | 223 return new AudioDecoderOpus(1); |
| 224 case kDecoderOpus_2ch: | 224 case NetEqDecoder::kDecoderOpus_2ch: |
| 225 return new AudioDecoderOpus(2); | 225 return new AudioDecoderOpus(2); |
| 226 #endif | 226 #endif |
| 227 case kDecoderCNGnb: | 227 case NetEqDecoder::kDecoderCNGnb: |
| 228 case kDecoderCNGwb: | 228 case NetEqDecoder::kDecoderCNGwb: |
| 229 case kDecoderCNGswb32kHz: | 229 case NetEqDecoder::kDecoderCNGswb32kHz: |
| 230 case kDecoderCNGswb48kHz: | 230 case NetEqDecoder::kDecoderCNGswb48kHz: |
| 231 return new AudioDecoderCng; | 231 return new AudioDecoderCng; |
| 232 case kDecoderRED: | 232 case NetEqDecoder::kDecoderRED: |
| 233 case kDecoderAVT: | 233 case NetEqDecoder::kDecoderAVT: |
| 234 case kDecoderArbitrary: | 234 case NetEqDecoder::kDecoderArbitrary: |
| 235 default: { | 235 default: { |
| 236 return NULL; | 236 return NULL; |
| 237 } | 237 } |
| 238 } | 238 } |
| 239 } | 239 } |
| 240 | 240 |
| 241 } // namespace webrtc | 241 } // namespace webrtc |
| OLD | NEW |