/* * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #include #include #include "gflags/gflags.h" #include "webrtc/modules/audio_coding/neteq/tools/neteq_performance_test.h" #include "webrtc/typedefs.h" // Flag validators. static bool ValidateRuntime(const char* flagname, int value) { if (value > 0) // Value is ok. return true; printf("Invalid value for --%s: %d\n", flagname, static_cast(value)); return false; } static bool ValidateLossrate(const char* flagname, int value) { if (value >= 0) // Value is ok. return true; printf("Invalid value for --%s: %d\n", flagname, static_cast(value)); return false; } static bool ValidateDriftfactor(const char* flagname, double value) { if (value >= 0.0 && value < 1.0) // Value is ok. return true; printf("Invalid value for --%s: %f\n", flagname, value); return false; } // Define command line flags. DEFINE_int32(runtime_ms, 10000, "Simulated runtime in ms."); static const bool runtime_ms_dummy = google::RegisterFlagValidator(&FLAGS_runtime_ms, &ValidateRuntime); DEFINE_int32(lossrate, 10, "Packet lossrate; drop every N packets."); static const bool lossrate_dummy = google::RegisterFlagValidator(&FLAGS_lossrate, &ValidateLossrate); DEFINE_double(drift, 0.1, "Clockdrift factor."); static const bool drift_dummy = google::RegisterFlagValidator(&FLAGS_drift, &ValidateDriftfactor); int main(int argc, char* argv[]) { std::string program_name = argv[0]; std::string usage = "Tool for measuring the speed of NetEq.\n" "Usage: " + program_name + " [options]\n\n" " --runtime_ms=N runtime in ms; default is 10000 ms\n" " --lossrate=N drop every N packets; default is 10\n" " --drift=F clockdrift factor between 0.0 and 1.0; " "default is 0.1\n"; google::SetUsageMessage(usage); google::ParseCommandLineFlags(&argc, &argv, true); if (argc != 1) { // Print usage information. std::cout << google::ProgramUsage(); return 0; } int64_t result = webrtc::test::NetEqPerformanceTest::Run(FLAGS_runtime_ms, FLAGS_lossrate, FLAGS_drift); if (result <= 0) { std::cout << "There was an error" << std::endl; return -1; } std::cout << "Simulation done" << std::endl; std::cout << "Runtime = " << result << " ms" << std::endl; return 0; }