| /* |
| * Copyright (c) 2014 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 "webrtc/modules/remote_bitrate_estimator/tools/bwe_rtp.h" |
| |
| #include <stdio.h> |
| #include <string> |
| |
| #include "webrtc/modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h" |
| #include "webrtc/modules/rtp_rtcp/interface/rtp_header_parser.h" |
| #include "webrtc/modules/rtp_rtcp/interface/rtp_payload_registry.h" |
| #include "webrtc/test/rtp_file_reader.h" |
| |
| const int kMinBitrateBps = 30000; |
| |
| bool ParseArgsAndSetupEstimator(int argc, |
| char** argv, |
| webrtc::Clock* clock, |
| webrtc::RemoteBitrateObserver* observer, |
| webrtc::test::RtpFileReader** rtp_reader, |
| webrtc::RtpHeaderParser** parser, |
| webrtc::RemoteBitrateEstimator** estimator, |
| std::string* estimator_used) { |
| *rtp_reader = webrtc::test::RtpFileReader::Create( |
| webrtc::test::RtpFileReader::kRtpDump, argv[3]); |
| if (!*rtp_reader) { |
| fprintf(stderr, "Cannot open input file %s\n", argv[3]); |
| return false; |
| } |
| fprintf(stderr, "Input file: %s\n\n", argv[3]); |
| webrtc::RTPExtensionType extension = webrtc::kRtpExtensionAbsoluteSendTime; |
| |
| if (strncmp("tsoffset", argv[1], 8) == 0) { |
| extension = webrtc::kRtpExtensionTransmissionTimeOffset; |
| fprintf(stderr, "Extension: toffset\n"); |
| } else { |
| fprintf(stderr, "Extension: abs\n"); |
| } |
| int id = atoi(argv[2]); |
| |
| // Setup the RTP header parser and the bitrate estimator. |
| *parser = webrtc::RtpHeaderParser::Create(); |
| (*parser)->RegisterRtpHeaderExtension(extension, id); |
| if (estimator) { |
| switch (extension) { |
| case webrtc::kRtpExtensionAbsoluteSendTime: { |
| webrtc::AbsoluteSendTimeRemoteBitrateEstimatorFactory factory; |
| *estimator = factory.Create(observer, clock, webrtc::kAimdControl, |
| kMinBitrateBps); |
| *estimator_used = "AbsoluteSendTimeRemoteBitrateEstimator"; |
| break; |
| } |
| case webrtc::kRtpExtensionTransmissionTimeOffset: { |
| webrtc::RemoteBitrateEstimatorFactory factory; |
| *estimator = factory.Create(observer, clock, webrtc::kAimdControl, |
| kMinBitrateBps); |
| *estimator_used = "RemoteBitrateEstimator"; |
| break; |
| } |
| default: |
| assert(false); |
| } |
| } |
| return true; |
| } |