• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 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 METADATA_H
17 #define METADATA_H
18 
19 #include <unordered_map>
20 #include <variant>
21 #include "scanner_utils.h"
22 #include "fetch_result.h"
23 #include "abs_shared_result_set.h"
24 
25 namespace OHOS {
26 namespace Media {
27 #define EXPORT __attribute__ ((visibility ("default")))
28 class Metadata {
29 public:
30     EXPORT Metadata();
31     EXPORT ~Metadata() = default;
32     using VariantData = std::variant<int32_t, std::string, int64_t, double>;
33 
34     EXPORT void SetFileId(const VariantData &id);
35     EXPORT int32_t GetFileId() const;
36 
37     EXPORT void SetFilePath(const VariantData &path);
38     EXPORT const std::string &GetFilePath() const;
39 
40     EXPORT void SetUri(const VariantData &uri);
41     EXPORT const std::string &GetUri() const;
42 
43     EXPORT void SetRelativePath(const VariantData &relativePath);
44     EXPORT const std::string &GetRelativePath() const;
45 
46     EXPORT void SetFileMimeType(const VariantData &mimeType);
47     EXPORT const std::string &GetFileMimeType() const;
48 
49     EXPORT void SetFileMediaType(const VariantData &mediaType);
50     EXPORT MediaType GetFileMediaType() const;
51 
52     EXPORT void SetFileName(const VariantData &name);
53     EXPORT const std::string &GetFileName() const;
54 
55     EXPORT void SetFileSize(const VariantData &size);
56     EXPORT int64_t GetFileSize() const;
57 
58     EXPORT void SetFileDateAdded(const VariantData &dateAdded);
59     EXPORT int64_t GetFileDateAdded() const;
60 
61     EXPORT void SetFileDateModified(const VariantData &dateModified);
62     EXPORT int64_t GetFileDateModified() const;
63 
64     EXPORT void SetFileExtension(const VariantData &fileExt);
65     EXPORT const std::string &GetFileExtension() const;
66 
67     EXPORT void SetFileTitle(const VariantData &title);
68     EXPORT const std::string &GetFileTitle() const;
69 
70     EXPORT void SetFileArtist(const VariantData &artist);
71     EXPORT const std::string &GetFileArtist() const;
72 
73     EXPORT void SetAlbum(const VariantData &album);
74     EXPORT const std::string &GetAlbum() const;
75 
76     EXPORT void SetFileHeight(const VariantData &height);
77     EXPORT int32_t GetFileHeight() const;
78 
79     EXPORT void SetFileWidth(const VariantData &width);
80     EXPORT int32_t GetFileWidth() const;
81 
82     EXPORT void SetOrientation(const VariantData &orientation);
83     EXPORT int32_t GetOrientation() const;
84 
85     EXPORT void SetExifRotate(const VariantData &exifRotate);
86     EXPORT int32_t GetExifRotate() const;
87 
88     EXPORT void SetFileDuration(const VariantData &duration);
89     EXPORT int32_t GetFileDuration() const;
90 
91     EXPORT int32_t GetParentId() const;
92     EXPORT void SetParentId(const VariantData &id);
93 
94     EXPORT void SetAlbumId(const VariantData &albumId);
95     EXPORT int32_t GetAlbumId() const;
96 
97     EXPORT void SetAlbumName(const VariantData &album);
98     EXPORT const std::string &GetAlbumName() const;
99 
100     EXPORT void SetRecyclePath(const VariantData &recyclePath);
101     EXPORT const std::string &GetRecyclePath() const;
102 
103     EXPORT void SetDateTaken(const VariantData &dateTaken);
104     EXPORT int64_t GetDateTaken() const;
105 
106     EXPORT void SetLongitude(const VariantData &longitude);
107     EXPORT double GetLongitude() const;
108 
109     EXPORT void SetLatitude(const VariantData &latitude);
110     EXPORT double GetLatitude() const;
111 
112     EXPORT void SetTimePending(const VariantData &timePending);
113     EXPORT int64_t GetTimePending() const;
114 
115     EXPORT void SetUserComment(const VariantData &userComment);
116     EXPORT const std::string &GetUserComment() const;
117 
118     EXPORT void SetAllExif(const VariantData &allExif);
119     EXPORT const std::string &GetAllExif() const;
120 
121     EXPORT void SetDateYear(const VariantData &dateYear);
122     EXPORT const std::string &GetDateYear() const;
123 
124     EXPORT void SetDateMonth(const VariantData &dateMonth);
125     EXPORT const std::string &GetDateMonth() const;
126 
127     EXPORT void SetDateDay(const VariantData &dateDay);
128     EXPORT const std::string &GetDateDay() const;
129 
130     EXPORT void SetShootingMode(const VariantData &shootingMode);
131     EXPORT const std::string &GetShootingMode() const;
132 
133     EXPORT void SetShootingModeTag(const VariantData &shootingMode);
134     EXPORT const std::string &GetShootingModeTag() const;
135 
136     EXPORT void SetLastVisitTime(const VariantData &lastVisitTime);
137     EXPORT int64_t GetLastVisitTime() const;
138 
139     EXPORT void SetPhotoSubType(const VariantData &photoSubType);
140     EXPORT int32_t GetPhotoSubType() const;
141 
142     EXPORT void SetMovingPhotoEffectMode(const VariantData &movingPhotoEffectMode);
143     EXPORT int32_t GetMovingPhotoEffectMode() const;
144 
145     EXPORT void SetFrontCamera(const VariantData &forntcamera);
146     EXPORT std::string GetFrontCamera() const;
147 
148     void SetMovingPhotoImagePath(const VariantData &imagePath);
149     EXPORT std::string GetMovingPhotoImagePath() const;
150 
151     EXPORT void SetDynamicRangeType(const VariantData &type);
152     EXPORT int32_t GetDynamicRangeType() const;
153 
154     EXPORT void SetCoverPosition(const VariantData &coverPosition);
155     EXPORT int64_t GetCoverPosition() const;
156 
157     void SetFrameIndex(const VariantData &frameIndex);
158     int32_t GetFrameIndex() const;
159 
160     EXPORT void SetIsTemp(const VariantData &isTemp);
161     EXPORT int32_t GetIsTemp() const;
162 
163     EXPORT void SetPhotoQuality(const VariantData &photoQuality);
164     EXPORT int32_t GetPhotoQuality() const;
165 
166     EXPORT void SetDirty(const VariantData &dirty);
167     EXPORT int32_t GetDirty() const;
168 
169     EXPORT void SetDetailTime(const VariantData &detailTime);
170     EXPORT std::string GetDetailTime() const;
171 
172     EXPORT void SetForAdd(bool forAdd);
173     EXPORT bool GetForAdd() const;
174     EXPORT void SetTableName(const std::string &tableName);
175     EXPORT std::string GetTableName();
176     void SetOwnerPackage(const VariantData &ownerPackage);
177     const std::string GetOwnerPackage() const;
178 
179     void SetBurstCoverLevel(const VariantData &burstCoverLevel);
180     int32_t GetBurstCoverLevel() const;
181 
182     void SetStageVideoTaskStatus(const VariantData &stageVideoTaskStatus);
183     int32_t GetStageVideoTaskStatus() const;
184 
185     EXPORT void Init();
186     void InitV2();
187 
188     using MetadataFnPtr = void (Metadata::*)(const VariantData &);
189     EXPORT std::unordered_map<std::string, std::pair<ResultSetDataType, MetadataFnPtr>> memberFuncMap_;
190 
191 private:
192     int32_t id_;
193     std::string uri_;
194     std::string filePath_;
195     std::string relativePath_;
196 
197     std::string mimeType_;
198     MediaType mediaType_;
199     std::string name_;
200 
201     int64_t size_;
202     int64_t dateModified_;
203     int64_t dateAdded_;
204 
205     std::string fileExt_;
206     int32_t parentId_;
207 
208     // audio
209     std::string title_;
210     std::string artist_;
211     std::string album_;
212 
213     // video, image
214     int32_t height_;
215     int32_t width_;
216     int32_t duration_;
217     int32_t orientation_;
218     int32_t exifRotate_ {0};
219     string dateYear_;
220     string dateMonth_;
221     string dateDay_;
222     string shootingMode_;
223     string shootingModeTag_;
224     int64_t lastVisitTime_;
225     int32_t dynamicRangeType_;
226 
227     // video, audio, image
228     int64_t dateTaken_ {0};
229 
230     // image
231     double longitude_;
232     double latitude_;
233     std::string userComment_;
234     std::string allExif_;
235 
236     // album
237     int32_t albumId_;
238     std::string albumName_;
239 
240     // recycle
241     std::string recyclePath_;
242 
243     // pending
244     int64_t timePending_;
245 
246     // photo subtype
247     int32_t photoSubType_ = 0;
248 
249     int32_t movingPhotoEffectMode_ = 0;
250 
251     bool forAdd_ = false;
252     std::string tableName_;
253 
254     // packageName
255     std::string ownerPackage_;
256 
257     // image path
258     std::string movingPhotoImagePath_;
259 
260     // cover position of moving photo
261     int64_t coverPosition_ = 0;
262 
263     // frame index of live photo
264     int32_t frameIndex_ = 0;
265 
266     int32_t isTemp_;
267     int32_t photoQuality_ = 0;
268     int32_t dirty_ = 0;
269 
270      // front camera
271     std::string frontcamera_;
272 
273     std::string detailTime_;
274 
275     int32_t burstCoverLevel_;
276 
277     int32_t stageVideoTaskStatus_;
278 };
279 } // namespace Media
280 } // namespace OHOS
281 
282 #endif // METADATA_H
283