Index: webrtc/logging/rtc_event_log/rtc_event_log2text.cc |
diff --git a/webrtc/logging/rtc_event_log/rtc_event_log2text.cc b/webrtc/logging/rtc_event_log/rtc_event_log2text.cc |
index 1dcc78b9765d5d4ab8d49822ae71556ee2388387..d48bba4732956720412545cac63b43ca1951c1ca 100644 |
--- a/webrtc/logging/rtc_event_log/rtc_event_log2text.cc |
+++ b/webrtc/logging/rtc_event_log/rtc_event_log2text.cc |
@@ -9,8 +9,10 @@ |
*/ |
#include <iostream> |
+#include <map> |
#include <sstream> |
#include <string> |
+#include <utility> // pair |
#include "gflags/gflags.h" |
#include "webrtc/base/checks.h" |
@@ -348,12 +350,21 @@ int main(int argc, char* argv[]) { |
return -1; |
} |
+ typedef std::pair<uint32_t, webrtc::PacketDirection> StreamId; |
+ // For each separate stream identified by StreamId we need a |
+ // separate extension_map, because negotiated extensions may differ. |
+ std::map<StreamId, webrtc::RtpHeaderExtensionMap> extension_maps; |
+ |
for (size_t i = 0; i < parsed_stream.GetNumberOfEvents(); i++) { |
if (!FLAGS_noconfig && !FLAGS_novideo && !FLAGS_noincoming && |
parsed_stream.GetEventType(i) == |
webrtc::ParsedRtcEventLog::VIDEO_RECEIVER_CONFIG_EVENT) { |
webrtc::rtclog::StreamConfig config = |
parsed_stream.GetVideoReceiveConfig(i); |
+ extension_maps[StreamId(config.remote_ssrc, webrtc::kIncomingPacket)] = |
+ webrtc::RtpHeaderExtensionMap(config.rtp_extensions); |
+ extension_maps[StreamId(config.rtx_ssrc, webrtc::kIncomingPacket)] = |
+ webrtc::RtpHeaderExtensionMap(config.rtp_extensions); |
std::cout << parsed_stream.GetTimestamp(i) << "\tVIDEO_RECV_CONFIG" |
<< "\tssrc=" << config.remote_ssrc |
<< "\tfeedback_ssrc=" << config.local_ssrc; |
@@ -376,6 +387,10 @@ int main(int argc, char* argv[]) { |
std::vector<webrtc::rtclog::StreamConfig> configs = |
parsed_stream.GetVideoSendConfig(i); |
for (const auto& config : configs) { |
+ extension_maps[StreamId(config.local_ssrc, webrtc::kOutgoingPacket)] = |
+ webrtc::RtpHeaderExtensionMap(config.rtp_extensions); |
+ extension_maps[StreamId(config.rtx_ssrc, webrtc::kOutgoingPacket)] = |
+ webrtc::RtpHeaderExtensionMap(config.rtp_extensions); |
terelius
2017/06/02 10:55:03
Maybe this should be parsed from audio configs too
ilnik
2017/06/02 11:25:59
Done.
|
std::cout << parsed_stream.GetTimestamp(i) << "\tVIDEO_SEND_CONFIG"; |
std::cout << "\tssrcs=" << config.local_ssrc; |
std::cout << "\trtx_ssrcs=" << config.rtx_ssrc; |
@@ -439,7 +454,6 @@ int main(int argc, char* argv[]) { |
size_t total_length; |
uint8_t header[IP_PACKET_SIZE]; |
webrtc::PacketDirection direction; |
- |
parsed_stream.GetRtpHeader(i, &direction, header, &header_length, |
&total_length); |
@@ -447,6 +461,12 @@ int main(int argc, char* argv[]) { |
webrtc::RtpUtility::RtpHeaderParser rtp_parser(header, header_length); |
webrtc::RTPHeader parsed_header; |
rtp_parser.Parse(&parsed_header); |
+ StreamId stream_id(parsed_header.ssrc, direction); |
+ if (extension_maps.count(stream_id) == 1) { |
+ webrtc::RtpHeaderExtensionMap* extension_map = |
+ &extension_maps[stream_id]; |
+ rtp_parser.Parse(&parsed_header, extension_map); |
+ } |
MediaType media_type = |
parsed_stream.GetMediaType(parsed_header.ssrc, direction); |
@@ -456,7 +476,31 @@ int main(int argc, char* argv[]) { |
std::cout << parsed_stream.GetTimestamp(i) << "\tRTP" |
<< StreamInfo(direction, media_type) |
<< "\tssrc=" << parsed_header.ssrc |
- << "\ttimestamp=" << parsed_header.timestamp << std::endl; |
+ << "\ttimestamp=" << parsed_header.timestamp; |
+ if (parsed_header.extension.hasAbsoluteSendTime) { |
+ std::cout << "\tAbsSendTime=" |
terelius
2017/06/02 10:55:03
Is this the format that perkj suggested?
ilnik
2017/06/02 11:25:59
No. It was something quick I used for myself. Do w
ilnik
2017/06/02 11:43:35
We had an offline discussion with perkj@. He doesn
|
+ << parsed_header.extension.absoluteSendTime; |
+ } |
+ if (parsed_header.extension.hasVideoContentType) { |
+ std::cout << "\tContentType=" |
+ << static_cast<int>(parsed_header.extension.videoContentType); |
+ } |
+ if (parsed_header.extension.hasVideoRotation) { |
+ std::cout << "\tRotation=" |
+ << static_cast<int>(parsed_header.extension.videoRotation); |
+ } |
+ if (parsed_header.extension.hasTransportSequenceNumber) { |
+ std::cout << "\tTransportSeq=" |
+ << parsed_header.extension.transportSequenceNumber; |
+ } |
+ if (parsed_header.extension.hasTransmissionTimeOffset) { |
+ std::cout << "\tTransmTimeOffset=" |
+ << parsed_header.extension.transmissionTimeOffset; |
+ } |
+ if (parsed_header.extension.hasAudioLevel) { |
+ std::cout << "\tAudioLevel=" << parsed_header.extension.audioLevel; |
+ } |
+ std::cout << std::endl; |
} |
if (!FLAGS_nortcp && |
parsed_stream.GetEventType(i) == |