OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/cast/framer/frame_buffer.h" | 5 #include "media/cast/framer/frame_buffer.h" |
6 #include "testing/gtest/include/gtest/gtest.h" | 6 #include "testing/gtest/include/gtest/gtest.h" |
7 | 7 |
8 namespace media { | 8 namespace media { |
9 namespace cast { | 9 namespace cast { |
10 | 10 |
11 class FrameBufferTest : public ::testing::Test { | 11 class FrameBufferTest : public ::testing::Test { |
12 protected: | 12 protected: |
13 FrameBufferTest() {} | 13 FrameBufferTest() {} |
14 | 14 |
15 virtual ~FrameBufferTest() {} | 15 virtual ~FrameBufferTest() {} |
16 | 16 |
17 virtual void SetUp() { | 17 virtual void SetUp() { |
18 payload_.assign(kIpPacketSize, 0); | 18 payload_.assign(kMaxIpPacketSize, 0); |
19 | 19 |
20 // Build a default one packet frame - populate webrtc header. | 20 // Build a default one packet frame - populate webrtc header. |
21 rtp_header_.is_key_frame = false; | 21 rtp_header_.is_key_frame = false; |
22 rtp_header_.frame_id = 0; | 22 rtp_header_.frame_id = 0; |
23 rtp_header_.packet_id = 0; | 23 rtp_header_.packet_id = 0; |
24 rtp_header_.max_packet_id = 0; | 24 rtp_header_.max_packet_id = 0; |
25 rtp_header_.is_reference = false; | 25 rtp_header_.is_reference = false; |
26 rtp_header_.reference_frame_id = 0; | 26 rtp_header_.reference_frame_id = 0; |
27 } | 27 } |
28 | 28 |
29 FrameBuffer buffer_; | 29 FrameBuffer buffer_; |
30 std::vector<uint8> payload_; | 30 std::vector<uint8> payload_; |
31 RtpCastHeader rtp_header_; | 31 RtpCastHeader rtp_header_; |
32 }; | 32 }; |
33 | 33 |
34 TEST_F(FrameBufferTest, EmptyBuffer) { | 34 TEST_F(FrameBufferTest, EmptyBuffer) { |
35 EXPECT_FALSE(buffer_.Complete()); | 35 EXPECT_FALSE(buffer_.Complete()); |
36 EXPECT_FALSE(buffer_.is_key_frame()); | 36 EXPECT_FALSE(buffer_.is_key_frame()); |
37 EncodedVideoFrame frame; | 37 transport::EncodedVideoFrame frame; |
38 uint32 rtp_timestamp; | 38 uint32 rtp_timestamp; |
39 EXPECT_FALSE(buffer_.GetEncodedVideoFrame(&frame, &rtp_timestamp)); | 39 EXPECT_FALSE(buffer_.GetEncodedVideoFrame(&frame, &rtp_timestamp)); |
40 } | 40 } |
41 | 41 |
42 TEST_F(FrameBufferTest, DefaultOnePacketFrame) { | 42 TEST_F(FrameBufferTest, DefaultOnePacketFrame) { |
43 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | 43 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); |
44 EXPECT_TRUE(buffer_.Complete()); | 44 EXPECT_TRUE(buffer_.Complete()); |
45 EXPECT_FALSE(buffer_.is_key_frame()); | 45 EXPECT_FALSE(buffer_.is_key_frame()); |
46 EncodedVideoFrame frame; | 46 transport::EncodedVideoFrame frame; |
47 uint32 rtp_timestamp; | 47 uint32 rtp_timestamp; |
48 EXPECT_TRUE(buffer_.GetEncodedVideoFrame(&frame, &rtp_timestamp)); | 48 EXPECT_TRUE(buffer_.GetEncodedVideoFrame(&frame, &rtp_timestamp)); |
49 EXPECT_EQ(payload_.size(), frame.data.size()); | 49 EXPECT_EQ(payload_.size(), frame.data.size()); |
50 } | 50 } |
51 | 51 |
52 TEST_F(FrameBufferTest, MultiplePacketFrame) { | 52 TEST_F(FrameBufferTest, MultiplePacketFrame) { |
53 rtp_header_.is_key_frame = true; | 53 rtp_header_.is_key_frame = true; |
54 rtp_header_.max_packet_id = 2; | 54 rtp_header_.max_packet_id = 2; |
55 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | 55 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); |
56 ++rtp_header_.packet_id; | 56 ++rtp_header_.packet_id; |
57 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | 57 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); |
58 ++rtp_header_.packet_id; | 58 ++rtp_header_.packet_id; |
59 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | 59 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); |
60 ++rtp_header_.packet_id; | 60 ++rtp_header_.packet_id; |
61 EXPECT_TRUE(buffer_.Complete()); | 61 EXPECT_TRUE(buffer_.Complete()); |
62 EXPECT_TRUE(buffer_.is_key_frame()); | 62 EXPECT_TRUE(buffer_.is_key_frame()); |
63 EncodedVideoFrame frame; | 63 transport::EncodedVideoFrame frame; |
64 uint32 rtp_timestamp; | 64 uint32 rtp_timestamp; |
65 EXPECT_TRUE(buffer_.GetEncodedVideoFrame(&frame, &rtp_timestamp)); | 65 EXPECT_TRUE(buffer_.GetEncodedVideoFrame(&frame, &rtp_timestamp)); |
66 EXPECT_EQ(3 * payload_.size(), frame.data.size()); | 66 EXPECT_EQ(3 * payload_.size(), frame.data.size()); |
67 } | 67 } |
68 | 68 |
69 TEST_F(FrameBufferTest, InCompleteFrame) { | 69 TEST_F(FrameBufferTest, InCompleteFrame) { |
70 rtp_header_.max_packet_id = 4; | 70 rtp_header_.max_packet_id = 4; |
71 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | 71 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); |
72 ++rtp_header_.packet_id; | 72 ++rtp_header_.packet_id; |
73 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | 73 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); |
74 ++rtp_header_.packet_id; | 74 ++rtp_header_.packet_id; |
75 // Increment again - skip packet #2. | 75 // Increment again - skip packet #2. |
76 ++rtp_header_.packet_id; | 76 ++rtp_header_.packet_id; |
77 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | 77 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); |
78 ++rtp_header_.packet_id; | 78 ++rtp_header_.packet_id; |
79 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | 79 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); |
80 EXPECT_FALSE(buffer_.Complete()); | 80 EXPECT_FALSE(buffer_.Complete()); |
81 // Insert missing packet. | 81 // Insert missing packet. |
82 rtp_header_.packet_id = 2; | 82 rtp_header_.packet_id = 2; |
83 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | 83 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); |
84 EXPECT_TRUE(buffer_.Complete()); | 84 EXPECT_TRUE(buffer_.Complete()); |
85 } | 85 } |
86 | 86 |
87 } // namespace media | 87 } // namespace media |
88 } // namespace cast | 88 } // namespace cast |
OLD | NEW |