Index: media/cast/framer/framer_unittest.cc |
diff --git a/media/cast/framer/framer_unittest.cc b/media/cast/framer/framer_unittest.cc |
index 5cb12ce90058cccdc759d4e1f1159dcf6e9c1a0f..ad53ef06eee5461a7ab1ca8bc6625581dc9f0dd1 100644 |
--- a/media/cast/framer/framer_unittest.cc |
+++ b/media/cast/framer/framer_unittest.cc |
@@ -35,28 +35,31 @@ class FramerTest : public ::testing::Test { |
TEST_F(FramerTest, EmptyState) { |
transport::EncodedFrame frame; |
bool next_frame = false; |
- EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ bool multiple = false; |
+ EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
} |
TEST_F(FramerTest, AlwaysStartWithKey) { |
transport::EncodedFrame frame; |
bool next_frame = false; |
bool complete = false; |
+ bool multiple = false; |
bool duplicate = false; |
// Insert non key first frame. |
complete = framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_TRUE(complete); |
- EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
rtp_header_.frame_id = 1; |
rtp_header_.reference_frame_id = 1; |
rtp_header_.is_key_frame = true; |
complete = framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_TRUE(complete); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_TRUE(next_frame); |
+ EXPECT_TRUE(multiple); |
EXPECT_EQ(transport::EncodedFrame::KEY, frame.dependency); |
EXPECT_EQ(1u, frame.frame_id); |
EXPECT_EQ(1u, frame.referenced_frame_id); |
@@ -67,6 +70,7 @@ TEST_F(FramerTest, CompleteFrame) { |
transport::EncodedFrame frame; |
bool next_frame = false; |
bool complete = false; |
+ bool multiple = false; |
bool duplicate = false; |
// Start with a complete key frame. |
@@ -74,8 +78,9 @@ TEST_F(FramerTest, CompleteFrame) { |
complete = framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_TRUE(complete); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_TRUE(next_frame); |
+ EXPECT_FALSE(multiple); |
EXPECT_EQ(transport::EncodedFrame::KEY, frame.dependency); |
EXPECT_EQ(0u, frame.frame_id); |
EXPECT_EQ(0u, frame.referenced_frame_id); |
@@ -89,7 +94,7 @@ TEST_F(FramerTest, CompleteFrame) { |
complete = framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_FALSE(complete); |
- EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
// Complete delta - can't skip, as incomplete sequence. |
++rtp_header_.frame_id; |
@@ -98,13 +103,14 @@ TEST_F(FramerTest, CompleteFrame) { |
complete = framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_TRUE(complete); |
- EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
} |
TEST_F(FramerTest, DuplicatePackets) { |
transport::EncodedFrame frame; |
bool next_frame = false; |
bool complete = false; |
+ bool multiple = false; |
bool duplicate = false; |
// Start with an incomplete key frame. |
@@ -115,7 +121,7 @@ TEST_F(FramerTest, DuplicatePackets) { |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_FALSE(complete); |
EXPECT_FALSE(duplicate); |
- EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
// Add same packet again in incomplete key frame. |
duplicate = false; |
@@ -123,7 +129,7 @@ TEST_F(FramerTest, DuplicatePackets) { |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_FALSE(complete); |
EXPECT_TRUE(duplicate); |
- EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
// Complete key frame. |
rtp_header_.packet_id = 1; |
@@ -132,9 +138,9 @@ TEST_F(FramerTest, DuplicatePackets) { |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_TRUE(complete); |
EXPECT_FALSE(duplicate); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_EQ(transport::EncodedFrame::KEY, frame.dependency); |
- EXPECT_EQ(0u, frame.frame_id); |
+ EXPECT_FALSE(multiple); |
EXPECT_EQ(0u, frame.referenced_frame_id); |
// Add same packet again in complete key frame. |
@@ -143,9 +149,10 @@ TEST_F(FramerTest, DuplicatePackets) { |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_FALSE(complete); |
EXPECT_TRUE(duplicate); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_EQ(transport::EncodedFrame::KEY, frame.dependency); |
EXPECT_EQ(0u, frame.frame_id); |
+ EXPECT_FALSE(multiple); |
EXPECT_EQ(0u, frame.referenced_frame_id); |
framer_.ReleaseFrame(frame.frame_id); |
@@ -159,7 +166,7 @@ TEST_F(FramerTest, DuplicatePackets) { |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_FALSE(complete); |
EXPECT_FALSE(duplicate); |
- EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
// Add same packet again in incomplete delta frame. |
duplicate = false; |
@@ -167,7 +174,7 @@ TEST_F(FramerTest, DuplicatePackets) { |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_FALSE(complete); |
EXPECT_TRUE(duplicate); |
- EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
// Complete delta frame. |
rtp_header_.packet_id = 1; |
@@ -176,10 +183,11 @@ TEST_F(FramerTest, DuplicatePackets) { |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_TRUE(complete); |
EXPECT_FALSE(duplicate); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_EQ(transport::EncodedFrame::DEPENDENT, frame.dependency); |
EXPECT_EQ(1u, frame.frame_id); |
EXPECT_EQ(0u, frame.referenced_frame_id); |
+ EXPECT_FALSE(multiple); |
// Add same packet again in complete delta frame. |
duplicate = false; |
@@ -187,16 +195,18 @@ TEST_F(FramerTest, DuplicatePackets) { |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_FALSE(complete); |
EXPECT_TRUE(duplicate); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_EQ(transport::EncodedFrame::DEPENDENT, frame.dependency); |
EXPECT_EQ(1u, frame.frame_id); |
EXPECT_EQ(0u, frame.referenced_frame_id); |
+ EXPECT_FALSE(multiple); |
} |
TEST_F(FramerTest, ContinuousSequence) { |
transport::EncodedFrame frame; |
bool next_frame = false; |
bool complete = false; |
+ bool multiple = false; |
bool duplicate = false; |
// Start with a complete key frame. |
@@ -204,8 +214,9 @@ TEST_F(FramerTest, ContinuousSequence) { |
complete = framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_TRUE(complete); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_TRUE(next_frame); |
+ EXPECT_FALSE(multiple); |
EXPECT_EQ(transport::EncodedFrame::KEY, frame.dependency); |
EXPECT_EQ(0u, frame.frame_id); |
EXPECT_EQ(0u, frame.referenced_frame_id); |
@@ -218,13 +229,14 @@ TEST_F(FramerTest, ContinuousSequence) { |
complete = framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_TRUE(complete); |
- EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
} |
TEST_F(FramerTest, Wrap) { |
// Insert key frame, frame_id = 255 (will jump to that) |
transport::EncodedFrame frame; |
bool next_frame = false; |
+ bool multiple = true; |
bool duplicate = false; |
// Start with a complete key frame. |
@@ -233,8 +245,9 @@ TEST_F(FramerTest, Wrap) { |
rtp_header_.reference_frame_id = 255; |
framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_TRUE(next_frame); |
+ EXPECT_FALSE(multiple); |
EXPECT_EQ(transport::EncodedFrame::KEY, frame.dependency); |
EXPECT_EQ(255u, frame.frame_id); |
EXPECT_EQ(255u, frame.referenced_frame_id); |
@@ -245,8 +258,9 @@ TEST_F(FramerTest, Wrap) { |
rtp_header_.frame_id = 256; |
framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_TRUE(next_frame); |
+ EXPECT_FALSE(multiple); |
EXPECT_EQ(transport::EncodedFrame::DEPENDENT, frame.dependency); |
EXPECT_EQ(256u, frame.frame_id); |
EXPECT_EQ(255u, frame.referenced_frame_id); |
@@ -257,6 +271,7 @@ TEST_F(FramerTest, Reset) { |
transport::EncodedFrame frame; |
bool next_frame = false; |
bool complete = false; |
+ bool multiple = true; |
bool duplicate = false; |
// Start with a complete key frame. |
@@ -265,12 +280,13 @@ TEST_F(FramerTest, Reset) { |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
EXPECT_TRUE(complete); |
framer_.Reset(); |
- EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
} |
TEST_F(FramerTest, RequireKeyAfterReset) { |
transport::EncodedFrame frame; |
bool next_frame = false; |
+ bool multiple = false; |
bool duplicate = false; |
framer_.Reset(); |
@@ -280,19 +296,21 @@ TEST_F(FramerTest, RequireKeyAfterReset) { |
rtp_header_.frame_id = 0; |
framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
- EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
rtp_header_.frame_id = 1; |
rtp_header_.reference_frame_id = 1; |
rtp_header_.is_key_frame = true; |
framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_TRUE(next_frame); |
+ EXPECT_TRUE(multiple); |
} |
TEST_F(FramerTest, BasicNonLastReferenceId) { |
transport::EncodedFrame frame; |
bool next_frame = false; |
+ bool multiple = false; |
bool duplicate = false; |
rtp_header_.is_key_frame = true; |
@@ -300,7 +318,8 @@ TEST_F(FramerTest, BasicNonLastReferenceId) { |
framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
+ EXPECT_FALSE(multiple); |
framer_.ReleaseFrame(frame.frame_id); |
rtp_header_.is_key_frame = false; |
@@ -309,14 +328,16 @@ TEST_F(FramerTest, BasicNonLastReferenceId) { |
framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_FALSE(next_frame); |
+ EXPECT_FALSE(multiple); |
} |
TEST_F(FramerTest, InOrderReferenceFrameSelection) { |
// Create pattern: 0, 1, 4, 5. |
transport::EncodedFrame frame; |
bool next_frame = false; |
+ bool multiple = false; |
bool duplicate = false; |
rtp_header_.is_key_frame = true; |
@@ -338,19 +359,22 @@ TEST_F(FramerTest, InOrderReferenceFrameSelection) { |
rtp_header_.reference_frame_id = 0; |
framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_EQ(transport::EncodedFrame::KEY, frame.dependency); |
EXPECT_EQ(0u, frame.frame_id); |
EXPECT_EQ(0u, frame.referenced_frame_id); |
+ EXPECT_FALSE(multiple); |
framer_.ReleaseFrame(frame.frame_id); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_TRUE(next_frame); |
+ EXPECT_TRUE(multiple); |
EXPECT_EQ(transport::EncodedFrame::DEPENDENT, frame.dependency); |
EXPECT_EQ(1u, frame.frame_id); |
EXPECT_EQ(0u, frame.referenced_frame_id); |
framer_.ReleaseFrame(frame.frame_id); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_FALSE(next_frame); |
+ EXPECT_FALSE(multiple); |
EXPECT_EQ(transport::EncodedFrame::DEPENDENT, frame.dependency); |
EXPECT_EQ(4u, frame.frame_id); |
EXPECT_EQ(0u, frame.referenced_frame_id); |
@@ -360,15 +384,16 @@ TEST_F(FramerTest, InOrderReferenceFrameSelection) { |
rtp_header_.packet_id = 1; |
framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
- EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_FALSE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
rtp_header_.frame_id = 5; |
rtp_header_.reference_frame_id = rtp_header_.frame_id - 1; |
rtp_header_.packet_id = 0; |
rtp_header_.max_packet_id = 0; |
framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
- EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_TRUE(next_frame); |
+ EXPECT_FALSE(multiple); |
EXPECT_EQ(transport::EncodedFrame::DEPENDENT, frame.dependency); |
EXPECT_EQ(5u, frame.frame_id); |
EXPECT_EQ(4u, frame.referenced_frame_id); |
@@ -378,6 +403,7 @@ TEST_F(FramerTest, AudioWrap) { |
// All audio frames are marked as key frames. |
transport::EncodedFrame frame; |
bool next_frame = false; |
+ bool multiple = false; |
bool duplicate = false; |
rtp_header_.is_key_frame = true; |
@@ -386,8 +412,9 @@ TEST_F(FramerTest, AudioWrap) { |
framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
- EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_TRUE(next_frame); |
+ EXPECT_FALSE(multiple); |
EXPECT_EQ(transport::EncodedFrame::KEY, frame.dependency); |
EXPECT_EQ(254u, frame.frame_id); |
EXPECT_EQ(254u, frame.referenced_frame_id); |
@@ -404,15 +431,17 @@ TEST_F(FramerTest, AudioWrap) { |
framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
- EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_TRUE(next_frame); |
+ EXPECT_TRUE(multiple); |
EXPECT_EQ(transport::EncodedFrame::KEY, frame.dependency); |
EXPECT_EQ(255u, frame.frame_id); |
EXPECT_EQ(255u, frame.referenced_frame_id); |
framer_.ReleaseFrame(frame.frame_id); |
- EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_TRUE(next_frame); |
+ EXPECT_FALSE(multiple); |
EXPECT_EQ(transport::EncodedFrame::KEY, frame.dependency); |
EXPECT_EQ(256u, frame.frame_id); |
EXPECT_EQ(256u, frame.referenced_frame_id); |
@@ -423,6 +452,7 @@ TEST_F(FramerTest, AudioWrapWithMissingFrame) { |
// All audio frames are marked as key frames. |
transport::EncodedFrame frame; |
bool next_frame = false; |
+ bool multiple = true; |
bool duplicate = false; |
// Insert and get first packet. |
@@ -431,8 +461,9 @@ TEST_F(FramerTest, AudioWrapWithMissingFrame) { |
rtp_header_.reference_frame_id = 253; |
framer_.InsertPacket( |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
- EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_TRUE(next_frame); |
+ EXPECT_FALSE(multiple); |
EXPECT_EQ(transport::EncodedFrame::KEY, frame.dependency); |
EXPECT_EQ(253u, frame.frame_id); |
EXPECT_EQ(253u, frame.referenced_frame_id); |
@@ -449,14 +480,16 @@ TEST_F(FramerTest, AudioWrapWithMissingFrame) { |
payload_.data(), payload_.size(), rtp_header_, &duplicate); |
// Get third and fourth packets. |
- EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_FALSE(next_frame); |
+ EXPECT_TRUE(multiple); |
EXPECT_EQ(transport::EncodedFrame::KEY, frame.dependency); |
EXPECT_EQ(255u, frame.frame_id); |
EXPECT_EQ(255u, frame.referenced_frame_id); |
framer_.ReleaseFrame(frame.frame_id); |
- EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame)); |
+ EXPECT_TRUE(framer_.GetEncodedFrame(&frame, &next_frame, &multiple)); |
EXPECT_TRUE(next_frame); |
+ EXPECT_FALSE(multiple); |
EXPECT_EQ(transport::EncodedFrame::KEY, frame.dependency); |
EXPECT_EQ(256u, frame.frame_id); |
EXPECT_EQ(256u, frame.referenced_frame_id); |