OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "media/cast/framer/frame_buffer.h" | |
6 #include "testing/gtest/include/gtest/gtest.h" | |
7 | |
8 namespace media { | |
9 namespace cast { | |
10 | |
11 class FrameBufferTest : public ::testing::Test { | |
12 protected: | |
13 FrameBufferTest() { | |
14 payload_.assign(kMaxIpPacketSize, 0); | |
15 } | |
16 | |
17 virtual ~FrameBufferTest() {} | |
18 | |
19 FrameBuffer buffer_; | |
20 std::vector<uint8> payload_; | |
21 RtpCastHeader rtp_header_; | |
22 | |
23 DISALLOW_COPY_AND_ASSIGN(FrameBufferTest); | |
24 }; | |
25 | |
26 TEST_F(FrameBufferTest, OnePacketInsertSanity) { | |
27 rtp_header_.rtp_timestamp = 3000; | |
28 rtp_header_.is_key_frame = true; | |
29 rtp_header_.frame_id = 5; | |
30 rtp_header_.reference_frame_id = 5; | |
31 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | |
32 transport::EncodedFrame frame; | |
33 EXPECT_TRUE(buffer_.AssembleEncodedFrame(&frame)); | |
34 EXPECT_EQ(transport::EncodedFrame::KEY, frame.dependency); | |
35 EXPECT_EQ(5u, frame.frame_id); | |
36 EXPECT_EQ(5u, frame.referenced_frame_id); | |
37 EXPECT_EQ(3000u, frame.rtp_timestamp); | |
38 } | |
39 | |
40 TEST_F(FrameBufferTest, EmptyBuffer) { | |
41 EXPECT_FALSE(buffer_.Complete()); | |
42 transport::EncodedFrame frame; | |
43 EXPECT_FALSE(buffer_.AssembleEncodedFrame(&frame)); | |
44 } | |
45 | |
46 TEST_F(FrameBufferTest, DefaultOnePacketFrame) { | |
47 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | |
48 EXPECT_TRUE(buffer_.Complete()); | |
49 EXPECT_FALSE(buffer_.is_key_frame()); | |
50 transport::EncodedFrame frame; | |
51 EXPECT_TRUE(buffer_.AssembleEncodedFrame(&frame)); | |
52 EXPECT_EQ(payload_.size(), frame.data.size()); | |
53 } | |
54 | |
55 TEST_F(FrameBufferTest, MultiplePacketFrame) { | |
56 rtp_header_.is_key_frame = true; | |
57 rtp_header_.max_packet_id = 2; | |
58 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | |
59 ++rtp_header_.packet_id; | |
60 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | |
61 ++rtp_header_.packet_id; | |
62 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | |
63 ++rtp_header_.packet_id; | |
64 EXPECT_TRUE(buffer_.Complete()); | |
65 EXPECT_TRUE(buffer_.is_key_frame()); | |
66 transport::EncodedFrame frame; | |
67 EXPECT_TRUE(buffer_.AssembleEncodedFrame(&frame)); | |
68 EXPECT_EQ(3 * payload_.size(), frame.data.size()); | |
69 } | |
70 | |
71 TEST_F(FrameBufferTest, IncompleteFrame) { | |
72 rtp_header_.max_packet_id = 4; | |
73 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | |
74 ++rtp_header_.packet_id; | |
75 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | |
76 ++rtp_header_.packet_id; | |
77 // Increment again - skip packet #2. | |
78 ++rtp_header_.packet_id; | |
79 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | |
80 ++rtp_header_.packet_id; | |
81 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | |
82 EXPECT_FALSE(buffer_.Complete()); | |
83 // Insert missing packet. | |
84 rtp_header_.packet_id = 2; | |
85 buffer_.InsertPacket(payload_.data(), payload_.size(), rtp_header_); | |
86 EXPECT_TRUE(buffer_.Complete()); | |
87 } | |
88 | |
89 } // namespace media | |
90 } // namespace cast | |
OLD | NEW |