• 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 "metadatahelper_ffi.h"
17 #include "cj_avimagegenerator.h"
18 
19 namespace OHOS {
20 namespace Media {
21 extern "C" {
22 
FfiCreateAVImageGenerator()23 FFI_EXPORT int64_t FfiCreateAVImageGenerator()
24 {
25     auto instance = CJAVImageGeneratorImpl::Create();
26     if (instance == nullptr) {
27         return 0;
28     }
29     return instance->GetID();
30 }
31 
FfiAVImageGeneratorGetFdSrc(int64_t id,CAVFileDescriptor * fd)32 FFI_EXPORT int32_t FfiAVImageGeneratorGetFdSrc(int64_t id, CAVFileDescriptor* fd)
33 {
34     auto instance = FFI::FFIData::GetData<CJAVImageGeneratorImpl>(id);
35     if (instance == nullptr) {
36         return MSERR_UNKNOWN;
37     }
38     return instance->GetAVFileDescriptor(fd);
39 }
40 
FfiAVImageGeneratorSetFdSrc(int64_t id,CAVFileDescriptor fd)41 FFI_EXPORT int32_t FfiAVImageGeneratorSetFdSrc(int64_t id, CAVFileDescriptor fd)
42 {
43     auto instance = FFI::FFIData::GetData<CJAVImageGeneratorImpl>(id);
44     if (instance == nullptr) {
45         return MSERR_UNKNOWN;
46     }
47     return instance->SetAVFileDescriptor(fd);
48 }
49 
FfiFetchFrameByTime(int64_t id,int64_t timeUs,int32_t option,CPixelMapParams param)50 FFI_EXPORT int64_t FfiFetchFrameByTime(int64_t id, int64_t timeUs, int32_t option, CPixelMapParams param)
51 {
52     auto instance = FFI::FFIData::GetData<CJAVImageGeneratorImpl>(id);
53     if (instance == nullptr) {
54         return 0;
55     }
56     return instance->FetchFrameAtTime(timeUs, option, param);
57 }
58 
FfiAVImageGeneratorRelease(int64_t id)59 FFI_EXPORT int32_t FfiAVImageGeneratorRelease(int64_t id)
60 {
61     auto instance = FFI::FFIData::GetData<CJAVImageGeneratorImpl>(id);
62     if (instance == nullptr) {
63         return MSERR_UNKNOWN;
64     }
65     instance->Release();
66     return MSERR_OK;
67 }
68 
FfiCreateAVMetadataExtractor()69 FFI_EXPORT int64_t FfiCreateAVMetadataExtractor()
70 {
71     auto instance = CJAVMetadataExtractorImpl::Create();
72     if (instance == nullptr) {
73         return 0;
74     }
75     return instance->GetID();
76 }
77 
FfiFetchMetadata(int64_t id,CAVMetadata * data)78 FFI_EXPORT int32_t FfiFetchMetadata(int64_t id, CAVMetadata* data)
79 {
80     auto instance = FFI::FFIData::GetData<CJAVMetadataExtractorImpl>(id);
81     if (instance == nullptr) {
82         return MSERR_UNKNOWN;
83     }
84     return instance->FetchMetadata(data);
85 }
86 
FfiFetchAlbumCover(int64_t id)87 FFI_EXPORT int64_t FfiFetchAlbumCover(int64_t id)
88 {
89     auto instance = FFI::FFIData::GetData<CJAVMetadataExtractorImpl>(id);
90     if (instance == nullptr) {
91         return 0;
92     }
93     return instance->FetchAlbumCover();
94 }
95 
FfiAVMetadataExtractorGetFdSrc(int64_t id,CAVFileDescriptor * fd)96 FFI_EXPORT int32_t FfiAVMetadataExtractorGetFdSrc(int64_t id, CAVFileDescriptor* fd)
97 {
98     auto instance = FFI::FFIData::GetData<CJAVMetadataExtractorImpl>(id);
99     if (instance == nullptr) {
100         return MSERR_UNKNOWN;
101     }
102     return instance->GetAVFileDescriptor(fd);
103 }
104 
FfiAVMetadataExtractorSetFdSrc(int64_t id,CAVFileDescriptor fd)105 FFI_EXPORT int32_t FfiAVMetadataExtractorSetFdSrc(int64_t id, CAVFileDescriptor fd)
106 {
107     auto instance = FFI::FFIData::GetData<CJAVMetadataExtractorImpl>(id);
108     if (instance == nullptr) {
109         return MSERR_UNKNOWN;
110     }
111     return instance->SetAVFileDescriptor(fd);
112 }
113 
FfiAVMetadataExtractorGetDataSrc(int64_t id,CAVDataSrcDescriptor * data)114 FFI_EXPORT int32_t FfiAVMetadataExtractorGetDataSrc(int64_t id, CAVDataSrcDescriptor* data)
115 {
116     auto instance = FFI::FFIData::GetData<CJAVMetadataExtractorImpl>(id);
117     if (instance == nullptr) {
118         return MSERR_UNKNOWN;
119     }
120     return instance->GetAVDataSrcDescriptor(data);
121 }
122 
FfiAVMetadataExtractorSetDataSrc(int64_t id,CAVDataSrcDescriptor data)123 FFI_EXPORT int32_t FfiAVMetadataExtractorSetDataSrc(int64_t id, CAVDataSrcDescriptor data)
124 {
125     auto instance = FFI::FFIData::GetData<CJAVMetadataExtractorImpl>(id);
126     if (instance == nullptr) {
127         return MSERR_UNKNOWN;
128     }
129     return instance->SetAVDataSrcDescriptor(data);
130 }
131 
FfiAVMetadataExtractorRelease(int64_t id)132 FFI_EXPORT int32_t FfiAVMetadataExtractorRelease(int64_t id)
133 {
134     auto instance = FFI::FFIData::GetData<CJAVMetadataExtractorImpl>(id);
135     if (instance == nullptr) {
136         return MSERR_UNKNOWN;
137     }
138     instance->Release();
139     return MSERR_OK;
140 }
141 }
142 } // namespace Media
143 } // namespace OHOS
144