Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / media / cast / net / rtp / frame_buffer_unittest.cc
blobf13771a41c228571297c7c761cab08a9d888bbea
1 // Copyright 2014 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.
5 #include "media/cast/net/rtp/frame_buffer.h"
6 #include "media/cast/net/cast_transport_defines.h"
7 #include "testing/gtest/include/gtest/gtest.h"
9 namespace media {
10 namespace cast {
12 class FrameBufferTest : public ::testing::Test {
13 protected:
14 FrameBufferTest() {
15 payload_.assign(kMaxIpPacketSize, 0);
18 ~FrameBufferTest() override {}
20 FrameBuffer buffer_;
21 std::vector<uint8> payload_;
22 RtpCastHeader rtp_header_;
24 DISALLOW_COPY_AND_ASSIGN(FrameBufferTest);
27 TEST_F(FrameBufferTest, OnePacketInsertSanity) {
28 rtp_header_.rtp_timestamp = 3000;
29 rtp_header_.is_key_frame = true;
30 rtp_header_.frame_id = 5;
31 rtp_header_.reference_frame_id = 5;
32 buffer_.InsertPacket(&payload_[0], payload_.size(), rtp_header_);
33 EncodedFrame frame;
34 EXPECT_TRUE(buffer_.AssembleEncodedFrame(&frame));
35 EXPECT_EQ(EncodedFrame::KEY, frame.dependency);
36 EXPECT_EQ(5u, frame.frame_id);
37 EXPECT_EQ(5u, frame.referenced_frame_id);
38 EXPECT_EQ(3000u, frame.rtp_timestamp);
41 TEST_F(FrameBufferTest, EmptyBuffer) {
42 EXPECT_FALSE(buffer_.Complete());
43 EncodedFrame frame;
44 EXPECT_FALSE(buffer_.AssembleEncodedFrame(&frame));
47 TEST_F(FrameBufferTest, DefaultOnePacketFrame) {
48 buffer_.InsertPacket(&payload_[0], payload_.size(), rtp_header_);
49 EXPECT_TRUE(buffer_.Complete());
50 EXPECT_FALSE(buffer_.is_key_frame());
51 EncodedFrame frame;
52 EXPECT_TRUE(buffer_.AssembleEncodedFrame(&frame));
53 EXPECT_EQ(payload_.size(), frame.data.size());
56 TEST_F(FrameBufferTest, MultiplePacketFrame) {
57 rtp_header_.is_key_frame = true;
58 rtp_header_.max_packet_id = 2;
59 buffer_.InsertPacket(&payload_[0], payload_.size(), rtp_header_);
60 ++rtp_header_.packet_id;
61 buffer_.InsertPacket(&payload_[0], payload_.size(), rtp_header_);
62 ++rtp_header_.packet_id;
63 buffer_.InsertPacket(&payload_[0], payload_.size(), rtp_header_);
64 ++rtp_header_.packet_id;
65 EXPECT_TRUE(buffer_.Complete());
66 EXPECT_TRUE(buffer_.is_key_frame());
67 EncodedFrame frame;
68 EXPECT_TRUE(buffer_.AssembleEncodedFrame(&frame));
69 EXPECT_EQ(3 * payload_.size(), frame.data.size());
72 TEST_F(FrameBufferTest, IncompleteFrame) {
73 rtp_header_.max_packet_id = 4;
74 buffer_.InsertPacket(&payload_[0], payload_.size(), rtp_header_);
75 ++rtp_header_.packet_id;
76 buffer_.InsertPacket(&payload_[0], payload_.size(), rtp_header_);
77 ++rtp_header_.packet_id;
78 // Increment again - skip packet #2.
79 ++rtp_header_.packet_id;
80 buffer_.InsertPacket(&payload_[0], payload_.size(), rtp_header_);
81 ++rtp_header_.packet_id;
82 buffer_.InsertPacket(&payload_[0], payload_.size(), rtp_header_);
83 EXPECT_FALSE(buffer_.Complete());
84 // Insert missing packet.
85 rtp_header_.packet_id = 2;
86 buffer_.InsertPacket(&payload_[0], payload_.size(), rtp_header_);
87 EXPECT_TRUE(buffer_.Complete());
90 } // namespace media
91 } // namespace cast