Loading media/libaudioclient/aidl/android/media/OpenOutputRequest.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.media; import android.media.AudioPortFw; import android.media.audio.common.AudioConfig; import android.media.audio.common.AudioConfigBase; import android.media.audio.common.AudioAttributes; /** * {@hide} Loading @@ -32,4 +33,5 @@ parcelable OpenOutputRequest { AudioPortFw device; /** Bitmask, indexed by AudioOutputFlag. */ int flags; AudioAttributes attributes; } services/audioflinger/AudioFlinger.cpp +11 −3 Original line number Diff line number Diff line Loading @@ -2990,7 +2990,8 @@ sp<IAfThreadBase> AudioFlinger::openOutput_l(audio_module_handle_t module, audio_config_base_t *mixerConfig, audio_devices_t deviceType, const String8& address, audio_output_flags_t flags) audio_output_flags_t flags, const audio_attributes_t attributes) { AudioHwDevice *outHwDev = findSuitableHwDev_l(module, deviceType); if (outHwDev == NULL) { Loading @@ -3008,13 +3009,18 @@ sp<IAfThreadBase> AudioFlinger::openOutput_l(audio_module_handle_t module, mHardwareStatus = AUDIO_HW_OUTPUT_OPEN; AudioStreamOut *outputStream = NULL; playback_track_metadata_v7_t trackMetadata; trackMetadata.base.usage = attributes.usage; status_t status = outHwDev->openOutputStream( &outputStream, *output, deviceType, flags, halConfig, address.c_str()); address.c_str(), {trackMetadata}); mHardwareStatus = AUDIO_HW_IDLE; Loading Loading @@ -3083,6 +3089,8 @@ status_t AudioFlinger::openOutput(const media::OpenOutputRequest& request, aidl2legacy_DeviceDescriptorBase(request.device)); audio_output_flags_t flags = VALUE_OR_RETURN_STATUS( aidl2legacy_int32_t_audio_output_flags_t_mask(request.flags)); audio_attributes_t attributes = VALUE_OR_RETURN_STATUS( aidl2legacy_AudioAttributes_audio_attributes_t(request.attributes)); audio_io_handle_t output; Loading @@ -3105,7 +3113,7 @@ status_t AudioFlinger::openOutput(const media::OpenOutputRequest& request, audio_utils::lock_guard _l(mutex()); const sp<IAfThreadBase> thread = openOutput_l(module, &output, &halConfig, &mixerConfig, deviceType, address, flags); &mixerConfig, deviceType, address, flags, attributes); if (thread != 0) { uint32_t latencyMs = 0; if ((flags & AUDIO_OUTPUT_FLAG_MMAP_NOIRQ) == 0) { Loading services/audioflinger/AudioFlinger.h +2 −1 Original line number Diff line number Diff line Loading @@ -333,7 +333,8 @@ private: audio_config_base_t* mixerConfig, audio_devices_t deviceType, const String8& address, audio_output_flags_t flags) final REQUIRES(mutex()); audio_output_flags_t flags, audio_attributes_t attributes) final REQUIRES(mutex()); const DefaultKeyedVector<audio_module_handle_t, AudioHwDevice*>& getAudioHwDevs_l() const final REQUIRES(mutex(), hardwareMutex()) { return mAudioHwDevs; Loading services/audioflinger/IAfPatchPanel.h +2 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,8 @@ public: audio_config_base_t* mixerConfig, audio_devices_t deviceType, const String8& address, audio_output_flags_t flags) REQUIRES(mutex()) = 0; audio_output_flags_t flags, audio_attributes_t attributes) REQUIRES(mutex()) = 0; virtual audio_utils::mutex& mutex() const RETURN_CAPABILITY(audio_utils::AudioFlinger_Mutex) = 0; virtual const DefaultKeyedVector<audio_module_handle_t, AudioHwDevice*>& Loading services/audioflinger/PatchPanel.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -260,6 +260,7 @@ status_t PatchPanel::createAudioPatch_l(const struct audio_patch* patch, if (patch->sinks[0].config_mask & AUDIO_PORT_CONFIG_FLAGS) { flags = patch->sinks[0].flags.output; } audio_attributes_t attributes = AUDIO_ATTRIBUTES_INITIALIZER; const sp<IAfThreadBase> thread = mAfPatchPanelCallback->openOutput_l( patch->sinks[0].ext.device.hw_module, &output, Loading @@ -267,7 +268,8 @@ status_t PatchPanel::createAudioPatch_l(const struct audio_patch* patch, &mixerConfig, outputDevice, outputDeviceAddress, flags); flags, attributes); ALOGV("mAfPatchPanelCallback->openOutput_l() returned %p", thread.get()); if (thread == 0) { status = NO_MEMORY; Loading Loading
media/libaudioclient/aidl/android/media/OpenOutputRequest.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.media; import android.media.AudioPortFw; import android.media.audio.common.AudioConfig; import android.media.audio.common.AudioConfigBase; import android.media.audio.common.AudioAttributes; /** * {@hide} Loading @@ -32,4 +33,5 @@ parcelable OpenOutputRequest { AudioPortFw device; /** Bitmask, indexed by AudioOutputFlag. */ int flags; AudioAttributes attributes; }
services/audioflinger/AudioFlinger.cpp +11 −3 Original line number Diff line number Diff line Loading @@ -2990,7 +2990,8 @@ sp<IAfThreadBase> AudioFlinger::openOutput_l(audio_module_handle_t module, audio_config_base_t *mixerConfig, audio_devices_t deviceType, const String8& address, audio_output_flags_t flags) audio_output_flags_t flags, const audio_attributes_t attributes) { AudioHwDevice *outHwDev = findSuitableHwDev_l(module, deviceType); if (outHwDev == NULL) { Loading @@ -3008,13 +3009,18 @@ sp<IAfThreadBase> AudioFlinger::openOutput_l(audio_module_handle_t module, mHardwareStatus = AUDIO_HW_OUTPUT_OPEN; AudioStreamOut *outputStream = NULL; playback_track_metadata_v7_t trackMetadata; trackMetadata.base.usage = attributes.usage; status_t status = outHwDev->openOutputStream( &outputStream, *output, deviceType, flags, halConfig, address.c_str()); address.c_str(), {trackMetadata}); mHardwareStatus = AUDIO_HW_IDLE; Loading Loading @@ -3083,6 +3089,8 @@ status_t AudioFlinger::openOutput(const media::OpenOutputRequest& request, aidl2legacy_DeviceDescriptorBase(request.device)); audio_output_flags_t flags = VALUE_OR_RETURN_STATUS( aidl2legacy_int32_t_audio_output_flags_t_mask(request.flags)); audio_attributes_t attributes = VALUE_OR_RETURN_STATUS( aidl2legacy_AudioAttributes_audio_attributes_t(request.attributes)); audio_io_handle_t output; Loading @@ -3105,7 +3113,7 @@ status_t AudioFlinger::openOutput(const media::OpenOutputRequest& request, audio_utils::lock_guard _l(mutex()); const sp<IAfThreadBase> thread = openOutput_l(module, &output, &halConfig, &mixerConfig, deviceType, address, flags); &mixerConfig, deviceType, address, flags, attributes); if (thread != 0) { uint32_t latencyMs = 0; if ((flags & AUDIO_OUTPUT_FLAG_MMAP_NOIRQ) == 0) { Loading
services/audioflinger/AudioFlinger.h +2 −1 Original line number Diff line number Diff line Loading @@ -333,7 +333,8 @@ private: audio_config_base_t* mixerConfig, audio_devices_t deviceType, const String8& address, audio_output_flags_t flags) final REQUIRES(mutex()); audio_output_flags_t flags, audio_attributes_t attributes) final REQUIRES(mutex()); const DefaultKeyedVector<audio_module_handle_t, AudioHwDevice*>& getAudioHwDevs_l() const final REQUIRES(mutex(), hardwareMutex()) { return mAudioHwDevs; Loading
services/audioflinger/IAfPatchPanel.h +2 −1 Original line number Diff line number Diff line Loading @@ -82,7 +82,8 @@ public: audio_config_base_t* mixerConfig, audio_devices_t deviceType, const String8& address, audio_output_flags_t flags) REQUIRES(mutex()) = 0; audio_output_flags_t flags, audio_attributes_t attributes) REQUIRES(mutex()) = 0; virtual audio_utils::mutex& mutex() const RETURN_CAPABILITY(audio_utils::AudioFlinger_Mutex) = 0; virtual const DefaultKeyedVector<audio_module_handle_t, AudioHwDevice*>& Loading
services/audioflinger/PatchPanel.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -260,6 +260,7 @@ status_t PatchPanel::createAudioPatch_l(const struct audio_patch* patch, if (patch->sinks[0].config_mask & AUDIO_PORT_CONFIG_FLAGS) { flags = patch->sinks[0].flags.output; } audio_attributes_t attributes = AUDIO_ATTRIBUTES_INITIALIZER; const sp<IAfThreadBase> thread = mAfPatchPanelCallback->openOutput_l( patch->sinks[0].ext.device.hw_module, &output, Loading @@ -267,7 +268,8 @@ status_t PatchPanel::createAudioPatch_l(const struct audio_patch* patch, &mixerConfig, outputDevice, outputDeviceAddress, flags); flags, attributes); ALOGV("mAfPatchPanelCallback->openOutput_l() returned %p", thread.get()); if (thread == 0) { status = NO_MEMORY; Loading