Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Unified Diff: webrtc/logging/rtc_event_log/rtc_event_log2text.cc

Issue 2918103002: Make rtc_event_log2text output header extensions (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) ==
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698