Move code for setting field trials from NetEqTestFactory to the main function in neteq_rtpplay.
It is problematic to set field trials more than once, so to avoid running into problems, this functionality has been placed in the main function of neteq_rtpplay.
Bug: webrtc:9667
Change-Id: Ib9b9990f30a1715b50889dbfc4d74787bcbe5dae
Reviewed-on: https://webrtc-review.googlesource.com/98541
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24673}
diff --git a/modules/audio_coding/neteq/tools/neteq_rtpplay.cc b/modules/audio_coding/neteq/tools/neteq_rtpplay.cc
index 2968a22..d2dcdae 100644
--- a/modules/audio_coding/neteq/tools/neteq_rtpplay.cc
+++ b/modules/audio_coding/neteq/tools/neteq_rtpplay.cc
@@ -8,15 +8,61 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#include <stdio.h>
+#include <iostream>
+#include <string>
#include "modules/audio_coding/neteq/tools/neteq_test.h"
#include "modules/audio_coding/neteq/tools/neteq_test_factory.h"
+#include "rtc_base/flags.h"
+#include "system_wrappers/include/field_trial_default.h"
+#include "test/field_trial.h"
+
+DEFINE_bool(codec_map,
+ false,
+ "Prints the mapping between RTP payload type and "
+ "codec");
+DEFINE_string(
+ force_fieldtrials,
+ "",
+ "Field trials control experimental feature code which can be forced. "
+ "E.g. running with --force_fieldtrials=WebRTC-FooFeature/Enable/"
+ " will assign the group Enable to field trial WebRTC-FooFeature.");
+DEFINE_bool(help, false, "Prints this message");
int main(int argc, char* argv[]) {
webrtc::test::NetEqTestFactory factory;
+ std::string program_name = argv[0];
+ std::string usage =
+ "Tool for decoding an RTP dump file using NetEq.\n"
+ "Run " +
+ program_name +
+ " --help for usage.\n"
+ "Example usage:\n" +
+ program_name + " input.rtp output.{pcm, wav}\n";
+ if (rtc::FlagList::SetFlagsFromCommandLine(&argc, argv, true)) {
+ exit(1);
+ }
+ if (FLAG_help) {
+ std::cout << usage;
+ rtc::FlagList::Print(nullptr, false);
+ exit(0);
+ }
+ if (FLAG_codec_map) {
+ factory.PrintCodecMap();
+ }
+ if (argc != 3) {
+ if (FLAG_codec_map) {
+ // We have already printed the codec map. Just end the program.
+ exit(0);
+ }
+ // Print usage information.
+ std::cout << usage;
+ exit(0);
+ }
+ webrtc::test::ValidateFieldTrialsStringOrDie(FLAG_force_fieldtrials);
+ webrtc::field_trial::InitFieldTrialsFromString(FLAG_force_fieldtrials);
std::unique_ptr<webrtc::test::NetEqTest> test =
- factory.InitializeTest(argc, argv);
+ factory.InitializeTest(argv[1], argv[2]);
test->Run();
return 0;
}