Use default header extension map in rtc_event_log2text

Use defaults if the header extension map is missing from the config.

BUG=webrtc:6399

Review-Url: https://codereview.webrtc.org/2983283002
Cr-Commit-Position: refs/heads/master@{#19267}
This commit is contained in:
terelius 2017-08-08 05:40:26 -07:00 committed by Commit Bot
parent fe6d9ff891
commit 007d56229a
2 changed files with 45 additions and 0 deletions

View File

@ -16,6 +16,7 @@
#include "gflags/gflags.h"
#include "webrtc/common_types.h"
#include "webrtc/config.h"
#include "webrtc/logging/rtc_event_log/rtc_event_log_parser.h"
#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h"
#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/common_header.h"
@ -31,6 +32,7 @@
#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbn.h"
#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/tmmbr.h"
#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
#include "webrtc/modules/rtp_rtcp/source/rtp_header_extensions.h"
#include "webrtc/modules/rtp_rtcp/source/rtp_utility.h"
#include "webrtc/rtc_base/checks.h"
@ -119,6 +121,32 @@ const char* StreamInfo(webrtc::PacketDirection direction,
return "(unknown)";
}
// Return default values for header extensions, to use on streams without stored
// mapping data. Currently this only applies to audio streams, since the mapping
// is not stored in the event log.
// TODO(ivoc): Remove this once this mapping is stored in the event log for
// audio streams. Tracking bug: webrtc:6399
webrtc::RtpHeaderExtensionMap GetDefaultHeaderExtensionMap() {
webrtc::RtpHeaderExtensionMap default_map;
default_map.Register<webrtc::AudioLevel>(
webrtc::RtpExtension::kAudioLevelDefaultId);
default_map.Register<webrtc::TransmissionOffset>(
webrtc::RtpExtension::kTimestampOffsetDefaultId);
default_map.Register<webrtc::AbsoluteSendTime>(
webrtc::RtpExtension::kAbsSendTimeDefaultId);
default_map.Register<webrtc::VideoOrientation>(
webrtc::RtpExtension::kVideoRotationDefaultId);
default_map.Register<webrtc::VideoContentTypeExtension>(
webrtc::RtpExtension::kVideoContentTypeDefaultId);
default_map.Register<webrtc::VideoTimingExtension>(
webrtc::RtpExtension::kVideoTimingDefaultId);
default_map.Register<webrtc::TransportSequenceNumber>(
webrtc::RtpExtension::kTransportSequenceNumberDefaultId);
default_map.Register<webrtc::PlayoutDelayLimits>(
webrtc::RtpExtension::kPlayoutDelayDefaultId);
return default_map;
}
void PrintSenderReport(const webrtc::ParsedRtcEventLog& parsed_stream,
const webrtc::rtcp::CommonHeader& rtcp_block,
uint64_t log_timestamp,
@ -344,6 +372,8 @@ int main(int argc, char* argv[]) {
if (!FLAGS_ssrc.empty())
RTC_CHECK(ParseSsrc(FLAGS_ssrc)) << "Flag verification has failed.";
webrtc::RtpHeaderExtensionMap default_map = GetDefaultHeaderExtensionMap();
webrtc::ParsedRtcEventLog parsed_stream;
if (!parsed_stream.ParseFile(input_file)) {
std::cerr << "Error while parsing input file: " << input_file << std::endl;
@ -444,6 +474,9 @@ int main(int argc, char* argv[]) {
webrtc::RtpHeaderExtensionMap* extension_map = parsed_stream.GetRtpHeader(
i, &direction, header, &header_length, &total_length);
if (extension_map == nullptr)
extension_map = &default_map;
// Parse header to get SSRC and RTP time.
webrtc::RtpUtility::RtpHeaderParser rtp_parser(header, header_length);
webrtc::RTPHeader parsed_header;

View File

@ -119,8 +119,20 @@ int64_t WrappingDifference(uint32_t later, uint32_t earlier, int64_t modulus) {
webrtc::RtpHeaderExtensionMap GetDefaultHeaderExtensionMap() {
webrtc::RtpHeaderExtensionMap default_map;
default_map.Register<AudioLevel>(webrtc::RtpExtension::kAudioLevelDefaultId);
default_map.Register<TransmissionOffset>(
webrtc::RtpExtension::kTimestampOffsetDefaultId);
default_map.Register<AbsoluteSendTime>(
webrtc::RtpExtension::kAbsSendTimeDefaultId);
default_map.Register<VideoOrientation>(
webrtc::RtpExtension::kVideoRotationDefaultId);
default_map.Register<VideoContentTypeExtension>(
webrtc::RtpExtension::kVideoContentTypeDefaultId);
default_map.Register<VideoTimingExtension>(
webrtc::RtpExtension::kVideoTimingDefaultId);
default_map.Register<TransportSequenceNumber>(
webrtc::RtpExtension::kTransportSequenceNumberDefaultId);
default_map.Register<PlayoutDelayLimits>(
webrtc::RtpExtension::kPlayoutDelayDefaultId);
return default_map;
}