1 /*
2 * Copyright (C) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <fcntl.h>
17 #include "avimage_generator.h"
18 #include "avimage_generator_base.h"
19 #include "avimagegenerator_unit_test.h"
20 #include "gtest/gtest.h"
21 #include "media_errors.h"
22 #include "pixelmap_native_impl.h"
23
24 using namespace std;
25 using namespace OHOS;
26 using namespace OHOS::Media;
27 using namespace testing::ext;
28
29 #define PATH "/data/test/ChineseColor_H264_AAC_480p_15fps.mp4"
30
SetUpTestCase(void)31 void NativeImageGeneratorUnitTest::SetUpTestCase(void) {}
32
TearDownTestCase(void)33 void NativeImageGeneratorUnitTest::TearDownTestCase(void) {}
34
SetUp(void)35 void NativeImageGeneratorUnitTest::SetUp(void) {}
36
TearDown(void)37 void NativeImageGeneratorUnitTest::TearDown(void) {}
38
39 /**
40 * @tc.number : AVImageGenerator_Create_0100
41 * @tc.name : SetSource AVImageGenerator_Create
42 * @tc.desc : Verify the functionality of creating AVImageGenerator object.
43 */
HWTEST_F(NativeImageGeneratorUnitTest,OH_AVImageGenerator_Create_0100,Level2)44 HWTEST_F(NativeImageGeneratorUnitTest, OH_AVImageGenerator_Create_0100, Level2)
45 {
46 auto imagegenerator = OH_AVImageGenerator_Create();
47 ASSERT_NE(nullptr, imagegenerator);
48
49 OH_AVImageGenerator_Release(imagegenerator);
50 }
51
52 /**
53 * @tc.number : AVImageGenerator_SetFDSource_0100
54 * @tc.name : SetSource AVImageGenerator_SetFDSource
55 * @tc.desc : AVImageGenerator set file descriptor source
56 */
HWTEST_F(NativeImageGeneratorUnitTest,OH_AVImageGenerator_SetFDSource_0100,Level2)57 HWTEST_F(NativeImageGeneratorUnitTest, OH_AVImageGenerator_SetFDSource_0100, Level2)
58 {
59 auto imagegenerator = OH_AVImageGenerator_Create();
60 ASSERT_NE(nullptr, imagegenerator);
61
62 int32_t fd = open(PATH, O_RDONLY);
63 ASSERT_GT(fd, 0);
64 int64_t fileSize = -1;
65 int64_t offset = 0;
66
67 auto result = OH_AVImageGenerator_SetFDSource(imagegenerator, fd, offset, fileSize);
68 close(fd);
69 EXPECT_EQ(AV_ERR_OK, result);
70
71 auto res = OH_AVImageGenerator_Release(imagegenerator);
72 ASSERT_EQ(AV_ERR_OK, res);
73 }
74
75 /**
76 * @tc.number : AVImageGenerator_FetchFrameByTime_0100
77 * @tc.name : SetSource AVImageGenerator_FetchFrameByTime
78 * @tc.desc : AVImageGenerator fetch frame by time
79 */
HWTEST_F(NativeImageGeneratorUnitTest,OH_AVImageGenerator_FetchFrameByTime_0100,Level2)80 HWTEST_F(NativeImageGeneratorUnitTest, OH_AVImageGenerator_FetchFrameByTime_0100, Level2)
81 {
82 auto imagegenerator = OH_AVImageGenerator_Create();
83 ASSERT_NE(nullptr, imagegenerator);
84
85 int32_t fd = open(PATH, O_RDONLY);
86 ASSERT_GT(fd, 0);
87 int64_t fileSize = -1;
88 int64_t offset = 0;
89
90 auto re = OH_AVImageGenerator_SetFDSource(imagegenerator, fd, offset, fileSize);
91 close(fd);
92 EXPECT_EQ(AV_ERR_OK, re);
93
94 int64_t timeUs = 100;
95 OH_PixelmapNative* pixelMap = nullptr;
96
97 auto result = OH_AVImageGenerator_FetchFrameByTime(imagegenerator, timeUs,
98 OH_AVImageGenerator_QueryOptions::OH_AVIMAGE_GENERATOR_QUERY_NEXT_SYNC, &pixelMap);
99 EXPECT_EQ(AV_ERR_OK, result);
100 EXPECT_NE(nullptr, pixelMap);
101
102 auto err = OH_PixelmapNative_Release(pixelMap);
103 EXPECT_EQ(IMAGE_SUCCESS, err);
104 auto res = OH_AVImageGenerator_Release(imagegenerator);
105 ASSERT_EQ(AV_ERR_OK, res);
106 }
107
108 /**
109 * @tc.number : AVImageGenerator_Release_0100
110 * @tc.name : SetSource AVImageGenerator_Release
111 * @tc.desc : AVImageGenerator release
112 */
HWTEST_F(NativeImageGeneratorUnitTest,OH_AVImageGenerator_Release_0100,Level2)113 HWTEST_F(NativeImageGeneratorUnitTest, OH_AVImageGenerator_Release_0100, Level2)
114 {
115 auto imagegenerator = OH_AVImageGenerator_Create();
116 ASSERT_NE(nullptr, imagegenerator);
117 auto result = OH_AVImageGenerator_Release(imagegenerator);
118 ASSERT_EQ(AV_ERR_OK, result);
119 }