Loading include/media/AudioRecord.h +14 −0 Original line number Diff line number Diff line Loading @@ -374,6 +374,16 @@ public: status_t obtainBuffer(Buffer* audioBuffer, int32_t waitCount, size_t *nonContig = NULL); // Explicit Routing /** * TODO Document this method. */ status_t setInputDevice(audio_port_handle_t deviceId); /** * TODO Document this method. */ audio_port_handle_t getInputDevice(); private: /* If nonContig is non-NULL, it is an output parameter that will be set to the number of * additional non-contiguous frames that are predicted to be available immediately, Loading Loading @@ -560,6 +570,10 @@ private: sp<DeathNotifier> mDeathNotifier; uint32_t mSequence; // incremented for each new IAudioRecord attempt audio_attributes_t mAttributes; // For Device Selection API // a value of AUDIO_PORT_HANDLE_NONE indicated default (AudioPolicyManager) routing. audio_port_handle_t mSelectedDeviceId; }; }; // namespace android Loading include/media/AudioSystem.h +2 −1 Original line number Diff line number Diff line Loading @@ -248,7 +248,8 @@ public: uint32_t samplingRate, audio_format_t format, audio_channel_mask_t channelMask, audio_input_flags_t flags); audio_input_flags_t flags, audio_port_handle_t selectedDeviceId = AUDIO_PORT_HANDLE_NONE); static status_t startInput(audio_io_handle_t input, audio_session_t session); Loading include/media/AudioTrack.h +1 −1 Original line number Diff line number Diff line Loading @@ -859,7 +859,7 @@ protected: // For Device Selection API // a value of AUDIO_PORT_HANDLE_NONE indicated default (AudioPolicyManager) routing. int mSelectedDeviceId; audio_port_handle_t mSelectedDeviceId; private: class DeathNotifier : public IBinder::DeathRecipient { Loading include/media/IAudioPolicyService.h +7 −6 Original line number Diff line number Diff line Loading @@ -83,7 +83,8 @@ public: uint32_t samplingRate, audio_format_t format, audio_channel_mask_t channelMask, audio_input_flags_t flags) = 0; audio_input_flags_t flags, audio_port_handle_t selectedDeviceId = AUDIO_PORT_HANDLE_NONE) = 0; virtual status_t startInput(audio_io_handle_t input, audio_session_t session) = 0; virtual status_t stopInput(audio_io_handle_t input, Loading media/libmedia/AudioRecord.cpp +21 −3 Original line number Diff line number Diff line Loading @@ -67,7 +67,8 @@ status_t AudioRecord::getMinFrameCount( AudioRecord::AudioRecord() : mStatus(NO_INIT), mSessionId(AUDIO_SESSION_ALLOCATE), mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT) mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT), mSelectedDeviceId(AUDIO_PORT_HANDLE_NONE) { } Loading @@ -87,7 +88,8 @@ AudioRecord::AudioRecord( : mStatus(NO_INIT), mSessionId(AUDIO_SESSION_ALLOCATE), mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT), mProxy(NULL) mProxy(NULL), mSelectedDeviceId(AUDIO_PORT_HANDLE_NONE) { mStatus = set(inputSource, sampleRate, format, channelMask, frameCount, cbf, user, notificationFrames, false /*threadCanCallJava*/, sessionId, transferType, flags, Loading Loading @@ -415,6 +417,21 @@ uint32_t AudioRecord::getInputFramesLost() const return AudioSystem::getInputFramesLost(getInputPrivate()); } // ---- Explicit Routing --------------------------------------------------- status_t AudioRecord::setInputDevice(audio_port_handle_t deviceId) { AutoMutex lock(mLock); if (mSelectedDeviceId != deviceId) { mSelectedDeviceId = deviceId; android_atomic_or(CBLK_INVALID, &mCblk->mFlags); } return NO_ERROR; } audio_port_handle_t AudioRecord::getInputDevice() { AutoMutex lock(mLock); return mSelectedDeviceId; } // ------------------------------------------------------------------------- // must be called with mLock held Loading Loading @@ -461,7 +478,8 @@ status_t AudioRecord::openRecord_l(size_t epoch) audio_io_handle_t input; status_t status = AudioSystem::getInputForAttr(&mAttributes, &input, (audio_session_t)mSessionId, mSampleRate, mFormat, mChannelMask, mFlags); mSampleRate, mFormat, mChannelMask, mFlags, mSelectedDeviceId); if (status != NO_ERROR) { ALOGE("Could not get audio input for record source %d, sample rate %u, format %#x, " Loading Loading
include/media/AudioRecord.h +14 −0 Original line number Diff line number Diff line Loading @@ -374,6 +374,16 @@ public: status_t obtainBuffer(Buffer* audioBuffer, int32_t waitCount, size_t *nonContig = NULL); // Explicit Routing /** * TODO Document this method. */ status_t setInputDevice(audio_port_handle_t deviceId); /** * TODO Document this method. */ audio_port_handle_t getInputDevice(); private: /* If nonContig is non-NULL, it is an output parameter that will be set to the number of * additional non-contiguous frames that are predicted to be available immediately, Loading Loading @@ -560,6 +570,10 @@ private: sp<DeathNotifier> mDeathNotifier; uint32_t mSequence; // incremented for each new IAudioRecord attempt audio_attributes_t mAttributes; // For Device Selection API // a value of AUDIO_PORT_HANDLE_NONE indicated default (AudioPolicyManager) routing. audio_port_handle_t mSelectedDeviceId; }; }; // namespace android Loading
include/media/AudioSystem.h +2 −1 Original line number Diff line number Diff line Loading @@ -248,7 +248,8 @@ public: uint32_t samplingRate, audio_format_t format, audio_channel_mask_t channelMask, audio_input_flags_t flags); audio_input_flags_t flags, audio_port_handle_t selectedDeviceId = AUDIO_PORT_HANDLE_NONE); static status_t startInput(audio_io_handle_t input, audio_session_t session); Loading
include/media/AudioTrack.h +1 −1 Original line number Diff line number Diff line Loading @@ -859,7 +859,7 @@ protected: // For Device Selection API // a value of AUDIO_PORT_HANDLE_NONE indicated default (AudioPolicyManager) routing. int mSelectedDeviceId; audio_port_handle_t mSelectedDeviceId; private: class DeathNotifier : public IBinder::DeathRecipient { Loading
include/media/IAudioPolicyService.h +7 −6 Original line number Diff line number Diff line Loading @@ -83,7 +83,8 @@ public: uint32_t samplingRate, audio_format_t format, audio_channel_mask_t channelMask, audio_input_flags_t flags) = 0; audio_input_flags_t flags, audio_port_handle_t selectedDeviceId = AUDIO_PORT_HANDLE_NONE) = 0; virtual status_t startInput(audio_io_handle_t input, audio_session_t session) = 0; virtual status_t stopInput(audio_io_handle_t input, Loading
media/libmedia/AudioRecord.cpp +21 −3 Original line number Diff line number Diff line Loading @@ -67,7 +67,8 @@ status_t AudioRecord::getMinFrameCount( AudioRecord::AudioRecord() : mStatus(NO_INIT), mSessionId(AUDIO_SESSION_ALLOCATE), mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT) mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT), mSelectedDeviceId(AUDIO_PORT_HANDLE_NONE) { } Loading @@ -87,7 +88,8 @@ AudioRecord::AudioRecord( : mStatus(NO_INIT), mSessionId(AUDIO_SESSION_ALLOCATE), mPreviousPriority(ANDROID_PRIORITY_NORMAL), mPreviousSchedulingGroup(SP_DEFAULT), mProxy(NULL) mProxy(NULL), mSelectedDeviceId(AUDIO_PORT_HANDLE_NONE) { mStatus = set(inputSource, sampleRate, format, channelMask, frameCount, cbf, user, notificationFrames, false /*threadCanCallJava*/, sessionId, transferType, flags, Loading Loading @@ -415,6 +417,21 @@ uint32_t AudioRecord::getInputFramesLost() const return AudioSystem::getInputFramesLost(getInputPrivate()); } // ---- Explicit Routing --------------------------------------------------- status_t AudioRecord::setInputDevice(audio_port_handle_t deviceId) { AutoMutex lock(mLock); if (mSelectedDeviceId != deviceId) { mSelectedDeviceId = deviceId; android_atomic_or(CBLK_INVALID, &mCblk->mFlags); } return NO_ERROR; } audio_port_handle_t AudioRecord::getInputDevice() { AutoMutex lock(mLock); return mSelectedDeviceId; } // ------------------------------------------------------------------------- // must be called with mLock held Loading Loading @@ -461,7 +478,8 @@ status_t AudioRecord::openRecord_l(size_t epoch) audio_io_handle_t input; status_t status = AudioSystem::getInputForAttr(&mAttributes, &input, (audio_session_t)mSessionId, mSampleRate, mFormat, mChannelMask, mFlags); mSampleRate, mFormat, mChannelMask, mFlags, mSelectedDeviceId); if (status != NO_ERROR) { ALOGE("Could not get audio input for record source %d, sample rate %u, format %#x, " Loading