Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(85)

Side by Side Diff: webrtc/modules/audio_coding/neteq/payload_splitter.cc

Issue 1424083002: Make an enum class out of NetEqDecoder, and hide the neteq_decoders_ table (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 AudioDecoder* decoder = decoder_database->GetDecoder(payload_type); 145 AudioDecoder* decoder = decoder_database->GetDecoder(payload_type);
146 // decoder should not return NULL. 146 // decoder should not return NULL.
147 assert(decoder != NULL); 147 assert(decoder != NULL);
148 if (!decoder || 148 if (!decoder ||
149 !decoder->PacketHasFec(packet->payload, packet->payload_length)) { 149 !decoder->PacketHasFec(packet->payload, packet->payload_length)) {
150 ++it; 150 ++it;
151 continue; 151 continue;
152 } 152 }
153 153
154 switch (info->codec_type) { 154 switch (info->codec_type) {
155 case kDecoderOpus: 155 case NetEqDecoder::kDecoderOpus:
156 case kDecoderOpus_2ch: { 156 case NetEqDecoder::kDecoderOpus_2ch: {
157 // The main payload of this packet should be decoded as a primary 157 // The main payload of this packet should be decoded as a primary
158 // payload, even if it comes as a secondary payload in a RED packet. 158 // payload, even if it comes as a secondary payload in a RED packet.
159 packet->primary = true; 159 packet->primary = true;
160 160
161 Packet* new_packet = new Packet; 161 Packet* new_packet = new Packet;
162 new_packet->header = packet->header; 162 new_packet->header = packet->header;
163 int duration = decoder-> 163 int duration = decoder->
164 PacketDurationRedundant(packet->payload, packet->payload_length); 164 PacketDurationRedundant(packet->payload, packet->payload_length);
165 new_packet->header.timestamp -= duration; 165 new_packet->header.timestamp -= duration;
166 new_packet->payload = new uint8_t[packet->payload_length]; 166 new_packet->payload = new uint8_t[packet->payload_length];
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 LOG(LS_WARNING) << "SplitAudio unknown payload type"; 229 LOG(LS_WARNING) << "SplitAudio unknown payload type";
230 return kUnknownPayloadType; 230 return kUnknownPayloadType;
231 } 231 }
232 // No splitting for a sync-packet. 232 // No splitting for a sync-packet.
233 if (packet->sync_packet) { 233 if (packet->sync_packet) {
234 ++it; 234 ++it;
235 continue; 235 continue;
236 } 236 }
237 PacketList new_packets; 237 PacketList new_packets;
238 switch (info->codec_type) { 238 switch (info->codec_type) {
239 case kDecoderPCMu: 239 case NetEqDecoder::kDecoderPCMu:
240 case kDecoderPCMa: { 240 case NetEqDecoder::kDecoderPCMa: {
241 // 8 bytes per ms; 8 timestamps per ms. 241 // 8 bytes per ms; 8 timestamps per ms.
242 SplitBySamples(packet, 8, 8, &new_packets); 242 SplitBySamples(packet, 8, 8, &new_packets);
243 break; 243 break;
244 } 244 }
245 case kDecoderPCMu_2ch: 245 case NetEqDecoder::kDecoderPCMu_2ch:
246 case kDecoderPCMa_2ch: { 246 case NetEqDecoder::kDecoderPCMa_2ch: {
247 // 2 * 8 bytes per ms; 8 timestamps per ms. 247 // 2 * 8 bytes per ms; 8 timestamps per ms.
248 SplitBySamples(packet, 2 * 8, 8, &new_packets); 248 SplitBySamples(packet, 2 * 8, 8, &new_packets);
249 break; 249 break;
250 } 250 }
251 case kDecoderG722: { 251 case NetEqDecoder::kDecoderG722: {
252 // 8 bytes per ms; 16 timestamps per ms. 252 // 8 bytes per ms; 16 timestamps per ms.
253 SplitBySamples(packet, 8, 16, &new_packets); 253 SplitBySamples(packet, 8, 16, &new_packets);
254 break; 254 break;
255 } 255 }
256 case kDecoderPCM16B: { 256 case NetEqDecoder::kDecoderPCM16B: {
257 // 16 bytes per ms; 8 timestamps per ms. 257 // 16 bytes per ms; 8 timestamps per ms.
258 SplitBySamples(packet, 16, 8, &new_packets); 258 SplitBySamples(packet, 16, 8, &new_packets);
259 break; 259 break;
260 } 260 }
261 case kDecoderPCM16Bwb: { 261 case NetEqDecoder::kDecoderPCM16Bwb: {
262 // 32 bytes per ms; 16 timestamps per ms. 262 // 32 bytes per ms; 16 timestamps per ms.
263 SplitBySamples(packet, 32, 16, &new_packets); 263 SplitBySamples(packet, 32, 16, &new_packets);
264 break; 264 break;
265 } 265 }
266 case kDecoderPCM16Bswb32kHz: { 266 case NetEqDecoder::kDecoderPCM16Bswb32kHz: {
267 // 64 bytes per ms; 32 timestamps per ms. 267 // 64 bytes per ms; 32 timestamps per ms.
268 SplitBySamples(packet, 64, 32, &new_packets); 268 SplitBySamples(packet, 64, 32, &new_packets);
269 break; 269 break;
270 } 270 }
271 case kDecoderPCM16Bswb48kHz: { 271 case NetEqDecoder::kDecoderPCM16Bswb48kHz: {
272 // 96 bytes per ms; 48 timestamps per ms. 272 // 96 bytes per ms; 48 timestamps per ms.
273 SplitBySamples(packet, 96, 48, &new_packets); 273 SplitBySamples(packet, 96, 48, &new_packets);
274 break; 274 break;
275 } 275 }
276 case kDecoderPCM16B_2ch: { 276 case NetEqDecoder::kDecoderPCM16B_2ch: {
277 // 2 * 16 bytes per ms; 8 timestamps per ms. 277 // 2 * 16 bytes per ms; 8 timestamps per ms.
278 SplitBySamples(packet, 2 * 16, 8, &new_packets); 278 SplitBySamples(packet, 2 * 16, 8, &new_packets);
279 break; 279 break;
280 } 280 }
281 case kDecoderPCM16Bwb_2ch: { 281 case NetEqDecoder::kDecoderPCM16Bwb_2ch: {
282 // 2 * 32 bytes per ms; 16 timestamps per ms. 282 // 2 * 32 bytes per ms; 16 timestamps per ms.
283 SplitBySamples(packet, 2 * 32, 16, &new_packets); 283 SplitBySamples(packet, 2 * 32, 16, &new_packets);
284 break; 284 break;
285 } 285 }
286 case kDecoderPCM16Bswb32kHz_2ch: { 286 case NetEqDecoder::kDecoderPCM16Bswb32kHz_2ch: {
287 // 2 * 64 bytes per ms; 32 timestamps per ms. 287 // 2 * 64 bytes per ms; 32 timestamps per ms.
288 SplitBySamples(packet, 2 * 64, 32, &new_packets); 288 SplitBySamples(packet, 2 * 64, 32, &new_packets);
289 break; 289 break;
290 } 290 }
291 case kDecoderPCM16Bswb48kHz_2ch: { 291 case NetEqDecoder::kDecoderPCM16Bswb48kHz_2ch: {
292 // 2 * 96 bytes per ms; 48 timestamps per ms. 292 // 2 * 96 bytes per ms; 48 timestamps per ms.
293 SplitBySamples(packet, 2 * 96, 48, &new_packets); 293 SplitBySamples(packet, 2 * 96, 48, &new_packets);
294 break; 294 break;
295 } 295 }
296 case kDecoderPCM16B_5ch: { 296 case NetEqDecoder::kDecoderPCM16B_5ch: {
297 // 5 * 16 bytes per ms; 8 timestamps per ms. 297 // 5 * 16 bytes per ms; 8 timestamps per ms.
298 SplitBySamples(packet, 5 * 16, 8, &new_packets); 298 SplitBySamples(packet, 5 * 16, 8, &new_packets);
299 break; 299 break;
300 } 300 }
301 case kDecoderILBC: { 301 case NetEqDecoder::kDecoderILBC: {
302 size_t bytes_per_frame; 302 size_t bytes_per_frame;
303 int timestamps_per_frame; 303 int timestamps_per_frame;
304 if (packet->payload_length >= 950) { 304 if (packet->payload_length >= 950) {
305 LOG(LS_WARNING) << "SplitAudio too large iLBC payload"; 305 LOG(LS_WARNING) << "SplitAudio too large iLBC payload";
306 return kTooLargePayload; 306 return kTooLargePayload;
307 } 307 }
308 if (packet->payload_length % 38 == 0) { 308 if (packet->payload_length % 38 == 0) {
309 // 20 ms frames. 309 // 20 ms frames.
310 bytes_per_frame = 38; 310 bytes_per_frame = 38;
311 timestamps_per_frame = 160; 311 timestamps_per_frame = 160;
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 new_packet->payload = new uint8_t[bytes_per_frame]; 432 new_packet->payload = new uint8_t[bytes_per_frame];
433 memcpy(new_packet->payload, payload_ptr, bytes_per_frame); 433 memcpy(new_packet->payload, payload_ptr, bytes_per_frame);
434 payload_ptr += bytes_per_frame; 434 payload_ptr += bytes_per_frame;
435 new_packets->push_back(new_packet); 435 new_packets->push_back(new_packet);
436 len -= bytes_per_frame; 436 len -= bytes_per_frame;
437 } 437 }
438 return kOK; 438 return kOK;
439 } 439 }
440 440
441 } // namespace webrtc 441 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_coding/neteq/neteq_unittest.cc ('k') | webrtc/modules/audio_coding/neteq/payload_splitter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698