/* * Copyright (C) 2019 MediaTek Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include "managerdefault/AudioPolicyManager.h" namespace android { class AudioPolicyManager; typedef enum { AAUDIO_COND_GET_OUTPUT_FOR_DEVICE = 0, AAUDIO_COND_GET_INPUT_FOR_ATTR, AAUDIO_COND_GET_INPUT_FOR_DEVICE, AAUDIO_COND_MAX, } aaudio_cond_t; typedef enum { SWBRIDGE_PHONE_CALL_DISABLE = 0, SWBRIDGE_PHONE_CALL_ENABLE, SWBRIDGE_PHONE_CALL_MAX, } swbridgephonecall_cmd_t; class AudioPolicyManagerCustomInterface { public: virtual ~AudioPolicyManagerCustomInterface() {} virtual status_t common_set(AudioPolicyManager *audioPolicyManger) = 0; virtual audio_stream_type_t gainTable_getVolumeStream() = 0; virtual int gainTable_getVolumeIndex() = 0; virtual DeviceTypeSet gainTable_getVolumeDevice() = 0; virtual status_t gainTable_setVolumeStream(audio_stream_type_t stream) = 0; virtual status_t gainTable_setVolumeIndex(int index) = 0; virtual status_t gainTable_setVolumeDevice(DeviceTypeSet device) = 0; virtual status_t gainTable_getCustomAudioVolume(void) = 0; virtual float gainTable_getVolumeDbFromComputeVolume(VolumeSource volsrc, int index, DeviceTypeSet device, float volumeDB) = 0; virtual DeviceTypeSet gainTable_getDeviceFromComputeVolume(VolumeSource volumeSource, int index, audio_devices_t device) = 0; virtual float gainTable_getCorrectVolumeDbFromComputeVolume(VolumeSource volumeSource, float volumeDB, DeviceTypeSet device) = 0; virtual DeviceTypeSet gainTable_checkInvalidDeviceFromCheckAndSetVolume(const sp& outputDesc, DeviceTypeSet device) = 0; virtual status_t gainTable_applyAnalogGainFromCheckAndSetVolume(VolumeSource volumeSource, int index, const sp& outputDesc, DeviceTypeSet device, int delayMs, bool force) = 0; virtual status_t gainTable_setVolumeFromCheckAndSetVolume(VolumeSource volsrc, int index, const sp& outputDesc, DeviceTypeSet device, int delayMs, bool force, float volumeDb) = 0; virtual status_t gainTable_routeAndApplyVolumeFromStopSource(const sp& outputDesc, DeviceVector device, audio_stream_type_t stream, bool force) = 0; virtual bool gainTable_skipAdjustGainFromSetStreamVolumeIndex(audio_devices_t curDevice, audio_devices_t wantDevice) = 0; virtual audio_devices_t gainTable_replaceApplyDeviceFromSetStreamVolumeIndex(audio_devices_t outputDevice, audio_devices_t curDevice) = 0; virtual void gainTable_initXML(); virtual status_t common_setPolicyManagerCustomParameters(int par1, int par2, int par3, int par4) = 0; virtual audio_output_flags_t common_getFlagsForClientDescFromCheckOutputForAttributes(sp clientDesc); virtual status_t fm_initOutputIdForApp(void) = 0; virtual DeviceVector fm_correctDeviceFromSetDeviceConnectionStateInt(const sp& outputDesc, DeviceVector device, bool force) = 0; virtual status_t fm_addAudioPatch(audio_patch_handle_t handle, const sp& patch) = 0; virtual status_t fm_removeAudioPatch(audio_patch_handle_t handle) = 0; virtual status_t fm_applyGainFromCheckAndSetVolume(VolumeSource volumeSource, int index, const sp& outputDesc,DeviceTypeSet device, int delayMs, bool force) = 0; virtual status_t fm_muteStrategyFromCheckOutputForStrategy(const audio_attributes_t &attr, DeviceVector oldDevice, DeviceVector newDevice) = 0; virtual status_t fm_checkSkipVolumeFromCheckOutputForStrategy(const audio_attributes_t &attr, DeviceVector oldDevice, DeviceVector newDevice) = 0; virtual status_t fm_releaseSkipVolumeFromCheckOutputForStrategy(void) = 0; virtual bool fm_checkFirstMusicFromStartSource(const sp& outputDesc, audio_stream_type_t stream) = 0; virtual uint32_t fm_extendMuteFromCheckDeviceMuteStrategies(const sp& outputDesc, VolumeSource volumeSource, uint32_t muteDurationMs, uint32_t extendDurationMs) = 0; virtual status_t fm_signalAPProutingFromSetOutputDevice(const sp& outputDesc, bool force) = 0; virtual uint32_t fm_extendSleepFromCheckDeviceMuteStrategies(const sp& outputDesc, uint32_t muteWaitMs) = 0; virtual status_t usbPhoneCall_closeAllInputsFromSetPhoneState(void) = 0; virtual status_t setCurModeFromSetPhoneState(audio_mode_t state) = 0; virtual status_t gainNvram_remapIndexRangeFromInitStreamVolume(audio_stream_type_t stream, int *indexMin, int *indexMax) = 0; virtual status_t gainNvram_remapIndexFromSetStreamVolumeIndex(audio_stream_type_t stream, int *index, audio_devices_t device) = 0; virtual status_t gainNvram_remapIndexFromGetStreamVolumeIndex(audio_stream_type_t stream, int *index, audio_devices_t device) = 0; virtual status_t lowLatency_updatePrimaryModuleDeviceFromSetPhoneState(audio_mode_t state, DeviceTypeSet rxDevice) = 0; virtual status_t lowLatency_CheckSpeakerProtectionDevice(const sp& outProfile) = 0; virtual bool lowLatency_skipSelectedDeviceFormSetOutputDevice(const sp& outputDesc, const DeviceVector &devices) = 0; virtual bool lowLatency_skipOutputCheckFromGetOutputsForDevice(audio_devices_t device, const SwAudioOutputCollection& openOutputs, size_t i) = 0; virtual bool lowLatency_stopToRouteFromStopSource(audio_devices_t newDevice, const sp& outputDesc) = 0; virtual bool lowLatency_startToRouteFromStartSource(const sp& outputDesc, bool beFirstActive) = 0; virtual bool lowLatency_isOutputActiveFromStartSource(const sp& outputDesc) = 0; virtual bool lowLatency_setOutputFirstActiveFromStartSource(const sp& outputDesc, bool beFirstActive, DeviceVector device) = 0; virtual bool lowLatency_checkOutputFirstActiveFromSetOutputDevice(const sp& outputDesc) = 0; virtual status_t besLoudness_signalDupOutputFromSetOutputDevice(const sp& outputDesc, const DeviceVector &device, int delayMs) = 0; virtual status_t offload_invalidateMusicForInCallFromSetPhoneState(audio_mode_t state, int oldState) = 0; virtual bool offload_isInCallFromIsOffloadSupported(void) = 0; virtual bool debug_skipShowLog() = 0; virtual bool debug_showGetOutputForAttr(audio_devices_t device, const audio_config_t *config, audio_output_flags_t flags, audio_stream_type_t stream, audio_io_handle_t output) = 0; virtual bool debug_showGetInputForAttr(AudioPolicyInterface::input_type_t inputType, audio_devices_t device, audio_io_handle_t input) = 0; virtual bool debug_showSetOutputDevice(const sp& outputDesc, const DeviceVector & device, bool force, int delayMs) = 0; virtual status_t hifiAudio_startOutputSamplerate(audio_port_handle_t portId, int samplerate) = 0; virtual status_t hifiAudio_stopOutputSamplerate(audio_port_handle_t portId, int samplerate) = 0; virtual status_t hifiAudio_initSetting(void) = 0; virtual status_t hifiAudio_addOutput(audio_io_handle_t output, const sp& outputDesc) = 0; virtual status_t hifiAudio_removeOutput(audio_io_handle_t outputHandle) = 0; virtual bool hifiAudio_needCheckMuteForPhoneCall(DeviceVector newDevices, DeviceVector oldDevices) = 0; virtual bool hifiAudio_needCheckInvalidateFromCheckOutputForAttributes(DeviceVector newDevices, DeviceVector oldDevices) = 0; virtual bool hifiAudio_invalidateStream(audio_io_handle_t ioHandle, uint32_t samplingRate, DeviceVector newDevices, DeviceVector oldDevices) = 0; virtual bool aaudio_conidtionCheck(aaudio_cond_t cond, audio_input_flags_t inflags, audio_output_flags_t outflags, audio_mode_t state) = 0; virtual int hifiAudio_getCachedHIFIState(void) = 0; virtual status_t aaudio_invalidateMMAPStream(void) = 0; virtual status_t aaudio_policyForceReplaceSampleRate(sp desc) = 0; virtual status_t common_muteStrategyFromCheckOutputForStrategy(SortedVector dstOutput, const audio_attributes_t &attr, DeviceTypeSet oldDevice, DeviceTypeSet newDevice) = 0; virtual status_t common_extendMuteTimeForUSBFromCheckOutputForStrategy(uint32_t& maxLatency, DeviceVector oldDevice) = 0; virtual status_t common_extendMuteTimeForBLEFromCheckOutputForStrategy(uint32_t& maxLatency, DeviceVector newDevice) = 0; virtual audio_io_handle_t multipleRecord_policySelectInput(sp& profile, bool isSoundTrigger, audio_session_t session, const audio_config_base_t *config, audio_input_flags_t flags, bool forceOpen = false) = 0; virtual status_t swBridgPhoneCall_Control(swbridgephonecall_cmd_t cmd, audio_devices_t type = AUDIO_DEVICE_NONE, uint32_t delayMs = 0) = 0; virtual bool isFMActive(void) = 0; virtual bool usbAudio_IsDeepBufferSupportUSBDevice() = 0; virtual status_t BLEPhoneCall_addCurrentVolumeIndexFromsetVolumeIndexForAttributes( int index, audio_devices_t device, IVolumeCurves &volumeCurves) = 0; virtual void hifiAudio_updateSampleRate(uint32_t samplingRate) = 0; virtual bool isMbrainSupport() = 0; virtual bool MBrain_conditionCheck(const audio_stream_type_t stream) = 0; virtual status_t MBrain_LogHook(const int level, const char* event, const audio_mode_t mode, const audio_output_flags_t outflags, const audio_input_flags_t inflags, const DeviceTypeSet SinkDevice, const DeviceTypeSet SourceDevice, const audio_port_handle_t TrackId, const audio_stream_type_t stream, const audio_session_t session, const uid_t uid) = 0; virtual bool spatializer_checkVirtualizerClient(); virtual bool spatialAudio_getSupportStatus(void) = 0; virtual void spatialAudio_muteStrategyForReleaseOutput(void) = 0; }; };