xref: /aosp_15_r20/frameworks/av/media/libaudioclient/aidl/android/media/IAudioPolicyService.aidl (revision ec779b8e0859a360c3d303172224686826e6e0e1)
1 /*
2  * Copyright (C) 2021 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.media;
18 
19 import android.content.AttributionSourceState;
20 
21 import android.media.AudioDirectMode;
22 import android.media.AudioMix;
23 import android.media.AudioMixUpdate;
24 import android.media.AudioMixerAttributesInternal;
25 import android.media.AudioOffloadMode;
26 import android.media.AudioPatchFw;
27 import android.media.AudioPolicyDeviceState;
28 import android.media.AudioPolicyForcedConfig;
29 import android.media.AudioPolicyForceUse;
30 import android.media.AudioPortFw;
31 import android.media.AudioPortConfigFw;
32 import android.media.AudioPortRole;
33 import android.media.AudioPortType;
34 import android.media.AudioProductStrategy;
35 import android.media.AudioVolumeGroup;
36 import android.media.DeviceRole;
37 import android.media.EffectDescriptor;
38 import android.media.GetInputForAttrResponse;
39 import android.media.GetOutputForAttrResponse;
40 import android.media.GetSpatializerResponse;
41 import android.media.IAudioPolicyServiceClient;
42 import android.media.ICaptureStateListener;
43 import android.media.INativeSpatializerCallback;
44 import android.media.SoundTriggerSession;
45 import android.media.audio.common.AudioAttributes;
46 import android.media.audio.common.AudioConfig;
47 import android.media.audio.common.AudioConfigBase;
48 import android.media.audio.common.AudioDevice;
49 import android.media.audio.common.AudioDeviceDescription;
50 import android.media.audio.common.AudioFormatDescription;
51 import android.media.audio.common.AudioMMapPolicyInfo;
52 import android.media.audio.common.AudioMMapPolicyType;
53 import android.media.audio.common.AudioMode;
54 import android.media.audio.common.AudioProfile;
55 import android.media.audio.common.AudioOffloadInfo;
56 import android.media.audio.common.AudioPort;
57 import android.media.audio.common.AudioSource;
58 import android.media.audio.common.AudioStreamType;
59 import android.media.audio.common.AudioUsage;
60 import android.media.audio.common.AudioUuid;
61 import android.media.audio.common.Int;
62 
63 import com.android.media.permission.INativePermissionController;
64 
65 /**
66  * IAudioPolicyService interface (see AudioPolicyInterface for method descriptions).
67  *
68  * {@hide}
69  */
70 interface IAudioPolicyService {
onNewAudioModulesAvailable()71     oneway void onNewAudioModulesAvailable();
72 
setDeviceConnectionState(in AudioPolicyDeviceState state, in android.media.audio.common.AudioPort port, in AudioFormatDescription encodedFormat)73     void setDeviceConnectionState(in AudioPolicyDeviceState state,
74                                   in android.media.audio.common.AudioPort port,
75                                   in AudioFormatDescription encodedFormat);
76 
getDeviceConnectionState(in AudioDevice device)77     AudioPolicyDeviceState getDeviceConnectionState(in AudioDevice device);
78 
handleDeviceConfigChange(in AudioDevice device, @utf8InCpp String deviceName, in AudioFormatDescription encodedFormat)79     void handleDeviceConfigChange(in AudioDevice device,
80                                   @utf8InCpp String deviceName,
81                                   in AudioFormatDescription encodedFormat);
82 
setPhoneState(AudioMode state, int uid)83     void setPhoneState(AudioMode state, int /* uid_t */ uid);
84 
setForceUse(AudioPolicyForceUse usage, AudioPolicyForcedConfig config)85     void setForceUse(AudioPolicyForceUse usage,
86                      AudioPolicyForcedConfig config);
87 
getForceUse(AudioPolicyForceUse usage)88     AudioPolicyForcedConfig getForceUse(AudioPolicyForceUse usage);
89 
getOutput(AudioStreamType stream)90     int /* audio_io_handle_t */ getOutput(AudioStreamType stream);
91 
getOutputForAttr(in AudioAttributes attr, int session, in AttributionSourceState attributionSource, in AudioConfig config, int flags, in int[] selectedDeviceIds)92     GetOutputForAttrResponse getOutputForAttr(in AudioAttributes attr,
93                                               int /* audio_session_t */ session,
94                                               in AttributionSourceState attributionSource,
95                                               in AudioConfig config,
96                                               int /* Bitmask, indexed by AudioOutputFlags */ flags,
97                                               in int[] /* audio_port_handle_t */ selectedDeviceIds);
98 
startOutput(int portId)99     void startOutput(int /* audio_port_handle_t */ portId);
100 
stopOutput(int portId)101     void stopOutput(int /* audio_port_handle_t */ portId);
102 
releaseOutput(int portId)103     void releaseOutput(int /* audio_port_handle_t */ portId);
104 
getInputForAttr(in AudioAttributes attr, int input, int riid, int session, in AttributionSourceState attributionSource, in AudioConfigBase config, int flags, int selectedDeviceId)105     GetInputForAttrResponse getInputForAttr(in AudioAttributes attr,
106                                             int /* audio_io_handle_t */ input,
107                                             int /* audio_unique_id_t */ riid,
108                                             int /* audio_session_t */ session,
109                                             in AttributionSourceState attributionSource,
110                                             in AudioConfigBase config,
111                                             int /* Bitmask, indexed by AudioInputFlags */ flags,
112                                             int /* audio_port_handle_t */ selectedDeviceId);
113 
114 
startInput(int portId)115     void startInput(int /* audio_port_handle_t */ portId);
116 
stopInput(int portId)117     void stopInput(int /* audio_port_handle_t */ portId);
118 
releaseInput(int portId)119     void releaseInput(int /* audio_port_handle_t */ portId);
120 
setDeviceAbsoluteVolumeEnabled(in AudioDevice device, boolean enabled, AudioStreamType streamToDriveAbs)121     void setDeviceAbsoluteVolumeEnabled(in AudioDevice device,
122                                         boolean enabled,
123                                         AudioStreamType streamToDriveAbs);
124 
initStreamVolume(AudioStreamType stream, int indexMin, int indexMax)125     void initStreamVolume(AudioStreamType stream,
126                           int indexMin,
127                           int indexMax);
128 
setStreamVolumeIndex(AudioStreamType stream, in AudioDeviceDescription device, int index, boolean muted)129     void setStreamVolumeIndex(AudioStreamType stream,
130                               in AudioDeviceDescription device,
131                               int index, boolean muted);
132 
getStreamVolumeIndex(AudioStreamType stream, in AudioDeviceDescription device)133     int getStreamVolumeIndex(AudioStreamType stream,
134                              in AudioDeviceDescription device);
135 
setVolumeIndexForAttributes(in AudioAttributes attr, in AudioDeviceDescription device, int index, boolean muted)136     void setVolumeIndexForAttributes(in AudioAttributes attr,
137                                      in AudioDeviceDescription device,
138                                      int index, boolean muted);
139 
getVolumeIndexForAttributes(in AudioAttributes attr, in AudioDeviceDescription device)140     int getVolumeIndexForAttributes(in AudioAttributes attr,
141                                     in AudioDeviceDescription device);
142 
getMaxVolumeIndexForAttributes(in AudioAttributes attr)143     int getMaxVolumeIndexForAttributes(in AudioAttributes attr);
144 
getMinVolumeIndexForAttributes(in AudioAttributes attr)145     int getMinVolumeIndexForAttributes(in AudioAttributes attr);
146 
getStrategyForStream(AudioStreamType stream)147     int /* product_strategy_t */ getStrategyForStream(AudioStreamType stream);
148 
getDevicesForAttributes(in AudioAttributes attr, boolean forVolume)149     AudioDevice[] getDevicesForAttributes(in AudioAttributes attr, boolean forVolume);
150 
getOutputForEffect(in EffectDescriptor desc)151     int /* audio_io_handle_t */ getOutputForEffect(in EffectDescriptor desc);
152 
registerEffect(in EffectDescriptor desc, int io, int strategy, int session, int id)153     void registerEffect(in EffectDescriptor desc,
154                         int /* audio_io_handle_t */ io,
155                         int /* product_strategy_t */ strategy,
156                         int /* audio_session_t */ session,
157                         int id);
158 
unregisterEffect(int id)159     void unregisterEffect(int id);
160 
setEffectEnabled(int id, boolean enabled)161     void setEffectEnabled(int id, boolean enabled);
162 
moveEffectsToIo(in int[] ids, int io)163     void moveEffectsToIo(in int[] ids, int /* audio_io_handle_t */ io);
164 
isStreamActive(AudioStreamType stream, int inPastMs)165     boolean isStreamActive(AudioStreamType stream, int inPastMs);
166 
isStreamActiveRemotely(AudioStreamType stream, int inPastMs)167     boolean isStreamActiveRemotely(AudioStreamType stream, int inPastMs);
168 
isSourceActive(AudioSource source)169     boolean isSourceActive(AudioSource source);
170 
171     /**
172      * On input, count represents the maximum length of the returned array.
173      * On output, count is the total number of elements, which may be larger than the array size.
174      * Passing '0' on input and inspecting the value on output is a common way of determining the
175      * number of elements without actually retrieving them.
176      */
queryDefaultPreProcessing(int audioSession, inout Int count)177     EffectDescriptor[] queryDefaultPreProcessing(int /* audio_session_t */ audioSession,
178                                                  inout Int count);
179 
addSourceDefaultEffect(in AudioUuid type, @utf8InCpp String opPackageName, in AudioUuid uuid, int priority, AudioSource source)180     int /* audio_unique_id_t */ addSourceDefaultEffect(in AudioUuid type,
181                                                        @utf8InCpp String opPackageName,
182                                                        in AudioUuid uuid,
183                                                        int priority,
184                                                        AudioSource source);
185 
addStreamDefaultEffect(in AudioUuid type, @utf8InCpp String opPackageName, in AudioUuid uuid, int priority, AudioUsage usage)186     int /* audio_unique_id_t */ addStreamDefaultEffect(in AudioUuid type,
187                                                        @utf8InCpp String opPackageName,
188                                                        in AudioUuid uuid,
189                                                        int priority,
190                                                        AudioUsage usage);
191 
removeSourceDefaultEffect(int id)192     void removeSourceDefaultEffect(int /* audio_unique_id_t */ id);
193 
removeStreamDefaultEffect(int id)194     void removeStreamDefaultEffect(int /* audio_unique_id_t */ id);
195 
setSupportedSystemUsages(in AudioUsage[] systemUsages)196     void setSupportedSystemUsages(in AudioUsage[] systemUsages);
197 
setAllowedCapturePolicy(int uid, int capturePolicy)198     void setAllowedCapturePolicy(int /* uid_t */ uid,
199                                  int /* Bitmask of AudioFlags */ capturePolicy);
200 
201     /**
202      * Check if offload is possible for given format, stream type, sample rate,
203      * bit rate, duration, video and streaming or offload property is enabled.
204      */
getOffloadSupport(in AudioOffloadInfo info)205     AudioOffloadMode getOffloadSupport(in AudioOffloadInfo info);
206 
207     /**
208      * Check if direct playback is possible for given format, sample rate, channel mask and flags.
209      */
isDirectOutputSupported(in AudioConfigBase config, in AudioAttributes attributes)210     boolean isDirectOutputSupported(in AudioConfigBase config,
211                                     in AudioAttributes attributes);
212 
213     /**
214      * List currently attached audio ports and their attributes. Returns the generation.
215      * The generation is incremented each time when anything changes in the ports
216      * configuration.
217      *
218      * On input, count represents the maximum length of the returned array.
219      * On output, count is the total number of elements, which may be larger than the array size.
220      * Passing '0' on input and inspecting the value on output is a common way of determining the
221      * number of elements without actually retrieving them.
222      */
listAudioPorts(AudioPortRole role, AudioPortType type, inout Int count, out AudioPortFw[] ports)223     int listAudioPorts(AudioPortRole role,
224                        AudioPortType type,
225                        inout Int count,
226                        out AudioPortFw[] ports);
227 
228     /**
229      * List all device ports declared in the configuration (including currently detached ones)
230      * 'role' can be 'NONE' to get both input and output devices,
231      * 'SINK' for output devices, and 'SOURCE' for input devices.
232      */
listDeclaredDevicePorts(AudioPortRole role)233     AudioPortFw[] listDeclaredDevicePorts(AudioPortRole role);
234 
235     /** Get attributes for the audio port with the given id (AudioPort.hal.id field). */
getAudioPort(int portId)236     AudioPortFw getAudioPort(int /* audio_port_handle_t */ portId);
237 
238     /**
239      * Create an audio patch between several source and sink ports.
240      * The handle argument is used when updating an existing patch.
241      */
createAudioPatch(in AudioPatchFw patch, int handle)242     int /* audio_patch_handle_t */ createAudioPatch(in AudioPatchFw patch, int handle);
243 
244     /** Release an audio patch. */
releaseAudioPatch(int handle)245     void releaseAudioPatch(int /* audio_patch_handle_t */ handle);
246 
247     /**
248      * List existing audio patches. Returns the generation.
249      *
250      * On input, count represents the maximum length of the returned array.
251      * On output, count is the total number of elements, which may be larger than the array size.
252      * Passing '0' on input and inspecting the value on output is a common way of determining the
253      * number of elements without actually retrieving them.
254      */
listAudioPatches(inout Int count, out AudioPatchFw[] patches)255     int listAudioPatches(inout Int count, out AudioPatchFw[] patches);
256 
257     /** Set audio port configuration. */
setAudioPortConfig(in AudioPortConfigFw config)258     void setAudioPortConfig(in AudioPortConfigFw config);
259 
registerClient(IAudioPolicyServiceClient client)260     void registerClient(IAudioPolicyServiceClient client);
261 
setAudioPortCallbacksEnabled(boolean enabled)262     void setAudioPortCallbacksEnabled(boolean enabled);
263 
setAudioVolumeGroupCallbacksEnabled(boolean enabled)264     void setAudioVolumeGroupCallbacksEnabled(boolean enabled);
265 
acquireSoundTriggerSession()266     SoundTriggerSession acquireSoundTriggerSession();
267 
releaseSoundTriggerSession(int session)268     void releaseSoundTriggerSession(int /* audio_session_t */ session);
269 
getPhoneState()270     AudioMode getPhoneState();
271 
registerPolicyMixes(in AudioMix[] mixes, boolean registration)272     void registerPolicyMixes(in AudioMix[] mixes, boolean registration);
273 
getRegisteredPolicyMixes()274     List<AudioMix> getRegisteredPolicyMixes();
275 
updatePolicyMixes(in AudioMixUpdate[] updates)276     void updatePolicyMixes(in AudioMixUpdate[] updates);
277 
setUidDeviceAffinities(int uid, in AudioDevice[] devices)278     void setUidDeviceAffinities(int /* uid_t */ uid, in AudioDevice[] devices);
279 
removeUidDeviceAffinities(int uid)280     void removeUidDeviceAffinities(int /* uid_t */ uid);
281 
setUserIdDeviceAffinities(int userId, in AudioDevice[] devices)282     void setUserIdDeviceAffinities(int userId, in AudioDevice[] devices);
283 
removeUserIdDeviceAffinities(int userId)284     void removeUserIdDeviceAffinities(int userId);
285 
startAudioSource(in AudioPortConfigFw source, in AudioAttributes attributes)286     int /* audio_port_handle_t */ startAudioSource(in AudioPortConfigFw source,
287                                                    in AudioAttributes attributes);
288 
stopAudioSource(int portId)289     void stopAudioSource(int /* audio_port_handle_t */ portId);
290 
setMasterMono(boolean mono)291     void setMasterMono(boolean mono);
292 
getMasterMono()293     boolean getMasterMono();
294 
getStreamVolumeDB(AudioStreamType stream, int index, in AudioDeviceDescription device)295     float getStreamVolumeDB(AudioStreamType stream, int index, in AudioDeviceDescription device);
296 
297     /**
298      * Populates supported surround formats and their enabled state in formats and formatsEnabled.
299      *
300      * On input, count represents the maximum length of the returned array.
301      * On output, count is the total number of elements, which may be larger than the array size.
302      * Passing '0' on input and inspecting the value on output is a common way of determining the
303      * number of elements without actually retrieving them.
304      */
getSurroundFormats(inout Int count, out AudioFormatDescription[] formats, out boolean[] formatsEnabled)305     void getSurroundFormats(inout Int count,
306                             out AudioFormatDescription[] formats,
307                             out boolean[] formatsEnabled);
308 
309     /**
310      * Populates the surround formats reported by the HDMI devices in formats.
311      *
312      * On input, count represents the maximum length of the returned array.
313      * On output, count is the total number of elements, which may be larger than the array size.
314      * Passing '0' on input and inspecting the value on output is a common way of determining the
315      * number of elements without actually retrieving them.
316      */
getReportedSurroundFormats(inout Int count, out AudioFormatDescription[] formats)317     void getReportedSurroundFormats(inout Int count,
318                                     out AudioFormatDescription[] formats);
319 
getHwOffloadFormatsSupportedForBluetoothMedia( in AudioDeviceDescription device)320     AudioFormatDescription[] getHwOffloadFormatsSupportedForBluetoothMedia(
321                                     in AudioDeviceDescription device);
322 
setSurroundFormatEnabled(in AudioFormatDescription audioFormat, boolean enabled)323     void setSurroundFormatEnabled(in AudioFormatDescription audioFormat, boolean enabled);
324 
setAssistantServicesUids(in int[] uids)325     void setAssistantServicesUids(in int[] /* uid_t[] */ uids);
326 
setActiveAssistantServicesUids(in int[] activeUids)327     void setActiveAssistantServicesUids(in int[] /* uid_t[] */ activeUids);
328 
setA11yServicesUids(in int[] uids)329     void setA11yServicesUids(in int[] /* uid_t[] */ uids);
330 
setCurrentImeUid(int uid)331     void setCurrentImeUid(int /* uid_t */ uid);
332 
isHapticPlaybackSupported()333     boolean isHapticPlaybackSupported();
334 
isUltrasoundSupported()335     boolean isUltrasoundSupported();
336 
337     /**
338      * Queries if there is hardware support for requesting audio capture content from
339      * the DSP hotword pipeline.
340      *
341      * @param lookbackAudio true if additionally querying for the ability to capture audio
342      *                      from the pipeline prior to capture stream open.
343      */
isHotwordStreamSupported(boolean lookbackAudio)344     boolean isHotwordStreamSupported(boolean lookbackAudio);
345 
listAudioProductStrategies()346     AudioProductStrategy[] listAudioProductStrategies();
getProductStrategyFromAudioAttributes( in AudioAttributes aa, boolean fallbackOnDefault)347     int /* product_strategy_t */ getProductStrategyFromAudioAttributes(
348             in AudioAttributes aa, boolean fallbackOnDefault);
349 
listAudioVolumeGroups()350     AudioVolumeGroup[] listAudioVolumeGroups();
getVolumeGroupFromAudioAttributes(in AudioAttributes aa, boolean fallbackOnDefault)351     int /* volume_group_t */ getVolumeGroupFromAudioAttributes(in AudioAttributes aa,
352                                                                boolean fallbackOnDefault);
353 
setRttEnabled(boolean enabled)354     void setRttEnabled(boolean enabled);
355 
isCallScreenModeSupported()356     boolean isCallScreenModeSupported();
357 
setDevicesRoleForStrategy(int strategy, DeviceRole role, in AudioDevice[] devices)358     void setDevicesRoleForStrategy(int /* product_strategy_t */ strategy,
359                                    DeviceRole role,
360                                    in AudioDevice[] devices);
361 
removeDevicesRoleForStrategy(int strategy, DeviceRole role, in AudioDevice[] devices)362     void removeDevicesRoleForStrategy(int /* product_strategy_t */ strategy,
363                                       DeviceRole role,
364                                       in AudioDevice[] devices);
365 
clearDevicesRoleForStrategy(int strategy, DeviceRole role)366     void clearDevicesRoleForStrategy(int /* product_strategy_t */ strategy, DeviceRole role);
367 
getDevicesForRoleAndStrategy(int strategy, DeviceRole role)368     AudioDevice[] getDevicesForRoleAndStrategy(int /* product_strategy_t */ strategy,
369                                                DeviceRole role);
370 
setDevicesRoleForCapturePreset(AudioSource audioSource, DeviceRole role, in AudioDevice[] devices)371     void setDevicesRoleForCapturePreset(AudioSource audioSource,
372                                         DeviceRole role,
373                                         in AudioDevice[] devices);
374 
addDevicesRoleForCapturePreset(AudioSource audioSource, DeviceRole role, in AudioDevice[] devices)375     void addDevicesRoleForCapturePreset(AudioSource audioSource,
376                                         DeviceRole role,
377                                         in AudioDevice[] devices);
378 
removeDevicesRoleForCapturePreset(AudioSource audioSource, DeviceRole role, in AudioDevice[] devices)379     void removeDevicesRoleForCapturePreset(AudioSource audioSource,
380                                            DeviceRole role,
381                                            in AudioDevice[] devices);
382 
clearDevicesRoleForCapturePreset(AudioSource audioSource, DeviceRole role)383     void clearDevicesRoleForCapturePreset(AudioSource audioSource,
384                                           DeviceRole role);
385 
getDevicesForRoleAndCapturePreset(AudioSource audioSource, DeviceRole role)386     AudioDevice[] getDevicesForRoleAndCapturePreset(AudioSource audioSource,
387                                                     DeviceRole role);
388 
registerSoundTriggerCaptureStateListener(ICaptureStateListener listener)389     boolean registerSoundTriggerCaptureStateListener(ICaptureStateListener listener);
390 
391     /** If a spatializer stage effect is present on the platform, this will return an
392      * ISpatializer interface (see GetSpatializerResponse,aidl) to control this
393      * feature.
394      * If no spatializer stage is present, a null interface is returned.
395      * The INativeSpatializerCallback passed must not be null.
396      * Only one ISpatializer interface can exist at a given time. The native audio policy
397      * service will reject the request if an interface was already acquired and previous owner
398      * did not die or call ISpatializer.release().
399      */
getSpatializer(INativeSpatializerCallback callback)400     GetSpatializerResponse getSpatializer(INativeSpatializerCallback callback);
401 
402     /** Queries if some kind of spatialization will be performed if the audio playback context
403      * described by the provided arguments is present.
404      * The context is made of:
405      * - The audio attributes describing the playback use case.
406      * - The audio configuration describing the audio format, channels, sampling rate...
407      * - The devices describing the sink audio device selected for playback.
408      * All arguments are optional and only the specified arguments are used to match against
409      * supported criteria. For instance, supplying no argument will tell if spatialization is
410      * supported or not in general.
411      */
canBeSpatialized(in @ullable AudioAttributes attr, in @nullable AudioConfig config, in AudioDevice[] devices)412     boolean canBeSpatialized(in @nullable AudioAttributes attr,
413                              in @nullable AudioConfig config,
414                              in AudioDevice[] devices);
415 
416     /**
417      * Query how the direct playback is currently supported on the device.
418      */
getDirectPlaybackSupport(in AudioAttributes attr, in AudioConfig config)419     AudioDirectMode getDirectPlaybackSupport(in AudioAttributes attr,
420                                               in AudioConfig config);
421 
422     /**
423      * Query audio profiles available for direct playback on the current output device(s)
424      * for the specified audio attributes.
425      */
getDirectProfilesForAttributes(in AudioAttributes attr)426     AudioProfile[] getDirectProfilesForAttributes(in AudioAttributes attr);
427 
428     /**
429      * Return a list of AudioMixerAttributes that can be used to set preferred mixer attributes
430      * for the given device.
431      */
getSupportedMixerAttributes( int portId)432     AudioMixerAttributesInternal[] getSupportedMixerAttributes(
433             int /* audio_port_handle_t */ portId);
434 
435     /**
436      * Set preferred mixer attributes for a given device on a given audio attributes.
437      * When conflicting requests are received, the last request will be honored.
438      * The preferred mixer attributes can only be set when 1) the usage is media, 2) the
439      * given device is currently available, 3) the given device is usb device, 4) the given mixer
440      * attributes is supported by the given device.
441      *
442      * @param attr the audio attributes whose mixer attributes should be set.
443      * @param portId the port id of the device to be routed.
444      * @param uid the uid of the request client. The uid will be used to recognize the ownership for
445      *            the preferred mixer attributes. All the playback with same audio attributes from
446      *            the same uid will be attached to the mixer with the preferred attributes if the
447      *            playback is routed to the given device.
448      * @param mixerAttr the preferred mixer attributes.
449      */
setPreferredMixerAttributes(in AudioAttributes attr, int portId, int uid, in AudioMixerAttributesInternal mixerAttr)450     void setPreferredMixerAttributes(in AudioAttributes attr,
451                                      int /* audio_port_handle_t */ portId,
452                                      int /* uid_t */ uid,
453                                      in AudioMixerAttributesInternal mixerAttr);
454 
455     /**
456      * Get preferred mixer attributes for a given device on a given audio attributes.
457      * Null will be returned if there is no preferred mixer attributes set or it has
458      * been cleared.
459      *
460      * @param attr the audio attributes whose mixer attributes should be set.
461      * @param portId the port id of the device to be routed.
462      */
getPreferredMixerAttributes( in AudioAttributes attr, int portId)463     @nullable AudioMixerAttributesInternal getPreferredMixerAttributes(
464             in AudioAttributes attr,
465             int /* audio_port_handle_t */ portId);
466 
467     /**
468      * Clear preferred mixer attributes for a given device on a given audio attributes that
469      * is previously set via setPreferredMixerAttributes.
470      *
471      * @param attr the audio attributes whose mixer attributes should be set.
472      * @param portId the port id of the device to be routed.
473      * @param uid the uid of the request client. The uid is used to identify the ownership for the
474      *            preferred mixer attributes. The preferred mixer attributes will only be cleared
475      *            if the uid is the same as the owner of current preferred mixer attributes.
476      */
clearPreferredMixerAttributes(in AudioAttributes attr, int portId, int uid)477     void clearPreferredMixerAttributes(in AudioAttributes attr,
478                                        int /* audio_port_handle_t */ portId,
479                                        int /* uid_t */ uid);
480 
481 
482     /**
483      * Get the native permission controller for audioserver, to push package and permission info
484      * required to control audio access.
485      */
getPermissionController()486     INativePermissionController getPermissionController();
487 
488     /**
489      * Query mmap policy information.
490      */
getMmapPolicyInfos(AudioMMapPolicyType policyType)491     AudioMMapPolicyInfo[] getMmapPolicyInfos(AudioMMapPolicyType policyType);
492 
493     /**
494      * Get all devices that support AAudio MMAP.
495      */
getMmapPolicyForDevice(AudioMMapPolicyType policyType, inout AudioMMapPolicyInfo policyInfo)496     void getMmapPolicyForDevice(AudioMMapPolicyType policyType,
497                                 inout AudioMMapPolicyInfo policyInfo);
498     // When adding a new method, please review and update
499     // AudioPolicyService.cpp AudioPolicyService::onTransact()
500     // AudioPolicyService.cpp IAUDIOPOLICYSERVICE_BINDER_METHOD_MACRO_LIST
501 }
502