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

Side by Side Diff: webrtc/video_engine/vie_codec_unittest.cc

Issue 1506773002: Merge webrtc/video_engine/ into webrtc/video/ (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 5 years 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
« no previous file with comments | « webrtc/video_engine/vie_channel.cc ('k') | webrtc/video_engine/vie_encoder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "webrtc/common_types.h"
13
14 namespace webrtc {
15
16 // Builds VP8 codec with 0 simulcast streams.
17 void BuildVP8Codec(webrtc::VideoCodec* video_codec) {
18 video_codec->codecType = kVideoCodecVP8;
19 strncpy(video_codec->plName, "VP8", 4);
20 video_codec->plType = 100;
21 video_codec->width = 1280;
22 video_codec->height = 720;
23
24 video_codec->startBitrate = 1000; // kbps
25 video_codec->maxBitrate = 2000; // kbps
26 video_codec->minBitrate = 1000; // kbps
27 video_codec->maxFramerate = 30;
28
29 video_codec->qpMax = 50;
30 video_codec->numberOfSimulcastStreams = 0;
31 video_codec->mode = kRealtimeVideo;
32
33 // Set VP8 codec specific info.
34 video_codec->codecSpecific.VP8.pictureLossIndicationOn = true;
35 video_codec->codecSpecific.VP8.feedbackModeOn = true;
36 video_codec->codecSpecific.VP8.complexity = kComplexityNormal;
37 video_codec->codecSpecific.VP8.resilience = kResilienceOff;
38 video_codec->codecSpecific.VP8.numberOfTemporalLayers = 0;
39 video_codec->codecSpecific.VP8.denoisingOn = true;
40 video_codec->codecSpecific.VP8.errorConcealmentOn = true;
41 video_codec->codecSpecific.VP8.automaticResizeOn = true;
42 video_codec->codecSpecific.VP8.frameDroppingOn = true;
43 video_codec->codecSpecific.VP8.keyFrameInterval = 200;
44 }
45
46
47 void SetSimulcastSettings(webrtc::VideoCodec* video_codec) {
48 // Simulcast settings.
49 video_codec->numberOfSimulcastStreams = 1;
50 video_codec->simulcastStream[0].width = 320;
51 video_codec->simulcastStream[0].height = 180;
52 video_codec->simulcastStream[0].numberOfTemporalLayers = 0;
53 video_codec->simulcastStream[0].maxBitrate = 100;
54 video_codec->simulcastStream[0].targetBitrate = 100;
55 video_codec->simulcastStream[0].minBitrate = 0;
56 video_codec->simulcastStream[0].qpMax = video_codec->qpMax;
57 }
58
59
60 // This test compares two VideoCodecInst objects except codec specific and
61 // simulcast streams.
62 TEST(ViECodecTest, TestCompareCodecs) {
63 VideoCodec codec1, codec2;
64 memset(&codec1, 0, sizeof(VideoCodec));
65 memset(&codec2, 0, sizeof(VideoCodec));
66
67 BuildVP8Codec(&codec1);
68 BuildVP8Codec(&codec2);
69
70 EXPECT_TRUE(codec1 == codec2);
71 EXPECT_FALSE(codec1 != codec2);
72
73 // plname is case insensitive.
74 strncpy(codec2.plName, "vp8", 4);
75 EXPECT_TRUE(codec1 == codec2);
76
77 codec2.codecType = kVideoCodecUnknown;
78 EXPECT_FALSE(codec1 == codec2);
79
80 // Modify pltype.
81 BuildVP8Codec(&codec2);
82 codec2.plType = 101;
83 EXPECT_FALSE(codec1 == codec2);
84
85 // Modifing height and width.
86 BuildVP8Codec(&codec2);
87 codec2.width = 640;
88 codec2.height = 480;
89 EXPECT_FALSE(codec1 == codec2);
90
91 // Modify framerate, default value is 30.
92 BuildVP8Codec(&codec2);
93 codec2.maxFramerate = 15;
94 EXPECT_FALSE(codec1 == codec2);
95
96 // Modifying startBitrate, default value is 1000 kbps.
97 BuildVP8Codec(&codec2);
98 codec2.startBitrate = 2000;
99 EXPECT_FALSE(codec1 == codec2);
100 // maxBitrate
101 BuildVP8Codec(&codec2);
102 codec2.startBitrate = 3000;
103 EXPECT_FALSE(codec1 == codec2);
104 // minBirate
105 BuildVP8Codec(&codec2);
106 codec2.startBitrate = 500;
107 EXPECT_FALSE(codec1 == codec2);
108
109 // Modify qpMax.
110 BuildVP8Codec(&codec2);
111 codec2.qpMax = 100;
112 EXPECT_FALSE(codec1 == codec2);
113
114 // Modify mode
115 BuildVP8Codec(&codec2);
116 codec2.mode = kScreensharing;
117 EXPECT_FALSE(codec1 == codec2);
118 }
119
120 // Test VP8 specific comparision.
121 TEST(ViECodecTest, TestCompareVP8CodecSpecific) {
122 VideoCodec codec1, codec2;
123 memset(&codec1, 0, sizeof(VideoCodec));
124 memset(&codec2, 0, sizeof(VideoCodec));
125
126 BuildVP8Codec(&codec1);
127 BuildVP8Codec(&codec2);
128 EXPECT_TRUE(codec1 == codec2);
129
130 // pictureLossIndicationOn
131 codec2.codecSpecific.VP8.pictureLossIndicationOn = false;
132 EXPECT_FALSE(codec1 == codec2);
133
134 // feedbackModeOn
135 BuildVP8Codec(&codec2);
136 codec2.codecSpecific.VP8.feedbackModeOn = false;
137 EXPECT_FALSE(codec1 == codec2);
138
139 // complexity
140 BuildVP8Codec(&codec2);
141 codec2.codecSpecific.VP8.complexity = kComplexityHigh;
142 EXPECT_FALSE(codec1 == codec2);
143
144 // resilience
145 BuildVP8Codec(&codec2);
146 codec2.codecSpecific.VP8.resilience = kResilientStream;
147 EXPECT_FALSE(codec1 == codec2);
148
149 // numberOfTemporalLayers
150 BuildVP8Codec(&codec2);
151 codec2.codecSpecific.VP8.numberOfTemporalLayers = 2;
152 EXPECT_FALSE(codec1 == codec2);
153
154 // denoisingOn
155 BuildVP8Codec(&codec2);
156 codec2.codecSpecific.VP8.denoisingOn = false;
157 EXPECT_FALSE(codec1 == codec2);
158
159 // errorConcealmentOn
160 BuildVP8Codec(&codec2);
161 codec2.codecSpecific.VP8.errorConcealmentOn = false;
162 EXPECT_FALSE(codec1 == codec2);
163
164 // pictureLossIndicationOn
165 BuildVP8Codec(&codec2);
166 codec2.codecSpecific.VP8.automaticResizeOn = false;
167 EXPECT_FALSE(codec1 == codec2);
168
169 // frameDroppingOn
170 BuildVP8Codec(&codec2);
171 codec2.codecSpecific.VP8.frameDroppingOn = false;
172 EXPECT_FALSE(codec1 == codec2);
173
174 // keyFrameInterval
175 BuildVP8Codec(&codec2);
176 codec2.codecSpecific.VP8.keyFrameInterval = 100;
177 EXPECT_FALSE(codec1 == codec2);
178 }
179
180 // This test compares simulcast stream information in VideoCodec.
181 TEST(ViECodecTest, TestCompareSimulcastStreams) {
182 VideoCodec codec1, codec2;
183 memset(&codec1, 0, sizeof(VideoCodec));
184 memset(&codec2, 0, sizeof(VideoCodec));
185
186 BuildVP8Codec(&codec1);
187 BuildVP8Codec(&codec2);
188 // Set simulacast settings.
189 SetSimulcastSettings(&codec1);
190 SetSimulcastSettings(&codec2);
191 EXPECT_TRUE(codec1 == codec2);
192
193 // Modify number of streams.
194 codec2.numberOfSimulcastStreams = 2;
195 EXPECT_FALSE(codec1 == codec2);
196
197 // Resetting steram count.
198 codec2.numberOfSimulcastStreams = 1;
199 // Modify height and width in codec2.
200 codec2.simulcastStream[0].width = 640;
201 codec2.simulcastStream[0].height = 480;
202 EXPECT_FALSE(codec1 == codec2);
203
204 // numberOfTemporalLayers
205 SetSimulcastSettings(&codec2);
206 codec2.simulcastStream[0].numberOfTemporalLayers = 2;
207 EXPECT_FALSE(codec1 == codec2);
208
209 // maxBitrate
210 SetSimulcastSettings(&codec2);
211 codec2.simulcastStream[0].maxBitrate = 1000;
212 EXPECT_FALSE(codec1 == codec2);
213
214 // targetBitrate
215 SetSimulcastSettings(&codec2);
216 codec2.simulcastStream[0].targetBitrate = 1000;
217 EXPECT_FALSE(codec1 == codec2);
218
219 // minBitrate
220 SetSimulcastSettings(&codec2);
221 codec2.simulcastStream[0].minBitrate = 50;
222 EXPECT_FALSE(codec1 == codec2);
223
224 // qpMax
225 SetSimulcastSettings(&codec2);
226 codec2.simulcastStream[0].qpMax = 100;
227 EXPECT_FALSE(codec1 == codec2);
228 }
229
230 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video_engine/vie_channel.cc ('k') | webrtc/video_engine/vie_encoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698