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 #include "image_system_properties.h"
17 
18 #if !defined(IOS_PLATFORM) &&!defined(ANDROID_PLATFORM)
19 #include <iostream>
20 #include <fstream>
21 #include <sstream>
22 #include <string>
23 
24 #include <parameter.h>
25 #include <parameters.h>
26 #endif
27 
28 extern "C" {
29 extern char* __progname;
30 }
31 namespace OHOS {
32 namespace Media {
33 #if !defined(_WIN32) && !defined(_APPLE) && !defined(IOS_PLATFORM) &&!defined(ANDROID_PLATFORM)
getCurrentProcessName()34 std::string getCurrentProcessName()
35 {
36     std::string processName;
37 
38     std::ifstream cmdlineFile("/proc/self/cmdline");
39     if (cmdlineFile.is_open()) {
40         std::ostringstream oss;
41         oss << cmdlineFile.rdbuf();
42         cmdlineFile.close();
43 
44         // Extract process name from the command line
45         std::string cmdline = oss.str();
46         size_t pos = cmdline.find_first_of('\0');
47         if (pos != std::string::npos) {
48             processName = cmdline.substr(0, pos);
49         }
50     }
51     return processName;
52 }
53 #endif
54 
GetSkiaEnabled()55 bool ImageSystemProperties::GetSkiaEnabled()
56 {
57 #if !defined(IOS_PLATFORM) &&!defined(ANDROID_PLATFORM)
58     return system::GetBoolParameter("persist.multimedia.image.skdecode.enabled", true);
59 #else
60     return true;
61 #endif
62 }
63 
64 // surfacebuffer tmp switch, only used for test
GetSurfaceBufferEnabled()65 bool ImageSystemProperties::GetSurfaceBufferEnabled()
66 {
67 #if !defined(IOS_PLATFORM) &&!defined(ANDROID_PLATFORM)
68     return system::GetBoolParameter("persist.multimedia.image.surfacebuffer.enabled", false);
69 #else
70     return false;
71 #endif
72 }
73 
GetDmaEnabled()74 bool ImageSystemProperties::GetDmaEnabled()
75 {
76 #if !defined(IOS_PLATFORM) &&!defined(ANDROID_PLATFORM)
77     return system::GetBoolParameter("persist.multimedia.image.dma.enabled", false);
78 #else
79     return false;
80 #endif
81 }
82 
GetDecodeDmaEnabled()83 bool ImageSystemProperties::GetDecodeDmaEnabled()
84 {
85 #if !defined(IOS_PLATFORM) &&!defined(ANDROID_PLATFORM)
86     return system::GetBoolParameter("persist.multimedia.image.decodeDma.enabled", false);
87 #else
88     return false;
89 #endif
90 }
91 
GetAstcEnabled()92 bool ImageSystemProperties::GetAstcEnabled()
93 {
94 #if !defined(IOS_PLATFORM) && !defined(ANDROID_PLATFORM)
95     return system::GetBoolParameter("persist.multimedia.image.AstcZeroCopy.enabled", true);
96 #else
97     return false;
98 #endif
99 }
100 
GetAntiAliasingEnabled()101 bool ImageSystemProperties::GetAntiAliasingEnabled()
102 {
103 #if !defined(IOS_PLATFORM) &&!defined(ANDROID_PLATFORM)
104     return system::GetBoolParameter("persist.multimedia.image.AntiAliasing.enabled", true);
105 #else
106     return false;
107 #endif
108 }
109 
GetDumpImageEnabled()110 bool ImageSystemProperties::GetDumpImageEnabled()
111 {
112 #if !defined(IOS_PLATFORM) && !defined(ANDROID_PLATFORM)
113     return system::GetBoolParameter("persist.multimedia.image.dumpimage.enabled", false);
114 #else
115     return false;
116 #endif
117 }
118 
GetHardWareDecodeEnabled()119 bool ImageSystemProperties::GetHardWareDecodeEnabled()
120 {
121 #if !defined(IOS_PLATFORM) &&!defined(ANDROID_PLATFORM)
122     return system::GetBoolParameter("persist.multimedia.image.hardwaredecode.enabled", false);
123 #else
124     return false;
125 #endif
126 }
127 
GetHardWareEncodeEnabled()128 bool ImageSystemProperties::GetHardWareEncodeEnabled()
129 {
130 #if !defined(IOS_PLATFORM) &&!defined(ANDROID_PLATFORM)
131     return system::GetBoolParameter("persist.multimedia.image.hardwareencode.enabled", true);
132 #else
133     return false;
134 #endif
135 }
136 
GetHeifHardwareDecodeEnabled()137 bool ImageSystemProperties::GetHeifHardwareDecodeEnabled()
138 {
139 #if !defined(IOS_PLATFORM) &&!defined(ANDROID_PLATFORM)
140     return system::GetBoolParameter("persist.multimedia.image.heifhardwaredecode.enabled", true);
141 #else
142     return false;
143 #endif
144 }
145 
GetAstcHardWareEncodeEnabled()146 bool ImageSystemProperties::GetAstcHardWareEncodeEnabled()
147 {
148 #if !defined(IOS_PLATFORM) &&!defined(ANDROID_PLATFORM)
149     return system::GetBoolParameter("persist.multimedia.image.AstcHardWareEncode.enabled", false);
150 #else
151     return false;
152 #endif
153 }
154 
GetSutEncodeEnabled()155 bool ImageSystemProperties::GetSutEncodeEnabled()
156 {
157 #if !defined(IOS_PLATFORM) && !defined(ANDROID_PLATFORM)
158     return system::GetBoolParameter("persist.multimedia.image.SutEncode.enabled", false);
159 #else
160     return false;
161 #endif
162 }
163 
GetMediaLibraryAstcEnabled()164 bool ImageSystemProperties::GetMediaLibraryAstcEnabled()
165 {
166 #if !defined(IOS_PLATFORM) &&!defined(ANDROID_PLATFORM)
167     return system::GetBoolParameter("persist.multimedia.image.GenAstc.enabled", true);
168 #else
169     return false;
170 #endif
171 }
172 
GetSLRParallelEnabled()173 bool ImageSystemProperties::GetSLRParallelEnabled()
174 {
175 #if !defined(IOS_PLATFORM) && !defined(ANDROID_PLATFORM)
176     return system::GetBoolParameter("persist.multimedia.image.Parallel.endabled", true);
177 #else
178     return true;
179 #endif
180 }
181 
182 } // namespace Media
183 } // namespace OHOS
184