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 867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
878 | 878 |
879 bool re = false; | 879 bool re = false; |
880 packet_->codec = kVideoCodecVP9; | 880 packet_->codec = kVideoCodecVP9; |
881 packet_->codecSpecificHeader.codec = kRtpVideoVp9; | 881 packet_->codecSpecificHeader.codec = kRtpVideoVp9; |
882 packet_->isFirstPacket = true; | 882 packet_->isFirstPacket = true; |
883 packet_->markerBit = true; | 883 packet_->markerBit = true; |
884 packet_->codecSpecificHeader.codecHeader.VP9.flexible_mode = false; | 884 packet_->codecSpecificHeader.codecHeader.VP9.flexible_mode = false; |
885 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 0; | 885 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 0; |
886 packet_->codecSpecificHeader.codecHeader.VP9.beginning_of_frame = true; | 886 packet_->codecSpecificHeader.codecHeader.VP9.beginning_of_frame = true; |
887 packet_->codecSpecificHeader.codecHeader.VP9.end_of_frame = true; | 887 packet_->codecSpecificHeader.codecHeader.VP9.end_of_frame = true; |
888 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = kNoTemporalIdx; | |
889 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = false; | 888 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = false; |
890 | 889 |
891 packet_->seqNum = 65485; | 890 packet_->seqNum = 65485; |
892 packet_->timestamp = 1000; | 891 packet_->timestamp = 1000; |
893 packet_->frameType = kVideoFrameKey; | 892 packet_->frameType = kVideoFrameKey; |
894 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 5; | 893 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 5; |
895 packet_->codecSpecificHeader.codecHeader.VP9.tl0_pic_idx = 200; | 894 packet_->codecSpecificHeader.codecHeader.VP9.tl0_pic_idx = 200; |
896 packet_->codecSpecificHeader.codecHeader.VP9.gof_idx = 0; | 895 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 0; |
897 packet_->codecSpecificHeader.codecHeader.VP9.ss_data_available = true; | 896 packet_->codecSpecificHeader.codecHeader.VP9.ss_data_available = true; |
898 packet_->codecSpecificHeader.codecHeader.VP9.gof.SetGofInfoVP9( | 897 packet_->codecSpecificHeader.codecHeader.VP9.gof.SetGofInfoVP9( |
899 kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2.. | 898 kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2.. |
900 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); | 899 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); |
901 | 900 |
902 // Insert next temporal layer 0. | 901 // Insert next temporal layer 0. |
903 packet_->seqNum = 65489; | 902 packet_->seqNum = 65489; |
904 packet_->timestamp = 13000; | 903 packet_->timestamp = 13000; |
905 packet_->frameType = kVideoFrameDelta; | 904 packet_->frameType = kVideoFrameDelta; |
906 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 9; | 905 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 9; |
907 packet_->codecSpecificHeader.codecHeader.VP9.tl0_pic_idx = 201; | 906 packet_->codecSpecificHeader.codecHeader.VP9.tl0_pic_idx = 201; |
908 packet_->codecSpecificHeader.codecHeader.VP9.gof_idx = 0; | 907 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 0; |
909 packet_->codecSpecificHeader.codecHeader.VP9.ss_data_available = false; | 908 packet_->codecSpecificHeader.codecHeader.VP9.ss_data_available = false; |
910 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); | 909 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); |
911 | 910 |
912 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); | 911 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); |
913 EXPECT_EQ(1000U, frame_out->TimeStamp()); | 912 EXPECT_EQ(1000U, frame_out->TimeStamp()); |
914 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType()); | 913 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType()); |
915 jitter_buffer_->ReleaseFrame(frame_out); | 914 jitter_buffer_->ReleaseFrame(frame_out); |
916 | 915 |
917 frame_out = DecodeCompleteFrame(); | 916 frame_out = DecodeCompleteFrame(); |
918 EXPECT_EQ(13000U, frame_out->TimeStamp()); | 917 EXPECT_EQ(13000U, frame_out->TimeStamp()); |
(...skipping 13 matching lines...) Expand all Loading... |
932 | 931 |
933 bool re = false; | 932 bool re = false; |
934 packet_->codec = kVideoCodecVP9; | 933 packet_->codec = kVideoCodecVP9; |
935 packet_->codecSpecificHeader.codec = kRtpVideoVp9; | 934 packet_->codecSpecificHeader.codec = kRtpVideoVp9; |
936 packet_->isFirstPacket = true; | 935 packet_->isFirstPacket = true; |
937 packet_->markerBit = true; | 936 packet_->markerBit = true; |
938 packet_->codecSpecificHeader.codecHeader.VP9.flexible_mode = false; | 937 packet_->codecSpecificHeader.codecHeader.VP9.flexible_mode = false; |
939 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 0; | 938 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 0; |
940 packet_->codecSpecificHeader.codecHeader.VP9.beginning_of_frame = true; | 939 packet_->codecSpecificHeader.codecHeader.VP9.beginning_of_frame = true; |
941 packet_->codecSpecificHeader.codecHeader.VP9.end_of_frame = true; | 940 packet_->codecSpecificHeader.codecHeader.VP9.end_of_frame = true; |
942 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = kNoTemporalIdx; | |
943 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = false; | |
944 packet_->codecSpecificHeader.codecHeader.VP9.tl0_pic_idx = 200; | 941 packet_->codecSpecificHeader.codecHeader.VP9.tl0_pic_idx = 200; |
945 | 942 |
946 packet_->seqNum = 65486; | 943 packet_->seqNum = 65486; |
947 packet_->timestamp = 6000; | 944 packet_->timestamp = 6000; |
948 packet_->frameType = kVideoFrameDelta; | 945 packet_->frameType = kVideoFrameDelta; |
949 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 6; | 946 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 6; |
950 packet_->codecSpecificHeader.codecHeader.VP9.gof_idx = 1; | 947 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 2; |
| 948 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = true; |
951 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); | 949 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); |
952 | 950 |
953 packet_->seqNum = 65487; | 951 packet_->seqNum = 65487; |
954 packet_->timestamp = 9000; | 952 packet_->timestamp = 9000; |
955 packet_->frameType = kVideoFrameDelta; | 953 packet_->frameType = kVideoFrameDelta; |
956 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 7; | 954 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 7; |
957 packet_->codecSpecificHeader.codecHeader.VP9.gof_idx = 2; | 955 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 1; |
| 956 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = true; |
958 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); | 957 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); |
959 | 958 |
960 // Insert first frame with SS data. | 959 // Insert first frame with SS data. |
961 packet_->seqNum = 65485; | 960 packet_->seqNum = 65485; |
962 packet_->timestamp = 3000; | 961 packet_->timestamp = 3000; |
963 packet_->frameType = kVideoFrameKey; | 962 packet_->frameType = kVideoFrameKey; |
964 packet_->width = 352; | 963 packet_->width = 352; |
965 packet_->height = 288; | 964 packet_->height = 288; |
966 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 5; | 965 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 5; |
967 packet_->codecSpecificHeader.codecHeader.VP9.gof_idx = 0; | 966 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 0; |
| 967 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = false; |
968 packet_->codecSpecificHeader.codecHeader.VP9.ss_data_available = true; | 968 packet_->codecSpecificHeader.codecHeader.VP9.ss_data_available = true; |
969 packet_->codecSpecificHeader.codecHeader.VP9.gof.SetGofInfoVP9( | 969 packet_->codecSpecificHeader.codecHeader.VP9.gof.SetGofInfoVP9( |
970 kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2.. | 970 kTemporalStructureMode3); // kTemporalStructureMode3: 0-2-1-2.. |
971 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); | 971 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); |
972 | 972 |
973 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); | 973 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); |
974 EXPECT_EQ(3000U, frame_out->TimeStamp()); | 974 EXPECT_EQ(3000U, frame_out->TimeStamp()); |
975 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType()); | 975 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType()); |
976 EXPECT_EQ(0, frame_out->CodecSpecific()->codecSpecific.VP9.temporal_idx); | 976 EXPECT_EQ(0, frame_out->CodecSpecific()->codecSpecific.VP9.temporal_idx); |
977 EXPECT_FALSE( | 977 EXPECT_FALSE( |
(...skipping 26 matching lines...) Expand all Loading... |
1004 // | | | | ss | | 1004 // | | | | ss | |
1005 // ----------------------------------------- | 1005 // ----------------------------------------- |
1006 // |<-----------tl0idx:200------------>| | 1006 // |<-----------tl0idx:200------------>| |
1007 | 1007 |
1008 bool re = false; | 1008 bool re = false; |
1009 packet_->codec = kVideoCodecVP9; | 1009 packet_->codec = kVideoCodecVP9; |
1010 packet_->codecSpecificHeader.codec = kRtpVideoVp9; | 1010 packet_->codecSpecificHeader.codec = kRtpVideoVp9; |
1011 packet_->codecSpecificHeader.codecHeader.VP9.flexible_mode = false; | 1011 packet_->codecSpecificHeader.codecHeader.VP9.flexible_mode = false; |
1012 packet_->codecSpecificHeader.codecHeader.VP9.beginning_of_frame = true; | 1012 packet_->codecSpecificHeader.codecHeader.VP9.beginning_of_frame = true; |
1013 packet_->codecSpecificHeader.codecHeader.VP9.end_of_frame = true; | 1013 packet_->codecSpecificHeader.codecHeader.VP9.end_of_frame = true; |
1014 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = kNoTemporalIdx; | |
1015 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = false; | |
1016 packet_->codecSpecificHeader.codecHeader.VP9.tl0_pic_idx = 200; | 1014 packet_->codecSpecificHeader.codecHeader.VP9.tl0_pic_idx = 200; |
1017 | 1015 |
1018 packet_->isFirstPacket = true; | 1016 packet_->isFirstPacket = true; |
1019 packet_->markerBit = false; | 1017 packet_->markerBit = false; |
1020 packet_->seqNum = 65486; | 1018 packet_->seqNum = 65486; |
1021 packet_->timestamp = 6000; | 1019 packet_->timestamp = 6000; |
1022 packet_->frameType = kVideoFrameDelta; | 1020 packet_->frameType = kVideoFrameDelta; |
1023 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 0; | 1021 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 0; |
1024 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 6; | 1022 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 6; |
1025 packet_->codecSpecificHeader.codecHeader.VP9.gof_idx = 1; | 1023 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 1; |
| 1024 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = true; |
1026 EXPECT_EQ(kIncomplete, jitter_buffer_->InsertPacket(*packet_, &re)); | 1025 EXPECT_EQ(kIncomplete, jitter_buffer_->InsertPacket(*packet_, &re)); |
1027 | 1026 |
1028 packet_->isFirstPacket = false; | 1027 packet_->isFirstPacket = false; |
1029 packet_->markerBit = true; | 1028 packet_->markerBit = true; |
1030 packet_->seqNum = 65487; | 1029 packet_->seqNum = 65487; |
1031 packet_->frameType = kVideoFrameDelta; | 1030 packet_->frameType = kVideoFrameDelta; |
1032 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 1; | 1031 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 1; |
1033 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 6; | 1032 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 6; |
1034 packet_->codecSpecificHeader.codecHeader.VP9.gof_idx = 1; | 1033 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 1; |
| 1034 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = true; |
1035 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); | 1035 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); |
1036 | 1036 |
1037 packet_->isFirstPacket = false; | 1037 packet_->isFirstPacket = false; |
1038 packet_->markerBit = true; | 1038 packet_->markerBit = true; |
1039 packet_->seqNum = 65485; | 1039 packet_->seqNum = 65485; |
1040 packet_->timestamp = 3000; | 1040 packet_->timestamp = 3000; |
1041 packet_->frameType = kVideoFrameKey; | 1041 packet_->frameType = kVideoFrameKey; |
1042 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 1; | 1042 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 1; |
1043 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 5; | 1043 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 5; |
1044 packet_->codecSpecificHeader.codecHeader.VP9.gof_idx = 0; | 1044 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 0; |
| 1045 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = false; |
1045 EXPECT_EQ(kIncomplete, jitter_buffer_->InsertPacket(*packet_, &re)); | 1046 EXPECT_EQ(kIncomplete, jitter_buffer_->InsertPacket(*packet_, &re)); |
1046 | 1047 |
1047 // Insert first frame with SS data. | 1048 // Insert first frame with SS data. |
1048 packet_->isFirstPacket = true; | 1049 packet_->isFirstPacket = true; |
1049 packet_->markerBit = false; | 1050 packet_->markerBit = false; |
1050 packet_->seqNum = 65484; | 1051 packet_->seqNum = 65484; |
1051 packet_->frameType = kVideoFrameKey; | 1052 packet_->frameType = kVideoFrameKey; |
1052 packet_->width = 352; | 1053 packet_->width = 352; |
1053 packet_->height = 288; | 1054 packet_->height = 288; |
1054 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 0; | 1055 packet_->codecSpecificHeader.codecHeader.VP9.spatial_idx = 0; |
1055 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 5; | 1056 packet_->codecSpecificHeader.codecHeader.VP9.picture_id = 5; |
1056 packet_->codecSpecificHeader.codecHeader.VP9.gof_idx = 0; | 1057 packet_->codecSpecificHeader.codecHeader.VP9.temporal_idx = 0; |
| 1058 packet_->codecSpecificHeader.codecHeader.VP9.temporal_up_switch = false; |
1057 packet_->codecSpecificHeader.codecHeader.VP9.ss_data_available = true; | 1059 packet_->codecSpecificHeader.codecHeader.VP9.ss_data_available = true; |
1058 packet_->codecSpecificHeader.codecHeader.VP9.gof.SetGofInfoVP9( | 1060 packet_->codecSpecificHeader.codecHeader.VP9.gof.SetGofInfoVP9( |
1059 kTemporalStructureMode2); // kTemporalStructureMode3: 0-1-0-1.. | 1061 kTemporalStructureMode2); // kTemporalStructureMode3: 0-1-0-1.. |
1060 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); | 1062 EXPECT_EQ(kCompleteSession, jitter_buffer_->InsertPacket(*packet_, &re)); |
1061 | 1063 |
1062 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); | 1064 VCMEncodedFrame* frame_out = DecodeCompleteFrame(); |
1063 EXPECT_EQ(3000U, frame_out->TimeStamp()); | 1065 EXPECT_EQ(3000U, frame_out->TimeStamp()); |
1064 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType()); | 1066 EXPECT_EQ(kVideoFrameKey, frame_out->FrameType()); |
1065 EXPECT_EQ(0, frame_out->CodecSpecific()->codecSpecific.VP9.temporal_idx); | 1067 EXPECT_EQ(0, frame_out->CodecSpecific()->codecSpecific.VP9.temporal_idx); |
1066 EXPECT_FALSE( | 1068 EXPECT_FALSE( |
(...skipping 1499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2566 | 2568 |
2567 // Stream should be decodable from this point. | 2569 // Stream should be decodable from this point. |
2568 clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs); | 2570 clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs); |
2569 InsertFrame(kVideoFrameDelta); | 2571 InsertFrame(kVideoFrameDelta); |
2570 EXPECT_TRUE(DecodeCompleteFrame()); | 2572 EXPECT_TRUE(DecodeCompleteFrame()); |
2571 nack_list = jitter_buffer_->GetNackList(&extended); | 2573 nack_list = jitter_buffer_->GetNackList(&extended); |
2572 EXPECT_EQ(0u, nack_list.size()); | 2574 EXPECT_EQ(0u, nack_list.size()); |
2573 } | 2575 } |
2574 | 2576 |
2575 } // namespace webrtc | 2577 } // namespace webrtc |
OLD | NEW |