• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 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 
16 #include <iostream>
17 #include <cstdio>
18 #include <atomic>
19 #include <fstream>
20 #include <thread>
21 #include <mutex>
22 #include <queue>
23 #include <string>
24 
25 #include "gtest/gtest.h"
26 #include "hdrcodec_sample.h"
27 #include "native_averrors.h"
28 #include "native_avcodec_base.h"
29 #include "avcodec_codec_name.h"
30 #include "native_avcapability.h"
31 #include "native_avcodec_videodecoder.h"
32 
33 using namespace std;
34 using namespace OHOS;
35 using namespace OHOS::Media;
36 using namespace testing::ext;
37 namespace OHOS {
38 namespace Media {
39 class HDRFuncNdkTest : public testing::Test {
40 public:
41     // SetUpTestCase: Called before all test cases
42     static void SetUpTestCase(void);
43     // TearDownTestCase: Called after all test case
44     static void TearDownTestCase(void);
45     // SetUp: Called before each test cases
46     void SetUp(void);
47     // TearDown: Called after each test cases
48     void TearDown(void);
49 };
50 namespace {
51     static OH_AVCapability *cap_263 = nullptr;
52     static string g_codecName263 = "";
53     static OH_AVCapability *cap_264 = nullptr;
54     static string g_codecName264 = "";
55     static OH_AVCapability *cap_265 = nullptr;
56     static string g_codecName265 = "";
57     static OH_AVCapability *capSw264 = nullptr;
58     static string g_codecNameSw264 = "";
59     static OH_AVCapability *capSw265 = nullptr;
60     static string g_codecNameSw265 = "";
61 
62     static OH_AVCapability *cap_266 = nullptr;
63     static string g_codecName266 = "";
64     static OH_AVCapability *cap_mpeg2 = nullptr;
65     static string g_codecNameMpeg2 = "";
66     static OH_AVCapability *cap_mpeg4 = nullptr;
67     static string g_codecNameMpeg4 = "";
68 
69     static OH_AVCapability *capEnc_264 = nullptr;
70     static string g_codecNameEnc264 = "";
71     static OH_AVCapability *capEnc_265 = nullptr;
72     static string g_codecNameEnc265 = "";
73     constexpr uint32_t FRAMENUM_90 = 90;
74     constexpr uint32_t FRAMENUM_300 = 300;
75     constexpr uint32_t FRAMENUM_3 = 3;
76     constexpr uint32_t FRAMENUM_60 = 60;
77     constexpr uint32_t FRAMENUM_530 = 530;
78     constexpr uint32_t FRAMENUM_30 = 30;
79     constexpr uint32_t FRAMENUM_600 = 600;
80     constexpr uint32_t FRAMENUM_294 = 294;
81     constexpr uint32_t FRAMENUM_242 = 242;
82     constexpr uint32_t FRAMENUM_26 = 26;
83     constexpr uint32_t FRAMENUM_180 = 180;
84     constexpr uint32_t FRAMENUM_80 = 80;
85     constexpr uint32_t FRAMENUM_254 = 254;
86 }
SetUpTestCase()87 void HDRFuncNdkTest::SetUpTestCase()
88 {
89     cap_263 = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_H263, false, SOFTWARE);
90     g_codecName263 = OH_AVCapability_GetName(cap_263);
91     cout << "g_codecName263: " << g_codecName263 << endl;
92 
93     cap_264 = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, HARDWARE);
94     g_codecName264 = OH_AVCapability_GetName(cap_264);
95     cout << "g_codecName264: " << g_codecName264 << endl;
96 
97     capSw264 = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, SOFTWARE);
98     g_codecNameSw264 = OH_AVCapability_GetName(capSw264);
99     cout << "g_codecNameSw264: " << g_codecNameSw264 << endl;
100 
101     cap_265 = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, HARDWARE);
102     g_codecName265 = OH_AVCapability_GetName(cap_265);
103     cout << "g_codecName265: " << g_codecName265 << endl;
104 
105     capSw265 = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, false, SOFTWARE);
106     g_codecNameSw265 = OH_AVCapability_GetName(capSw265);
107     cout << "g_codecNameSw265: " << g_codecNameSw265 << endl;
108 
109     cap_266 = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_VVC, false, HARDWARE);
110     g_codecName266 = OH_AVCapability_GetName(cap_266);
111     cout << "g_codecName266: " << g_codecName266 << endl;
112 
113     cap_mpeg2 = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_MPEG2, false, SOFTWARE);
114     g_codecNameMpeg2 = OH_AVCapability_GetName(cap_mpeg2);
115     cout << "g_codecNameMpeg2: " << g_codecNameMpeg2 << endl;
116 
117     cap_mpeg4 = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_MPEG4_PART2, false, SOFTWARE);
118     g_codecNameMpeg4 = OH_AVCapability_GetName(cap_mpeg4);
119     cout << "g_codecNameMpeg4: " << g_codecNameMpeg4 << endl;
120 
121     capEnc_264 = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, true, HARDWARE);
122     g_codecNameEnc264 = OH_AVCapability_GetName(capEnc_264);
123     cout << "g_codecNameEnc264: " << g_codecNameEnc264 << endl;
124 
125     capEnc_265 = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_HEVC, true, HARDWARE);
126     g_codecNameEnc265 = OH_AVCapability_GetName(capEnc_265);
127     cout << "g_codecNameEnc265: " << g_codecNameEnc265 << endl;
128 }
TearDownTestCase()129 void HDRFuncNdkTest::TearDownTestCase() {}
SetUp()130 void HDRFuncNdkTest::SetUp()
131 {
132 }
TearDown()133 void HDRFuncNdkTest::TearDown()
134 {
135 }
136 } // namespace Media
137 } // namespace OHOS
138 namespace {
139 /**
140  * @tc.number    : HDR_FUNC_0030
141  * @tc.name      : decode PQ HDRVivid by display mode, and then set HEVC_PROFILE_MAIN10 to encode
142  * @tc.desc      : function test
143  */
144 HWTEST_F(HDRFuncNdkTest, HDR_FUNC_0010, TestSize.Level1)
145 {
146     if (!access("/system/lib64/media/", 0)) {
147         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
148         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
149         sample->INP_DIR = "/data/test/media/pq_vivid.h265";
150         ASSERT_EQ(AV_ERR_OK, sample->CreateCodec());
151         ASSERT_EQ(AV_ERR_OK, sample->Configure());
152         ASSERT_EQ(AV_ERR_OK, sample->Start());
153         sample->WaitForEos();
154         ASSERT_EQ(0, sample->errorCount);
155     }
156 }
157 /**
158  * @tc.number    : HDR_FUNC_0020
159  * @tc.name      : decode HLG HDRVivid by display mode, and then set HEVC_PROFILE_MAIN10 to encode
160  * @tc.desc      : function test
161  */
162 HWTEST_F(HDRFuncNdkTest, HDR_FUNC_0020, TestSize.Level1)
163 {
164     if (!access("/system/lib64/media/", 0)) {
165         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
166         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
167         sample->INP_DIR = "/data/test/media/hlg_vivid_4k.h265";
168         ASSERT_EQ(AV_ERR_OK, sample->CreateCodec());
169         ASSERT_EQ(AV_ERR_OK, sample->Configure());
170         ASSERT_EQ(AV_ERR_OK, sample->Start());
171         sample->WaitForEos();
172         ASSERT_EQ(0, sample->errorCount);
173     }
174 }
175 
176 /**
177  * @tc.number    : HDR_FUNC_0030
178  * @tc.name      : decode PQ HDRVivid by display mode, and then set HEVC_PROFILE_MAIN to encode
179  * @tc.desc      : function test
180  */
181 HWTEST_F(HDRFuncNdkTest, HDR_FUNC_0030, TestSize.Level2)
182 {
183     if (!access("/system/lib64/media/", 0)) {
184         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
185         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
186         sample->INP_DIR = "/data/test/media/pq_vivid.h265";
187         ASSERT_EQ(AV_ERR_OK, sample->CreateCodec());
188         ASSERT_EQ(AV_ERR_OK, sample->Configure());
189         ASSERT_EQ(AV_ERR_OK, sample->Start());
190         sample->WaitForEos();
191         EXPECT_LE(0, sample->errorCount);
192     }
193 }
194 
195 /**
196  * @tc.number    : HDR_FUNC_0040
197  * @tc.name      : decode HLG HDRVivid by display mode, and then set HEVC_PROFILE_MAIN to encode
198  * @tc.desc      : function test
199  */
200 HWTEST_F(HDRFuncNdkTest, HDR_FUNC_0040, TestSize.Level2)
201 {
202     if (!access("/system/lib64/media/", 0)) {
203         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
204         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
205         sample->INP_DIR = "/data/test/media/hlg_vivid_4k.h265";
206         ASSERT_EQ(AV_ERR_OK, sample->CreateCodec());
207         ASSERT_EQ(AV_ERR_OK, sample->Configure());
208         ASSERT_EQ(AV_ERR_OK, sample->Start());
209         sample->WaitForEos();
210         EXPECT_LE(0, sample->errorCount);
211     }
212 }
213 
214 /**
215  * @tc.number    : HDR_FUNC_0050
216  * @tc.name      : decode and encode HDRVivid repeat start-stop 5 times before EOS
217  * @tc.desc      : function test
218  */
219 HWTEST_F(HDRFuncNdkTest, HDR_FUNC_0050, TestSize.Level2)
220 {
221     if (!access("/system/lib64/media/", 0)) {
222         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
223         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
224         sample->INP_DIR = "/data/test/media/hlg_vivid_4k.h265";
225         sample->REPEAT_START_STOP_BEFORE_EOS = 5;
226         ASSERT_EQ(AV_ERR_OK, sample->CreateCodec());
227         ASSERT_EQ(AV_ERR_OK, sample->Configure());
228         ASSERT_EQ(AV_ERR_OK, sample->Start());
229         sample->WaitForEos();
230         ASSERT_EQ(0, sample->errorCount);
231     }
232 }
233 
234 /**
235  * @tc.number    : HDR_FUNC_0060
236  * @tc.name      : decode and encode HDRVivid repeat start-flush-stop 5 times before EOS
237  * @tc.desc      : function test
238  */
239 HWTEST_F(HDRFuncNdkTest, HDR_FUNC_0060, TestSize.Level2)
240 {
241     if (!access("/system/lib64/media/", 0)) {
242         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
243         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
244         sample->INP_DIR = "/data/test/media/hlg_vivid_4k.h265";
245         sample->REPEAT_START_FLUSH_STOP_BEFORE_EOS = 5;
246         ASSERT_EQ(AV_ERR_OK, sample->CreateCodec());
247         ASSERT_EQ(AV_ERR_OK, sample->Configure());
248         ASSERT_EQ(AV_ERR_OK, sample->Start());
249         sample->WaitForEos();
250         ASSERT_EQ(0, sample->errorCount);
251     }
252 }
253 
254 /**
255  * @tc.number    : HDR_FUNC_0070
256  * @tc.name      : decode and encode HDRVivid repeat start-flush-start 5 times before EOS
257  * @tc.desc      : function test
258  */
259 HWTEST_F(HDRFuncNdkTest, HDR_FUNC_0070, TestSize.Level2)
260 {
261     if (!access("/system/lib64/media/", 0)) {
262         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
263         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
264         sample->INP_DIR = "/data/test/media/hlg_vivid_4k.h265";
265         sample->REPEAT_START_FLUSH_BEFORE_EOS = 5;
266         ASSERT_EQ(AV_ERR_OK, sample->CreateCodec());
267         ASSERT_EQ(AV_ERR_OK, sample->Configure());
268         ASSERT_EQ(AV_ERR_OK, sample->Start());
269         sample->WaitForEos();
270         ASSERT_EQ(0, sample->errorCount);
271     }
272 }
273 
274 /**
275  * @tc.number    : HDR_FUNC_0080
276  * @tc.name      : decode and encode different resolution with same codec
277  * @tc.desc      : function test
278  */
279 HWTEST_F(HDRFuncNdkTest, HDR_FUNC_0080, TestSize.Level1)
280 {
281     if (!access("/system/lib64/media/", 0)) {
282         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
283         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
284         sample->INP_DIR = "/data/test/media/hlg_vivid_4k.h265";
285         ASSERT_EQ(AV_ERR_OK, sample->CreateCodec());
286         ASSERT_EQ(AV_ERR_OK, sample->Configure());
287         ASSERT_EQ(AV_ERR_OK, sample->Start());
288         sample->WaitForEos();
289         sample->DEFAULT_WIDTH = 1920;
290         sample->DEFAULT_HEIGHT = 1080;
291         sample->INP_DIR = "/data/test/media/hlg_vivid_1080p.h265";
292         ASSERT_EQ(AV_ERR_OK, sample->ReConfigure());
293         ASSERT_EQ(AV_ERR_OK, sample->Start());
294         sample->WaitForEos();
295         ASSERT_EQ(0, sample->errorCount);
296     }
297 }
298 
299 /**
300  * @tc.number    : DEC_ENC_FUNC_0010
301  * @tc.name      : H263 swdecode and H264 encode
302  * @tc.desc      : function test
303  */
304 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0010, TestSize.Level1)
305 {
306     if (g_codecName263.find("H263") != string::npos) {
307         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
308         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
309         sample->DEFAULT_WIDTH = 352;
310         sample->DEFAULT_HEIGHT = 288;
311         sample->typeDec = 1;
312         sample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
313         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecName263, g_codecNameEnc264));
314         ASSERT_EQ(AV_ERR_OK, sample->Configure());
315         ASSERT_EQ(AV_ERR_OK, sample->Start());
316         sample->WaitForEos();
317         ASSERT_EQ(0, sample->errorCount);
318         ASSERT_EQ(FRAMENUM_90, sample->frameCountDec);
319         ASSERT_EQ(FRAMENUM_90, sample->frameCountEnc);
320         cout << "frameCountDec--" << sample->frameCountDec << endl;
321     }
322 }
323 /**
324  * @tc.number    : DEC_ENC_FUNC_0020
325  * @tc.name      : H264 hwdecode and H264 encode
326  * @tc.desc      : function test
327  */
328 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0020, TestSize.Level1)
329 {
330     if (g_codecName264.find("hisi") != string::npos) {
331         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
332         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
333         sample->DEFAULT_WIDTH = 1104;
334         sample->DEFAULT_HEIGHT = 622;
335         sample->typeDec = 2;
336         sample->INP_DIR = "/data/test/media/1104x622.h264";
337         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecName264, g_codecNameEnc264));
338         ASSERT_EQ(AV_ERR_OK, sample->Configure());
339         ASSERT_EQ(AV_ERR_OK, sample->Start());
340         sample->WaitForEos();
341         ASSERT_EQ(0, sample->errorCount);
342         ASSERT_EQ(FRAMENUM_300, sample->frameCountDec);
343         ASSERT_EQ(FRAMENUM_300, sample->frameCountEnc);
344         cout << "frameCountDec--" << sample->frameCountDec << endl;
345     }
346 }
347 
348 /**
349  * @tc.number    : DEC_ENC_FUNC_0030
350  * @tc.name      : H265 hwdecode and H264 encode
351  * @tc.desc      : function test
352  */
353 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0030, TestSize.Level1)
354 {
355     if (g_codecName265.find("hisi") != string::npos) {
356         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
357         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
358         sample->DEFAULT_WIDTH = 1920;
359         sample->DEFAULT_HEIGHT = 1080;
360         sample->typeDec = 2;
361         sample->INP_DIR = "/data/test/media/1920x1080.h265";
362         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecName265, g_codecNameEnc264));
363         ASSERT_EQ(AV_ERR_OK, sample->Configure());
364         ASSERT_EQ(AV_ERR_OK, sample->Start());
365         sample->WaitForEos();
366         ASSERT_EQ(0, sample->errorCount);
367         ASSERT_EQ(FRAMENUM_300, sample->frameCountDec);
368         ASSERT_EQ(FRAMENUM_300, sample->frameCountEnc);
369         cout << "frameCountDec--" << sample->frameCountDec << endl;
370     }
371 }
372 
373 /**
374  * @tc.number    : DEC_ENC_FUNC_0040
375  * @tc.name      : H266 hwdecode and H264 encode
376  * @tc.desc      : function test
377  */
378 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0040, TestSize.Level1)
379 {
380     if (g_codecName266.find("hisi") != string::npos) {
381         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
382         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
383         sample->DEFAULT_WIDTH = 1280;
384         sample->DEFAULT_HEIGHT = 720;
385         sample->typeDec = 2;
386         sample->INP_DIR = "/data/test/media/1280_720_8.vvc";
387         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecName266, g_codecNameEnc264));
388         ASSERT_EQ(AV_ERR_OK, sample->Configure());
389         ASSERT_EQ(AV_ERR_OK, sample->Start());
390         sample->WaitForEos();
391         ASSERT_EQ(0, sample->errorCount);
392         ASSERT_EQ(FRAMENUM_254, sample->frameCountDec);
393         ASSERT_EQ(FRAMENUM_254, sample->frameCountEnc);
394         cout << "frameCountDec--" << sample->frameCountDec << endl;
395     }
396 }
397 
398 /**
399  * @tc.number    : DEC_ENC_FUNC_0050
400  * @tc.name      : Mpeg2 swdecode and H264 encode
401  * @tc.desc      : function test
402  */
403 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0050, TestSize.Level1)
404 {
405     if (g_codecNameMpeg2.find("MPEG2") != string::npos) {
406         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
407         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
408         sample->DEFAULT_WIDTH = 352;
409         sample->DEFAULT_HEIGHT = 288;
410         sample->typeDec = 3;
411         sample->INP_DIR = "/data/test/media/simple@low_level_352_288_30_rotation_90.m2v";
412         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecNameMpeg2, g_codecNameEnc264));
413         ASSERT_EQ(AV_ERR_OK, sample->Configure());
414         ASSERT_EQ(AV_ERR_OK, sample->Start());
415         sample->WaitForEos();
416         ASSERT_EQ(0, sample->errorCount);
417         ASSERT_EQ(FRAMENUM_3, sample->frameCountDec);
418         ASSERT_EQ(FRAMENUM_3, sample->frameCountEnc);
419         cout << "frameCountDec--" << sample->frameCountDec << endl;
420     }
421 }
422 
423 /**
424  * @tc.number    : DEC_ENC_FUNC_0060
425  * @tc.name      : Mpeg4 swdecode and H264 encode
426  * @tc.desc      : function test
427  */
428 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0060, TestSize.Level1)
429 {
430     if (g_codecNameMpeg4.find("MPEG4") != string::npos) {
431         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
432         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
433         sample->DEFAULT_WIDTH = 1280;
434         sample->DEFAULT_HEIGHT = 720;
435         sample->typeDec = 4;
436         sample->INP_DIR = "/data/test/media/mpeg4_1280x720_IPB.m4v";
437         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecNameMpeg4, g_codecNameEnc264));
438         ASSERT_EQ(AV_ERR_OK, sample->Configure());
439         ASSERT_EQ(AV_ERR_OK, sample->Start());
440         sample->WaitForEos();
441         ASSERT_EQ(0, sample->errorCount);
442         ASSERT_EQ(FRAMENUM_60, sample->frameCountDec);
443         ASSERT_EQ(FRAMENUM_60, sample->frameCountEnc);
444         cout << "frameCountDec--" << sample->frameCountDec << endl;
445     }
446 }
447 /**
448  * @tc.number    : DEC_ENC_FUNC_0070
449  * @tc.name      : H264 swdecode and H264 encode
450  * @tc.desc      : function test
451  */
452 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0070, TestSize.Level1)
453 {
454     if (g_codecNameSw264.find("AVC") != string::npos) {
455         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
456         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
457         sample->DEFAULT_WIDTH = 1104;
458         sample->DEFAULT_HEIGHT = 622;
459         sample->typeDec = 2;
460         sample->INP_DIR = "/data/test/media/1104x622.h264";
461         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecNameSw264, g_codecNameEnc264));
462         ASSERT_EQ(AV_ERR_OK, sample->Configure());
463         ASSERT_EQ(AV_ERR_OK, sample->Start());
464         sample->WaitForEos();
465         ASSERT_EQ(0, sample->errorCount);
466         ASSERT_EQ(FRAMENUM_300, sample->frameCountDec);
467         ASSERT_EQ(FRAMENUM_300, sample->frameCountEnc);
468         cout << "frameCountDec--" << sample->frameCountDec << endl;
469     }
470 }
471 
472 /**
473  * @tc.number    : DEC_ENC_FUNC_0080
474  * @tc.name      : H265 swdecode and H264 encode
475  * @tc.desc      : function test
476  */
477 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0080, TestSize.Level1)
478 {
479     if (g_codecNameSw265.find("HEVC") != string::npos) {
480         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
481         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
482         sample->DEFAULT_WIDTH = 1920;
483         sample->DEFAULT_HEIGHT = 1080;
484         sample->typeDec = 2;
485         sample->INP_DIR = "/data/test/media/1920x1080.h265";
486         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecNameSw265, g_codecNameEnc264));
487         ASSERT_EQ(AV_ERR_OK, sample->Configure());
488         ASSERT_EQ(AV_ERR_OK, sample->Start());
489         sample->WaitForEos();
490         ASSERT_EQ(0, sample->errorCount);
491         ASSERT_EQ(FRAMENUM_300, sample->frameCountDec);
492         ASSERT_EQ(FRAMENUM_300, sample->frameCountEnc);
493         cout << "frameCountDec--" << sample->frameCountDec << endl;
494     }
495 }
496 
497 /**
498  * @tc.number    : DEC_ENC_FUNC_0090
499  * @tc.name      : H263 swdecode and H265 encode
500  * @tc.desc      : function test
501  */
502 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0090, TestSize.Level1)
503 {
504     if (g_codecName263.find("H263") != string::npos) {
505         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
506         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
507         sample->DEFAULT_WIDTH = 352;
508         sample->DEFAULT_HEIGHT = 288;
509         sample->typeDec = 1;
510         sample->INP_DIR = "/data/test/media/profile0_level30_352x288.h263";
511         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecName263, g_codecNameEnc265));
512         ASSERT_EQ(AV_ERR_OK, sample->Configure());
513         ASSERT_EQ(AV_ERR_OK, sample->Start());
514         sample->WaitForEos();
515         ASSERT_EQ(0, sample->errorCount);
516         ASSERT_EQ(FRAMENUM_90, sample->frameCountDec);
517         ASSERT_EQ(FRAMENUM_90, sample->frameCountEnc);
518         cout << "frameCountDec--" << sample->frameCountDec << endl;
519     }
520 }
521 /**
522  * @tc.number    : DEC_ENC_FUNC_0100
523  * @tc.name      : H264 hwdecode and H265 encode
524  * @tc.desc      : function test
525  */
526 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0100, TestSize.Level1)
527 {
528     if (g_codecName264.find("hisi") != string::npos) {
529         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
530         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
531         sample->DEFAULT_WIDTH = 1104;
532         sample->DEFAULT_HEIGHT = 622;
533         sample->typeDec = 2;
534         sample->INP_DIR = "/data/test/media/1104x622.h264";
535         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecName264, g_codecNameEnc265));
536         ASSERT_EQ(AV_ERR_OK, sample->Configure());
537         ASSERT_EQ(AV_ERR_OK, sample->Start());
538         sample->WaitForEos();
539         ASSERT_EQ(0, sample->errorCount);
540         ASSERT_EQ(FRAMENUM_300, sample->frameCountDec);
541         ASSERT_EQ(FRAMENUM_300, sample->frameCountEnc);
542         cout << "frameCountDec--" << sample->frameCountDec << endl;
543     }
544 }
545 
546 /**
547  * @tc.number    : DEC_ENC_FUNC_0110
548  * @tc.name      : H265 hwdecode and H265 encode
549  * @tc.desc      : function test
550  */
551 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0110, TestSize.Level1)
552 {
553     if (g_codecName265.find("hisi") != string::npos) {
554         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
555         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
556         sample->DEFAULT_WIDTH = 1920;
557         sample->DEFAULT_HEIGHT = 1080;
558         sample->typeDec = 2;
559         sample->INP_DIR = "/data/test/media/1920x1080.h265";
560         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecName265, g_codecNameEnc265));
561         ASSERT_EQ(AV_ERR_OK, sample->Configure());
562         ASSERT_EQ(AV_ERR_OK, sample->Start());
563         sample->WaitForEos();
564         ASSERT_EQ(0, sample->errorCount);
565         ASSERT_EQ(FRAMENUM_300, sample->frameCountDec);
566         ASSERT_EQ(FRAMENUM_300, sample->frameCountEnc);
567         cout << "frameCountDec--" << sample->frameCountDec << endl;
568     }
569 }
570 
571 /**
572  * @tc.number    : DEC_ENC_FUNC_0111
573  * @tc.name      : H265 HDRVivid hwdecode and H265 encode
574  * @tc.desc      : function test
575  */
576 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0111, TestSize.Level1)
577 {
578     if (g_codecName265.find("hisi") != string::npos) {
579         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
580         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
581         sample->DEFAULT_WIDTH = 3840;
582         sample->DEFAULT_HEIGHT = 2160;
583         sample->typeDec = 2;
584         sample->INP_DIR = "/data/test/media/hlgHdrVivid_4k.h265";
585         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecName265, g_codecNameEnc265));
586         ASSERT_EQ(AV_ERR_OK, sample->Configure());
587         ASSERT_EQ(AV_ERR_OK, sample->Start());
588         sample->WaitForEos();
589         ASSERT_EQ(0, sample->errorCount);
590         ASSERT_EQ(FRAMENUM_530, sample->frameCountDec);
591         ASSERT_EQ(FRAMENUM_530, sample->frameCountEnc);
592         cout << "frameCountDec--" << sample->frameCountDec << endl;
593     }
594 }
595 /**
596  * @tc.number    : DEC_ENC_FUNC_0112
597  * @tc.name      : H265 HDR10 hwdecode and H265 encode
598  * @tc.desc      : function test
599  */
600 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0112, TestSize.Level1)
601 {
602     if (g_codecName265.find("hisi") != string::npos) {
603         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
604         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
605         sample->DEFAULT_WIDTH = 3840;
606         sample->DEFAULT_HEIGHT = 2160;
607         sample->typeDec = 2;
608         sample->INP_DIR = "/data/test/media/hdr10.h265";
609         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecName265, g_codecNameEnc265));
610         ASSERT_EQ(AV_ERR_OK, sample->Configure());
611         ASSERT_EQ(AV_ERR_OK, sample->Start());
612         sample->WaitForEos();
613         ASSERT_EQ(0, sample->errorCount);
614         ASSERT_EQ(FRAMENUM_600, sample->frameCountDec);
615         ASSERT_EQ(FRAMENUM_600, sample->frameCountEnc);
616         cout << "frameCountDec--" << sample->frameCountDec << endl;
617     }
618 }
619 /**
620  * @tc.number    : DEC_ENC_FUNC_0113
621  * @tc.name      : H265 HDRHlg hwdecode and H265 encode
622  * @tc.desc      : function test
623  */
624 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0113, TestSize.Level1)
625 {
626     if (g_codecName265.find("hisi") != string::npos) {
627         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
628         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
629         sample->DEFAULT_WIDTH = 1920;
630         sample->DEFAULT_HEIGHT = 1080;
631         sample->typeDec = 2;
632         sample->INP_DIR = "/data/test/media/hlgHdrVivid_1080p.h265";
633         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecName265, g_codecNameEnc265));
634         ASSERT_EQ(AV_ERR_OK, sample->Configure());
635         ASSERT_EQ(AV_ERR_OK, sample->Start());
636         sample->WaitForEos();
637         ASSERT_EQ(0, sample->errorCount);
638         ASSERT_EQ(FRAMENUM_294, sample->frameCountDec);
639         ASSERT_EQ(FRAMENUM_294, sample->frameCountEnc);
640         cout << "frameCountDec--" << sample->frameCountDec << endl;
641     }
642 }
643 /**
644  * @tc.number    : DEC_ENC_FUNC_0114
645  * @tc.name      : H265 dolby hwdecode and H265 encode
646  * @tc.desc      : function test
647  */
648 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0114, TestSize.Level1)
649 {
650     if (g_codecName265.find("hisi") != string::npos) {
651         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
652         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
653         sample->DEFAULT_WIDTH = 1920;
654         sample->DEFAULT_HEIGHT = 1080;
655         sample->typeDec = 2;
656         sample->INP_DIR = "/data/test/media/dolby.h265";
657         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecName265, g_codecNameEnc265));
658         ASSERT_EQ(AV_ERR_OK, sample->Configure());
659         ASSERT_EQ(AV_ERR_OK, sample->Start());
660         sample->WaitForEos();
661         ASSERT_EQ(0, sample->errorCount);
662         ASSERT_EQ(FRAMENUM_80, sample->frameCountDec);
663         ASSERT_EQ(FRAMENUM_80, sample->frameCountEnc);
664         cout << "frameCountDec--" << sample->frameCountDec << endl;
665     }
666 }
667 /**
668  * @tc.number    : DEC_ENC_FUNC_0120
669  * @tc.name      : H266 hwdecode and H265 encode
670  * @tc.desc      : function test
671  */
672 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0120, TestSize.Level1)
673 {
674     if (g_codecName266.find("hisi") != string::npos) {
675         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
676         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
677         sample->DEFAULT_WIDTH = 1280;
678         sample->DEFAULT_HEIGHT = 720;
679         sample->typeDec = 2;
680         sample->INP_DIR = "/data/test/media/1280_720_8.vvc";
681         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecName266, g_codecNameEnc265));
682         ASSERT_EQ(AV_ERR_OK, sample->Configure());
683         ASSERT_EQ(AV_ERR_OK, sample->Start());
684         sample->WaitForEos();
685         ASSERT_EQ(0, sample->errorCount);
686         ASSERT_EQ(FRAMENUM_254, sample->frameCountDec);
687         ASSERT_EQ(FRAMENUM_254, sample->frameCountEnc);
688         cout << "frameCountDec--" << sample->frameCountDec << endl;
689     }
690 }
691 
692 /**
693  * @tc.number    : DEC_ENC_FUNC_0130
694  * @tc.name      : Mpeg2 swdecode and H265 encode
695  * @tc.desc      : function test
696  */
697 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0130, TestSize.Level1)
698 {
699     if (g_codecNameMpeg2.find("MPEG2") != string::npos) {
700         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
701         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
702         sample->DEFAULT_WIDTH = 352;
703         sample->DEFAULT_HEIGHT = 288;
704         sample->typeDec = 3;
705         sample->INP_DIR = "/data/test/media/simple@low_level_352_288_30_rotation_90.m2v";
706         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecNameMpeg2, g_codecNameEnc265));
707         ASSERT_EQ(AV_ERR_OK, sample->Configure());
708         ASSERT_EQ(AV_ERR_OK, sample->Start());
709         sample->WaitForEos();
710         ASSERT_EQ(0, sample->errorCount);
711         ASSERT_EQ(FRAMENUM_3, sample->frameCountDec);
712         ASSERT_EQ(FRAMENUM_3, sample->frameCountEnc);
713         cout << "frameCountDec--" << sample->frameCountDec << endl;
714     }
715 }
716 
717 /**
718  * @tc.number    : DEC_ENC_FUNC_0140
719  * @tc.name      : Mpeg4 swdecode and H265 encode
720  * @tc.desc      : function test
721  */
722 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0140, TestSize.Level1)
723 {
724     if (g_codecNameMpeg4.find("MPEG4") != string::npos) {
725         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
726         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
727         sample->DEFAULT_WIDTH = 1280;
728         sample->DEFAULT_HEIGHT = 720;
729         sample->typeDec = 4;
730         sample->INP_DIR = "/data/test/media/mpeg4_1280x720_IPB.m4v";
731         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecNameMpeg4, g_codecNameEnc265));
732         ASSERT_EQ(AV_ERR_OK, sample->Configure());
733         ASSERT_EQ(AV_ERR_OK, sample->Start());
734         sample->WaitForEos();
735         ASSERT_EQ(0, sample->errorCount);
736         ASSERT_EQ(FRAMENUM_60, sample->frameCountDec);
737         ASSERT_EQ(FRAMENUM_60, sample->frameCountEnc);
738         cout << "frameCountDec--" << sample->frameCountDec << endl;
739     }
740 }
741 /**
742  * @tc.number    : DEC_ENC_FUNC_0150
743  * @tc.name      : H264 swdecode and H265 encode
744  * @tc.desc      : function test
745  */
746 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0150, TestSize.Level1)
747 {
748     if (g_codecNameSw264.find("AVC") != string::npos) {
749         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
750         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
751         sample->DEFAULT_WIDTH = 1104;
752         sample->DEFAULT_HEIGHT = 622;
753         sample->typeDec = 2;
754         sample->INP_DIR = "/data/test/media/1104x622.h264";
755         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecNameSw264, g_codecNameEnc265));
756         ASSERT_EQ(AV_ERR_OK, sample->Configure());
757         ASSERT_EQ(AV_ERR_OK, sample->Start());
758         sample->WaitForEos();
759         ASSERT_EQ(0, sample->errorCount);
760         ASSERT_EQ(FRAMENUM_300, sample->frameCountDec);
761         ASSERT_EQ(FRAMENUM_300, sample->frameCountEnc);
762         cout << "frameCountDec--" << sample->frameCountDec << endl;
763     }
764 }
765 
766 /**
767  * @tc.number    : DEC_ENC_FUNC_0160
768  * @tc.name      : H265 swdecode and H265 encode
769  * @tc.desc      : function test
770  */
771 HWTEST_F(HDRFuncNdkTest, DEC_ENC_FUNC_0160, TestSize.Level1)
772 {
773     if (g_codecNameSw265.find("HEVC") != string::npos) {
774         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
775         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
776         sample->DEFAULT_WIDTH = 1920;
777         sample->DEFAULT_HEIGHT = 1080;
778         sample->typeDec = 2;
779         sample->INP_DIR = "/data/test/media/1920x1080.h265";
780         ASSERT_EQ(AV_ERR_OK, sample->CreateVideocoder(g_codecNameSw265, g_codecNameEnc265));
781         ASSERT_EQ(AV_ERR_OK, sample->Configure());
782         ASSERT_EQ(AV_ERR_OK, sample->Start());
783         sample->WaitForEos();
784         ASSERT_EQ(0, sample->errorCount);
785         ASSERT_EQ(FRAMENUM_300, sample->frameCountDec);
786         ASSERT_EQ(FRAMENUM_300, sample->frameCountEnc);
787         cout << "frameCountDec--" << sample->frameCountDec << endl;
788     }
789 }
790 
791 
792 /**
793  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0010
794  * @tc.name      : Demuxer and H263 swdecode and H264 encode and Muxer
795  * @tc.desc      : function test
796  */
797 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0010, TestSize.Level1)
798 {
799     if (g_codecName263.find("H263") != string::npos) {
800         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
801         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
802         const char *file = "/data/test/media/profile0_level30_352x288.avi";
803         sample->DEMUXER_FLAG = true;
804         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_AVC;
805         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecName263, g_codecNameEnc264));
806         ASSERT_EQ(AV_ERR_OK, sample->Configure());
807         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
808         sample->WaitForEos();
809         ASSERT_EQ(0, sample->errorCount);
810         ASSERT_EQ(FRAMENUM_90, sample->frameCountDec);
811         ASSERT_EQ(FRAMENUM_90, sample->frameCountEnc);
812         cout << "frameCountDec--" << sample->frameCountDec << endl;
813     }
814 }
815 /**
816  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0020
817  * @tc.name      : Demuxer and H264 hwdecode and H264 encode and Muxer
818  * @tc.desc      : function test
819  */
820 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0020, TestSize.Level1)
821 {
822     if (g_codecName264.find("hisi") != string::npos) {
823         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
824         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
825         const char *file = "/data/test/media/AVI_H264_main@level5_1920_1080_MP2_1.avi";
826         sample->DEMUXER_FLAG = true;
827         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_AVC;
828         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecName264, g_codecNameEnc264));
829         ASSERT_EQ(AV_ERR_OK, sample->Configure());
830         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
831         sample->WaitForEos();
832         ASSERT_EQ(0, sample->errorCount);
833         ASSERT_EQ(FRAMENUM_30, sample->frameCountDec);
834         ASSERT_EQ(FRAMENUM_30, sample->frameCountEnc);
835         cout << "frameCountDec--" << sample->frameCountDec << endl;
836     }
837 }
838 
839 /**
840  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0030
841  * @tc.name      : Demuxer and H265 hwdecode and H264 encode and Muxer
842  * @tc.desc      : function test
843  */
844 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0030, TestSize.Level1)
845 {
846     if (g_codecName265.find("hisi") != string::npos) {
847         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
848         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
849         const char *file = "/data/test/media/h265_aac_1mvex_fmp4.mp4";
850         sample->DEMUXER_FLAG = true;
851         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_AVC;
852         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecName265, g_codecNameEnc264));
853         ASSERT_EQ(AV_ERR_OK, sample->Configure());
854         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
855         sample->WaitForEos();
856         ASSERT_EQ(0, sample->errorCount);
857         ASSERT_EQ(FRAMENUM_242, sample->frameCountDec);
858         ASSERT_EQ(FRAMENUM_242, sample->frameCountEnc);
859         cout << "frameCountDec--" << sample->frameCountDec << endl;
860     }
861 }
862 
863 /**
864  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0050
865  * @tc.name      : Demuxer and Mpeg2 swdecode and H264 encode and Muxer
866  * @tc.desc      : function test
867  */
868 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0050, TestSize.Level1)
869 {
870     if (g_codecNameMpeg2.find("MPEG2") != string::npos) {
871         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
872         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
873         const char *file = "/data/test/media/AVI_MPEG2_main@mian_640_480_MP2_1.avi";
874         sample->DEMUXER_FLAG = true;
875         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_AVC;
876         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecNameMpeg2, g_codecNameEnc264));
877         ASSERT_EQ(AV_ERR_OK, sample->Configure());
878         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
879         sample->WaitForEos();
880         ASSERT_EQ(0, sample->errorCount);
881         ASSERT_EQ(FRAMENUM_30, sample->frameCountDec);
882         ASSERT_EQ(FRAMENUM_30, sample->frameCountEnc);
883         cout << "frameCountDec--" << sample->frameCountDec << endl;
884     }
885 }
886 
887 /**
888  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0060
889  * @tc.name      : Demuxer and Mpeg4 swdecode and H264 encode and Muxer
890  * @tc.desc      : function test
891  */
892 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0060, TestSize.Level1)
893 {
894     if (g_codecNameMpeg4.find("MPEG4") != string::npos) {
895         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
896         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
897         const char *file = "/data/test/media/AVI_MPEG4_main@level5_720_576_PCM_s32_1.avi";
898         sample->DEMUXER_FLAG = true;
899         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_AVC;
900         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecNameMpeg4, g_codecNameEnc264));
901         ASSERT_EQ(AV_ERR_OK, sample->Configure());
902         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
903         sample->WaitForEos();
904         ASSERT_EQ(0, sample->errorCount);
905         ASSERT_EQ(FRAMENUM_30, sample->frameCountDec);
906         ASSERT_EQ(FRAMENUM_30, sample->frameCountEnc);
907         cout << "frameCountDec--" << sample->frameCountDec << endl;
908     }
909 }
910 /**
911  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0070
912  * @tc.name      : Demuxer and H264 swdecode and H264 encode and Muxer
913  * @tc.desc      : function test
914  */
915 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0070, TestSize.Level1)
916 {
917     if (g_codecNameSw264.find("AVC") != string::npos) {
918         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
919         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
920         const char *file = "/data/test/media/AVI_H264_main@level5_1920_1080_MP2_1.avi";
921         sample->DEMUXER_FLAG = true;
922         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_AVC;
923         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecNameSw264, g_codecNameEnc264));
924         ASSERT_EQ(AV_ERR_OK, sample->Configure());
925         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
926         sample->WaitForEos();
927         ASSERT_EQ(0, sample->errorCount);
928         ASSERT_EQ(FRAMENUM_30, sample->frameCountDec);
929         ASSERT_EQ(FRAMENUM_30, sample->frameCountEnc);
930         cout << "frameCountDec--" << sample->frameCountDec << endl;
931     }
932 }
933 
934 /**
935  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0080
936  * @tc.name      : Demuxer and H265 swdecode and H264 encode and Muxer
937  * @tc.desc      : function test
938  */
939 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0080, TestSize.Level1)
940 {
941     if (g_codecNameSw265.find("HEVC") != string::npos) {
942         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
943         sample->DEFAULT_PROFILE = AVC_PROFILE_MAIN;
944         const char *file = "/data/test/media/h265_aac_1mvex_fmp4.mp4";
945         sample->DEMUXER_FLAG = true;
946         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_AVC;
947         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecNameSw265, g_codecNameEnc264));
948         ASSERT_EQ(AV_ERR_OK, sample->Configure());
949         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
950         sample->WaitForEos();
951         ASSERT_EQ(0, sample->errorCount);
952         ASSERT_EQ(FRAMENUM_242, sample->frameCountDec);
953         ASSERT_EQ(FRAMENUM_242, sample->frameCountEnc);
954         cout << "frameCountDec--" << sample->frameCountDec << endl;
955     }
956 }
957 
958 /**
959  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0090
960  * @tc.name      : Demuxer and H263 swdecode and H265 encode and Muxer
961  * @tc.desc      : function test
962  */
963 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0090, TestSize.Level1)
964 {
965     if (g_codecName263.find("H263") != string::npos) {
966         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
967         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
968         const char *file = "/data/test/media/profile0_level30_352x288.avi";
969         sample->DEMUXER_FLAG = true;
970         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_HEVC;
971         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecName263, g_codecNameEnc265));
972         ASSERT_EQ(AV_ERR_OK, sample->Configure());
973         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
974         sample->WaitForEos();
975         ASSERT_EQ(0, sample->errorCount);
976         ASSERT_EQ(FRAMENUM_90, sample->frameCountDec);
977         ASSERT_EQ(FRAMENUM_90, sample->frameCountEnc);
978         cout << "frameCountDec--" << sample->frameCountDec << endl;
979     }
980 }
981 /**
982  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0100
983  * @tc.name      : Demuxer and H264 hwdecode and H265 encode and Muxer
984  * @tc.desc      : function test
985  */
986 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0100, TestSize.Level1)
987 {
988     if (g_codecName264.find("hisi") != string::npos) {
989         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
990         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
991         const char *file = "/data/test/media/AVI_H264_main@level5_1920_1080_MP2_1.avi";
992         sample->DEMUXER_FLAG = true;
993         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_HEVC;
994         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecName264, g_codecNameEnc265));
995         ASSERT_EQ(AV_ERR_OK, sample->Configure());
996         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
997         sample->WaitForEos();
998         ASSERT_EQ(0, sample->errorCount);
999         ASSERT_EQ(FRAMENUM_30, sample->frameCountDec);
1000         ASSERT_EQ(FRAMENUM_30, sample->frameCountEnc);
1001         cout << "frameCountDec--" << sample->frameCountDec << endl;
1002     }
1003 }
1004 
1005 /**
1006  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0110
1007  * @tc.name      : Demuxer and H265 hwdecode and H265 encode and Muxer
1008  * @tc.desc      : function test
1009  */
1010 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0110, TestSize.Level1)
1011 {
1012     if (g_codecName265.find("hisi") != string::npos) {
1013         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
1014         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
1015         const char *file = "/data/test/media/h265_aac_1mvex_fmp4.mp4";
1016         sample->DEMUXER_FLAG = true;
1017         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_HEVC;
1018         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecName265, g_codecNameEnc265));
1019         ASSERT_EQ(AV_ERR_OK, sample->Configure());
1020         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
1021         sample->WaitForEos();
1022         ASSERT_EQ(0, sample->errorCount);
1023         ASSERT_EQ(FRAMENUM_242, sample->frameCountDec);
1024         ASSERT_EQ(FRAMENUM_242, sample->frameCountEnc);
1025         cout << "frameCountDec--" << sample->frameCountDec << endl;
1026     }
1027 }
1028 
1029 /**
1030  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0111
1031  * @tc.name      : Demuxer and H265 HDRVivid hwdecode and H265 encode and Muxer
1032  * @tc.desc      : function test
1033  */
1034 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0111, TestSize.Level1)
1035 {
1036     if (g_codecName265.find("hisi") != string::npos) {
1037         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
1038         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
1039         const char *file = "/data/test/media/audiovivid_hdrvivid_1s_fmp4.mp4";
1040         sample->DEMUXER_FLAG = true;
1041         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_HEVC;
1042         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecName265, g_codecNameEnc265));
1043         ASSERT_EQ(AV_ERR_OK, sample->Configure());
1044         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
1045         sample->WaitForEos();
1046         ASSERT_EQ(0, sample->errorCount);
1047         ASSERT_EQ(FRAMENUM_26, sample->frameCountDec);
1048         ASSERT_EQ(FRAMENUM_26, sample->frameCountEnc);
1049         cout << "frameCountDec--" << sample->frameCountDec << endl;
1050     }
1051 }
1052 /**
1053  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0112
1054  * @tc.name      : Demuxer and H265 HDR10 hwdecode and H265 encode and Muxer
1055  * @tc.desc      : function test
1056  */
1057 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0112, TestSize.Level1)
1058 {
1059     if (g_codecName265.find("hisi") != string::npos) {
1060         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
1061         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
1062         const char *file = "/data/test/media/demuxer_parser_hdr_1_hevc.mp4";
1063         sample->DEMUXER_FLAG = true;
1064         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_HEVC;
1065         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecName265, g_codecNameEnc265));
1066         ASSERT_EQ(AV_ERR_OK, sample->Configure());
1067         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
1068         sample->WaitForEos();
1069         ASSERT_EQ(0, sample->errorCount);
1070         ASSERT_EQ(FRAMENUM_242, sample->frameCountDec);
1071         ASSERT_EQ(FRAMENUM_242, sample->frameCountEnc);
1072         cout << "frameCountDec--" << sample->frameCountDec << endl;
1073     }
1074 }
1075 /**
1076  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0113
1077  * @tc.name      : Demuxer and H265 HDRHlg hwdecode and H265 encode and Muxer
1078  * @tc.desc      : function test
1079  */
1080 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0113, TestSize.Level1)
1081 {
1082     if (g_codecName265.find("hisi") != string::npos) {
1083         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
1084         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
1085         const char *file = "/data/test/media/demuxer_parser_hdr_vivid.mp4";
1086         sample->DEMUXER_FLAG = true;
1087         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_HEVC;
1088         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecName265, g_codecNameEnc265));
1089         ASSERT_EQ(AV_ERR_OK, sample->Configure());
1090         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
1091         sample->WaitForEos();
1092         ASSERT_EQ(0, sample->errorCount);
1093         ASSERT_EQ(FRAMENUM_180, sample->frameCountDec);
1094         ASSERT_EQ(FRAMENUM_180, sample->frameCountEnc);
1095         cout << "frameCountDec--" << sample->frameCountDec << endl;
1096     }
1097 }
1098 /**
1099  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0114
1100  * @tc.name      : Demuxer and H265 dolby hwdecode and H265 encode and Muxer
1101  * @tc.desc      : function test
1102  */
1103 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0114, TestSize.Level1)
1104 {
1105     if (g_codecName265.find("hisi") != string::npos) {
1106         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
1107         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
1108         const char *file = "/data/test/media/dolby.MOV";
1109         sample->DEMUXER_FLAG = true;
1110         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_HEVC;
1111         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecName265, g_codecNameEnc265));
1112         ASSERT_EQ(AV_ERR_OK, sample->Configure());
1113         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
1114         sample->WaitForEos();
1115         ASSERT_EQ(0, sample->errorCount);
1116         ASSERT_EQ(FRAMENUM_80, sample->frameCountDec);
1117         ASSERT_EQ(FRAMENUM_80, sample->frameCountEnc);
1118         cout << "frameCountDec--" << sample->frameCountDec << endl;
1119     }
1120 }
1121 /**
1122  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0120
1123  * @tc.name      : Demuxer and H266 hwdecode and H265 encode and Muxer
1124  * @tc.desc      : function test
1125  */
1126 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0120, TestSize.Level1)
1127 {
1128     if (g_codecName266.find("hisi") != string::npos) {
1129         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
1130         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN_10;
1131         const char *file = "/data/test/media/vvc_1280_720_8.mp4";
1132         sample->DEMUXER_FLAG = true;
1133         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_HEVC;
1134         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecName266, g_codecNameEnc265));
1135         ASSERT_EQ(AV_ERR_OK, sample->Configure());
1136         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
1137         sample->WaitForEos();
1138         ASSERT_EQ(0, sample->errorCount);
1139         ASSERT_EQ(FRAMENUM_254, sample->frameCountDec);
1140         ASSERT_EQ(FRAMENUM_254, sample->frameCountEnc);
1141         cout << "frameCountDec--" << sample->frameCountDec << endl;
1142     }
1143 }
1144 
1145 /**
1146  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0130
1147  * @tc.name      : Demuxer and Mpeg2 swdecode and H265 encode and Muxer
1148  * @tc.desc      : function test
1149  */
1150 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0130, TestSize.Level1)
1151 {
1152     if (g_codecNameMpeg2.find("MPEG2") != string::npos) {
1153         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
1154         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
1155         const char *file = "/data/test/media/AVI_MPEG2_main@mian_640_480_MP2_1.avi";
1156         sample->DEMUXER_FLAG = true;
1157         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_HEVC;
1158         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecNameMpeg2, g_codecNameEnc265));
1159         ASSERT_EQ(AV_ERR_OK, sample->Configure());
1160         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
1161         sample->WaitForEos();
1162         ASSERT_EQ(0, sample->errorCount);
1163         ASSERT_EQ(FRAMENUM_30, sample->frameCountDec);
1164         ASSERT_EQ(FRAMENUM_30, sample->frameCountEnc);
1165         cout << "frameCountDec--" << sample->frameCountDec << endl;
1166     }
1167 }
1168 
1169 /**
1170  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0140
1171  * @tc.name      : Demuxer and Mpeg4 swdecode and H265 encode and Muxer
1172  * @tc.desc      : function test
1173  */
1174 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0140, TestSize.Level1)
1175 {
1176     if (g_codecNameMpeg4.find("MPEG4") != string::npos) {
1177         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
1178         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
1179         const char *file = "/data/test/media/AVI_MPEG4_main@level5_720_576_PCM_s32_1.avi";
1180         sample->DEMUXER_FLAG = true;
1181         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_HEVC;
1182         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecNameMpeg4, g_codecNameEnc265));
1183         ASSERT_EQ(AV_ERR_OK, sample->Configure());
1184         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
1185         sample->WaitForEos();
1186         ASSERT_EQ(0, sample->errorCount);
1187         ASSERT_EQ(FRAMENUM_30, sample->frameCountDec);
1188         ASSERT_EQ(FRAMENUM_30, sample->frameCountEnc);
1189         cout << "frameCountDec--" << sample->frameCountDec << endl;
1190     }
1191 }
1192 /**
1193  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0150
1194  * @tc.name      : Demuxer and H264 swdecode and H265 encode and Muxer and Muxer
1195  * @tc.desc      : function test
1196  */
1197 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0150, TestSize.Level1)
1198 {
1199     if (g_codecNameSw264.find("AVC") != string::npos) {
1200         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
1201         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
1202         const char *file = "/data/test/media/AVI_H264_main@level5_1920_1080_MP2_1.avi";
1203         sample->DEMUXER_FLAG = true;
1204         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_HEVC;
1205         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecNameSw264, g_codecNameEnc265));
1206         ASSERT_EQ(AV_ERR_OK, sample->Configure());
1207         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
1208         sample->WaitForEos();
1209         ASSERT_EQ(0, sample->errorCount);
1210         ASSERT_EQ(FRAMENUM_30, sample->frameCountDec);
1211         ASSERT_EQ(FRAMENUM_30, sample->frameCountEnc);
1212         cout << "frameCountDec--" << sample->frameCountDec << endl;
1213     }
1214 }
1215 
1216 /**
1217  * @tc.number    : DEMUXER_DEC_ENC_MUXER_FUNC_0160
1218  * @tc.name      : Demuxer and H265 swdecode and H265 encode and Muxer
1219  * @tc.desc      : function test
1220  */
1221 HWTEST_F(HDRFuncNdkTest, DEMUXER_DEC_ENC_MUXER_FUNC_0160, TestSize.Level1)
1222 {
1223     if (g_codecNameSw265.find("HEVC") != string::npos) {
1224         shared_ptr<HDRCodecNdkSample> sample = make_shared<HDRCodecNdkSample>();
1225         sample->DEFAULT_PROFILE = HEVC_PROFILE_MAIN;
1226         const char *file = "/data/test/media/h265_aac_1mvex_fmp4.mp4";
1227         sample->DEMUXER_FLAG = true;
1228         sample->MIME_TYPE = OH_AVCODEC_MIMETYPE_VIDEO_HEVC;
1229         ASSERT_EQ(AV_ERR_OK, sample->CreateDemuxerVideocoder(file, g_codecNameSw265, g_codecNameEnc265));
1230         ASSERT_EQ(AV_ERR_OK, sample->Configure());
1231         ASSERT_EQ(AV_ERR_OK, sample->StartDemuxer());
1232         sample->WaitForEos();
1233         ASSERT_EQ(0, sample->errorCount);
1234         ASSERT_EQ(FRAMENUM_242, sample->frameCountDec);
1235         ASSERT_EQ(FRAMENUM_242, sample->frameCountEnc);
1236         cout << "frameCountDec--" << sample->frameCountDec << endl;
1237     }
1238 }
1239 } // namespace