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 #ifndef AVSOURCE_UNIT_TEST_H
17 #define AVSOURCE_UNIT_TEST_H
18 
19 #include "gtest/gtest.h"
20 #include "avsource_mock.h"
21 
22 namespace OHOS {
23 namespace MediaAVCodec {
24 class AVSourceUnitTest : public testing::Test {
25 public:
26     // SetUpTestCase: Called before all test cases
27     static void SetUpTestCase(void);
28     // TearDownTestCase: Called after all test case
29     static void TearDownTestCase(void);
30     // SetUp: Called before each test cases
31     void SetUp(void);
32     // TearDown: Called after each test cases
33     void TearDown(void);
34     int64_t GetFileSize(const std::string &fileName);
35     int32_t OpenFile(const std::string &fileName);
36     void ResetFormatValue();
37 
38     void InitResource(const std::string &path, bool local);
39     void CheckHevcInfo(const std::string resName);
40 
41 protected:
42     std::shared_ptr<AVSourceMock> source_ = nullptr;
43     std::shared_ptr<FormatMock> format_ = nullptr;
44     int32_t fd_ = -1;
45     int64_t size_ = 0;
46     uint32_t trackIndex_ = 0;
47     int32_t streamsCount_ = 0;
48     int32_t vTrackIdx_ = 0;
49     int32_t aTrackIdx_ = 0;
50     uint8_t *addr_ = nullptr;
51     size_t buffSize_ = 0;
52     bool initStatus_ = false;
53 
54     struct FormatValue {
55         // source format
56         std::string title = "";
57         std::string artist = "";
58         std::string album = "";
59         std::string albumArtist = "";
60         std::string date = "";
61         std::string comment = "";
62         std::string genre = "";
63         std::string copyright = "";
64         std::string description = "";
65         std::string language = "";
66         std::string lyrics = "";
67         int64_t duration = 0;
68         int32_t trackCount = 0;
69         std::string author = "";
70         std::string composer = "";
71         int32_t hasVideo = -1;
72         int32_t hasAudio = -1;
73         int32_t hasTimedMeta = -1;
74         int32_t hasSubtitle = -1;
75         int32_t fileType = 0;
76         // track format
77         std::string codecMime = "";
78         int32_t trackType = 0;
79         int32_t width = 0;
80         int32_t height = 0;
81         int32_t aacIsAdts = -1;
82         int32_t sampleRate = 0;
83         int32_t channelCount = 0;
84         int64_t bitRate = 0;
85         int32_t audioSampleFormat = 0;
86         double frameRate = 0;
87         int32_t rotationAngle = 0;
88         int32_t orientationType = 0;
89         int64_t channelLayout = 0;
90         int32_t hdrType = 0;
91         int32_t codecProfile = 0;
92         int32_t codecLevel = 0;
93         int32_t colorPrimaries = 0;
94         int32_t transferCharacteristics = 0;
95         int32_t rangeFlag = 0;
96         int32_t matrixCoefficients = 0;
97         int32_t chromaLocation = 0;
98         std::string timedMetadataKey = "";
99         int32_t srcTrackID = -1;
100         // hevc format
101         int32_t profile = 0;
102         int32_t level = 0;
103         int32_t colorPri = 0;
104         int32_t colorTrans = 0;
105         int32_t colorMatrix = 0;
106         int32_t colorRange = 0;
107         int32_t chromaLoc = 0;
108         int32_t isHdrVivid = 0;
109     };
110     FormatValue formatVal_;
111 };
112 } // namespace MediaAVCodec
113 } // namespace OHOS
114 #endif // AVSOURCE_UNIT_TEST_H
115