• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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