Commit ea92f89a authored by miu's avatar miu Committed by Commit bot

[Cast] Fix RtcpParser to parse negative playout delay deltas in receiver reports.

Discovered while running cast_simulator when seeing that no frames were
late at the receiver, even under impossible scenarios.

Review URL: https://codereview.chromium.org/575683002

Cr-Commit-Position: refs/heads/master@{#294989}
parent 8996c948
...@@ -215,7 +215,7 @@ bool RtcpParser::ParseCastReceiverLogFrameItem( ...@@ -215,7 +215,7 @@ bool RtcpParser::ParseCastReceiverLogFrameItem(
event_log.packet_id = delay_delta_or_packet_id; event_log.packet_id = delay_delta_or_packet_id;
} else { } else {
event_log.delay_delta = base::TimeDelta::FromMilliseconds( event_log.delay_delta = base::TimeDelta::FromMilliseconds(
delay_delta_or_packet_id); static_cast<int16>(delay_delta_or_packet_id));
} }
frame_log.event_log_messages_.push_back(event_log); frame_log.event_log_messages_.push_back(event_log);
} }
......
...@@ -367,7 +367,7 @@ TEST_F(RtcpParserTest, InjectReceiverReportWithReceiverLogVerificationBase) { ...@@ -367,7 +367,7 @@ TEST_F(RtcpParserTest, InjectReceiverReportWithReceiverLogVerificationBase) {
TEST_F(RtcpParserTest, InjectReceiverReportWithReceiverLogVerificationMulti) { TEST_F(RtcpParserTest, InjectReceiverReportWithReceiverLogVerificationMulti) {
static const uint32 kTimeBaseMs = 12345678; static const uint32 kTimeBaseMs = 12345678;
static const uint32 kTimeDelayMs = 10; static const uint32 kTimeDelayMs = 10;
static const uint32 kDelayDeltaMs = 123; static const int kDelayDeltaMs = 123; // To be varied for every frame.
base::SimpleTestTickClock testing_clock; base::SimpleTestTickClock testing_clock;
testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs));
...@@ -378,7 +378,8 @@ TEST_F(RtcpParserTest, InjectReceiverReportWithReceiverLogVerificationMulti) { ...@@ -378,7 +378,8 @@ TEST_F(RtcpParserTest, InjectReceiverReportWithReceiverLogVerificationMulti) {
RtcpReceiverEventLogMessage event_log; RtcpReceiverEventLogMessage event_log;
event_log.type = FRAME_ACK_SENT; event_log.type = FRAME_ACK_SENT;
event_log.event_timestamp = testing_clock.NowTicks(); event_log.event_timestamp = testing_clock.NowTicks();
event_log.delay_delta = base::TimeDelta::FromMilliseconds(kDelayDeltaMs); event_log.delay_delta =
base::TimeDelta::FromMilliseconds((j - 50) * kDelayDeltaMs);
frame_log.event_log_messages_.push_back(event_log); frame_log.event_log_messages_.push_back(event_log);
receiver_log.push_back(frame_log); receiver_log.push_back(frame_log);
testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs));
...@@ -390,7 +391,8 @@ TEST_F(RtcpParserTest, InjectReceiverReportWithReceiverLogVerificationMulti) { ...@@ -390,7 +391,8 @@ TEST_F(RtcpParserTest, InjectReceiverReportWithReceiverLogVerificationMulti) {
p.AddReceiverLog(kSenderSsrc); p.AddReceiverLog(kSenderSsrc);
for (int i = 0; i < 100; ++i) { for (int i = 0; i < 100; ++i) {
p.AddReceiverFrameLog(kRtpTimestamp, 1, kTimeBaseMs + i * kTimeDelayMs); p.AddReceiverFrameLog(kRtpTimestamp, 1, kTimeBaseMs + i * kTimeDelayMs);
p.AddReceiverEventLog(kDelayDeltaMs, FRAME_ACK_SENT, 0); const int delay = (i - 50) * kDelayDeltaMs;
p.AddReceiverEventLog(static_cast<uint16>(delay), FRAME_ACK_SENT, 0);
} }
RtcpParser parser(kSourceSsrc, kSenderSsrc); RtcpParser parser(kSourceSsrc, kSenderSsrc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment