• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #define NAPI_VERSION 8
17 
18 #include "core/common/ai/image_analyzer_mgr.h"
19 #include "core/common/ai/image_analyzer_default.h"
20 #include "key_event.h"
21 
22 namespace OHOS::Ace {
GetInstance()23 ImageAnalyzerMgr& ImageAnalyzerMgr::GetInstance()
24 {
25     static ImageAnalyzerMgr instance;
26     return instance;
27 }
28 
ImageAnalyzerMgr()29 ImageAnalyzerMgr::ImageAnalyzerMgr()
30 {
31     auto lib = ImageAnalyzerLoader::Load();
32     if (!lib || (engine_ = lib->CreateImageAnalyzer()) == nullptr) {
33         engine_ = ImageAnalyzerInstance(new ImageAnalyzerDefault, [](ImageAnalyzerInterface* e) {
34             auto* p = reinterpret_cast<ImageAnalyzerDefault*>(e);
35             delete p;
36         });
37     }
38 }
39 
IsImageAnalyzerSupported()40 bool ImageAnalyzerMgr::IsImageAnalyzerSupported()
41 {
42     if (engine_) {
43         return engine_->IsImageAnalyzerSupported();
44     }
45     return false;
46 }
47 
BuildNodeFunc(void * pixelMap,void * config,ImageAnalyzerInnerConfig * uiConfig,void ** overlayData)48 void ImageAnalyzerMgr::BuildNodeFunc(
49     void* pixelMap, void* config, ImageAnalyzerInnerConfig* uiConfig, void** overlayData)
50 {
51     if (engine_) {
52         return engine_->BuildNodeFunc(pixelMap, config, uiConfig, overlayData);
53     }
54 }
BuildNodeFunc(std::string uri,void * pixelMap,int frameTimestamp,void * config,ImageAnalyzerInnerConfig * uiConfig,void ** overlayData)55 void ImageAnalyzerMgr::BuildNodeFunc(std::string uri, void* pixelMap, int frameTimestamp,
56     void* config, ImageAnalyzerInnerConfig* uiConfig, void** overlayData)
57 {
58     if (engine_) {
59         return engine_->BuildNodeFunc(uri, pixelMap, frameTimestamp, config, uiConfig, overlayData);
60     }
61 }
UpdateImage(void ** overlayData,void * pixelMap,void * config,ImageAnalyzerInnerConfig * uiConfig)62 void ImageAnalyzerMgr::UpdateImage(
63     void** overlayData, void* pixelMap, void* config, ImageAnalyzerInnerConfig* uiConfig)
64 {
65     if (engine_) {
66         return engine_->UpdateImage(overlayData, pixelMap, config, uiConfig);
67     }
68 }
UpdateImage(void ** overlayData,std::string uri,void * pixelMap,int frameTimestamp,void * config,ImageAnalyzerInnerConfig * uiConfig)69 void ImageAnalyzerMgr::UpdateImage(void** overlayData, std::string uri, void* pixelMap,
70     int frameTimestamp, void* config, ImageAnalyzerInnerConfig* uiConfig)
71 {
72     if (engine_) {
73         return engine_->UpdateImage(overlayData, uri, pixelMap, frameTimestamp, config, uiConfig);
74     }
75 }
UpdateConfig(void ** overlayData,void * config)76 void ImageAnalyzerMgr::UpdateConfig(void** overlayData, void* config)
77 {
78     if (engine_) {
79         return engine_->UpdateConfig(overlayData, config);
80     }
81 }
UpdateInnerConfig(void ** overlayData,ImageAnalyzerInnerConfig * config)82 void ImageAnalyzerMgr::UpdateInnerConfig(void** overlayData, ImageAnalyzerInnerConfig* config)
83 {
84     if (engine_) {
85         return engine_->UpdateInnerConfig(overlayData, config);
86     }
87 }
Release(void ** overlayData)88 void ImageAnalyzerMgr::Release(void** overlayData)
89 {
90     if (engine_) {
91         return engine_->Release(overlayData);
92     }
93 }
UpdatePressOverlay(void ** overlayData,ImageAnalyzerInnerConfig * config)94 void ImageAnalyzerMgr::UpdatePressOverlay(void** overlayData, ImageAnalyzerInnerConfig* config)
95 {
96     if (engine_) {
97         return engine_->UpdatePressOverlay(overlayData, config);
98     }
99 }
UpdateOverlayStatus(void ** overlayData,ImageAnalyzerInnerConfig * config)100 void ImageAnalyzerMgr::UpdateOverlayStatus(void** overlayData, ImageAnalyzerInnerConfig* config)
101 {
102     if (engine_) {
103         return engine_->UpdateOverlayStatus(overlayData, config);
104     }
105 }
106 
UpdateOverlayActiveStatus(void ** overlayData,bool status)107 void ImageAnalyzerMgr::UpdateOverlayActiveStatus(void** overlayData, bool status)
108 {
109     if (engine_) {
110         return engine_->UpdateOverlayActiveStatus(overlayData, status);
111     }
112 }
113 
UpdateAIButtonConfig(void ** overlayData,AIButtonConfig * config)114 void ImageAnalyzerMgr::UpdateAIButtonConfig(void** overlayData, AIButtonConfig* config)
115 {
116     if (engine_) {
117         return engine_->UpdateAIButtonConfig(overlayData, config);
118     }
119 }
120 
UpdateKeyEvent(void ** overlayData,void * keyEvent)121 void ImageAnalyzerMgr::UpdateKeyEvent(void** overlayData, void* keyEvent)
122 {
123     if (engine_ && keyEvent != nullptr) {
124         auto* event = static_cast<OHOS::MMI::KeyEvent*>(keyEvent);
125         LOGI("ImageAnalyzerMgr::UpdateKeyEvent event.action: %{public}d, event.code: %{public}d", event->GetKeyAction(),
126             event->GetKeyCode());
127         return engine_->UpdateKeyEvent(overlayData, keyEvent);
128     }
129 }
130 }