Loading media/libaudioclient/AudioSystem.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -1415,7 +1415,8 @@ status_t AudioSystem::getInputForAttr(const audio_attributes_t* attr, audio_config_base_t* config, audio_input_flags_t flags, audio_port_handle_t* selectedDeviceId, audio_port_handle_t* portId) { audio_port_handle_t* portId, audio_source_t* source) { if (attr == NULL) { ALOGE("getInputForAttr NULL attr - shouldn't happen"); return BAD_VALUE; Loading Loading @@ -1463,7 +1464,7 @@ status_t AudioSystem::getInputForAttr(const audio_attributes_t* attr, *selectedDeviceId = VALUE_OR_RETURN_STATUS( aidl2legacy_int32_t_audio_port_handle_t(response.selectedDeviceId)); *portId = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_audio_port_handle_t(response.portId)); *source = VALUE_OR_RETURN_STATUS(aidl2legacy_AudioSource_audio_source_t(response.source)); return OK; } Loading media/libaudioclient/aidl/android/media/GetInputForAttrResponse.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.media; import android.media.audio.common.AudioConfigBase; import android.media.audio.common.AudioSource; /** * {@hide} Loading @@ -32,4 +33,6 @@ parcelable GetInputForAttrResponse { int virtualDeviceId; /** The suggested config if fails to get an input. **/ AudioConfigBase config; /** The audio source, possibly updated by audio policy manager */ AudioSource source; } media/libaudioclient/include/media/AudioSystem.h +3 −1 Original line number Diff line number Diff line Loading @@ -370,6 +370,7 @@ public: * @param[in|out] selectedDeviceId the requested device id for playback, the actual device id * for playback will be returned * @param[out] portId the generated port id to identify the client * @param[out] source the audio source validated by audio policy manager * @return if the call is successful or not */ static status_t getInputForAttr(const audio_attributes_t *attr, Loading @@ -380,7 +381,8 @@ public: audio_config_base_t *config, audio_input_flags_t flags, audio_port_handle_t *selectedDeviceId, audio_port_handle_t *portId); audio_port_handle_t *portId, audio_source_t *source); static status_t startInput(audio_port_handle_t portId); static status_t stopInput(audio_port_handle_t portId); Loading services/audioflinger/AudioFlinger.cpp +7 −2 Original line number Diff line number Diff line Loading @@ -649,12 +649,15 @@ status_t AudioFlinger::openMmapStream(MmapStreamInterface::stream_direction_t di "%s does not support secondary outputs, ignoring them", __func__); } else { audio_port_handle_t deviceId = getFirstDeviceId(*deviceIds); audio_source_t source = AUDIO_SOURCE_DEFAULT; ret = AudioSystem::getInputForAttr(&localAttr, &io, RECORD_RIID_INVALID, actualSessionId, adjAttributionSource, config, AUDIO_INPUT_FLAG_MMAP_NOIRQ, &deviceId, &portId); AUDIO_INPUT_FLAG_MMAP_NOIRQ, &deviceId, &portId, &source); localAttr.source = source; deviceIds->clear(); if (deviceId != AUDIO_PORT_HANDLE_NONE) { deviceIds->push_back(deviceId); Loading Loading @@ -2587,17 +2590,19 @@ status_t AudioFlinger::createRecord(const media::CreateRecordRequest& _input, output.selectedDeviceId = input.selectedDeviceId; portId = AUDIO_PORT_HANDLE_NONE; } audio_source_t source = AUDIO_SOURCE_DEFAULT; lStatus = AudioSystem::getInputForAttr(&input.attr, &output.inputId, input.riid, sessionId, // FIXME compare to AudioTrack adjAttributionSource, &input.config, output.flags, &output.selectedDeviceId, &portId); output.flags, &output.selectedDeviceId, &portId, &source); if (lStatus != NO_ERROR) { ALOGE("createRecord() getInputForAttr return error %d", lStatus); goto Exit; } input.attr.source = source; { audio_utils::lock_guard _l(mutex()); Loading services/audioflinger/Threads.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -10597,6 +10597,7 @@ status_t MmapThread::start(const AudioClient& client, config.channel_mask = mChannelMask; config.format = mFormat; audio_port_handle_t deviceId = getFirstDeviceId(mDeviceIds); audio_source_t source = AUDIO_SOURCE_DEFAULT; mutex().unlock(); ret = AudioSystem::getInputForAttr(&localAttr, &io, RECORD_RIID_INVALID, Loading @@ -10605,9 +10606,11 @@ status_t MmapThread::start(const AudioClient& client, &config, AUDIO_INPUT_FLAG_MMAP_NOIRQ, &deviceId, &portId); &portId, &source); mutex().lock(); // localAttr is const for getInputForAttr. localAttr.source = source; } // APM should not chose a different input or output stream for the same set of attributes // and audo configuration Loading Loading
media/libaudioclient/AudioSystem.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -1415,7 +1415,8 @@ status_t AudioSystem::getInputForAttr(const audio_attributes_t* attr, audio_config_base_t* config, audio_input_flags_t flags, audio_port_handle_t* selectedDeviceId, audio_port_handle_t* portId) { audio_port_handle_t* portId, audio_source_t* source) { if (attr == NULL) { ALOGE("getInputForAttr NULL attr - shouldn't happen"); return BAD_VALUE; Loading Loading @@ -1463,7 +1464,7 @@ status_t AudioSystem::getInputForAttr(const audio_attributes_t* attr, *selectedDeviceId = VALUE_OR_RETURN_STATUS( aidl2legacy_int32_t_audio_port_handle_t(response.selectedDeviceId)); *portId = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_audio_port_handle_t(response.portId)); *source = VALUE_OR_RETURN_STATUS(aidl2legacy_AudioSource_audio_source_t(response.source)); return OK; } Loading
media/libaudioclient/aidl/android/media/GetInputForAttrResponse.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.media; import android.media.audio.common.AudioConfigBase; import android.media.audio.common.AudioSource; /** * {@hide} Loading @@ -32,4 +33,6 @@ parcelable GetInputForAttrResponse { int virtualDeviceId; /** The suggested config if fails to get an input. **/ AudioConfigBase config; /** The audio source, possibly updated by audio policy manager */ AudioSource source; }
media/libaudioclient/include/media/AudioSystem.h +3 −1 Original line number Diff line number Diff line Loading @@ -370,6 +370,7 @@ public: * @param[in|out] selectedDeviceId the requested device id for playback, the actual device id * for playback will be returned * @param[out] portId the generated port id to identify the client * @param[out] source the audio source validated by audio policy manager * @return if the call is successful or not */ static status_t getInputForAttr(const audio_attributes_t *attr, Loading @@ -380,7 +381,8 @@ public: audio_config_base_t *config, audio_input_flags_t flags, audio_port_handle_t *selectedDeviceId, audio_port_handle_t *portId); audio_port_handle_t *portId, audio_source_t *source); static status_t startInput(audio_port_handle_t portId); static status_t stopInput(audio_port_handle_t portId); Loading
services/audioflinger/AudioFlinger.cpp +7 −2 Original line number Diff line number Diff line Loading @@ -649,12 +649,15 @@ status_t AudioFlinger::openMmapStream(MmapStreamInterface::stream_direction_t di "%s does not support secondary outputs, ignoring them", __func__); } else { audio_port_handle_t deviceId = getFirstDeviceId(*deviceIds); audio_source_t source = AUDIO_SOURCE_DEFAULT; ret = AudioSystem::getInputForAttr(&localAttr, &io, RECORD_RIID_INVALID, actualSessionId, adjAttributionSource, config, AUDIO_INPUT_FLAG_MMAP_NOIRQ, &deviceId, &portId); AUDIO_INPUT_FLAG_MMAP_NOIRQ, &deviceId, &portId, &source); localAttr.source = source; deviceIds->clear(); if (deviceId != AUDIO_PORT_HANDLE_NONE) { deviceIds->push_back(deviceId); Loading Loading @@ -2587,17 +2590,19 @@ status_t AudioFlinger::createRecord(const media::CreateRecordRequest& _input, output.selectedDeviceId = input.selectedDeviceId; portId = AUDIO_PORT_HANDLE_NONE; } audio_source_t source = AUDIO_SOURCE_DEFAULT; lStatus = AudioSystem::getInputForAttr(&input.attr, &output.inputId, input.riid, sessionId, // FIXME compare to AudioTrack adjAttributionSource, &input.config, output.flags, &output.selectedDeviceId, &portId); output.flags, &output.selectedDeviceId, &portId, &source); if (lStatus != NO_ERROR) { ALOGE("createRecord() getInputForAttr return error %d", lStatus); goto Exit; } input.attr.source = source; { audio_utils::lock_guard _l(mutex()); Loading
services/audioflinger/Threads.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -10597,6 +10597,7 @@ status_t MmapThread::start(const AudioClient& client, config.channel_mask = mChannelMask; config.format = mFormat; audio_port_handle_t deviceId = getFirstDeviceId(mDeviceIds); audio_source_t source = AUDIO_SOURCE_DEFAULT; mutex().unlock(); ret = AudioSystem::getInputForAttr(&localAttr, &io, RECORD_RIID_INVALID, Loading @@ -10605,9 +10606,11 @@ status_t MmapThread::start(const AudioClient& client, &config, AUDIO_INPUT_FLAG_MMAP_NOIRQ, &deviceId, &portId); &portId, &source); mutex().lock(); // localAttr is const for getInputForAttr. localAttr.source = source; } // APM should not chose a different input or output stream for the same set of attributes // and audo configuration Loading