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

Side by Side Diff: webrtc/modules/audio_coding/neteq/tools/neteq_rtpplay.cc

Issue 1228843002: Update audio code to use size_t more correctly, (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Resync Created 5 years, 5 months 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) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 assert(*frame_size_samples > 0); 317 assert(*frame_size_samples > 0);
318 if (!replacement_audio_file->Read(*frame_size_samples, 318 if (!replacement_audio_file->Read(*frame_size_samples,
319 (*replacement_audio).get())) { 319 (*replacement_audio).get())) {
320 std::cerr << "Could not read replacement audio file." << std::endl; 320 std::cerr << "Could not read replacement audio file." << std::endl;
321 webrtc::Trace::ReturnTrace(); 321 webrtc::Trace::ReturnTrace();
322 exit(1); 322 exit(1);
323 } 323 }
324 // Encode it as PCM16. 324 // Encode it as PCM16.
325 assert((*payload).get()); 325 assert((*payload).get());
326 payload_len = WebRtcPcm16b_Encode((*replacement_audio).get(), 326 payload_len = WebRtcPcm16b_Encode((*replacement_audio).get(),
327 static_cast<int16_t>(*frame_size_samples), 327 *frame_size_samples,
328 (*payload).get()); 328 (*payload).get());
329 assert(payload_len == 2 * *frame_size_samples); 329 assert(payload_len == 2 * *frame_size_samples);
330 // Change payload type to PCM16. 330 // Change payload type to PCM16.
331 switch (CodecSampleRate(rtp_header->header.payloadType)) { 331 switch (CodecSampleRate(rtp_header->header.payloadType)) {
332 case 8000: 332 case 8000:
333 rtp_header->header.payloadType = static_cast<uint8_t>(FLAGS_pcm16b); 333 rtp_header->header.payloadType = static_cast<uint8_t>(FLAGS_pcm16b);
334 break; 334 break;
335 case 16000: 335 case 16000:
336 rtp_header->header.payloadType = static_cast<uint8_t>(FLAGS_pcm16b_wb); 336 rtp_header->header.payloadType = static_cast<uint8_t>(FLAGS_pcm16b_wb);
337 break; 337 break;
(...skipping 13 matching lines...) Expand all
351 exit(1); 351 exit(1);
352 } 352 }
353 } 353 }
354 return payload_len; 354 return payload_len;
355 } 355 }
356 356
357 } // namespace 357 } // namespace
358 358
359 int main(int argc, char* argv[]) { 359 int main(int argc, char* argv[]) {
360 static const int kMaxChannels = 5; 360 static const int kMaxChannels = 5;
361 static const int kMaxSamplesPerMs = 48000 / 1000; 361 static const size_t kMaxSamplesPerMs = 48000 / 1000;
362 static const int kOutputBlockSizeMs = 10; 362 static const int kOutputBlockSizeMs = 10;
363 363
364 std::string program_name = argv[0]; 364 std::string program_name = argv[0];
365 std::string usage = "Tool for decoding an RTP dump file using NetEq.\n" 365 std::string usage = "Tool for decoding an RTP dump file using NetEq.\n"
366 "Run " + program_name + " --helpshort for usage.\n" 366 "Run " + program_name + " --helpshort for usage.\n"
367 "Example usage:\n" + program_name + 367 "Example usage:\n" + program_name +
368 " input.rtp output.{pcm, wav}\n"; 368 " input.rtp output.{pcm, wav}\n";
369 google::SetUsageMessage(usage); 369 google::SetUsageMessage(usage);
370 google::ParseCommandLineFlags(&argc, &argv, true); 370 google::ParseCommandLineFlags(&argc, &argv, true);
371 371
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 if (packet_available != next_packet_available) { 545 if (packet_available != next_packet_available) {
546 packet_available = !packet_available; 546 packet_available = !packet_available;
547 next_packet_available = !next_packet_available; 547 next_packet_available = !next_packet_available;
548 } 548 }
549 } 549 }
550 next_input_time_ms = packet->time_ms(); 550 next_input_time_ms = packet->time_ms();
551 } 551 }
552 552
553 // Check if it is time to get output audio. 553 // Check if it is time to get output audio.
554 if (time_now_ms >= next_output_time_ms) { 554 if (time_now_ms >= next_output_time_ms) {
555 static const int kOutDataLen = 555 static const size_t kOutDataLen =
556 kOutputBlockSizeMs * kMaxSamplesPerMs * kMaxChannels; 556 kOutputBlockSizeMs * kMaxSamplesPerMs * kMaxChannels;
557 int16_t out_data[kOutDataLen]; 557 int16_t out_data[kOutDataLen];
558 int num_channels; 558 int num_channels;
559 int samples_per_channel; 559 size_t samples_per_channel;
560 int error = neteq->GetAudio(kOutDataLen, out_data, &samples_per_channel, 560 int error = neteq->GetAudio(kOutDataLen, out_data, &samples_per_channel,
561 &num_channels, NULL); 561 &num_channels, NULL);
562 if (error != NetEq::kOK) { 562 if (error != NetEq::kOK) {
563 std::cerr << "GetAudio returned error code " << 563 std::cerr << "GetAudio returned error code " <<
564 neteq->LastError() << std::endl; 564 neteq->LastError() << std::endl;
565 } else { 565 } else {
566 // Calculate sample rate from output size. 566 // Calculate sample rate from output size.
567 sample_rate_hz = 1000 * samples_per_channel / kOutputBlockSizeMs; 567 sample_rate_hz =
568 static_cast<int>(1000 * samples_per_channel / kOutputBlockSizeMs);
hlundin-webrtc 2015/08/10 11:30:02 rtc::checked_cast
Peter Kasting 2015/08/17 22:49:47 Done.
568 } 569 }
569 570
570 // Write to file. 571 // Write to file.
571 // TODO(hlundin): Make writing to file optional. 572 // TODO(hlundin): Make writing to file optional.
572 size_t write_len = samples_per_channel * num_channels; 573 size_t write_len = samples_per_channel * num_channels;
573 if (!output->WriteArray(out_data, write_len)) { 574 if (!output->WriteArray(out_data, write_len)) {
574 std::cerr << "Error while writing to file" << std::endl; 575 std::cerr << "Error while writing to file" << std::endl;
575 webrtc::Trace::ReturnTrace(); 576 webrtc::Trace::ReturnTrace();
576 exit(1); 577 exit(1);
577 } 578 }
578 next_output_time_ms += kOutputBlockSizeMs; 579 next_output_time_ms += kOutputBlockSizeMs;
579 } 580 }
580 // Advance time to next event. 581 // Advance time to next event.
581 time_now_ms = std::min(next_input_time_ms, next_output_time_ms); 582 time_now_ms = std::min(next_input_time_ms, next_output_time_ms);
582 } 583 }
583 584
584 printf("Simulation done\n"); 585 printf("Simulation done\n");
585 printf("Produced %i ms of audio\n", time_now_ms - start_time_ms); 586 printf("Produced %i ms of audio\n", time_now_ms - start_time_ms);
586 587
587 delete neteq; 588 delete neteq;
588 webrtc::Trace::ReturnTrace(); 589 webrtc::Trace::ReturnTrace();
589 return 0; 590 return 0;
590 } 591 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698