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