OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |