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

Unified Diff: media/cast/logging/encoding_event_subscriber_unittest.cc

Issue 168933002: Cast: Implemented relative RTP timestamp in EncodingEventSubscriber. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 10 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
Index: media/cast/logging/encoding_event_subscriber_unittest.cc
diff --git a/media/cast/logging/encoding_event_subscriber_unittest.cc b/media/cast/logging/encoding_event_subscriber_unittest.cc
index 1194ed9c749b1158dee62afbb44c4cd53c101ef0..3b4583758ace9a3fe3cc86146c2a02df9be2a704 100644
--- a/media/cast/logging/encoding_event_subscriber_unittest.cc
+++ b/media/cast/logging/encoding_event_subscriber_unittest.cc
@@ -32,7 +32,8 @@ class EncodingEventSubscriberTest : public ::testing::Test {
task_runner_,
task_runner_,
task_runner_,
- GetLoggingConfigWithRawEventsAndStatsEnabled())) {}
+ GetLoggingConfigWithRawEventsAndStatsEnabled())),
+ first_rtp_timestamp(0) {}
void Init(EventMediaType event_media_type) {
DCHECK(!event_subscriber_);
@@ -48,10 +49,18 @@ class EncodingEventSubscriberTest : public ::testing::Test {
}
}
+ void GetEventsAndReset() {
+ event_subscriber_->GetEventsAndReset(
+ &frame_events, &packet_events, &first_rtp_timestamp);
+ }
+
base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment.
scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_;
scoped_refptr<CastEnvironment> cast_environment_;
scoped_ptr<EncodingEventSubscriber> event_subscriber_;
+ FrameEventMap frame_events;
+ PacketEventMap packet_events;
+ RtpTimestamp first_rtp_timestamp;
};
TEST_F(EncodingEventSubscriberTest, FrameEventTruncating) {
@@ -71,8 +80,7 @@ TEST_F(EncodingEventSubscriberTest, FrameEventTruncating) {
/*frame_id*/ 0);
}
- FrameEventMap frame_events;
- event_subscriber_->GetFrameEventsAndReset(&frame_events);
+ GetEventsAndReset();
ASSERT_EQ(10u, frame_events.size());
EXPECT_EQ(100u, frame_events.begin()->first);
@@ -95,8 +103,7 @@ TEST_F(EncodingEventSubscriberTest, PacketEventTruncating) {
/*size*/ 123);
}
- PacketEventMap packet_events;
- event_subscriber_->GetPacketEventsAndReset(&packet_events);
+ GetEventsAndReset();
ASSERT_EQ(10u, packet_events.size());
EXPECT_EQ(100u, packet_events.begin()->first);
@@ -119,10 +126,9 @@ TEST_F(EncodingEventSubscriberTest, EventFiltering) {
rtp_timestamp,
/*frame_id*/ 0);
- FrameEventMap frame_events;
- event_subscriber_->GetFrameEventsAndReset(&frame_events);
+ GetEventsAndReset();
- FrameEventMap::iterator frame_it = frame_events.find(rtp_timestamp);
+ FrameEventMap::iterator frame_it = frame_events.find(0);
ASSERT_TRUE(frame_it != frame_events.end());
linked_ptr<AggregatedFrameEvent> frame_event = frame_it->second;
@@ -131,8 +137,8 @@ TEST_F(EncodingEventSubscriberTest, EventFiltering) {
EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED,
frame_event->event_type(0));
- PacketEventMap packet_events;
- event_subscriber_->GetPacketEventsAndReset(&packet_events);
+ GetEventsAndReset();
+
EXPECT_TRUE(packet_events.empty());
}
@@ -144,17 +150,17 @@ TEST_F(EncodingEventSubscriberTest, FrameEvent) {
rtp_timestamp,
/*frame_id*/ 0);
- FrameEventMap frame_events;
- event_subscriber_->GetFrameEventsAndReset(&frame_events);
+ GetEventsAndReset();
ASSERT_EQ(1u, frame_events.size());
- FrameEventMap::iterator it = frame_events.find(rtp_timestamp);
+ RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp;
+ FrameEventMap::iterator it = frame_events.find(relative_rtp_timestamp);
ASSERT_TRUE(it != frame_events.end());
linked_ptr<AggregatedFrameEvent> event = it->second;
- EXPECT_EQ(rtp_timestamp, event->rtp_timestamp());
+ EXPECT_EQ(relative_rtp_timestamp, event->rtp_timestamp());
ASSERT_EQ(1, event->event_type_size());
EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED, event->event_type(0));
@@ -164,7 +170,7 @@ TEST_F(EncodingEventSubscriberTest, FrameEvent) {
EXPECT_EQ(0, event->encoded_frame_size());
EXPECT_EQ(0, event->delay_millis());
- event_subscriber_->GetFrameEventsAndReset(&frame_events);
+ GetEventsAndReset();
EXPECT_TRUE(frame_events.empty());
}
@@ -177,17 +183,17 @@ TEST_F(EncodingEventSubscriberTest, FrameEventDelay) {
now, kAudioPlayoutDelay, rtp_timestamp,
/*frame_id*/ 0, base::TimeDelta::FromMilliseconds(delay_ms));
- FrameEventMap frame_events;
- event_subscriber_->GetFrameEventsAndReset(&frame_events);
+ GetEventsAndReset();
ASSERT_EQ(1u, frame_events.size());
- FrameEventMap::iterator it = frame_events.find(rtp_timestamp);
+ RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp;
+ FrameEventMap::iterator it = frame_events.find(relative_rtp_timestamp);
ASSERT_TRUE(it != frame_events.end());
linked_ptr<AggregatedFrameEvent> event = it->second;
- EXPECT_EQ(rtp_timestamp, event->rtp_timestamp());
+ EXPECT_EQ(relative_rtp_timestamp, event->rtp_timestamp());
ASSERT_EQ(1, event->event_type_size());
EXPECT_EQ(media::cast::proto::AUDIO_PLAYOUT_DELAY, event->event_type(0));
@@ -207,17 +213,17 @@ TEST_F(EncodingEventSubscriberTest, FrameEventSize) {
now, kVideoFrameEncoded, rtp_timestamp,
/*frame_id*/ 0, size);
- FrameEventMap frame_events;
- event_subscriber_->GetFrameEventsAndReset(&frame_events);
+ GetEventsAndReset();
ASSERT_EQ(1u, frame_events.size());
- FrameEventMap::iterator it = frame_events.find(rtp_timestamp);
+ RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp;
+ FrameEventMap::iterator it = frame_events.find(relative_rtp_timestamp);
ASSERT_TRUE(it != frame_events.end());
linked_ptr<AggregatedFrameEvent> event = it->second;
- EXPECT_EQ(rtp_timestamp, event->rtp_timestamp());
+ EXPECT_EQ(relative_rtp_timestamp, event->rtp_timestamp());
ASSERT_EQ(1, event->event_type_size());
EXPECT_EQ(media::cast::proto::VIDEO_FRAME_ENCODED, event->event_type(0));
@@ -248,17 +254,17 @@ TEST_F(EncodingEventSubscriberTest, MultipleFrameEvents) {
cast_environment_->Logging()->InsertFrameEvent(
now3, kAudioFrameDecoded, rtp_timestamp1, /*frame_id*/ 0);
- FrameEventMap frame_events;
- event_subscriber_->GetFrameEventsAndReset(&frame_events);
+ GetEventsAndReset();
ASSERT_EQ(2u, frame_events.size());
- FrameEventMap::iterator it = frame_events.find(100);
+ RtpTimestamp relative_rtp_timestamp = rtp_timestamp1 - first_rtp_timestamp;
+ FrameEventMap::iterator it = frame_events.find(relative_rtp_timestamp);
ASSERT_TRUE(it != frame_events.end());
linked_ptr<AggregatedFrameEvent> event = it->second;
- EXPECT_EQ(rtp_timestamp1, event->rtp_timestamp());
+ EXPECT_EQ(relative_rtp_timestamp, event->rtp_timestamp());
ASSERT_EQ(2, event->event_type_size());
EXPECT_EQ(media::cast::proto::AUDIO_PLAYOUT_DELAY, event->event_type(0));
@@ -268,12 +274,13 @@ TEST_F(EncodingEventSubscriberTest, MultipleFrameEvents) {
EXPECT_EQ(now1.ToInternalValue(), event->event_timestamp_micros(0));
EXPECT_EQ(now3.ToInternalValue(), event->event_timestamp_micros(1));
- it = frame_events.find(200);
+ relative_rtp_timestamp = rtp_timestamp2 - first_rtp_timestamp;
+ it = frame_events.find(relative_rtp_timestamp);
ASSERT_TRUE(it != frame_events.end());
event = it->second;
- EXPECT_EQ(rtp_timestamp2, event->rtp_timestamp());
+ EXPECT_EQ(relative_rtp_timestamp, event->rtp_timestamp());
ASSERT_EQ(1, event->event_type_size());
EXPECT_EQ(media::cast::proto::AUDIO_FRAME_ENCODED, event->event_type(0));
@@ -292,17 +299,17 @@ TEST_F(EncodingEventSubscriberTest, PacketEvent) {
now, kAudioPacketReceived, rtp_timestamp, /*frame_id*/ 0, packet_id,
/*max_packet_id*/ 10, size);
- PacketEventMap packet_events;
- event_subscriber_->GetPacketEventsAndReset(&packet_events);
+ GetEventsAndReset();
ASSERT_EQ(1u, packet_events.size());
- PacketEventMap::iterator it = packet_events.find(rtp_timestamp);
+ RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp;
+ PacketEventMap::iterator it = packet_events.find(relative_rtp_timestamp);
ASSERT_TRUE(it != packet_events.end());
linked_ptr<AggregatedPacketEvent> event = it->second;
- EXPECT_EQ(rtp_timestamp, event->rtp_timestamp());
+ EXPECT_EQ(relative_rtp_timestamp, event->rtp_timestamp());
ASSERT_EQ(1, event->base_packet_event_size());
const BasePacketEvent& base_event = event->base_packet_event(0);
@@ -313,7 +320,7 @@ TEST_F(EncodingEventSubscriberTest, PacketEvent) {
ASSERT_EQ(1, base_event.event_timestamp_micros_size());
EXPECT_EQ(now.ToInternalValue(), base_event.event_timestamp_micros(0));
- event_subscriber_->GetPacketEventsAndReset(&packet_events);
+ GetEventsAndReset();
EXPECT_TRUE(packet_events.empty());
}
@@ -333,17 +340,17 @@ TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForPacket) {
now2, kPacketSentToNetwork, rtp_timestamp, /*frame_id*/ 0, packet_id,
/*max_packet_id*/ 10, size);
- PacketEventMap packet_events;
- event_subscriber_->GetPacketEventsAndReset(&packet_events);
+ GetEventsAndReset();
ASSERT_EQ(1u, packet_events.size());
- PacketEventMap::iterator it = packet_events.find(rtp_timestamp);
+ RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp;
+ PacketEventMap::iterator it = packet_events.find(relative_rtp_timestamp);
ASSERT_TRUE(it != packet_events.end());
linked_ptr<AggregatedPacketEvent> event = it->second;
- EXPECT_EQ(rtp_timestamp, event->rtp_timestamp());
+ EXPECT_EQ(relative_rtp_timestamp, event->rtp_timestamp());
ASSERT_EQ(1, event->base_packet_event_size());
const BasePacketEvent& base_event = event->base_packet_event(0);
@@ -374,17 +381,17 @@ TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForFrame) {
now2, kPacketRetransmitted, rtp_timestamp, /*frame_id*/ 0, packet_id_2,
/*max_packet_id*/ 10, size);
- PacketEventMap packet_events;
- event_subscriber_->GetPacketEventsAndReset(&packet_events);
+ GetEventsAndReset();
ASSERT_EQ(1u, packet_events.size());
- PacketEventMap::iterator it = packet_events.find(rtp_timestamp);
+ RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp;
+ PacketEventMap::iterator it = packet_events.find(relative_rtp_timestamp);
ASSERT_TRUE(it != packet_events.end());
linked_ptr<AggregatedPacketEvent> event = it->second;
- EXPECT_EQ(rtp_timestamp, event->rtp_timestamp());
+ EXPECT_EQ(relative_rtp_timestamp, event->rtp_timestamp());
ASSERT_EQ(2, event->base_packet_event_size());
const BasePacketEvent& base_event = event->base_packet_event(0);
@@ -421,17 +428,17 @@ TEST_F(EncodingEventSubscriberTest, MultiplePacketEvents) {
now2, kPacketRetransmitted, rtp_timestamp_2, /*frame_id*/ 0, packet_id_2,
/*max_packet_id*/ 10, size);
- PacketEventMap packet_events;
- event_subscriber_->GetPacketEventsAndReset(&packet_events);
+ GetEventsAndReset();
ASSERT_EQ(2u, packet_events.size());
- PacketEventMap::iterator it = packet_events.find(rtp_timestamp_1);
+ RtpTimestamp relative_rtp_timestamp = rtp_timestamp_1 - first_rtp_timestamp;
+ PacketEventMap::iterator it = packet_events.find(relative_rtp_timestamp);
ASSERT_TRUE(it != packet_events.end());
linked_ptr<AggregatedPacketEvent> event = it->second;
- EXPECT_EQ(rtp_timestamp_1, event->rtp_timestamp());
+ EXPECT_EQ(relative_rtp_timestamp, event->rtp_timestamp());
ASSERT_EQ(1, event->base_packet_event_size());
const BasePacketEvent& base_event = event->base_packet_event(0);
@@ -441,12 +448,13 @@ TEST_F(EncodingEventSubscriberTest, MultiplePacketEvents) {
ASSERT_EQ(1, base_event.event_timestamp_micros_size());
EXPECT_EQ(now1.ToInternalValue(), base_event.event_timestamp_micros(0));
- it = packet_events.find(rtp_timestamp_2);
+ relative_rtp_timestamp = rtp_timestamp_2 - first_rtp_timestamp;
+ it = packet_events.find(relative_rtp_timestamp);
ASSERT_TRUE(it != packet_events.end());
event = it->second;
- EXPECT_EQ(rtp_timestamp_2, event->rtp_timestamp());
+ EXPECT_EQ(relative_rtp_timestamp, event->rtp_timestamp());
ASSERT_EQ(1, event->base_packet_event_size());
const BasePacketEvent& base_event_2 = event->base_packet_event(0);
@@ -458,5 +466,65 @@ TEST_F(EncodingEventSubscriberTest, MultiplePacketEvents) {
EXPECT_EQ(now2.ToInternalValue(), base_event_2.event_timestamp_micros(0));
}
+TEST_F(EncodingEventSubscriberTest, FirstRtpTimestamp) {
+ Init(VIDEO_EVENT);
+ RtpTimestamp rtp_timestamp = 12345;
+ base::TimeTicks now(testing_clock_->NowTicks());
+
+ cast_environment_->Logging()->InsertFrameEvent(now,
+ kVideoFrameCaptured,
+ rtp_timestamp,
+ /*frame_id*/ 0);
+
+ cast_environment_->Logging()->InsertFrameEvent(now,
+ kVideoFrameReceived,
+ rtp_timestamp + 30,
+ /*frame_id*/ 1);
+
+ GetEventsAndReset();
+
+ EXPECT_EQ(rtp_timestamp, first_rtp_timestamp);
+ FrameEventMap::iterator it = frame_events.find(0);
+ ASSERT_NE(frame_events.end(), it);
+
+ it = frame_events.find(30);
+ ASSERT_NE(frame_events.end(), it);
+
+ rtp_timestamp = 67890;
+
+ cast_environment_->Logging()->InsertFrameEvent(now,
+ kVideoFrameCaptured,
+ rtp_timestamp,
+ /*frame_id*/ 0);
+ GetEventsAndReset();
+
+ EXPECT_EQ(rtp_timestamp, first_rtp_timestamp);
+}
+
+TEST_F(EncodingEventSubscriberTest, RelativeRtpTimestampWrapAround) {
+ Init(VIDEO_EVENT);
+ RtpTimestamp rtp_timestamp = 0xffffffff - 20;
+ base::TimeTicks now(testing_clock_->NowTicks());
+
+ cast_environment_->Logging()->InsertFrameEvent(now,
+ kVideoFrameCaptured,
+ rtp_timestamp,
+ /*frame_id*/ 0);
+
+ // RtpTimestamp has now wrapped around.
+ cast_environment_->Logging()->InsertFrameEvent(now,
+ kVideoFrameReceived,
+ rtp_timestamp + 30,
+ /*frame_id*/ 1);
+
+ GetEventsAndReset();
+
+ FrameEventMap::iterator it = frame_events.find(0);
+ ASSERT_NE(frame_events.end(), it);
+
+ it = frame_events.find(30);
+ ASSERT_NE(frame_events.end(), it);
+}
+
} // namespace cast
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698