diff --git a/webrtc/modules/remote_bitrate_estimator/tools/bwe_rtp_play.cc b/webrtc/modules/remote_bitrate_estimator/tools/bwe_rtp_play.cc index b8c379ae5..dde9bdd60 100644 --- a/webrtc/modules/remote_bitrate_estimator/tools/bwe_rtp_play.cc +++ b/webrtc/modules/remote_bitrate_estimator/tools/bwe_rtp_play.cc @@ -62,47 +62,60 @@ int main(int argc, char** argv) { // Process the file. int packet_counter = 0; - int64_t next_process_time_ms = 0; int64_t next_rtp_time_ms = 0; int64_t first_rtp_time_ms = -1; - int non_zero_abs_send_time = 0; - int non_zero_ts_offsets = 0; + int abs_send_time_count = 0; + int ts_offset_count = 0; + webrtc::test::RtpPacket packet; + if (!rtp_reader->NextPacket(&packet)) { + printf("No RTP packet found\n"); + return 0; + } + first_rtp_time_ms = packet.time_ms; + packet.time_ms = packet.time_ms - first_rtp_time_ms; while (true) { if (next_rtp_time_ms <= clock.TimeInMilliseconds()) { - webrtc::test::RtpPacket packet; + webrtc::RTPHeader header; + parser->Parse(packet.data, packet.length, &header); + if (header.extension.hasAbsoluteSendTime) + ++abs_send_time_count; + if (header.extension.hasTransmissionTimeOffset) + ++ts_offset_count; + size_t packet_length = packet.length; + // Some RTP dumps only include the header, in which case packet.length + // is equal to the header length. In those cases packet.original_length + // usually contains the original packet length. + if (packet.original_length > 0) { + packet_length = packet.original_length; + } + rbe->IncomingPacket(clock.TimeInMilliseconds(), + packet_length - header.headerLength, + header); + ++packet_counter; if (!rtp_reader->NextPacket(&packet)) { break; } - if (first_rtp_time_ms == -1) - first_rtp_time_ms = packet.time_ms; packet.time_ms = packet.time_ms - first_rtp_time_ms; - webrtc::RTPHeader header; - parser->Parse(packet.data, packet.length, &header); - if (header.extension.absoluteSendTime != 0) - ++non_zero_abs_send_time; - if (header.extension.transmissionTimeOffset != 0) - ++non_zero_ts_offsets; - rbe->IncomingPacket(clock.TimeInMilliseconds(), - packet.length - header.headerLength, - header); - ++packet_counter; + next_rtp_time_ms = packet.time_ms; } - next_process_time_ms = rbe->TimeUntilNextProcess() + - clock.TimeInMilliseconds(); - if (next_process_time_ms <= clock.TimeInMilliseconds()) { + int time_until_process_ms = rbe->TimeUntilNextProcess(); + if (time_until_process_ms <= 0) { rbe->Process(); } int time_until_next_event = - std::min(next_process_time_ms, next_rtp_time_ms) - - clock.TimeInMilliseconds(); + std::min(rbe->TimeUntilNextProcess(), + static_cast(next_rtp_time_ms - + clock.TimeInMilliseconds())); clock.AdvanceTimeMilliseconds(std::max(time_until_next_event, 0)); } printf("Parsed %d packets\nTime passed: %u ms\n", packet_counter, static_cast(clock.TimeInMilliseconds())); printf("Estimator used: %s\n", estimator_used.c_str()); - printf("Packets with non-zero absolute send time: %d\n", - non_zero_abs_send_time); - printf("Packets with non-zero timestamp offset: %d\n", - non_zero_ts_offsets); + printf("Packets with absolute send time: %d\n", + abs_send_time_count); + printf("Packets with timestamp offset: %d\n", + ts_offset_count); + printf("Packets with no extension: %d\n", + packet_counter - ts_offset_count - abs_send_time_count); return 0; } diff --git a/webrtc/modules/remote_bitrate_estimator/tools/rtp_to_text.cc b/webrtc/modules/remote_bitrate_estimator/tools/rtp_to_text.cc index 12deb6c8a..bba8d6c16 100644 --- a/webrtc/modules/remote_bitrate_estimator/tools/rtp_to_text.cc +++ b/webrtc/modules/remote_bitrate_estimator/tools/rtp_to_text.cc @@ -11,6 +11,7 @@ #include #include +#include "webrtc/base/format_macros.h" #include "webrtc/modules/remote_bitrate_estimator/tools/bwe_rtp.h" #include "webrtc/modules/rtp_rtcp/interface/rtp_header_parser.h" #include "webrtc/modules/rtp_rtcp/interface/rtp_payload_registry.h" @@ -39,7 +40,7 @@ int main(int argc, char** argv) { webrtc::scoped_ptr rtp_reader(reader); webrtc::scoped_ptr rtp_parser(parser); fprintf(stdout, "seqnum timestamp ts_offset abs_sendtime recvtime " - "markerbit ssrc size\n"); + "markerbit ssrc size original_size\n"); int packet_counter = 0; int non_zero_abs_send_time = 0; int non_zero_ts_offsets = 0; @@ -57,7 +58,7 @@ int main(int argc, char** argv) { fprintf(stdout, "%s\n", ss.str().c_str()); } else { fprintf(stdout, - "%u %u %d %u %u %d %u %d\n", + "%u %u %d %u %u %d %u %" PRIuS " %" PRIuS "\n", header.sequenceNumber, header.timestamp, header.extension.transmissionTimeOffset, @@ -65,7 +66,8 @@ int main(int argc, char** argv) { packet.time_ms, header.markerBit, header.ssrc, - static_cast(packet.length)); + packet.length, + packet.original_length); } ++packet_counter; }