AudioStreamIn* AudioHardwareGeneric::openInputStream( uint32_t devices, int *format, uint32_t *channels, uint32_t *sampleRate, status_t *status, AudioSystem::audio_in_acoustics acoustics) { // check for valid input source if (!AudioSystem::isInputDevice((AudioSystem::audio_devices)devices)) { return 0; } AutoMutex lock(mLock); // only one input stream allowed if (mInput) { if (status) { *status = INVALID_OPERATION; } return 0; } // create new output stream AudioStreamInGeneric* in = new AudioStreamInGeneric(); status_t lStatus = in->set(this, mFd, devices, format, channels, sampleRate, acoustics); if (status) { *status = lStatus; } if (lStatus == NO_ERROR) { mInput = in; } else { delete in; } return mInput; }
AudioStreamIn* AudioHardwareGeneric::openInputStream( int format, int channelCount, uint32_t sampleRate, status_t *status) { AutoMutex lock(mLock); // only one input stream allowed if (mInput) { if (status) { *status = INVALID_OPERATION; } return 0; } // create new output stream AudioStreamInGeneric* in = new AudioStreamInGeneric(); status_t lStatus = in->set(this, mFd, format, channelCount, sampleRate); if (status) { *status = lStatus; } if (lStatus == NO_ERROR) { mInput = in; } else { delete in; } return mInput; }
AudioStreamIn* AudioHardwareGeneric::openInputStream( int inputSource, int format, int channelCount, uint32_t sampleRate, status_t *status, AudioSystem::audio_in_acoustics acoustics) { // check for valid input source if ((inputSource < AudioRecord::DEFAULT_INPUT) || (inputSource >= AudioRecord::NUM_INPUT_SOURCES)) { return 0; } AutoMutex lock(mLock); // only one input stream allowed if (mInput) { if (status) { *status = INVALID_OPERATION; } return 0; } // create new output stream AudioStreamInGeneric* in = new AudioStreamInGeneric(); status_t lStatus = in->set(this, mFd, format, channelCount, sampleRate, acoustics); if (status) { *status = lStatus; } if (lStatus == NO_ERROR) { mInput = in; } else { delete in; } return mInput; }