| OLD | NEW |
| 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 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 "Only use packets with this SSRC (decimal or hex, the latter " | 154 "Only use packets with this SSRC (decimal or hex, the latter " |
| 155 "starting with 0x)"); | 155 "starting with 0x)"); |
| 156 const bool hex_ssrc_dummy = | 156 const bool hex_ssrc_dummy = |
| 157 google::RegisterFlagValidator(&FLAGS_ssrc, &ValidateSsrcValue); | 157 google::RegisterFlagValidator(&FLAGS_ssrc, &ValidateSsrcValue); |
| 158 DEFINE_int32(audio_level, 1, "Extension ID for audio level (RFC 6464)"); | 158 DEFINE_int32(audio_level, 1, "Extension ID for audio level (RFC 6464)"); |
| 159 const bool audio_level_dummy = | 159 const bool audio_level_dummy = |
| 160 google::RegisterFlagValidator(&FLAGS_audio_level, &ValidateExtensionId); | 160 google::RegisterFlagValidator(&FLAGS_audio_level, &ValidateExtensionId); |
| 161 DEFINE_int32(abs_send_time, 3, "Extension ID for absolute sender time"); | 161 DEFINE_int32(abs_send_time, 3, "Extension ID for absolute sender time"); |
| 162 const bool abs_send_time_dummy = | 162 const bool abs_send_time_dummy = |
| 163 google::RegisterFlagValidator(&FLAGS_abs_send_time, &ValidateExtensionId); | 163 google::RegisterFlagValidator(&FLAGS_abs_send_time, &ValidateExtensionId); |
| 164 DEFINE_int32(transport_seq_no, 5, "Extension ID for transport sequence number"); |
| 165 const bool transport_seq_no_dummy = |
| 166 google::RegisterFlagValidator(&FLAGS_transport_seq_no, |
| 167 &ValidateExtensionId); |
| 164 DEFINE_bool(matlabplot, | 168 DEFINE_bool(matlabplot, |
| 165 false, | 169 false, |
| 166 "Generates a matlab script for plotting the delay profile"); | 170 "Generates a matlab script for plotting the delay profile"); |
| 167 | 171 |
| 168 // Maps a codec type to a printable name string. | 172 // Maps a codec type to a printable name string. |
| 169 std::string CodecName(NetEqDecoder codec) { | 173 std::string CodecName(NetEqDecoder codec) { |
| 170 switch (codec) { | 174 switch (codec) { |
| 171 case NetEqDecoder::kDecoderPCMu: | 175 case NetEqDecoder::kDecoderPCMu: |
| 172 return "PCM-u"; | 176 return "PCM-u"; |
| 173 case NetEqDecoder::kDecoderPCMa: | 177 case NetEqDecoder::kDecoderPCMa: |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 413 a.expand_rate += b.expand_rate / 16384.0; | 417 a.expand_rate += b.expand_rate / 16384.0; |
| 414 a.speech_expand_rate += b.speech_expand_rate / 16384.0; | 418 a.speech_expand_rate += b.speech_expand_rate / 16384.0; |
| 415 a.preemptive_rate += b.preemptive_rate / 16384.0; | 419 a.preemptive_rate += b.preemptive_rate / 16384.0; |
| 416 a.accelerate_rate += b.accelerate_rate / 16384.0; | 420 a.accelerate_rate += b.accelerate_rate / 16384.0; |
| 417 a.secondary_decoded_rate += b.secondary_decoded_rate / 16384.0; | 421 a.secondary_decoded_rate += b.secondary_decoded_rate / 16384.0; |
| 418 a.secondary_discarded_rate += b.secondary_discarded_rate / 16384.0; | 422 a.secondary_discarded_rate += b.secondary_discarded_rate / 16384.0; |
| 419 a.clockdrift_ppm += b.clockdrift_ppm; | 423 a.clockdrift_ppm += b.clockdrift_ppm; |
| 420 a.added_zero_samples += b.added_zero_samples; | 424 a.added_zero_samples += b.added_zero_samples; |
| 421 a.mean_waiting_time_ms += b.mean_waiting_time_ms; | 425 a.mean_waiting_time_ms += b.mean_waiting_time_ms; |
| 422 a.median_waiting_time_ms += b.median_waiting_time_ms; | 426 a.median_waiting_time_ms += b.median_waiting_time_ms; |
| 423 a.min_waiting_time_ms += b.min_waiting_time_ms; | 427 a.min_waiting_time_ms = |
| 424 a.max_waiting_time_ms += b.max_waiting_time_ms; | 428 std::min(a.min_waiting_time_ms, |
| 429 static_cast<double>(b.min_waiting_time_ms)); |
| 430 a.max_waiting_time_ms = |
| 431 std::max(a.max_waiting_time_ms, |
| 432 static_cast<double>(b.max_waiting_time_ms)); |
| 425 return a; | 433 return a; |
| 426 }); | 434 }); |
| 427 | 435 |
| 428 sum_stats.current_buffer_size_ms /= stats_.size(); | 436 sum_stats.current_buffer_size_ms /= stats_.size(); |
| 429 sum_stats.preferred_buffer_size_ms /= stats_.size(); | 437 sum_stats.preferred_buffer_size_ms /= stats_.size(); |
| 430 sum_stats.jitter_peaks_found /= stats_.size(); | 438 sum_stats.jitter_peaks_found /= stats_.size(); |
| 431 sum_stats.packet_loss_rate /= stats_.size(); | 439 sum_stats.packet_loss_rate /= stats_.size(); |
| 432 sum_stats.expand_rate /= stats_.size(); | 440 sum_stats.expand_rate /= stats_.size(); |
| 433 sum_stats.speech_expand_rate /= stats_.size(); | 441 sum_stats.speech_expand_rate /= stats_.size(); |
| 434 sum_stats.preemptive_rate /= stats_.size(); | 442 sum_stats.preemptive_rate /= stats_.size(); |
| 435 sum_stats.accelerate_rate /= stats_.size(); | 443 sum_stats.accelerate_rate /= stats_.size(); |
| 436 sum_stats.secondary_decoded_rate /= stats_.size(); | 444 sum_stats.secondary_decoded_rate /= stats_.size(); |
| 437 sum_stats.secondary_discarded_rate /= stats_.size(); | 445 sum_stats.secondary_discarded_rate /= stats_.size(); |
| 438 sum_stats.clockdrift_ppm /= stats_.size(); | 446 sum_stats.clockdrift_ppm /= stats_.size(); |
| 439 sum_stats.added_zero_samples /= stats_.size(); | 447 sum_stats.added_zero_samples /= stats_.size(); |
| 440 sum_stats.mean_waiting_time_ms /= stats_.size(); | 448 sum_stats.mean_waiting_time_ms /= stats_.size(); |
| 441 sum_stats.median_waiting_time_ms /= stats_.size(); | 449 sum_stats.median_waiting_time_ms /= stats_.size(); |
| 442 sum_stats.min_waiting_time_ms /= stats_.size(); | |
| 443 sum_stats.max_waiting_time_ms /= stats_.size(); | |
| 444 | 450 |
| 445 return sum_stats; | 451 return sum_stats; |
| 446 } | 452 } |
| 447 | 453 |
| 448 private: | 454 private: |
| 449 NetEqGetAudioCallback* other_callback_; | 455 NetEqGetAudioCallback* other_callback_; |
| 450 size_t counter_ = 0; | 456 size_t counter_ = 0; |
| 451 std::vector<NetEqNetworkStatistics> stats_; | 457 std::vector<NetEqNetworkStatistics> stats_; |
| 452 }; | 458 }; |
| 453 | 459 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 470 return 0; | 476 return 0; |
| 471 } | 477 } |
| 472 // Print usage information. | 478 // Print usage information. |
| 473 std::cout << google::ProgramUsage(); | 479 std::cout << google::ProgramUsage(); |
| 474 return 0; | 480 return 0; |
| 475 } | 481 } |
| 476 | 482 |
| 477 // Gather RTP header extensions in a map. | 483 // Gather RTP header extensions in a map. |
| 478 NetEqPacketSourceInput::RtpHeaderExtensionMap rtp_ext_map = { | 484 NetEqPacketSourceInput::RtpHeaderExtensionMap rtp_ext_map = { |
| 479 {FLAGS_audio_level, kRtpExtensionAudioLevel}, | 485 {FLAGS_audio_level, kRtpExtensionAudioLevel}, |
| 480 {FLAGS_abs_send_time, kRtpExtensionAbsoluteSendTime}}; | 486 {FLAGS_abs_send_time, kRtpExtensionAbsoluteSendTime}, |
| 487 {FLAGS_transport_seq_no, kRtpExtensionTransportSequenceNumber}}; |
| 481 | 488 |
| 482 const std::string input_file_name = argv[1]; | 489 const std::string input_file_name = argv[1]; |
| 483 std::unique_ptr<NetEqInput> input; | 490 std::unique_ptr<NetEqInput> input; |
| 484 if (RtpFileSource::ValidRtpDump(input_file_name) || | 491 if (RtpFileSource::ValidRtpDump(input_file_name) || |
| 485 RtpFileSource::ValidPcap(input_file_name)) { | 492 RtpFileSource::ValidPcap(input_file_name)) { |
| 486 input.reset(new NetEqRtpDumpInput(input_file_name, rtp_ext_map)); | 493 input.reset(new NetEqRtpDumpInput(input_file_name, rtp_ext_map)); |
| 487 } else { | 494 } else { |
| 488 input.reset(new NetEqEventLogInput(input_file_name, rtp_ext_map)); | 495 input.reset(new NetEqEventLogInput(input_file_name, rtp_ext_map)); |
| 489 } | 496 } |
| 490 | 497 |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 664 return 0; | 671 return 0; |
| 665 } | 672 } |
| 666 | 673 |
| 667 } // namespace | 674 } // namespace |
| 668 } // namespace test | 675 } // namespace test |
| 669 } // namespace webrtc | 676 } // namespace webrtc |
| 670 | 677 |
| 671 int main(int argc, char* argv[]) { | 678 int main(int argc, char* argv[]) { |
| 672 webrtc::test::RunTest(argc, argv); | 679 webrtc::test::RunTest(argc, argv); |
| 673 } | 680 } |
| OLD | NEW |