• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
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 }