1 /*
2 * Copyright (c) 2024 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 "multimedia_audio_ffi.h"
17 #include "audio_log.h"
18 #include "multimedia_audio_capturer_callback.h"
19 #include "multimedia_audio_capturer_impl.h"
20 #include "multimedia_audio_error.h"
21 #include "multimedia_audio_manager_impl.h"
22 #include "multimedia_audio_routing_manager_callback.h"
23 #include "multimedia_audio_routing_manager_impl.h"
24 #include "multimedia_audio_stream_manager_callback.h"
25 #include "multimedia_audio_stream_manager_impl.h"
26 #include "multimedia_audio_volume_group_manager_impl.h"
27 #include "multimedia_audio_volume_manager_impl.h"
28
29 using namespace OHOS::FFI;
30
31 namespace OHOS {
32 namespace AudioStandard {
33 extern "C" {
34 // Audio Capturer
FfiMMACreateAudioCapturer(CAudioCapturerOptions options, int32_t *errorCode)35 int64_t FfiMMACreateAudioCapturer(CAudioCapturerOptions options, int32_t *errorCode)
36 {
37 auto capturer = FFIData::Create<MMAAudioCapturerImpl>();
38 if (!capturer) {
39 *errorCode = CJ_ERR_SYSTEM;
40 AUDIO_ERR_LOG("Create MMAAudioCapturerImpl error");
41 return CJ_ERR_INVALID_RETURN_VALUE;
42 }
43 auto ret = capturer->CreateAudioCapturer(options);
44 if (ret != SUCCESS_CODE) {
45 *errorCode = CJ_ERR_SYSTEM;
46 AUDIO_ERR_LOG("CreateAudioCapturer error");
47 return CJ_ERR_INVALID_RETURN_VALUE;
48 }
49 *errorCode = SUCCESS_CODE;
50 return capturer->GetID();
51 }
52
FfiMMAAudioCapturerGetState(int64_t id, int32_t *errorCode)53 int32_t FfiMMAAudioCapturerGetState(int64_t id, int32_t *errorCode)
54 {
55 auto capturer = FFIData::GetData<MMAAudioCapturerImpl>(id);
56 if (!capturer) {
57 *errorCode = CJ_ERR_SYSTEM;
58 AUDIO_ERR_LOG("get state failed, invalid id of AudioCapturer");
59 return CJ_ERR_INVALID_RETURN_VALUE;
60 }
61 return capturer->GetState();
62 }
63
FfiMMAAudioCapturerGetStreamId(int64_t id, int32_t *errorCode)64 uint32_t FfiMMAAudioCapturerGetStreamId(int64_t id, int32_t *errorCode)
65 {
66 auto capturer = FFIData::GetData<MMAAudioCapturerImpl>(id);
67 if (!capturer) {
68 *errorCode = CJ_ERR_SYSTEM;
69 AUDIO_ERR_LOG("get stream id failed, invalid id of AudioCapturer");
70 return CJ_ERR_INVALID_RETURN_VALUE;
71 }
72 return capturer->GetStreamId(errorCode);
73 }
74
FfiMMAAudioCapturerGetAudioTime(int64_t id, int32_t *errorCode)75 int64_t FfiMMAAudioCapturerGetAudioTime(int64_t id, int32_t *errorCode)
76 {
77 auto capturer = FFIData::GetData<MMAAudioCapturerImpl>(id);
78 if (!capturer) {
79 *errorCode = CJ_ERR_SYSTEM;
80 AUDIO_ERR_LOG("get audio time failed, invalid id of AudioCapturer");
81 return CJ_ERR_INVALID_RETURN_VALUE;
82 }
83 return capturer->GetAudioTime(errorCode);
84 }
85
FfiMMAAudioCapturerGetBufferSize(int64_t id, int32_t *errorCode)86 uint32_t FfiMMAAudioCapturerGetBufferSize(int64_t id, int32_t *errorCode)
87 {
88 auto capturer = FFIData::GetData<MMAAudioCapturerImpl>(id);
89 if (!capturer) {
90 *errorCode = CJ_ERR_SYSTEM;
91 AUDIO_ERR_LOG("get buffer size failed, invalid id of AudioCapturer");
92 return CJ_ERR_INVALID_RETURN_VALUE;
93 }
94 return capturer->GetBufferSize(errorCode);
95 }
96
FfiMMAAudioCapturerGetOverflowCount(int64_t id, int32_t *errorCode)97 uint32_t FfiMMAAudioCapturerGetOverflowCount(int64_t id, int32_t *errorCode)
98 {
99 auto capturer = FFIData::GetData<MMAAudioCapturerImpl>(id);
100 if (!capturer) {
101 *errorCode = CJ_ERR_SYSTEM;
102 AUDIO_ERR_LOG("get OverflowCount failed, invalid id of AudioCapturer");
103 return CJ_ERR_INVALID_RETURN_VALUE;
104 }
105 return capturer->GetOverflowCount();
106 }
107
FfiMMAAudioCapturerStart(int64_t id, int32_t *errorCode)108 void FfiMMAAudioCapturerStart(int64_t id, int32_t *errorCode)
109 {
110 auto capturer = FFIData::GetData<MMAAudioCapturerImpl>(id);
111 if (!capturer) {
112 AUDIO_ERR_LOG("AudioCapturer start failed, invalid id of AudioCapturer");
113 *errorCode = CJ_ERR_SYSTEM;
114 }
115 auto isSuccess = capturer->Start();
116 if (isSuccess != SUCCESS_CODE) {
117 *errorCode = isSuccess;
118 }
119 }
120
FfiMMAAudioCapturerStop(int64_t id, int32_t *errorCode)121 void FfiMMAAudioCapturerStop(int64_t id, int32_t *errorCode)
122 {
123 auto capturer = FFIData::GetData<MMAAudioCapturerImpl>(id);
124 if (!capturer) {
125 AUDIO_ERR_LOG("AudioCapturer stop failed, invalid id of AudioCapturer");
126 *errorCode = CJ_ERR_SYSTEM;
127 }
128 auto isSuccess = capturer->Stop();
129 if (isSuccess != SUCCESS_CODE) {
130 *errorCode = isSuccess;
131 }
132 }
133
FfiMMAAudioCapturerRelease(int64_t id, int32_t *errorCode)134 void FfiMMAAudioCapturerRelease(int64_t id, int32_t *errorCode)
135 {
136 auto capturer = FFIData::GetData<MMAAudioCapturerImpl>(id);
137 if (!capturer) {
138 AUDIO_ERR_LOG("AudioCapturer release failed, invalid id of AudioCapturer");
139 *errorCode = CJ_ERR_SYSTEM;
140 }
141 auto isSuccess = capturer->Release();
142 if (isSuccess != SUCCESS_CODE) {
143 *errorCode = isSuccess;
144 }
145 }
146
FfiMMAAudioCapturerGetAudioCapturerChangeInfo(int64_t id, int32_t *errorCode)147 CAudioCapturerChangeInfo FfiMMAAudioCapturerGetAudioCapturerChangeInfo(int64_t id, int32_t *errorCode)
148 {
149 auto capturer = FFIData::GetData<MMAAudioCapturerImpl>(id);
150 if (!capturer) {
151 AUDIO_ERR_LOG("Get AudioCapturerChangeInfo failed, invalid id of AudioCapturer");
152 *errorCode = CJ_ERR_SYSTEM;
153 return CAudioCapturerChangeInfo();
154 }
155 auto info = capturer->GetAudioCapturerChangeInfo(errorCode);
156 return info;
157 }
158
FfiMMAAudioCapturerGetInputDevices(int64_t id, int32_t *errorCode)159 CArrDeviceDescriptor FfiMMAAudioCapturerGetInputDevices(int64_t id, int32_t *errorCode)
160 {
161 auto capturer = FFIData::GetData<MMAAudioCapturerImpl>(id);
162 if (!capturer) {
163 AUDIO_ERR_LOG("Get InputDevices failed, invalid id of AudioCapturer");
164 *errorCode = CJ_ERR_SYSTEM;
165 return CArrDeviceDescriptor();
166 }
167 auto devices = capturer->GetInputDevices(errorCode);
168 return devices;
169 }
170
FfiMMAAudioCapturerGetCapturerInfo(int64_t id, int32_t *errorCode)171 CAudioCapturerInfo FfiMMAAudioCapturerGetCapturerInfo(int64_t id, int32_t *errorCode)
172 {
173 auto capturer = FFIData::GetData<MMAAudioCapturerImpl>(id);
174 if (!capturer) {
175 AUDIO_ERR_LOG("Get AudioCapturerInfo failed, invalid id of AudioCapturer");
176 *errorCode = CJ_ERR_SYSTEM;
177 return CAudioCapturerInfo();
178 }
179 auto info = capturer->GetCurrentCapturerInfo(errorCode);
180 return info;
181 }
182
FfiMMAAudioCapturerGetStreamInfo(int64_t id, int32_t *errorCode)183 CAudioStreamInfo FfiMMAAudioCapturerGetStreamInfo(int64_t id, int32_t *errorCode)
184 {
185 auto capturer = FFIData::GetData<MMAAudioCapturerImpl>(id);
186 if (!capturer) {
187 AUDIO_ERR_LOG("Get StreamInfo failed, invalid id of AudioCapturer");
188 *errorCode = CJ_ERR_SYSTEM;
189 return CAudioStreamInfo();
190 }
191 auto info = capturer->GetStreamInfo(errorCode);
192 return info;
193 }
194
FfiMMAAudioCapturerOn(int64_t id, int32_t callbackType, void (*callback)(), int32_t *errorCode)195 void FfiMMAAudioCapturerOn(int64_t id, int32_t callbackType, void (*callback)(), int32_t *errorCode)
196 {
197 auto capturer = FFIData::GetData<MMAAudioCapturerImpl>(id);
198 if (!capturer) {
199 AUDIO_ERR_LOG("register failed, invalid id of AudioCapturer");
200 *errorCode = CJ_ERR_SYSTEM;
201 }
202 capturer->RegisterCallback(callbackType, callback, errorCode);
203 }
204
FfiMMAAudioCapturerOnWithFrame(int64_t id, int32_t callbackType, void (*callback)(), int64_t frame, int32_t *errorCode)205 void FfiMMAAudioCapturerOnWithFrame(int64_t id, int32_t callbackType, void (*callback)(), int64_t frame,
206 int32_t *errorCode)
207 {
208 auto capturer = FFIData::GetData<MMAAudioCapturerImpl>(id);
209 if (!capturer) {
210 AUDIO_ERR_LOG("register failed, invalid id of AudioCapturer");
211 *errorCode = CJ_ERR_SYSTEM;
212 }
213 capturer->RegisterCallbackWithFrame(callbackType, callback, frame, errorCode);
214 }
215
216 // Audio Manager
FfiMMACreateAudioManager(int32_t *errorCode)217 int64_t FfiMMACreateAudioManager(int32_t *errorCode)
218 {
219 auto mgr = FFIData::Create<MMAAudioManagerImpl>();
220 if (!mgr) {
221 *errorCode = CJ_ERR_SYSTEM;
222 AUDIO_ERR_LOG("Create AudioManager error");
223 return CJ_ERR_INVALID_RETURN_VALUE;
224 }
225 *errorCode = SUCCESS_CODE;
226 return mgr->GetID();
227 }
228
FfiMMAAudioManagerGetRoutingManager(int64_t id, int32_t *errorCode)229 int64_t FfiMMAAudioManagerGetRoutingManager(int64_t id, int32_t *errorCode)
230 {
231 auto mgr = FFIData::GetData<MMAAudioManagerImpl>(id);
232 if (!mgr) {
233 AUDIO_ERR_LOG("Get RoutingManager failed, invalid id of AudioManager");
234 *errorCode = CJ_ERR_SYSTEM;
235 return CJ_ERR_INVALID_RETURN_VALUE;
236 }
237 return mgr->GetRoutingManager(errorCode);
238 }
239
FfiMMAAudioManagerGetStreamManager(int64_t id, int32_t *errorCode)240 int64_t FfiMMAAudioManagerGetStreamManager(int64_t id, int32_t *errorCode)
241 {
242 auto mgr = FFIData::GetData<MMAAudioManagerImpl>(id);
243 if (!mgr) {
244 AUDIO_ERR_LOG("Get StreamManager failed, invalid id of AudioManager");
245 *errorCode = CJ_ERR_SYSTEM;
246 return CJ_ERR_INVALID_RETURN_VALUE;
247 }
248 return mgr->GetStreamManger(errorCode);
249 }
250
FfiMMAAudioManagerGetAudioScene(int64_t id, int32_t *errorCode)251 int32_t FfiMMAAudioManagerGetAudioScene(int64_t id, int32_t *errorCode)
252 {
253 auto mgr = FFIData::GetData<MMAAudioManagerImpl>(id);
254 if (!mgr) {
255 AUDIO_ERR_LOG("Get AudioScene failed, invalid id of AudioManager");
256 *errorCode = CJ_ERR_SYSTEM;
257 return CJ_ERR_INVALID_RETURN_VALUE;
258 }
259 return mgr->GetAudioScene();
260 }
261
FfiMMAAudioManagerGetVolumeManager(int64_t id, int32_t *errorCode)262 int64_t FfiMMAAudioManagerGetVolumeManager(int64_t id, int32_t *errorCode)
263 {
264 auto mgr = FFIData::GetData<MMAAudioManagerImpl>(id);
265 if (mgr == nullptr) {
266 *errorCode = CJ_ERR_SYSTEM;
267 AUDIO_ERR_LOG("FfiMMAAudioManagerGetVolumeManager failed.");
268 return CJ_ERR_INVALID_RETURN_VALUE;
269 }
270 *errorCode = SUCCESS_CODE;
271 return mgr->GetVolumeManager(errorCode);
272 }
273
274 // Audio Stream Manager
FfiMMAASMIsActive(int64_t id, int32_t volumeType, int32_t *errorCode)275 bool FfiMMAASMIsActive(int64_t id, int32_t volumeType, int32_t *errorCode)
276 {
277 auto mgr = FFIData::GetData<MMAAudioStreamManagerImpl>(id);
278 if (!mgr) {
279 AUDIO_ERR_LOG("IsActive failed, invalid id of AudioStreamManager");
280 *errorCode = CJ_ERR_SYSTEM;
281 return false;
282 }
283 return mgr->IsActive(volumeType);
284 }
285
FfiMMAASMGetCurrentAudioCapturerInfoArray(int64_t id, int32_t *errorCode)286 CArrAudioCapturerChangeInfo FfiMMAASMGetCurrentAudioCapturerInfoArray(int64_t id, int32_t *errorCode)
287 {
288 auto mgr = FFIData::GetData<MMAAudioStreamManagerImpl>(id);
289 if (!mgr) {
290 AUDIO_ERR_LOG("Get CurrentAudioCapturerInfoArray failed, invalid id of AudioStreamManager");
291 *errorCode = CJ_ERR_SYSTEM;
292 return CArrAudioCapturerChangeInfo();
293 }
294 return mgr->GetAudioCapturerInfoArray(errorCode);
295 }
296
FfiMMAASMGetAudioEffectInfoArray(int64_t id, int32_t usage, int32_t *errorCode)297 CArrI32 FfiMMAASMGetAudioEffectInfoArray(int64_t id, int32_t usage, int32_t *errorCode)
298 {
299 auto mgr = FFIData::GetData<MMAAudioStreamManagerImpl>(id);
300 if (!mgr) {
301 AUDIO_ERR_LOG("Get AudioEffectInfoArray failed, invalid id of AudioStreamManager");
302 *errorCode = CJ_ERR_SYSTEM;
303 return CArrI32();
304 }
305 return mgr->GetAudioEffectInfoArray(usage, errorCode);
306 }
307
FfiMMAASMOn(int64_t id, int32_t callbackType, void (*callback)(), int32_t *errorCode)308 void FfiMMAASMOn(int64_t id, int32_t callbackType, void (*callback)(), int32_t *errorCode)
309 {
310 auto mgr = FFIData::GetData<MMAAudioStreamManagerImpl>(id);
311 if (!mgr) {
312 AUDIO_ERR_LOG("register failed, invalid id of AudioStreamManager");
313 *errorCode = CJ_ERR_SYSTEM;
314 }
315 mgr->RegisterCallback(callbackType, callback, errorCode);
316 }
317
318 // Audio Routing Manager
FfiMMAARMSetCommunicationDevice(int64_t id, int32_t deviceType, bool active, int32_t *errorCode)319 void FfiMMAARMSetCommunicationDevice(int64_t id, int32_t deviceType, bool active, int32_t *errorCode)
320 {
321 auto mgr = FFIData::GetData<MMAAudioRoutingManagerImpl>(id);
322 if (!mgr) {
323 AUDIO_ERR_LOG("SetCommunicationDevice failed, invalid id of AudioRoutingManager");
324 *errorCode = CJ_ERR_SYSTEM;
325 }
326 *errorCode = mgr->SetCommunicationDevice(deviceType, active);
327 }
328
FfiMMAARMIsCommunicationDeviceActive(int64_t id, int32_t deviceType, int32_t *errorCode)329 bool FfiMMAARMIsCommunicationDeviceActive(int64_t id, int32_t deviceType, int32_t *errorCode)
330 {
331 auto mgr = FFIData::GetData<MMAAudioRoutingManagerImpl>(id);
332 if (!mgr) {
333 AUDIO_ERR_LOG("IsCommunicationDeviceActive failed, invalid id of AudioRoutingManager");
334 *errorCode = CJ_ERR_SYSTEM;
335 return false;
336 }
337 return mgr->IsCommunicationDeviceActive(deviceType);
338 }
339
FfiMMAARMGetDevices(int64_t id, int32_t deviceFlag, int32_t *errorCode)340 CArrDeviceDescriptor FfiMMAARMGetDevices(int64_t id, int32_t deviceFlag, int32_t *errorCode)
341 {
342 auto mgr = FFIData::GetData<MMAAudioRoutingManagerImpl>(id);
343 if (!mgr) {
344 AUDIO_ERR_LOG("GetDevices failed, invalid id of AudioRoutingManager");
345 *errorCode = CJ_ERR_SYSTEM;
346 return CArrDeviceDescriptor();
347 }
348 return mgr->GetDevices(deviceFlag, errorCode);
349 }
350
FfiMMAARMGetPreferredInputDeviceForCapturerInfo(int64_t id, CAudioCapturerInfo capturerInfo, int32_t *errorCode)351 CArrDeviceDescriptor FfiMMAARMGetPreferredInputDeviceForCapturerInfo(int64_t id, CAudioCapturerInfo capturerInfo,
352 int32_t *errorCode)
353 {
354 auto mgr = FFIData::GetData<MMAAudioRoutingManagerImpl>(id);
355 if (!mgr) {
356 AUDIO_ERR_LOG("GetPreferredInputDeviceForCapturerInfo failed, invalid id of AudioRoutingManager");
357 *errorCode = CJ_ERR_SYSTEM;
358 return CArrDeviceDescriptor();
359 }
360 return mgr->GetPreferredInputDeviceForCapturerInfo(capturerInfo, errorCode);
361 }
362
FfiMMAARMOn(int64_t id, int32_t callbackType, void (*callback)(), int32_t *errorCode)363 void FfiMMAARMOn(int64_t id, int32_t callbackType, void (*callback)(), int32_t *errorCode)
364 {
365 auto mgr = FFIData::GetData<MMAAudioRoutingManagerImpl>(id);
366 if (!mgr) {
367 AUDIO_ERR_LOG("register failed, invalid id of AudioRoutingManager");
368 *errorCode = CJ_ERR_SYSTEM;
369 }
370 mgr->RegisterCallback(callbackType, callback, errorCode);
371 }
372
FfiMMAARMOnWithFlags(int64_t id, int32_t callbackType, void (*callback)(), int32_t flags, int32_t *errorCode)373 void FfiMMAARMOnWithFlags(int64_t id, int32_t callbackType, void (*callback)(), int32_t flags, int32_t *errorCode)
374 {
375 auto mgr = FFIData::GetData<MMAAudioRoutingManagerImpl>(id);
376 if (!mgr) {
377 AUDIO_ERR_LOG("register failed, invalid id of AudioRoutingManager");
378 *errorCode = CJ_ERR_SYSTEM;
379 }
380 mgr->RegisterDeviceChangeCallback(callbackType, callback, flags, errorCode);
381 }
382
FfiMMAARMWOnithCapturerInfo(int64_t id, int32_t callbackType, void (*callback)(), CAudioCapturerInfo capturerInfo, int32_t *errorCode)383 void FfiMMAARMWOnithCapturerInfo(int64_t id, int32_t callbackType, void (*callback)(), CAudioCapturerInfo capturerInfo,
384 int32_t *errorCode)
385 {
386 auto mgr = FFIData::GetData<MMAAudioRoutingManagerImpl>(id);
387 if (!mgr) {
388 AUDIO_ERR_LOG("register failed, invalid id of AudioRoutingManager");
389 *errorCode = CJ_ERR_SYSTEM;
390 }
391 mgr->RegisterPreferredInputDeviceChangeCallback(callbackType, callback, capturerInfo, errorCode);
392 }
393
394 /* Audio Volume Manager */
FfiMMAAVMGetVolumeGroupManager(int64_t id, int32_t groupId, int32_t *errorCode)395 int64_t FfiMMAAVMGetVolumeGroupManager(int64_t id, int32_t groupId, int32_t *errorCode)
396 {
397 auto mgr = FFIData::GetData<MMAAudioVolumeManagerImpl>(id);
398 if (mgr == nullptr) {
399 *errorCode = CJ_ERR_SYSTEM;
400 AUDIO_ERR_LOG("FfiMMAAVMGetVolumeGroupManager failed.");
401 return CJ_ERR_INVALID_RETURN_VALUE;
402 }
403 *errorCode = SUCCESS_CODE;
404 return mgr->GetVolumeGroupManager(groupId, errorCode);
405 }
406
407 /* Audio Volumne Group Manager */
FfiMMAAVGMGetMaxVolume(int64_t id, int32_t volumeType, int32_t *errorCode)408 int32_t FfiMMAAVGMGetMaxVolume(int64_t id, int32_t volumeType, int32_t *errorCode)
409 {
410 auto inst = FFIData::GetData<MMAAudioVolumeGroupManagerImpl>(id);
411 if (inst == nullptr) {
412 *errorCode = CJ_ERR_SYSTEM;
413 AUDIO_ERR_LOG("FfiMMAAVGMGetMaxVolume error");
414 return CJ_ERR_INVALID_RETURN_VALUE;
415 }
416 *errorCode = SUCCESS_CODE;
417 return inst->GetMaxVolume(volumeType);
418 }
419
FfiMMAAVGMGetMinVolume(int64_t id, int32_t volumeType, int32_t *errorCode)420 int32_t FfiMMAAVGMGetMinVolume(int64_t id, int32_t volumeType, int32_t *errorCode)
421 {
422 auto inst = FFIData::GetData<MMAAudioVolumeGroupManagerImpl>(id);
423 if (inst == nullptr) {
424 *errorCode = CJ_ERR_SYSTEM;
425 AUDIO_ERR_LOG("FfiMMAAVGMGetMinVolume error");
426 return CJ_ERR_INVALID_RETURN_VALUE;
427 }
428 *errorCode = SUCCESS_CODE;
429 return inst->GetMinVolume(volumeType);
430 }
431
FfiMMAAVGMGetRingerMode(int64_t id, int32_t *errorCode)432 int32_t FfiMMAAVGMGetRingerMode(int64_t id, int32_t *errorCode)
433 {
434 auto inst = FFIData::GetData<MMAAudioVolumeGroupManagerImpl>(id);
435 if (inst == nullptr) {
436 *errorCode = CJ_ERR_SYSTEM;
437 AUDIO_ERR_LOG("FfiMMAAVGMGetRingerMode error");
438 return CJ_ERR_INVALID_RETURN_VALUE;
439 }
440 *errorCode = SUCCESS_CODE;
441 return inst->GetRingerMode();
442 }
443
FfiMMAAVGMGetSystemVolumeInDb(int64_t id, int32_t volumeType, int32_t volumeLevel, int32_t device, int32_t *errorCode)444 float FfiMMAAVGMGetSystemVolumeInDb(int64_t id, int32_t volumeType, int32_t volumeLevel, int32_t device,
445 int32_t *errorCode)
446 {
447 auto inst = FFIData::GetData<MMAAudioVolumeGroupManagerImpl>(id);
448 if (inst == nullptr) {
449 *errorCode = CJ_ERR_SYSTEM;
450 AUDIO_ERR_LOG("FfiMMAAVGMGetSystemVolumeInDb error");
451 return CJ_ERR_INVALID_RETURN_VALUE;
452 }
453 *errorCode = SUCCESS_CODE;
454 return inst->GetSystemVolumeInDb(volumeType, volumeLevel, device);
455 }
456
FfiMMAAVGMGetVolume(int64_t id, int32_t volumeType, int32_t *errorCode)457 int32_t FfiMMAAVGMGetVolume(int64_t id, int32_t volumeType, int32_t *errorCode)
458 {
459 auto inst = FFIData::GetData<MMAAudioVolumeGroupManagerImpl>(id);
460 if (inst == nullptr) {
461 *errorCode = CJ_ERR_SYSTEM;
462 AUDIO_ERR_LOG("FfiMMAAVGMGetVolume error");
463 return CJ_ERR_INVALID_RETURN_VALUE;
464 }
465 *errorCode = SUCCESS_CODE;
466 return inst->GetVolume(volumeType);
467 }
468
FfiMMAAVGMIsMicrophoneMute(int64_t id, int32_t *errorCode)469 bool FfiMMAAVGMIsMicrophoneMute(int64_t id, int32_t *errorCode)
470 {
471 auto inst = FFIData::GetData<MMAAudioVolumeGroupManagerImpl>(id);
472 if (inst == nullptr) {
473 *errorCode = CJ_ERR_SYSTEM;
474 AUDIO_ERR_LOG("Get FfiMMAAVGMIsMicrophoneMute error");
475 return CJ_ERR_INVALID_RETURN_VALUE;
476 }
477 *errorCode = SUCCESS_CODE;
478 return inst->IsMicrophoneMute();
479 }
480
FfiMMAAVGMIsMute(int64_t id, int32_t volumeType, int32_t *errorCode)481 bool FfiMMAAVGMIsMute(int64_t id, int32_t volumeType, int32_t *errorCode)
482 {
483 auto inst = FFIData::GetData<MMAAudioVolumeGroupManagerImpl>(id);
484 if (inst == nullptr) {
485 *errorCode = CJ_ERR_SYSTEM;
486 AUDIO_ERR_LOG("Get FfiMMAAVGMIsMute error");
487 return CJ_ERR_INVALID_RETURN_VALUE;
488 }
489 *errorCode = SUCCESS_CODE;
490 return inst->IsMute(volumeType);
491 }
492
FfiMMAAVGMIsVolumeUnadjustable(int64_t id, int32_t *errorCode)493 bool FfiMMAAVGMIsVolumeUnadjustable(int64_t id, int32_t *errorCode)
494 {
495 auto inst = FFIData::GetData<MMAAudioVolumeGroupManagerImpl>(id);
496 if (inst == nullptr) {
497 *errorCode = CJ_ERR_SYSTEM;
498 AUDIO_ERR_LOG("Get FfiMMAAVGMIsVolumeUnadjustable error");
499 return CJ_ERR_INVALID_RETURN_VALUE;
500 }
501 *errorCode = SUCCESS_CODE;
502 return inst->IsVolumeUnadjustable();
503 }
504 }
505 } // namespace AudioStandard
506 } // namespace OHOS
507