1 /*
2 * Copyright (C) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15 #include <string>
16 #include "gtest/gtest.h"
17 #include "native_avcodec_videodecoder.h"
18 #include "native_averrors.h"
19 #include "videodec_api11_sample.h"
20 #include "native_avcodec_base.h"
21 #include "avcodec_codec_name.h"
22 #include "native_avcapability.h"
23 #include "native_avformat.h"
24
25 #ifdef SUPPORT_DRM
26 #include "native_mediakeysession.h"
27 #include "native_mediakeysystem.h"
28 #endif
29
30 #define MAX_THREAD 16
31
32 using namespace std;
33 using namespace OHOS;
34 using namespace OHOS::Media;
35 using namespace testing::ext;
36
37 namespace OHOS {
38 namespace Media {
39 class H263SwdecFuncNdkTest : public testing::Test {
40 public:
41 static void SetUpTestCase();
42 static void TearDownTestCase();
43 void SetUp() override;
44 void TearDown() override;
45 void InputFunc();
46 void OutputFunc();
47 void Release();
48 int32_t Stop();
49 };
50 } // namespace Media
51 } // namespace OHOS
52
53 namespace {
54 static OH_AVCapability *cap_263 = nullptr;
55 static string g_codecName263 = "";
56 static OH_AVCapability *cap_264 = nullptr;
57 static string g_codecName264 = "";
58 constexpr uint32_t FRAMESIZE90 = 90;
59 constexpr uint32_t FRAMESIZE75 = 75;
60 constexpr uint32_t FRAMESIZE180 = 180;
61 constexpr uint32_t FRAMESIZE360 = 360;
62 constexpr uint32_t FRAMESIZE540 = 540;
63
64 } // namespace
65
SetUpTestCase()66 void H263SwdecFuncNdkTest::SetUpTestCase()
67 {
68 cap_263 = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_H263, false, SOFTWARE);
69 g_codecName263 = OH_AVCapability_GetName(cap_263);
70 cout << "g_codecName263: " << g_codecName263 << endl;
71 cap_264 = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, SOFTWARE);
72 g_codecName264 = OH_AVCapability_GetName(cap_264);
73 cout << "g_codecName264: " << g_codecName264 << endl;
74 }
75
TearDownTestCase()76 void H263SwdecFuncNdkTest::TearDownTestCase() {}
SetUp()77 void H263SwdecFuncNdkTest::SetUp() {}
TearDown()78 void H263SwdecFuncNdkTest::TearDown() {}
79
80 namespace {
81 /**
82 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0010
83 * @tc.name : decode H263 buffer,PixelFormat,NV12
84 * @tc.desc : function test
85 */
86 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0010, TestSize.Level0)
87 {
88 auto vDecSample = make_shared<VDecAPI11Sample>();
89 vDecSample->INP_DIR = "/data/test/media/20x20.h263";
90 vDecSample->DEFAULT_WIDTH = 20;
91 vDecSample->DEFAULT_HEIGHT = 20;
92 vDecSample->DEFAULT_FRAME_RATE = 30;
93 vDecSample->outputYuvFlag = true;
94 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
95 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
96 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
97 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
98 vDecSample->WaitForEOS();
99 ASSERT_EQ(0, vDecSample->errCount);
100 ASSERT_EQ(FRAMESIZE75, vDecSample->outFrameCount);
101 }
102
103 /**
104 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0020
105 * @tc.name : decode H263 buffer,PixelFormat,NV21
106 * @tc.desc : function test
107 */
108 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0020, TestSize.Level0)
109 {
110 auto vDecSample = make_shared<VDecAPI11Sample>();
111 vDecSample->INP_DIR = "/data/test/media/profile0_level10_I_128x96.h263";
112 vDecSample->DEFAULT_WIDTH = 128;
113 vDecSample->DEFAULT_HEIGHT = 96;
114 vDecSample->DEFAULT_FRAME_RATE = 30;
115 vDecSample->outputYuvFlag = true;
116 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
117 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
118 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
119 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
120 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
121 vDecSample->WaitForEOS();
122 ASSERT_EQ(0, vDecSample->errCount);
123 ASSERT_EQ(FRAMESIZE90, vDecSample->outFrameCount);
124 }
125
126 /**
127 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0030
128 * @tc.name : decode H263 buffer,PixelFormat,I420
129 * @tc.desc : function test
130 */
131 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0030, TestSize.Level0)
132 {
133 auto vDecSample = make_shared<VDecAPI11Sample>();
134 vDecSample->INP_DIR = "/data/test/media/profile0_level20_176x144.h263";
135 vDecSample->DEFAULT_WIDTH = 176;
136 vDecSample->DEFAULT_HEIGHT = 144;
137 vDecSample->DEFAULT_FRAME_RATE = 30;
138 vDecSample->outputYuvFlag = true;
139 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_YUVI420;
140 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
141 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
142 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
143 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
144 vDecSample->WaitForEOS();
145 ASSERT_EQ(0, vDecSample->errCount);
146 ASSERT_EQ(FRAMESIZE90, vDecSample->outFrameCount);
147 }
148
149 /**
150 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0040
151 * @tc.name : decode H263 buffer,PixelFormat,RGBA
152 * @tc.desc : function test
153 */
154 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0040, TestSize.Level0)
155 {
156 auto vDecSample = make_shared<VDecAPI11Sample>();
157 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
158 vDecSample->DEFAULT_WIDTH = 352;
159 vDecSample->DEFAULT_HEIGHT = 288;
160 vDecSample->DEFAULT_FRAME_RATE = 30;
161 vDecSample->outputYuvFlag = true;
162 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_RGBA;
163 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
164 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
165 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
166 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
167 vDecSample->WaitForEOS();
168 ASSERT_EQ(0, vDecSample->errCount);
169 ASSERT_EQ(FRAMESIZE90, vDecSample->outFrameCount);
170 }
171
172 /**
173 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0050
174 * @tc.name : decode H263 buffer,profile0_level40
175 * @tc.desc : function test
176 */
177 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0050, TestSize.Level1)
178 {
179 auto vDecSample = make_shared<VDecAPI11Sample>();
180 vDecSample->INP_DIR = "/data/test/media/profile0_level40_I_352x288.h263";
181 vDecSample->DEFAULT_WIDTH = 352;
182 vDecSample->DEFAULT_HEIGHT = 288;
183 vDecSample->DEFAULT_FRAME_RATE = 30;
184 vDecSample->outputYuvFlag = true;
185 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
186 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
187 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
188 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
189 vDecSample->WaitForEOS();
190 ASSERT_EQ(0, vDecSample->errCount);
191 ASSERT_EQ(FRAMESIZE90, vDecSample->outFrameCount);
192 }
193
194 /**
195 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0060
196 * @tc.name : decode H263 buffer,profile0_level50
197 * @tc.desc : function test
198 */
199 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0060, TestSize.Level1)
200 {
201 auto vDecSample = make_shared<VDecAPI11Sample>();
202 vDecSample->INP_DIR = "/data/test/media/profile0_level50_352x288.h263";
203 vDecSample->DEFAULT_WIDTH = 352;
204 vDecSample->DEFAULT_HEIGHT = 288;
205 vDecSample->DEFAULT_FRAME_RATE = 30;
206 vDecSample->outputYuvFlag = true;
207 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
208 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
209 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
210 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
211 vDecSample->WaitForEOS();
212 ASSERT_EQ(0, vDecSample->errCount);
213 ASSERT_EQ(FRAMESIZE90, vDecSample->outFrameCount);
214 }
215
216 /**
217 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0070
218 * @tc.name : decode H263 buffer,profile0_level60
219 * @tc.desc : function test
220 */
221 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0070, TestSize.Level1)
222 {
223 auto vDecSample = make_shared<VDecAPI11Sample>();
224 vDecSample->INP_DIR = "/data/test/media/profile0_level60_704x576.h263";
225 vDecSample->DEFAULT_WIDTH = 704;
226 vDecSample->DEFAULT_HEIGHT = 576;
227 vDecSample->DEFAULT_FRAME_RATE = 30;
228 vDecSample->outputYuvFlag = true;
229 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
230 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
231 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
232 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
233 vDecSample->WaitForEOS();
234 ASSERT_EQ(0, vDecSample->errCount);
235 ASSERT_EQ(FRAMESIZE90, vDecSample->outFrameCount);
236 }
237
238 /**
239 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0080
240 * @tc.name : decode H263 buffer,profile0_level70
241 * @tc.desc : function test
242 */
243 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0080, TestSize.Level1)
244 {
245 auto vDecSample = make_shared<VDecAPI11Sample>();
246 vDecSample->INP_DIR = "/data/test/media/profile0_level70_1408x1152.h263";
247 vDecSample->DEFAULT_WIDTH = 1408;
248 vDecSample->DEFAULT_HEIGHT = 1152;
249 vDecSample->DEFAULT_FRAME_RATE = 30;
250 vDecSample->outputYuvFlag = true;
251 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
252 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
253 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
254 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
255 vDecSample->WaitForEOS();
256 ASSERT_EQ(0, vDecSample->errCount);
257 ASSERT_EQ(FRAMESIZE90, vDecSample->outFrameCount);
258 }
259
260 /**
261 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0090
262 * @tc.name : decode H263 buffer,profile2_level10
263 * @tc.desc : function test
264 */
265 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0090, TestSize.Level1)
266 {
267 auto vDecSample = make_shared<VDecAPI11Sample>();
268 vDecSample->INP_DIR = "/data/test/media/profile2_level10_128x96.h263";
269 vDecSample->DEFAULT_WIDTH = 128;
270 vDecSample->DEFAULT_HEIGHT = 96;
271 vDecSample->DEFAULT_FRAME_RATE = 30;
272 vDecSample->outputYuvFlag = true;
273 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
274 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
275 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
276 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
277 vDecSample->WaitForEOS();
278 ASSERT_EQ(0, vDecSample->errCount);
279 ASSERT_EQ(FRAMESIZE75, vDecSample->outFrameCount);
280 }
281
282 /**
283 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0100
284 * @tc.name : decode H263 buffer,profile2_level20
285 * @tc.desc : function test
286 */
287 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0100, TestSize.Level1)
288 {
289 auto vDecSample = make_shared<VDecAPI11Sample>();
290 vDecSample->INP_DIR = "/data/test/media/profile2_level20_176x144.h263";
291 vDecSample->DEFAULT_WIDTH = 176;
292 vDecSample->DEFAULT_HEIGHT = 144;
293 vDecSample->DEFAULT_FRAME_RATE = 30;
294 vDecSample->outputYuvFlag = true;
295 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
296 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
297 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
298 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
299 vDecSample->WaitForEOS();
300 ASSERT_EQ(0, vDecSample->errCount);
301 ASSERT_EQ(FRAMESIZE75, vDecSample->outFrameCount);
302 }
303
304 /**
305 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0110
306 * @tc.name : decode H263 buffer,profile2_level30
307 * @tc.desc : function test
308 */
309 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0110, TestSize.Level1)
310 {
311 auto vDecSample = make_shared<VDecAPI11Sample>();
312 vDecSample->INP_DIR = "/data/test/media/profile2_level30_I_352x288.h263";
313 vDecSample->DEFAULT_WIDTH = 352;
314 vDecSample->DEFAULT_HEIGHT = 288;
315 vDecSample->DEFAULT_FRAME_RATE = 30;
316 vDecSample->outputYuvFlag = true;
317 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
318 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
319 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
320 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
321 vDecSample->WaitForEOS();
322 ASSERT_EQ(0, vDecSample->errCount);
323 ASSERT_EQ(FRAMESIZE75, vDecSample->outFrameCount);
324 }
325
326 /**
327 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0120
328 * @tc.name : decode H263 buffer,profile2_level40
329 * @tc.desc : function test
330 */
331 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0120, TestSize.Level1)
332 {
333 auto vDecSample = make_shared<VDecAPI11Sample>();
334 vDecSample->INP_DIR = "/data/test/media/profile2_level40_352x288.h263";
335 vDecSample->DEFAULT_WIDTH = 352;
336 vDecSample->DEFAULT_HEIGHT = 288;
337 vDecSample->DEFAULT_FRAME_RATE = 30;
338 vDecSample->outputYuvFlag = true;
339 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
340 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
341 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
342 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
343 vDecSample->WaitForEOS();
344 ASSERT_EQ(0, vDecSample->errCount);
345 ASSERT_EQ(FRAMESIZE75, vDecSample->outFrameCount);
346 }
347
348 /**
349 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0130
350 * @tc.name : decode H263 buffer,profile2_level50
351 * @tc.desc : function test
352 */
353 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0130, TestSize.Level1)
354 {
355 auto vDecSample = make_shared<VDecAPI11Sample>();
356 vDecSample->INP_DIR = "/data/test/media/profile2_level50_gop60_1280x720.h263";
357 vDecSample->DEFAULT_WIDTH = 1280;
358 vDecSample->DEFAULT_HEIGHT = 720;
359 vDecSample->DEFAULT_FRAME_RATE = 30;
360 vDecSample->outputYuvFlag = true;
361 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
362 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
363 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
364 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
365 vDecSample->WaitForEOS();
366 ASSERT_EQ(0, vDecSample->errCount);
367 ASSERT_EQ(FRAMESIZE180, vDecSample->outFrameCount);
368 }
369
370 /**
371 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0140
372 * @tc.name : decode H263 buffer,profile2_level60
373 * @tc.desc : function test
374 */
375 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0140, TestSize.Level1)
376 {
377 auto vDecSample = make_shared<VDecAPI11Sample>();
378 vDecSample->INP_DIR = "/data/test/media/profile2_level60_gop60_1920x1080.h263";
379 vDecSample->DEFAULT_WIDTH = 1920;
380 vDecSample->DEFAULT_HEIGHT = 1080;
381 vDecSample->DEFAULT_FRAME_RATE = 30;
382 vDecSample->outputYuvFlag = true;
383 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
384 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
385 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
386 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
387 vDecSample->WaitForEOS();
388 ASSERT_EQ(0, vDecSample->errCount);
389 ASSERT_EQ(FRAMESIZE180, vDecSample->outFrameCount);
390 }
391
392 /**
393 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0150
394 * @tc.name : decode H263 buffer,profile2_level70
395 * @tc.desc : function test
396 */
397 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0150, TestSize.Level1)
398 {
399 auto vDecSample = make_shared<VDecAPI11Sample>();
400 vDecSample->INP_DIR = "/data/test/media/profile2_level70_gop60_2048x1152.h263";
401 vDecSample->DEFAULT_WIDTH = 2048;
402 vDecSample->DEFAULT_HEIGHT = 1152;
403 vDecSample->DEFAULT_FRAME_RATE = 30;
404 vDecSample->outputYuvFlag = true;
405 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
406 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
407 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
408 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
409 vDecSample->WaitForEOS();
410 ASSERT_EQ(0, vDecSample->errCount);
411 ASSERT_EQ(FRAMESIZE180, vDecSample->outFrameCount);
412 }
413
414 /**
415 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0160
416 * @tc.name : decode H263 buffer,input h264
417 * @tc.desc : function test
418 */
419 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0160, TestSize.Level3)
420 {
421 auto vDecSample = make_shared<VDecAPI11Sample>();
422 vDecSample->INP_DIR = "/data/test/media/1920x1080.h264";
423 vDecSample->DEFAULT_WIDTH = 1920;
424 vDecSample->DEFAULT_HEIGHT = 1080;
425 vDecSample->DEFAULT_FRAME_RATE = 30;
426 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
427 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
428 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
429 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
430 vDecSample->WaitForEOS();
431 ASSERT_EQ(true, vDecSample->isonError);
432 }
433
434 /**
435 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0170
436 * @tc.name : decode H263 surface,profile2_level70
437 * @tc.desc : function test
438 */
439 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0170, TestSize.Level3)
440 {
441 auto vDecSample = make_shared<VDecAPI11Sample>();
442 vDecSample->INP_DIR = "/data/test/media/profile2_level70_gop60_2048x1152.h263";
443 vDecSample->DEFAULT_WIDTH = 2048;
444 vDecSample->DEFAULT_HEIGHT = 1152;
445 vDecSample->DEFAULT_FRAME_RATE = 30;
446 vDecSample->SF_OUTPUT = true;
447 vDecSample->outputYuvSurface = true;
448 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV12;
449 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName263));
450 vDecSample->WaitForEOS();
451 ASSERT_EQ(0, vDecSample->errCount);
452 ASSERT_EQ(FRAMESIZE180, vDecSample->outFrameCount);
453 }
454
455 /**
456 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0180
457 * @tc.name : decode H263 surface,profile0_level10
458 * @tc.desc : function test
459 */
460 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0180, TestSize.Level3)
461 {
462 auto vDecSample = make_shared<VDecAPI11Sample>();
463 vDecSample->INP_DIR = "/data/test/media/profile0_level10_I_128x96.h263";
464 vDecSample->DEFAULT_WIDTH = 128;
465 vDecSample->DEFAULT_HEIGHT = 96;
466 vDecSample->DEFAULT_FRAME_RATE = 30;
467 vDecSample->SF_OUTPUT = true;
468 vDecSample->outputYuvSurface = true;
469 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
470 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName263));
471 vDecSample->WaitForEOS();
472 ASSERT_EQ(0, vDecSample->errCount);
473 ASSERT_EQ(FRAMESIZE90, vDecSample->outFrameCount);
474 }
475
476 /**
477 * @tc.number : VIDEO_H263SWDEC_FUNCTION_0190
478 * @tc.name : decode H263 surface,profile0_level30
479 * @tc.desc : function test
480 */
481 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_H263SWDEC_FUNCTION_0190, TestSize.Level3)
482 {
483 auto vDecSample = make_shared<VDecAPI11Sample>();
484 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
485 vDecSample->DEFAULT_WIDTH = 352;
486 vDecSample->DEFAULT_HEIGHT = 288;
487 vDecSample->DEFAULT_FRAME_RATE = 30;
488 vDecSample->SF_OUTPUT = true;
489 vDecSample->outputYuvSurface = true;
490 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
491 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName263));
492 vDecSample->WaitForEOS();
493 ASSERT_EQ(0, vDecSample->errCount);
494 ASSERT_EQ(FRAMESIZE90, vDecSample->outFrameCount);
495 }
496
497 /**
498 * @tc.number : VIDEO_DECODE_H263_RESOLUTION_0010
499 * @tc.name : h263变分辨率,buffer, nv12
500 * @tc.desc : function test
501 */
502 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_DECODE_H263_RESOLUTION_0010, TestSize.Level3)
503 {
504 if (g_codecName263.find("H263") != string::npos) {
505 auto vDecSample = make_shared<VDecAPI11Sample>();
506 vDecSample->INP_DIR = "/data/test/media/profile0_0_0.h263";
507 vDecSample->DEFAULT_WIDTH = 1280;
508 vDecSample->DEFAULT_HEIGHT = 720;
509 vDecSample->DEFAULT_FRAME_RATE = 30;
510 vDecSample->SF_OUTPUT = false;
511 vDecSample->outputYuvFlag = true;
512 vDecSample->isH263Change = true;
513 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV12;
514 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName263));
515 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
516 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
517 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
518 vDecSample->WaitForEOS();
519 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
520 ASSERT_EQ(FRAMESIZE360, vDecSample->outFrameCount);
521 }
522 }
523
524 /**
525 * @tc.number : VIDEO_DECODE_H263_RESOLUTION_0020
526 * @tc.name : h263变分辨率,buffer, nv21
527 * @tc.desc : function test
528 */
529 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_DECODE_H263_RESOLUTION_0020, TestSize.Level3)
530 {
531 if (g_codecName263.find("H263") != string::npos) {
532 auto vDecSample = make_shared<VDecAPI11Sample>();
533 vDecSample->INP_DIR = "/data/test/media/profile2_2_2.h263";
534 vDecSample->DEFAULT_WIDTH = 20;
535 vDecSample->DEFAULT_HEIGHT = 20;
536 vDecSample->DEFAULT_FRAME_RATE = 30;
537 vDecSample->SF_OUTPUT = false;
538 vDecSample->outputYuvFlag = true;
539 vDecSample->isH263Change = true;
540 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
541 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName263));
542 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
543 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
544 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
545 vDecSample->WaitForEOS();
546 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
547 ASSERT_EQ(FRAMESIZE540, vDecSample->outFrameCount);
548 }
549 }
550
551 /**
552 * @tc.number : VIDEO_DECODE_H263_RESOLUTION_0030
553 * @tc.name : h263变分辨率,buffer, nv12
554 * @tc.desc : function test
555 */
556 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_DECODE_H263_RESOLUTION_0030, TestSize.Level3)
557 {
558 if (g_codecName263.find("H263") != string::npos) {
559 auto vDecSample = make_shared<VDecAPI11Sample>();
560 vDecSample->INP_DIR = "/data/test/media/profile0_0_2.h263";
561 vDecSample->DEFAULT_WIDTH = 1280;
562 vDecSample->DEFAULT_HEIGHT = 720;
563 vDecSample->DEFAULT_FRAME_RATE = 30;
564 vDecSample->SF_OUTPUT = false;
565 vDecSample->outputYuvFlag = true;
566 vDecSample->isH263Change = true;
567 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV12;
568 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName263));
569 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
570 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
571 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
572 vDecSample->WaitForEOS();
573 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
574 ASSERT_EQ(FRAMESIZE360, vDecSample->outFrameCount);
575 }
576 }
577
578 /**
579 * @tc.number : VIDEO_DECODE_H263_RESOLUTION_0040
580 * @tc.name : h263变分辨率,surface, nv21
581 * @tc.desc : function test
582 */
583 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_DECODE_H263_RESOLUTION_0040, TestSize.Level3)
584 {
585 if (g_codecName263.find("H263") != string::npos) {
586 auto vDecSample = make_shared<VDecAPI11Sample>();
587 vDecSample->INP_DIR = "/data/test/media/profile2_2_2.h263";
588 vDecSample->DEFAULT_WIDTH = 1280;
589 vDecSample->DEFAULT_HEIGHT = 720;
590 vDecSample->DEFAULT_FRAME_RATE = 30;
591 vDecSample->SF_OUTPUT = true;
592 vDecSample->isH263Change = true;
593 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
594 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName263));
595 vDecSample->WaitForEOS();
596 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
597 ASSERT_EQ(FRAMESIZE540, vDecSample->outFrameCount);
598 }
599 }
600
601 /**
602 * @tc.number : VIDEO_DECODE_H263_RESOLUTION_0050
603 * @tc.name : h263变分辨率,surface, nv21
604 * @tc.desc : function test
605 */
606 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_DECODE_H263_RESOLUTION_0050, TestSize.Level3)
607 {
608 if (g_codecName263.find("H263") != string::npos) {
609 auto vDecSample = make_shared<VDecAPI11Sample>();
610 vDecSample->INP_DIR = "/data/test/media/profile0_0_2.h263";
611 vDecSample->DEFAULT_WIDTH = 1280;
612 vDecSample->DEFAULT_HEIGHT = 720;
613 vDecSample->DEFAULT_FRAME_RATE = 30;
614 vDecSample->SF_OUTPUT = true;
615 vDecSample->isH263Change = true;
616 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
617 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName263));
618 vDecSample->WaitForEOS();
619 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
620 ASSERT_EQ(FRAMESIZE360, vDecSample->outFrameCount);
621 }
622 }
623
624 /**
625 * @tc.number : VIDEO_DECODE_H263_RESOLUTION_0060
626 * @tc.name : h263变分辨率,surface, nv21
627 * @tc.desc : function test
628 */
629 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_DECODE_H263_RESOLUTION_0060, TestSize.Level3)
630 {
631 if (g_codecName263.find("H263") != string::npos) {
632 auto vDecSample = make_shared<VDecAPI11Sample>();
633 vDecSample->INP_DIR = "/data/test/media/profile0_0_0.h263";
634 vDecSample->DEFAULT_WIDTH = 1280;
635 vDecSample->DEFAULT_HEIGHT = 720;
636 vDecSample->DEFAULT_FRAME_RATE = 30;
637 vDecSample->SF_OUTPUT = true;
638 vDecSample->isH263Change = true;
639 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
640 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName263));
641 vDecSample->WaitForEOS();
642 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
643 ASSERT_EQ(FRAMESIZE360, vDecSample->outFrameCount);
644 }
645 }
646 /**
647 * @tc.number : API11_SURF_CHANGE_FUNC_001
648 * @tc.name : surf model change in normal state
649 * @tc.desc : function test
650 */
651 HWTEST_F(H263SwdecFuncNdkTest, API11_SURF_CHANGE_FUNC_001, TestSize.Level2)
652 {
653 if (!access("/system/lib64/media/", 0)) {
654 auto vDecSample = make_shared<VDecAPI11Sample>();
655 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
656 vDecSample->DEFAULT_WIDTH = 352;
657 vDecSample->DEFAULT_HEIGHT = 288;
658 vDecSample->DEFAULT_FRAME_RATE = 30;
659 vDecSample->SURFACE_OUTPUT = true;
660 vDecSample->autoSwitchSurface = true;
661 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
662 vDecSample->sleepOnFPS = true;
663 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName263));
664 vDecSample->WaitForEOS();
665 ASSERT_EQ(AV_ERR_OK, vDecSample->Reset());
666 ASSERT_EQ(AV_ERR_INVALID_STATE, vDecSample->SwitchSurface());
667 ASSERT_EQ(AV_ERR_OK, vDecSample->Release());
668 }
669 }
670
671 /**
672 * @tc.number : API11_SURF_CHANGE_FUNC_002
673 * @tc.name : surf model change in flushed state
674 * @tc.desc : function test
675 */
676 HWTEST_F(H263SwdecFuncNdkTest, API11_SURF_CHANGE_FUNC_002, TestSize.Level2)
677 {
678 if (!access("/system/lib64/media/", 0)) {
679 auto vDecSample = make_shared<VDecAPI11Sample>();
680 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
681 vDecSample->DEFAULT_WIDTH = 352;
682 vDecSample->DEFAULT_HEIGHT = 288;
683 vDecSample->DEFAULT_FRAME_RATE = 30;
684 vDecSample->SURFACE_OUTPUT = true;
685 vDecSample->autoSwitchSurface = true;
686 vDecSample->sleepOnFPS = true;
687 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName263));
688 ASSERT_EQ(AV_ERR_OK, vDecSample->Flush());
689 ASSERT_EQ(AV_ERR_OK, vDecSample->SwitchSurface());
690 ASSERT_EQ(AV_ERR_OK, vDecSample->Stop());
691 }
692 }
693
694 /**
695 * @tc.number : API11_SURF_CHANGE_FUNC_003
696 * @tc.name : surf model change in runing state
697 * @tc.desc : function test
698 */
699 HWTEST_F(H263SwdecFuncNdkTest, API11_SURF_CHANGE_FUNC_003, TestSize.Level2)
700 {
701 if (!access("/system/lib64/media/", 0)) {
702 auto vDecSample = make_shared<VDecAPI11Sample>();
703 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
704 vDecSample->DEFAULT_WIDTH = 352;
705 vDecSample->DEFAULT_HEIGHT = 288;
706 vDecSample->DEFAULT_FRAME_RATE = 30;
707 vDecSample->SURFACE_OUTPUT = false;
708 vDecSample->autoSwitchSurface = false;
709 vDecSample->CreateSurface();
710 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName263));
711 ASSERT_EQ(AV_ERR_OPERATE_NOT_PERMIT, vDecSample->SwitchSurface());
712 vDecSample->WaitForEOS();
713 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
714 }
715 }
716
717 /**
718 * @tc.number : API11_SURF_CHANGE_FUNC_004
719 * @tc.name : repeat call setSurface fastly
720 * @tc.desc : function test
721 */
722 HWTEST_F(H263SwdecFuncNdkTest, API11_SURF_CHANGE_FUNC_004, TestSize.Level2)
723 {
724 if (!access("/system/lib64/media/", 0)) {
725 auto vDecSample = make_shared<VDecAPI11Sample>();
726 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
727 vDecSample->DEFAULT_WIDTH = 352;
728 vDecSample->DEFAULT_HEIGHT = 288;
729 vDecSample->DEFAULT_FRAME_RATE = 30;
730 vDecSample->SURFACE_OUTPUT = true;
731 vDecSample->autoSwitchSurface = true;
732 vDecSample->sleepOnFPS = true;
733 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName263));
734 ASSERT_EQ(AV_ERR_OK, vDecSample->SwitchSurface());
735 vDecSample->WaitForEOS();
736 }
737 }
738
739 /**
740 * @tc.number : API11_SURF_CHANGE_FUNC_005
741 * @tc.name : surf model change in flush to runnig state
742 * @tc.desc : function test
743 */
744 HWTEST_F(H263SwdecFuncNdkTest, API11_SURF_CHANGE_FUNC_005, TestSize.Level2)
745 {
746 if (!access("/system/lib64/media/", 0)) {
747 auto vDecSample = make_shared<VDecAPI11Sample>();
748 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
749 vDecSample->DEFAULT_WIDTH = 352;
750 vDecSample->DEFAULT_HEIGHT = 288;
751 vDecSample->DEFAULT_FRAME_RATE = 30;
752 vDecSample->SURFACE_OUTPUT = true;
753 vDecSample->autoSwitchSurface = true;
754 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
755 vDecSample->sleepOnFPS = true;
756 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName263));
757 ASSERT_EQ(AV_ERR_OK, vDecSample->Flush());
758 ASSERT_EQ(AV_ERR_OK, vDecSample->Start());
759 ASSERT_EQ(AV_ERR_OK, vDecSample->SwitchSurface());
760 }
761 }
762
763 /**
764 * @tc.number : API11_SURF_CHANGE_FUNC_006
765 * @tc.name : surf model change in decoder finish to End-of-Stream state
766 * @tc.desc : function test
767 */
768 HWTEST_F(H263SwdecFuncNdkTest, API11_SURF_CHANGE_FUNC_006, TestSize.Level2)
769 {
770 if (!access("/system/lib64/media/", 0)) {
771 auto vDecSample = make_shared<VDecAPI11Sample>();
772 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
773 vDecSample->DEFAULT_WIDTH = 352;
774 vDecSample->DEFAULT_HEIGHT = 288;
775 vDecSample->DEFAULT_FRAME_RATE = 30;
776 vDecSample->SURFACE_OUTPUT = true;
777 vDecSample->autoSwitchSurface = true;
778 vDecSample->AFTER_EOS_DESTORY_CODEC = false;
779 vDecSample->sleepOnFPS = true;
780 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName263));
781 vDecSample->WaitForEOS();
782 ASSERT_EQ(AV_ERR_OK, vDecSample->SwitchSurface());
783 }
784 }
785
786 /**
787 * @tc.number : API11_SURF_CHANGE_FUNC_007
788 * @tc.name : buffer model change in decoder finish to End-of-Stream state
789 * @tc.desc : function test
790 */
791 HWTEST_F(H263SwdecFuncNdkTest, API11_SURF_CHANGE_FUNC_007, TestSize.Level2)
792 {
793 if (!access("/system/lib64/media/", 0)) {
794 auto vDecSample = make_shared<VDecAPI11Sample>();
795 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
796 vDecSample->DEFAULT_WIDTH = 352;
797 vDecSample->DEFAULT_HEIGHT = 288;
798 vDecSample->DEFAULT_FRAME_RATE = 30;
799 vDecSample->SURFACE_OUTPUT = false;
800 vDecSample->autoSwitchSurface = false;
801 vDecSample->CreateSurface();
802 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName263));
803 vDecSample->WaitForEOS();
804 ASSERT_EQ(AV_ERR_OPERATE_NOT_PERMIT, vDecSample->SwitchSurface());
805 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
806 }
807 }
808
809 /**
810 * @tc.number : API11_SURF_CHANGE_FUNC_008
811 * @tc.name : buffer model change in runing to flushed state
812 * @tc.desc : function test
813 */
814 HWTEST_F(H263SwdecFuncNdkTest, API11_SURF_CHANGE_FUNC_008, TestSize.Level2)
815 {
816 if (!access("/system/lib64/media/", 0)) {
817 auto vDecSample = make_shared<VDecAPI11Sample>();
818 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
819 vDecSample->DEFAULT_WIDTH = 352;
820 vDecSample->DEFAULT_HEIGHT = 288;
821 vDecSample->DEFAULT_FRAME_RATE = 30;
822 vDecSample->SURFACE_OUTPUT = false;
823 vDecSample->autoSwitchSurface = false;
824 vDecSample->CreateSurface();
825 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName263));
826 ASSERT_EQ(AV_ERR_OK, vDecSample->Flush());
827 ASSERT_EQ(AV_ERR_OPERATE_NOT_PERMIT, vDecSample->SwitchSurface());
828 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
829 }
830 }
831
832 /**
833 * @tc.number : API11_SURF_CHANGE_FUNC_009
834 * @tc.name : buffer model change in flushed to runing state
835 * @tc.desc : function test
836 */
837 HWTEST_F(H263SwdecFuncNdkTest, API11_SURF_CHANGE_FUNC_009, TestSize.Level2)
838 {
839 if (!access("/system/lib64/media/", 0)) {
840 auto vDecSample = make_shared<VDecAPI11Sample>();
841 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
842 vDecSample->DEFAULT_WIDTH = 352;
843 vDecSample->DEFAULT_HEIGHT = 288;
844 vDecSample->DEFAULT_FRAME_RATE = 30;
845 vDecSample->SURFACE_OUTPUT = false;
846 vDecSample->autoSwitchSurface = false;
847 vDecSample->CreateSurface();
848 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName263));
849 ASSERT_EQ(AV_ERR_OK, vDecSample->Flush());
850 ASSERT_EQ(AV_ERR_OK, vDecSample->Start());
851 ASSERT_EQ(AV_ERR_OPERATE_NOT_PERMIT, vDecSample->SwitchSurface());
852 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
853 }
854 }
855
856 /**
857 * @tc.number : API11_SURF_CHANGE_FUNC_010
858 * @tc.name : buffer model change in normal state
859 * @tc.desc : function test
860 */
861 HWTEST_F(H263SwdecFuncNdkTest, API11_SURF_CHANGE_FUNC_010, TestSize.Level2)
862 {
863 if (!access("/system/lib64/media/", 0)) {
864 auto vDecSample = make_shared<VDecAPI11Sample>();
865 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
866 vDecSample->DEFAULT_WIDTH = 352;
867 vDecSample->DEFAULT_HEIGHT = 288;
868 vDecSample->DEFAULT_FRAME_RATE = 30;
869 vDecSample->SURFACE_OUTPUT = false;
870 vDecSample->autoSwitchSurface = false;
871 vDecSample->CreateSurface();
872 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec(g_codecName263));
873 vDecSample->WaitForEOS();
874 ASSERT_EQ(AV_ERR_OK, vDecSample->Reset());
875 ASSERT_EQ(AV_ERR_INVALID_STATE, vDecSample->SwitchSurface());
876 ASSERT_EQ(AV_ERR_OK, vDecSample->Release());
877 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
878 }
879 }
880
881 /**
882 * @tc.number : API11_SURF_CHANGE_FUNC_011
883 * @tc.name : surf model change in config state
884 * @tc.desc : function test
885 */
886 HWTEST_F(H263SwdecFuncNdkTest, API11_SURF_CHANGE_FUNC_011, TestSize.Level1)
887 {
888 if (!access("/system/lib64/media/", 0)) {
889 auto vDecSample = make_shared<VDecAPI11Sample>();
890 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
891 vDecSample->DEFAULT_WIDTH = 352;
892 vDecSample->DEFAULT_HEIGHT = 288;
893 vDecSample->DEFAULT_FRAME_RATE = 30;
894 vDecSample->SURFACE_OUTPUT = false;
895 vDecSample->autoSwitchSurface = false;
896 vDecSample->CreateSurface();
897 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName263));
898 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
899 ASSERT_EQ(AV_ERR_OK, vDecSample->SwitchSurface());
900 vDecSample->WaitForEOS();
901 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
902 }
903 }
904
905 /**
906 * @tc.number : API11_SURF_CHANGE_FUNC_012
907 * @tc.name : surf model change in config state
908 * @tc.desc : function test
909 */
910 HWTEST_F(H263SwdecFuncNdkTest, API11_SURF_CHANGE_FUNC_012, TestSize.Level1)
911 {
912 if (!access("/system/lib64/media/", 0)) {
913 auto vDecSample = make_shared<VDecAPI11Sample>();
914 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
915 vDecSample->DEFAULT_WIDTH = 352;
916 vDecSample->DEFAULT_HEIGHT = 288;
917 vDecSample->DEFAULT_FRAME_RATE = 30;
918 vDecSample->SURFACE_OUTPUT = false;
919 vDecSample->autoSwitchSurface = false;
920 vDecSample->CreateSurface();
921 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName263));;
922 ASSERT_EQ(AV_ERR_INVALID_STATE, vDecSample->SwitchSurface());
923 vDecSample->WaitForEOS();
924 ASSERT_EQ(AV_ERR_OK, vDecSample->errCount);
925 }
926 }
927
928 /**
929 * @tc.number : API11_SURF_CHANGE_FUNC_013
930 * @tc.name : Two object repeat call setSurface fastly
931 * @tc.desc : function test
932 */
933 HWTEST_F(H263SwdecFuncNdkTest, API11_SURF_CHANGE_FUNC_013, TestSize.Level2)
934 {
935 if (!access("/system/lib64/media/", 0)) {
936 auto vDecSample = make_shared<VDecAPI11Sample>();
937 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
938 vDecSample->DEFAULT_WIDTH = 352;
939 vDecSample->DEFAULT_HEIGHT = 288;
940 vDecSample->DEFAULT_FRAME_RATE = 30;
941 vDecSample->SURFACE_OUTPUT = true;
942 vDecSample->autoSwitchSurface = true;
943 vDecSample->sleepOnFPS = true;
944 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName263));
945 ASSERT_EQ(AV_ERR_OK, vDecSample->SwitchSurface());
946 vDecSample->WaitForEOS();
947
948 auto vDecSample_1 = make_shared<VDecAPI11Sample>();
949 vDecSample_1->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
950 vDecSample_1->DEFAULT_WIDTH = 352;
951 vDecSample_1->DEFAULT_HEIGHT = 288;
952 vDecSample_1->DEFAULT_FRAME_RATE = 30;
953 vDecSample_1->SURFACE_OUTPUT = true;
954 vDecSample_1->autoSwitchSurface = true;
955 vDecSample_1->sleepOnFPS = true;
956 ASSERT_EQ(AV_ERR_OK, vDecSample_1->RunVideoDec_Surface(g_codecName263));
957 ASSERT_EQ(AV_ERR_OK, vDecSample_1->SwitchSurface());
958 vDecSample_1->WaitForEOS();
959 }
960 }
961
962 /**
963 * @tc.number : API11_SURF_CHANGE_FUNC_014
964 * @tc.name : repeat call setSurface fastly 2 time
965 * @tc.desc : function test
966 */
967 HWTEST_F(H263SwdecFuncNdkTest, API11_SURF_CHANGE_FUNC_014, TestSize.Level2)
968 {
969 if (!access("/system/lib64/media/", 0)) {
970 for (int i = 0; i < 2; i++) {
971 auto vDecSample = make_shared<VDecAPI11Sample>();
972 vDecSample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
973 vDecSample->DEFAULT_WIDTH = 352;
974 vDecSample->DEFAULT_HEIGHT = 288;
975 vDecSample->DEFAULT_FRAME_RATE = 30;
976 vDecSample->SURFACE_OUTPUT = true;
977 vDecSample->autoSwitchSurface = true;
978 vDecSample->sleepOnFPS = true;
979 ASSERT_EQ(AV_ERR_OK, vDecSample->RunVideoDec_Surface(g_codecName263));
980 ASSERT_EQ(AV_ERR_OK, vDecSample->RepeatCallSetSurface());
981 vDecSample->WaitForEOS();
982 }
983 }
984 }
985
986 /**
987 * @tc.number : VIDEO_DECODE_SYNC_SW263_FUNC_0010
988 * @tc.name : 263同步软解输出nv12
989 * @tc.desc : function test
990 */
991 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_DECODE_SYNC_SW263_FUNC_0010, TestSize.Level1)
992 {
993 if (cap_263 != nullptr) {
994 auto vDecSample = make_shared<VDecAPI11Sample>();
995 vDecSample->INP_DIR = "/data/test/media/profile0_level10_I_128x96.h263";
996 vDecSample->DEFAULT_WIDTH = 128;
997 vDecSample->DEFAULT_HEIGHT = 96;
998 vDecSample->DEFAULT_FRAME_RATE = 30;
999 vDecSample->enbleSyncMode = 1;
1000 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV12;
1001 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName263));
1002 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1003 ASSERT_EQ(AV_ERR_OK, vDecSample->StartSyncVideoDecoder());
1004 vDecSample->WaitForEOS();
1005 ASSERT_EQ(0, vDecSample->errCount);
1006 ASSERT_EQ(FRAMESIZE90, vDecSample->outFrameCount);
1007 }
1008 }
1009
1010 /**
1011 * @tc.number : VIDEO_DECODE_SYNC_SW263_FUNC_0020
1012 * @tc.name : 263同步软解输出nv21
1013 * @tc.desc : function test
1014 */
1015 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_DECODE_SYNC_SW263_FUNC_0020, TestSize.Level0)
1016 {
1017 if (cap_263 != nullptr) {
1018 auto vDecSample = make_shared<VDecAPI11Sample>();
1019 vDecSample->INP_DIR = "/data/test/media/profile0_level10_I_128x96.h263";
1020 vDecSample->DEFAULT_WIDTH = 128;
1021 vDecSample->DEFAULT_HEIGHT = 96;
1022 vDecSample->DEFAULT_FRAME_RATE = 30;
1023 vDecSample->enbleSyncMode = 1;
1024 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_NV21;
1025 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName263));
1026 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1027 ASSERT_EQ(AV_ERR_OK, vDecSample->StartSyncVideoDecoder());
1028 vDecSample->WaitForEOS();
1029 ASSERT_EQ(0, vDecSample->errCount);
1030 ASSERT_EQ(FRAMESIZE90, vDecSample->outFrameCount);
1031 }
1032 }
1033
1034 /**
1035 * @tc.number : VIDEO_DECODE_SYNC_SW263_FUNC_0030
1036 * @tc.name : 263同步软解输出surface
1037 * @tc.desc : function test
1038 */
1039 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_DECODE_SYNC_SW263_FUNC_0030, TestSize.Level1)
1040 {
1041 if (cap_263 != nullptr) {
1042 auto vDecSample = make_shared<VDecAPI11Sample>();
1043 vDecSample->INP_DIR = "/data/test/media/profile0_level10_I_128x96.h263";
1044 vDecSample->DEFAULT_WIDTH = 128;
1045 vDecSample->DEFAULT_HEIGHT = 96;
1046 vDecSample->DEFAULT_FRAME_RATE = 30;
1047 vDecSample->SF_OUTPUT = true;
1048 vDecSample->enbleSyncMode = 1;
1049 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName263));
1050 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1051 ASSERT_EQ(AV_ERR_OK, vDecSample->DecodeSetSurface());
1052 ASSERT_EQ(AV_ERR_OK, vDecSample->StartSyncVideoDecoder());
1053 vDecSample->WaitForEOS();
1054 ASSERT_EQ(0, vDecSample->errCount);
1055 ASSERT_EQ(FRAMESIZE90, vDecSample->outFrameCount);
1056 }
1057 }
1058
1059 /**
1060 * @tc.number : VIDEO_DECODE_SYNC_SW263_FUNC_0040
1061 * @tc.name : 263同步软解输出rgba
1062 * @tc.desc : function test
1063 */
1064 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_DECODE_SYNC_SW263_FUNC_0040, TestSize.Level1)
1065 {
1066 if (cap_263 != nullptr) {
1067 auto vDecSample = make_shared<VDecAPI11Sample>();
1068 vDecSample->INP_DIR = "/data/test/media/profile0_level10_I_128x96.h263";
1069 vDecSample->DEFAULT_WIDTH = 128;
1070 vDecSample->DEFAULT_HEIGHT = 96;
1071 vDecSample->DEFAULT_FRAME_RATE = 30;
1072 vDecSample->enbleSyncMode = 1;
1073 vDecSample->defualtPixelFormat = AV_PIXEL_FORMAT_RGBA;
1074 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder(g_codecName263));
1075 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1076 ASSERT_EQ(AV_ERR_OK, vDecSample->StartSyncVideoDecoder());
1077 vDecSample->WaitForEOS();
1078 ASSERT_EQ(0, vDecSample->errCount);
1079 ASSERT_EQ(FRAMESIZE90, vDecSample->outFrameCount);
1080 }
1081 }
1082
1083 /**
1084 * @tc.number : VIDEO_DECODE_SW263_BLANK_FRAME_0010
1085 * @tc.name : config OH_MD_KEY_VIDEO_DECODER_BLANK_FRAME_ON_SHUTDOWN, decoder h263
1086 * @tc.desc : function test
1087 */
1088 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_DECODE_SW263_BLANK_FRAME_0010, TestSize.Level2)
1089 {
1090 if (cap_263 != nullptr) {
1091 auto vDecSample = make_shared<VDecAPI11Sample>();
1092 vDecSample->INP_DIR = "/data/test/media/20x20.h263";
1093 vDecSample->DEFAULT_WIDTH = 20;
1094 vDecSample->DEFAULT_HEIGHT = 20;
1095 vDecSample->DEFAULT_FRAME_RATE = 30;
1096 vDecSample->enbleBlankFrame = 1;
1097 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
1098 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1099 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1100 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1101 vDecSample->WaitForEOS();
1102 ASSERT_EQ(0, vDecSample->errCount);
1103 ASSERT_EQ(FRAMESIZE75, vDecSample->outFrameCount);
1104 }
1105 }
1106
1107 /**
1108 * @tc.number : VIDEO_DECODE_SW263_BLANK_FRAME_0020
1109 * @tc.name : config OH_MD_KEY_VIDEO_DECODER_BLANK_FRAME_ON_SHUTDOWN, decoder h263, surface
1110 * @tc.desc : function test
1111 */
1112 HWTEST_F(H263SwdecFuncNdkTest, VIDEO_DECODE_SW263_BLANK_FRAME_0020, TestSize.Level2)
1113 {
1114 if (cap_263 != nullptr) {
1115 auto vDecSample = make_shared<VDecAPI11Sample>();
1116 vDecSample->INP_DIR = "/data/test/media/20x20.h263";
1117 vDecSample->DEFAULT_WIDTH = 20;
1118 vDecSample->DEFAULT_HEIGHT = 20;
1119 vDecSample->DEFAULT_FRAME_RATE = 30;
1120 vDecSample->SURFACE_OUTPUT = true;
1121 vDecSample->enbleBlankFrame = 1;
1122 ASSERT_EQ(AV_ERR_OK, vDecSample->CreateVideoDecoder("OH.Media.Codec.Decoder.Video.H263"));
1123 ASSERT_EQ(AV_ERR_OK, vDecSample->ConfigureVideoDecoder());
1124 ASSERT_EQ(AV_ERR_OK, vDecSample->SetVideoDecoderCallback());
1125 ASSERT_EQ(AV_ERR_OK, vDecSample->DecodeSetSurface());
1126 ASSERT_EQ(AV_ERR_OK, vDecSample->StartVideoDecoder());
1127 vDecSample->WaitForEOS();
1128 ASSERT_EQ(0, vDecSample->errCount);
1129 ASSERT_EQ(FRAMESIZE75, vDecSample->outFrameCount);
1130 }
1131 }
1132 } // namespace