| 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
|
|
|