Loading media/libaudioclient/AidlConversion.cpp +4 −0 Original line number Original line Diff line number Diff line Loading @@ -645,6 +645,8 @@ ConversionResult<audio_output_flags_t> aidl2legacy_AudioOutputFlags_audio_output return AUDIO_OUTPUT_FLAG_VOIP_RX; return AUDIO_OUTPUT_FLAG_VOIP_RX; case media::AudioOutputFlags::INCALL_MUSIC: case media::AudioOutputFlags::INCALL_MUSIC: return AUDIO_OUTPUT_FLAG_INCALL_MUSIC; return AUDIO_OUTPUT_FLAG_INCALL_MUSIC; case media::AudioOutputFlags::GAPLESS_OFFLOAD: return AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD; default: default: return unexpected(BAD_VALUE); return unexpected(BAD_VALUE); } } Loading Loading @@ -683,6 +685,8 @@ ConversionResult<media::AudioOutputFlags> legacy2aidl_audio_output_flags_t_Audio return media::AudioOutputFlags::VOIP_RX; return media::AudioOutputFlags::VOIP_RX; case AUDIO_OUTPUT_FLAG_INCALL_MUSIC: case AUDIO_OUTPUT_FLAG_INCALL_MUSIC: return media::AudioOutputFlags::INCALL_MUSIC; return media::AudioOutputFlags::INCALL_MUSIC; case AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD: return media::AudioOutputFlags::GAPLESS_OFFLOAD; default: default: return unexpected(BAD_VALUE); return unexpected(BAD_VALUE); } } Loading media/libaudioclient/AudioSystem.cpp +4 −4 Original line number Original line Diff line number Diff line Loading @@ -1188,12 +1188,12 @@ status_t AudioSystem::setAllowedCapturePolicy(uid_t uid, audio_flags_mask_t flag return aps->setAllowedCapturePolicy(uid, flags); return aps->setAllowedCapturePolicy(uid, flags); } } bool AudioSystem::isOffloadSupported(const audio_offload_info_t& info) audio_offload_mode_t AudioSystem::getOffloadSupport(const audio_offload_info_t& info) { { ALOGV("isOffloadSupported()"); ALOGV("%s", __func__); const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return false; if (aps == 0) return AUDIO_OFFLOAD_NOT_SUPPORTED; return aps->isOffloadSupported(info); return aps->getOffloadSupport(info); } } status_t AudioSystem::listAudioPorts(audio_port_role_t role, status_t AudioSystem::listAudioPorts(audio_port_role_t role, Loading media/libaudioclient/IAudioPolicyService.cpp +6 −7 Original line number Original line Diff line number Diff line Loading @@ -69,7 +69,7 @@ enum { QUERY_DEFAULT_PRE_PROCESSING, QUERY_DEFAULT_PRE_PROCESSING, SET_EFFECT_ENABLED, SET_EFFECT_ENABLED, IS_STREAM_ACTIVE_REMOTELY, IS_STREAM_ACTIVE_REMOTELY, IS_OFFLOAD_SUPPORTED, GET_OFFLOAD_MODE_SUPPORTED, IS_DIRECT_OUTPUT_SUPPORTED, IS_DIRECT_OUTPUT_SUPPORTED, LIST_AUDIO_PORTS, LIST_AUDIO_PORTS, GET_AUDIO_PORT, GET_AUDIO_PORT, Loading Loading @@ -666,13 +666,13 @@ public: return reply.readInt32(); return reply.readInt32(); } } virtual bool isOffloadSupported(const audio_offload_info_t& info) virtual audio_offload_mode_t getOffloadSupport(const audio_offload_info_t& info) { { Parcel data, reply; Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.write(&info, sizeof(audio_offload_info_t)); data.write(&info, sizeof(audio_offload_info_t)); remote()->transact(IS_OFFLOAD_SUPPORTED, data, &reply); remote()->transact(GET_OFFLOAD_MODE_SUPPORTED, data, &reply); return reply.readInt32(); return static_cast<audio_offload_mode_t>(reply.readInt32()); } } virtual bool isDirectOutputSupported(const audio_config_base_t& config, virtual bool isDirectOutputSupported(const audio_config_base_t& config, Loading Loading @@ -2149,12 +2149,11 @@ status_t BnAudioPolicyService::onTransact( return status; return status; } } case IS_OFFLOAD_SUPPORTED: { case GET_OFFLOAD_MODE_SUPPORTED: { CHECK_INTERFACE(IAudioPolicyService, data, reply); CHECK_INTERFACE(IAudioPolicyService, data, reply); audio_offload_info_t info = {}; audio_offload_info_t info = {}; data.read(&info, sizeof(audio_offload_info_t)); data.read(&info, sizeof(audio_offload_info_t)); bool isSupported = isOffloadSupported(info); reply->writeInt32(static_cast<int32_t>(getOffloadSupport(info))); reply->writeInt32(isSupported); return NO_ERROR; return NO_ERROR; } } Loading media/libaudioclient/aidl/android/media/AudioOutputFlags.aidl +1 −0 Original line number Original line Diff line number Diff line Loading @@ -35,4 +35,5 @@ enum AudioOutputFlags { MMAP_NOIRQ = 12, MMAP_NOIRQ = 12, VOIP_RX = 13, VOIP_RX = 13, INCALL_MUSIC = 14, INCALL_MUSIC = 14, GAPLESS_OFFLOAD = 15, } } media/libaudioclient/include/media/AudioSystem.h +4 −3 Original line number Original line Diff line number Diff line Loading @@ -319,9 +319,10 @@ public: static status_t setAllowedCapturePolicy(uid_t uid, audio_flags_mask_t flags); static status_t setAllowedCapturePolicy(uid_t uid, audio_flags_mask_t flags); // Check if hw offload is possible for given format, stream type, sample rate, // Indicate if hw offload is possible for given format, stream type, sample rate, // bit rate, duration, video and streaming or offload property is enabled // bit rate, duration, video and streaming or offload property is enabled and when possible static bool isOffloadSupported(const audio_offload_info_t& info); // if gapless transitions are supported. static audio_offload_mode_t getOffloadSupport(const audio_offload_info_t& info); // check presence of audio flinger service. // check presence of audio flinger service. // returns NO_ERROR if binding to service succeeds, DEAD_OBJECT otherwise // returns NO_ERROR if binding to service succeeds, DEAD_OBJECT otherwise Loading Loading
media/libaudioclient/AidlConversion.cpp +4 −0 Original line number Original line Diff line number Diff line Loading @@ -645,6 +645,8 @@ ConversionResult<audio_output_flags_t> aidl2legacy_AudioOutputFlags_audio_output return AUDIO_OUTPUT_FLAG_VOIP_RX; return AUDIO_OUTPUT_FLAG_VOIP_RX; case media::AudioOutputFlags::INCALL_MUSIC: case media::AudioOutputFlags::INCALL_MUSIC: return AUDIO_OUTPUT_FLAG_INCALL_MUSIC; return AUDIO_OUTPUT_FLAG_INCALL_MUSIC; case media::AudioOutputFlags::GAPLESS_OFFLOAD: return AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD; default: default: return unexpected(BAD_VALUE); return unexpected(BAD_VALUE); } } Loading Loading @@ -683,6 +685,8 @@ ConversionResult<media::AudioOutputFlags> legacy2aidl_audio_output_flags_t_Audio return media::AudioOutputFlags::VOIP_RX; return media::AudioOutputFlags::VOIP_RX; case AUDIO_OUTPUT_FLAG_INCALL_MUSIC: case AUDIO_OUTPUT_FLAG_INCALL_MUSIC: return media::AudioOutputFlags::INCALL_MUSIC; return media::AudioOutputFlags::INCALL_MUSIC; case AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD: return media::AudioOutputFlags::GAPLESS_OFFLOAD; default: default: return unexpected(BAD_VALUE); return unexpected(BAD_VALUE); } } Loading
media/libaudioclient/AudioSystem.cpp +4 −4 Original line number Original line Diff line number Diff line Loading @@ -1188,12 +1188,12 @@ status_t AudioSystem::setAllowedCapturePolicy(uid_t uid, audio_flags_mask_t flag return aps->setAllowedCapturePolicy(uid, flags); return aps->setAllowedCapturePolicy(uid, flags); } } bool AudioSystem::isOffloadSupported(const audio_offload_info_t& info) audio_offload_mode_t AudioSystem::getOffloadSupport(const audio_offload_info_t& info) { { ALOGV("isOffloadSupported()"); ALOGV("%s", __func__); const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service(); if (aps == 0) return false; if (aps == 0) return AUDIO_OFFLOAD_NOT_SUPPORTED; return aps->isOffloadSupported(info); return aps->getOffloadSupport(info); } } status_t AudioSystem::listAudioPorts(audio_port_role_t role, status_t AudioSystem::listAudioPorts(audio_port_role_t role, Loading
media/libaudioclient/IAudioPolicyService.cpp +6 −7 Original line number Original line Diff line number Diff line Loading @@ -69,7 +69,7 @@ enum { QUERY_DEFAULT_PRE_PROCESSING, QUERY_DEFAULT_PRE_PROCESSING, SET_EFFECT_ENABLED, SET_EFFECT_ENABLED, IS_STREAM_ACTIVE_REMOTELY, IS_STREAM_ACTIVE_REMOTELY, IS_OFFLOAD_SUPPORTED, GET_OFFLOAD_MODE_SUPPORTED, IS_DIRECT_OUTPUT_SUPPORTED, IS_DIRECT_OUTPUT_SUPPORTED, LIST_AUDIO_PORTS, LIST_AUDIO_PORTS, GET_AUDIO_PORT, GET_AUDIO_PORT, Loading Loading @@ -666,13 +666,13 @@ public: return reply.readInt32(); return reply.readInt32(); } } virtual bool isOffloadSupported(const audio_offload_info_t& info) virtual audio_offload_mode_t getOffloadSupport(const audio_offload_info_t& info) { { Parcel data, reply; Parcel data, reply; data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor()); data.write(&info, sizeof(audio_offload_info_t)); data.write(&info, sizeof(audio_offload_info_t)); remote()->transact(IS_OFFLOAD_SUPPORTED, data, &reply); remote()->transact(GET_OFFLOAD_MODE_SUPPORTED, data, &reply); return reply.readInt32(); return static_cast<audio_offload_mode_t>(reply.readInt32()); } } virtual bool isDirectOutputSupported(const audio_config_base_t& config, virtual bool isDirectOutputSupported(const audio_config_base_t& config, Loading Loading @@ -2149,12 +2149,11 @@ status_t BnAudioPolicyService::onTransact( return status; return status; } } case IS_OFFLOAD_SUPPORTED: { case GET_OFFLOAD_MODE_SUPPORTED: { CHECK_INTERFACE(IAudioPolicyService, data, reply); CHECK_INTERFACE(IAudioPolicyService, data, reply); audio_offload_info_t info = {}; audio_offload_info_t info = {}; data.read(&info, sizeof(audio_offload_info_t)); data.read(&info, sizeof(audio_offload_info_t)); bool isSupported = isOffloadSupported(info); reply->writeInt32(static_cast<int32_t>(getOffloadSupport(info))); reply->writeInt32(isSupported); return NO_ERROR; return NO_ERROR; } } Loading
media/libaudioclient/aidl/android/media/AudioOutputFlags.aidl +1 −0 Original line number Original line Diff line number Diff line Loading @@ -35,4 +35,5 @@ enum AudioOutputFlags { MMAP_NOIRQ = 12, MMAP_NOIRQ = 12, VOIP_RX = 13, VOIP_RX = 13, INCALL_MUSIC = 14, INCALL_MUSIC = 14, GAPLESS_OFFLOAD = 15, } }
media/libaudioclient/include/media/AudioSystem.h +4 −3 Original line number Original line Diff line number Diff line Loading @@ -319,9 +319,10 @@ public: static status_t setAllowedCapturePolicy(uid_t uid, audio_flags_mask_t flags); static status_t setAllowedCapturePolicy(uid_t uid, audio_flags_mask_t flags); // Check if hw offload is possible for given format, stream type, sample rate, // Indicate if hw offload is possible for given format, stream type, sample rate, // bit rate, duration, video and streaming or offload property is enabled // bit rate, duration, video and streaming or offload property is enabled and when possible static bool isOffloadSupported(const audio_offload_info_t& info); // if gapless transitions are supported. static audio_offload_mode_t getOffloadSupport(const audio_offload_info_t& info); // check presence of audio flinger service. // check presence of audio flinger service. // returns NO_ERROR if binding to service succeeds, DEAD_OBJECT otherwise // returns NO_ERROR if binding to service succeeds, DEAD_OBJECT otherwise Loading