Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(342)

Side by Side Diff: webrtc/modules/video_coding/jitter_buffer_unittest.cc

Issue 2007743003: Add sender controlled playout delay limits (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@cleanup_rtp_hdr_extensions
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 24 matching lines...) Expand all
35 35
36 class Vp9SsMapTest : public ::testing::Test { 36 class Vp9SsMapTest : public ::testing::Test {
37 protected: 37 protected:
38 Vp9SsMapTest() : packet_(data_, 1400, 1234, 1, true) {} 38 Vp9SsMapTest() : packet_(data_, 1400, 1234, 1, true) {}
39 39
40 virtual void SetUp() { 40 virtual void SetUp() {
41 packet_.isFirstPacket = true; 41 packet_.isFirstPacket = true;
42 packet_.markerBit = true; 42 packet_.markerBit = true;
43 packet_.frameType = kVideoFrameKey; 43 packet_.frameType = kVideoFrameKey;
44 packet_.codec = kVideoCodecVP9; 44 packet_.codec = kVideoCodecVP9;
45 packet_.codecSpecificHeader.codec = kRtpVideoVp9; 45 packet_.video_header.codec = kRtpVideoVp9;
46 packet_.codecSpecificHeader.codecHeader.VP9.flexible_mode = false; 46 packet_.video_header.codecHeader.VP9.flexible_mode = false;
47 packet_.codecSpecificHeader.codecHeader.VP9.gof_idx = 0; 47 packet_.video_header.codecHeader.VP9.gof_idx = 0;
48 packet_.codecSpecificHeader.codecHeader.VP9.temporal_idx = kNoTemporalIdx; 48 packet_.video_header.codecHeader.VP9.temporal_idx = kNoTemporalIdx;
49 packet_.codecSpecificHeader.codecHeader.VP9.temporal_up_switch = false; 49 packet_.video_header.codecHeader.VP9.temporal_up_switch = false;
50 packet_.codecSpecificHeader.codecHeader.VP9.ss_data_available = true; 50 packet_.video_header.codecHeader.VP9.ss_data_available = true;
51 packet_.codecSpecificHeader.codecHeader.VP9.gof.SetGofInfoVP9( 51 packet_.video_header.codecHeader.VP9.gof.SetGofInfoVP9(
52 kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2.. 52 kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2..
53 } 53 }
54 54
55 Vp9SsMap map_; 55 Vp9SsMap map_;
56 uint8_t data_[1500]; 56 uint8_t data_[1500];
57 VCMPacket packet_; 57 VCMPacket packet_;
58 }; 58 };
59 59
60 TEST_F(Vp9SsMapTest, Insert) { 60 TEST_F(Vp9SsMapTest, Insert) {
61 EXPECT_TRUE(map_.Insert(packet_)); 61 EXPECT_TRUE(map_.Insert(packet_));
62 } 62 }
63 63
64 TEST_F(Vp9SsMapTest, Insert_NoSsData) { 64 TEST_F(Vp9SsMapTest, Insert_NoSsData) {
65 packet_.codecSpecificHeader.codecHeader.VP9.ss_data_available = false; 65 packet_.video_header.codecHeader.VP9.ss_data_available = false;
66 EXPECT_FALSE(map_.Insert(packet_)); 66 EXPECT_FALSE(map_.Insert(packet_));
67 } 67 }
68 68
69 TEST_F(Vp9SsMapTest, Find) { 69 TEST_F(Vp9SsMapTest, Find) {
70 EXPECT_TRUE(map_.Insert(packet_)); 70 EXPECT_TRUE(map_.Insert(packet_));
71 Vp9SsMap::SsMap::iterator it; 71 Vp9SsMap::SsMap::iterator it;
72 EXPECT_TRUE(map_.Find(packet_.timestamp, &it)); 72 EXPECT_TRUE(map_.Find(packet_.timestamp, &it));
73 EXPECT_EQ(packet_.timestamp, it->first); 73 EXPECT_EQ(packet_.timestamp, it->first);
74 } 74 }
75 75
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 packet_.timestamp = kSsTimestamp3; 132 packet_.timestamp = kSsTimestamp3;
133 EXPECT_TRUE(map_.Insert(packet_)); 133 EXPECT_TRUE(map_.Insert(packet_));
134 134
135 map_.RemoveOld(kSsTimestamp3); 135 map_.RemoveOld(kSsTimestamp3);
136 EXPECT_FALSE(map_.Find(kSsTimestamp1, &it)); 136 EXPECT_FALSE(map_.Find(kSsTimestamp1, &it));
137 EXPECT_FALSE(map_.Find(kSsTimestamp2, &it)); 137 EXPECT_FALSE(map_.Find(kSsTimestamp2, &it));
138 EXPECT_TRUE(map_.Find(kSsTimestamp3, &it)); 138 EXPECT_TRUE(map_.Find(kSsTimestamp3, &it));
139 } 139 }
140 140
141 TEST_F(Vp9SsMapTest, UpdatePacket_NoSsData) { 141 TEST_F(Vp9SsMapTest, UpdatePacket_NoSsData) {
142 packet_.codecSpecificHeader.codecHeader.VP9.gof_idx = 0; 142 packet_.video_header.codecHeader.VP9.gof_idx = 0;
143 EXPECT_FALSE(map_.UpdatePacket(&packet_)); 143 EXPECT_FALSE(map_.UpdatePacket(&packet_));
144 } 144 }
145 145
146 TEST_F(Vp9SsMapTest, UpdatePacket_NoGofIdx) { 146 TEST_F(Vp9SsMapTest, UpdatePacket_NoGofIdx) {
147 EXPECT_TRUE(map_.Insert(packet_)); 147 EXPECT_TRUE(map_.Insert(packet_));
148 packet_.codecSpecificHeader.codecHeader.VP9.gof_idx = kNoGofIdx; 148 packet_.video_header.codecHeader.VP9.gof_idx = kNoGofIdx;
149 EXPECT_FALSE(map_.UpdatePacket(&packet_)); 149 EXPECT_FALSE(map_.UpdatePacket(&packet_));
150 } 150 }
151 151
152 TEST_F(Vp9SsMapTest, UpdatePacket_InvalidGofIdx) { 152 TEST_F(Vp9SsMapTest, UpdatePacket_InvalidGofIdx) {
153 EXPECT_TRUE(map_.Insert(packet_)); 153 EXPECT_TRUE(map_.Insert(packet_));
154 packet_.codecSpecificHeader.codecHeader.VP9.gof_idx = 4; 154 packet_.video_header.codecHeader.VP9.gof_idx = 4;
155 EXPECT_FALSE(map_.UpdatePacket(&packet_)); 155 EXPECT_FALSE(map_.UpdatePacket(&packet_));
156 } 156 }
157 157
158 TEST_F(Vp9SsMapTest, UpdatePacket) { 158 TEST_F(Vp9SsMapTest, UpdatePacket) {
159 EXPECT_TRUE(map_.Insert(packet_)); // kTemporalStructureMode3: 0-2-1-2.. 159 EXPECT_TRUE(map_.Insert(packet_)); // kTemporalStructureMode3: 0-2-1-2..
160 160
161 packet_.codecSpecificHeader.codecHeader.VP9.gof_idx = 0; 161 packet_.video_header.codecHeader.VP9.gof_idx = 0;
162 EXPECT_TRUE(map_.UpdatePacket(&packet_)); 162 EXPECT_TRUE(map_.UpdatePacket(&packet_));
163 EXPECT_EQ(0, packet_.codecSpecificHeader.codecHeader.VP9.temporal_idx); 163 EXPECT_EQ(0, packet_.video_header.codecHeader.VP9.temporal_idx);
164 EXPECT_FALSE(packet_.codecSpecificHeader.codecHeader.VP9.temporal_up_switch); 164 EXPECT_FALSE(packet_.video_header.codecHeader.VP9.temporal_up_switch);
165 EXPECT_EQ(1U, packet_.codecSpecificHeader.codecHeader.VP9.num_ref_pics); 165 EXPECT_EQ(1U, packet_.video_header.codecHeader.VP9.num_ref_pics);
166 EXPECT_EQ(4, packet_.codecSpecificHeader.codecHeader.VP9.pid_diff[0]); 166 EXPECT_EQ(4, packet_.video_header.codecHeader.VP9.pid_diff[0]);
167 167
168 packet_.codecSpecificHeader.codecHeader.VP9.gof_idx = 1; 168 packet_.video_header.codecHeader.VP9.gof_idx = 1;
169 EXPECT_TRUE(map_.UpdatePacket(&packet_)); 169 EXPECT_TRUE(map_.UpdatePacket(&packet_));
170 EXPECT_EQ(2, packet_.codecSpecificHeader.codecHeader.VP9.temporal_idx); 170 EXPECT_EQ(2, packet_.video_header.codecHeader.VP9.temporal_idx);
171 EXPECT_TRUE(packet_.codecSpecificHeader.codecHeader.VP9.temporal_up_switch); 171 EXPECT_TRUE(packet_.video_header.codecHeader.VP9.temporal_up_switch);
172 EXPECT_EQ(1U, packet_.codecSpecificHeader.codecHeader.VP9.num_ref_pics); 172 EXPECT_EQ(1U, packet_.video_header.codecHeader.VP9.num_ref_pics);
173 EXPECT_EQ(1, packet_.codecSpecificHeader.codecHeader.VP9.pid_diff[0]); 173 EXPECT_EQ(1, packet_.video_header.codecHeader.VP9.pid_diff[0]);
174 174
175 packet_.codecSpecificHeader.codecHeader.VP9.gof_idx = 2; 175 packet_.video_header.codecHeader.VP9.gof_idx = 2;
176 EXPECT_TRUE(map_.UpdatePacket(&packet_)); 176 EXPECT_TRUE(map_.UpdatePacket(&packet_));
177 EXPECT_EQ(1, packet_.codecSpecificHeader.codecHeader.VP9.temporal_idx); 177 EXPECT_EQ(1, packet_.video_header.codecHeader.VP9.temporal_idx);
178 EXPECT_TRUE(packet_.codecSpecificHeader.codecHeader.VP9.temporal_up_switch); 178 EXPECT_TRUE(packet_.video_header.codecHeader.VP9.temporal_up_switch);
179 EXPECT_EQ(1U, packet_.codecSpecificHeader.codecHeader.VP9.num_ref_pics); 179 EXPECT_EQ(1U, packet_.video_header.codecHeader.VP9.num_ref_pics);
180 EXPECT_EQ(2, packet_.codecSpecificHeader.codecHeader.VP9.pid_diff[0]); 180 EXPECT_EQ(2, packet_.video_header.codecHeader.VP9.pid_diff[0]);
181 181
182 packet_.codecSpecificHeader.codecHeader.VP9.gof_idx = 3; 182 packet_.video_header.codecHeader.VP9.gof_idx = 3;
183 EXPECT_TRUE(map_.UpdatePacket(&packet_)); 183 EXPECT_TRUE(map_.UpdatePacket(&packet_));
184 EXPECT_EQ(2, packet_.codecSpecificHeader.codecHeader.VP9.temporal_idx); 184 EXPECT_EQ(2, packet_.video_header.codecHeader.VP9.temporal_idx);
185 EXPECT_FALSE(packet_.codecSpecificHeader.codecHeader.VP9.temporal_up_switch); 185 EXPECT_FALSE(packet_.video_header.codecHeader.VP9.temporal_up_switch);
186 EXPECT_EQ(2U, packet_.codecSpecificHeader.codecHeader.VP9.num_ref_pics); 186 EXPECT_EQ(2U, packet_.video_header.codecHeader.VP9.num_ref_pics);
187 EXPECT_EQ(1, packet_.codecSpecificHeader.codecHeader.VP9.pid_diff[0]); 187 EXPECT_EQ(1, packet_.video_header.codecHeader.VP9.pid_diff[0]);
188 EXPECT_EQ(2, packet_.codecSpecificHeader.codecHeader.VP9.pid_diff[1]); 188 EXPECT_EQ(2, packet_.video_header.codecHeader.VP9.pid_diff[1]);
189 } 189 }
190 190
191 class ProcessThreadMock : public ProcessThread { 191 class ProcessThreadMock : public ProcessThread {
192 public: 192 public:
193 MOCK_METHOD0(Start, void()); 193 MOCK_METHOD0(Start, void());
194 MOCK_METHOD0(Stop, void()); 194 MOCK_METHOD0(Stop, void());
195 MOCK_METHOD1(WakeUp, void(Module* module)); 195 MOCK_METHOD1(WakeUp, void(Module* module));
196 MOCK_METHOD1(RegisterModule, void(Module* module)); 196 MOCK_METHOD1(RegisterModule, void(Module* module));
197 MOCK_METHOD1(DeRegisterModule, void(Module* module)); 197 MOCK_METHOD1(DeRegisterModule, void(Module* module));
198 void PostTask(std::unique_ptr<ProcessTask> task) {} 198 void PostTask(std::unique_ptr<ProcessTask> task) {}
(...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 // ------------------------------------------------- 925 // -------------------------------------------------
926 // | 65485 | 65486 | 65487 | 65488 | 65489 | ... 926 // | 65485 | 65486 | 65487 | 65488 | 65489 | ...
927 // | pid:5 | pid:6 | pid:7 | pid:8 | pid:9 | ... 927 // | pid:5 | pid:6 | pid:7 | pid:8 | pid:9 | ...
928 // | tid:0 | tid:2 | tid:1 | tid:2 | tid:0 | ... 928 // | tid:0 | tid:2 | tid:1 | tid:2 | tid:0 | ...
929 // | ss | x | x | x | | 929 // | ss | x | x | x | |
930 // ------------------------------------------------- 930 // -------------------------------------------------
931 // |<----------tl0idx:200--------->|<---tl0idx:201--- 931 // |<----------tl0idx:200--------->|<---tl0idx:201---
932 932
933 bool re = false; 933 bool re = false;
934 packet_->codec = kVideoCodecVP9; 934 packet_->codec = kVideoCodecVP9;
935 packet_->codecSpecificHeader.codec = kRtpVideoVp9; 935 packet_->video_header.codec = kRtpVideoVp9;
936 packet_->isFirstPacket = true; 936 packet_->isFirstPacket = true;
937 packet_->markerBit = true; 937 packet_->markerBit = true;
938 packet_->codecSpecificHeader.codecHeader.VP9.flexible_mode = false; 938 packet_->video_header.codecHeader.VP9.flexible_mode = false;
939 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 0; 939 packet_->video_header.codecHeader.VP9.spatial_idx = 0;
940 packet_->codecSpecificHeader.codecHeader.VP9.beginning_of_frame = true; 940 packet_->video_header.codecHeader.VP9.beginning_of_frame = true;
941 packet_->codecSpecificHeader.codecHeader.VP9.end_of_frame = true; 941 packet_->video_header.codecHeader.VP9.end_of_frame = true;
942 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = false; 942 packet_->video_header.codecHeader.VP9.temporal_up_switch = false;
943 943
944 packet_->seqNum = 65485; 944 packet_->seqNum = 65485;
945 packet_->timestamp = 1000; 945 packet_->timestamp = 1000;
946 packet_->frameType = kVideoFrameKey; 946 packet_->frameType = kVideoFrameKey;
947 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 5; 947 packet_->video_header.codecHeader.VP9.picture_id = 5;
948 packet_->codecSpecificHeader.codecHeader.VP9.tl0_pic_idx = 200; 948 packet_->video_header.codecHeader.VP9.tl0_pic_idx = 200;
949 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 0; 949 packet_->video_header.codecHeader.VP9.temporal_idx = 0;
950 packet_->codecSpecificHeader.codecHeader.VP9.ss_data_available = true; 950 packet_->video_header.codecHeader.VP9.ss_data_available = true;
951 packet_->codecSpecificHeader.codecHeader.VP9.gof.SetGofInfoVP9( 951 packet_->video_header.codecHeader.VP9.gof.SetGofInfoVP9(
952 kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2.. 952 kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2..
953 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); 953 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
954 954
955 // Insert next temporal layer 0. 955 // Insert next temporal layer 0.
956 packet_->seqNum = 65489; 956 packet_->seqNum = 65489;
957 packet_->timestamp = 13000; 957 packet_->timestamp = 13000;
958 packet_->frameType = kVideoFrameDelta; 958 packet_->frameType = kVideoFrameDelta;
959 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 9; 959 packet_->video_header.codecHeader.VP9.picture_id = 9;
960 packet_->codecSpecificHeader.codecHeader.VP9.tl0_pic_idx = 201; 960 packet_->video_header.codecHeader.VP9.tl0_pic_idx = 201;
961 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 0; 961 packet_->video_header.codecHeader.VP9.temporal_idx = 0;
962 packet_->codecSpecificHeader.codecHeader.VP9.ss_data_available = false; 962 packet_->video_header.codecHeader.VP9.ss_data_available = false;
963 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); 963 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
964 964
965 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 965 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
966 EXPECT_EQ(1000U, frame_out->TimeStamp()); 966 EXPECT_EQ(1000U, frame_out->TimeStamp());
967 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType()); 967 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType());
968 jitter_buffer_->ReleaseFrame(frame_out); 968 jitter_buffer_->ReleaseFrame(frame_out);
969 969
970 frame_out = DecodeCompleteFrame(); 970 frame_out = DecodeCompleteFrame();
971 EXPECT_EQ(13000U, frame_out->TimeStamp()); 971 EXPECT_EQ(13000U, frame_out->TimeStamp());
972 EXPECT_EQ(kVideoFrameDelta, frame_out->FrameType()); 972 EXPECT_EQ(kVideoFrameDelta, frame_out->FrameType());
973 jitter_buffer_->ReleaseFrame(frame_out); 973 jitter_buffer_->ReleaseFrame(frame_out);
974 } 974 }
975 975
976 TEST_P(TestBasicJitterBuffer, ReorderedVp9SsData_3TlLayers) { 976 TEST_P(TestBasicJitterBuffer, ReorderedVp9SsData_3TlLayers) {
977 // Verify that frames are updated with SS data when SS packet is reordered. 977 // Verify that frames are updated with SS data when SS packet is reordered.
978 // -------------------------------- 978 // --------------------------------
979 // | 65486 | 65487 | 65485 |... 979 // | 65486 | 65487 | 65485 |...
980 // | pid:6 | pid:7 | pid:5 |... 980 // | pid:6 | pid:7 | pid:5 |...
981 // | tid:2 | tid:1 | tid:0 |... 981 // | tid:2 | tid:1 | tid:0 |...
982 // | | | ss | 982 // | | | ss |
983 // -------------------------------- 983 // --------------------------------
984 // |<--------tl0idx:200--------->| 984 // |<--------tl0idx:200--------->|
985 985
986 bool re = false; 986 bool re = false;
987 packet_->codec = kVideoCodecVP9; 987 packet_->codec = kVideoCodecVP9;
988 packet_->codecSpecificHeader.codec = kRtpVideoVp9; 988 packet_->video_header.codec = kRtpVideoVp9;
989 packet_->isFirstPacket = true; 989 packet_->isFirstPacket = true;
990 packet_->markerBit = true; 990 packet_->markerBit = true;
991 packet_->codecSpecificHeader.codecHeader.VP9.flexible_mode = false; 991 packet_->video_header.codecHeader.VP9.flexible_mode = false;
992 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 0; 992 packet_->video_header.codecHeader.VP9.spatial_idx = 0;
993 packet_->codecSpecificHeader.codecHeader.VP9.beginning_of_frame = true; 993 packet_->video_header.codecHeader.VP9.beginning_of_frame = true;
994 packet_->codecSpecificHeader.codecHeader.VP9.end_of_frame = true; 994 packet_->video_header.codecHeader.VP9.end_of_frame = true;
995 packet_->codecSpecificHeader.codecHeader.VP9.tl0_pic_idx = 200; 995 packet_->video_header.codecHeader.VP9.tl0_pic_idx = 200;
996 996
997 packet_->seqNum = 65486; 997 packet_->seqNum = 65486;
998 packet_->timestamp = 6000; 998 packet_->timestamp = 6000;
999 packet_->frameType = kVideoFrameDelta; 999 packet_->frameType = kVideoFrameDelta;
1000 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 6; 1000 packet_->video_header.codecHeader.VP9.picture_id = 6;
1001 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 2; 1001 packet_->video_header.codecHeader.VP9.temporal_idx = 2;
1002 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = true; 1002 packet_->video_header.codecHeader.VP9.temporal_up_switch = true;
1003 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); 1003 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
1004 1004
1005 packet_->seqNum = 65487; 1005 packet_->seqNum = 65487;
1006 packet_->timestamp = 9000; 1006 packet_->timestamp = 9000;
1007 packet_->frameType = kVideoFrameDelta; 1007 packet_->frameType = kVideoFrameDelta;
1008 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 7; 1008 packet_->video_header.codecHeader.VP9.picture_id = 7;
1009 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 1; 1009 packet_->video_header.codecHeader.VP9.temporal_idx = 1;
1010 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = true; 1010 packet_->video_header.codecHeader.VP9.temporal_up_switch = true;
1011 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); 1011 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
1012 1012
1013 // Insert first frame with SS data. 1013 // Insert first frame with SS data.
1014 packet_->seqNum = 65485; 1014 packet_->seqNum = 65485;
1015 packet_->timestamp = 3000; 1015 packet_->timestamp = 3000;
1016 packet_->frameType = kVideoFrameKey; 1016 packet_->frameType = kVideoFrameKey;
1017 packet_->width = 352; 1017 packet_->width = 352;
1018 packet_->height = 288; 1018 packet_->height = 288;
1019 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 5; 1019 packet_->video_header.codecHeader.VP9.picture_id = 5;
1020 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 0; 1020 packet_->video_header.codecHeader.VP9.temporal_idx = 0;
1021 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = false; 1021 packet_->video_header.codecHeader.VP9.temporal_up_switch = false;
1022 packet_->codecSpecificHeader.codecHeader.VP9.ss_data_available = true; 1022 packet_->video_header.codecHeader.VP9.ss_data_available = true;
1023 packet_->codecSpecificHeader.codecHeader.VP9.gof.SetGofInfoVP9( 1023 packet_->video_header.codecHeader.VP9.gof.SetGofInfoVP9(
1024 kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2.. 1024 kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2..
1025 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); 1025 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
1026 1026
1027 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 1027 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
1028 EXPECT_EQ(3000U, frame_out->TimeStamp()); 1028 EXPECT_EQ(3000U, frame_out->TimeStamp());
1029 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType()); 1029 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType());
1030 EXPECT_EQ(0, frame_out->CodecSpecific()->codecSpecific.VP9.temporal_idx); 1030 EXPECT_EQ(0, frame_out->CodecSpecific()->codecSpecific.VP9.temporal_idx);
1031 EXPECT_FALSE( 1031 EXPECT_FALSE(
1032 frame_out->CodecSpecific()->codecSpecific.VP9.temporal_up_switch); 1032 frame_out->CodecSpecific()->codecSpecific.VP9.temporal_up_switch);
1033 jitter_buffer_->ReleaseFrame(frame_out); 1033 jitter_buffer_->ReleaseFrame(frame_out);
(...skipping 20 matching lines...) Expand all
1054 // | pid:6 | pid:6 | pid:5 | pid:5 |... 1054 // | pid:6 | pid:6 | pid:5 | pid:5 |...
1055 // | tid:1 | tid:1 | tid:0 | tid:0 |... 1055 // | tid:1 | tid:1 | tid:0 | tid:0 |...
1056 // | sid:0 | sid:1 | sid:1 | sid:0 |... 1056 // | sid:0 | sid:1 | sid:1 | sid:0 |...
1057 // | t:6000 | t:6000 | t:3000 | t:3000 | 1057 // | t:6000 | t:6000 | t:3000 | t:3000 |
1058 // | | | | ss | 1058 // | | | | ss |
1059 // ----------------------------------------- 1059 // -----------------------------------------
1060 // |<-----------tl0idx:200------------>| 1060 // |<-----------tl0idx:200------------>|
1061 1061
1062 bool re = false; 1062 bool re = false;
1063 packet_->codec = kVideoCodecVP9; 1063 packet_->codec = kVideoCodecVP9;
1064 packet_->codecSpecificHeader.codec = kRtpVideoVp9; 1064 packet_->video_header.codec = kRtpVideoVp9;
1065 packet_->codecSpecificHeader.codecHeader.VP9.flexible_mode = false; 1065 packet_->video_header.codecHeader.VP9.flexible_mode = false;
1066 packet_->codecSpecificHeader.codecHeader.VP9.beginning_of_frame = true; 1066 packet_->video_header.codecHeader.VP9.beginning_of_frame = true;
1067 packet_->codecSpecificHeader.codecHeader.VP9.end_of_frame = true; 1067 packet_->video_header.codecHeader.VP9.end_of_frame = true;
1068 packet_->codecSpecificHeader.codecHeader.VP9.tl0_pic_idx = 200; 1068 packet_->video_header.codecHeader.VP9.tl0_pic_idx = 200;
1069 1069
1070 packet_->isFirstPacket = true; 1070 packet_->isFirstPacket = true;
1071 packet_->markerBit = false; 1071 packet_->markerBit = false;
1072 packet_->seqNum = 65486; 1072 packet_->seqNum = 65486;
1073 packet_->timestamp = 6000; 1073 packet_->timestamp = 6000;
1074 packet_->frameType = kVideoFrameDelta; 1074 packet_->frameType = kVideoFrameDelta;
1075 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 0; 1075 packet_->video_header.codecHeader.VP9.spatial_idx = 0;
1076 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 6; 1076 packet_->video_header.codecHeader.VP9.picture_id = 6;
1077 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 1; 1077 packet_->video_header.codecHeader.VP9.temporal_idx = 1;
1078 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = true; 1078 packet_->video_header.codecHeader.VP9.temporal_up_switch = true;
1079 EXPECT_EQ(kIncomplete, jitter_buffer_->InsertPacket(*packet_, &re)); 1079 EXPECT_EQ(kIncomplete, jitter_buffer_->InsertPacket(*packet_, &re));
1080 1080
1081 packet_->isFirstPacket = false; 1081 packet_->isFirstPacket = false;
1082 packet_->markerBit = true; 1082 packet_->markerBit = true;
1083 packet_->seqNum = 65487; 1083 packet_->seqNum = 65487;
1084 packet_->frameType = kVideoFrameDelta; 1084 packet_->frameType = kVideoFrameDelta;
1085 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 1; 1085 packet_->video_header.codecHeader.VP9.spatial_idx = 1;
1086 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 6; 1086 packet_->video_header.codecHeader.VP9.picture_id = 6;
1087 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 1; 1087 packet_->video_header.codecHeader.VP9.temporal_idx = 1;
1088 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = true; 1088 packet_->video_header.codecHeader.VP9.temporal_up_switch = true;
1089 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); 1089 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
1090 1090
1091 packet_->isFirstPacket = false; 1091 packet_->isFirstPacket = false;
1092 packet_->markerBit = true; 1092 packet_->markerBit = true;
1093 packet_->seqNum = 65485; 1093 packet_->seqNum = 65485;
1094 packet_->timestamp = 3000; 1094 packet_->timestamp = 3000;
1095 packet_->frameType = kVideoFrameKey; 1095 packet_->frameType = kVideoFrameKey;
1096 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 1; 1096 packet_->video_header.codecHeader.VP9.spatial_idx = 1;
1097 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 5; 1097 packet_->video_header.codecHeader.VP9.picture_id = 5;
1098 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 0; 1098 packet_->video_header.codecHeader.VP9.temporal_idx = 0;
1099 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = false; 1099 packet_->video_header.codecHeader.VP9.temporal_up_switch = false;
1100 EXPECT_EQ(kIncomplete, jitter_buffer_->InsertPacket(*packet_, &re)); 1100 EXPECT_EQ(kIncomplete, jitter_buffer_->InsertPacket(*packet_, &re));
1101 1101
1102 // Insert first frame with SS data. 1102 // Insert first frame with SS data.
1103 packet_->isFirstPacket = true; 1103 packet_->isFirstPacket = true;
1104 packet_->markerBit = false; 1104 packet_->markerBit = false;
1105 packet_->seqNum = 65484; 1105 packet_->seqNum = 65484;
1106 packet_->frameType = kVideoFrameKey; 1106 packet_->frameType = kVideoFrameKey;
1107 packet_->width = 352; 1107 packet_->width = 352;
1108 packet_->height = 288; 1108 packet_->height = 288;
1109 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 0; 1109 packet_->video_header.codecHeader.VP9.spatial_idx = 0;
1110 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 5; 1110 packet_->video_header.codecHeader.VP9.picture_id = 5;
1111 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 0; 1111 packet_->video_header.codecHeader.VP9.temporal_idx = 0;
1112 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = false; 1112 packet_->video_header.codecHeader.VP9.temporal_up_switch = false;
1113 packet_->codecSpecificHeader.codecHeader.VP9.ss_data_available = true; 1113 packet_->video_header.codecHeader.VP9.ss_data_available = true;
1114 packet_->codecSpecificHeader.codecHeader.VP9.gof.SetGofInfoVP9( 1114 packet_->video_header.codecHeader.VP9.gof.SetGofInfoVP9(
1115 kTemporalStructureMode2); // kTemporalStructureMode3: 0-1-0-1.. 1115 kTemporalStructureMode2); // kTemporalStructureMode3: 0-1-0-1..
1116 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); 1116 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re));
1117 1117
1118 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); 1118 VCMEncodedFrame* frame_out = DecodeCompleteFrame();
1119 EXPECT_EQ(3000U, frame_out->TimeStamp()); 1119 EXPECT_EQ(3000U, frame_out->TimeStamp());
1120 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType()); 1120 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType());
1121 EXPECT_EQ(0, frame_out->CodecSpecific()->codecSpecific.VP9.temporal_idx); 1121 EXPECT_EQ(0, frame_out->CodecSpecific()->codecSpecific.VP9.temporal_idx);
1122 EXPECT_FALSE( 1122 EXPECT_FALSE(
1123 frame_out->CodecSpecific()->codecSpecific.VP9.temporal_up_switch); 1123 frame_out->CodecSpecific()->codecSpecific.VP9.temporal_up_switch);
1124 jitter_buffer_->ReleaseFrame(frame_out); 1124 jitter_buffer_->ReleaseFrame(frame_out);
(...skipping 1534 matching lines...) Expand 10 before | Expand all | Expand 10 after
2659 2659
2660 // Stream should be decodable from this point. 2660 // Stream should be decodable from this point.
2661 clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs); 2661 clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs);
2662 InsertFrame(kVideoFrameDelta); 2662 InsertFrame(kVideoFrameDelta);
2663 EXPECT_TRUE(DecodeCompleteFrame()); 2663 EXPECT_TRUE(DecodeCompleteFrame());
2664 nack_list = jitter_buffer_->GetNackList(&extended); 2664 nack_list = jitter_buffer_->GetNackList(&extended);
2665 EXPECT_EQ(0u, nack_list.size()); 2665 EXPECT_EQ(0u, nack_list.size());
2666 } 2666 }
2667 2667
2668 } // namespace webrtc 2668 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698