AudioStreamIn * AudioHardwareALSA::openInputStream(uint32_t devices, int *format, uint32_t *channels, uint32_t *sampleRate, status_t *status, AudioSystem::audio_in_acoustics acoustics) { AutoMutex lock(mLock); status_t err = BAD_VALUE; AudioStreamInALSA *in = 0; if (devices & (devices - 1)) { if (status) *status = err; return in; } // Find the appropriate alsa device for(ALSAHandleList::iterator it = mDeviceList.begin(); it != mDeviceList.end(); ++it) if (it->devices & devices) { err = mALSADevice->open(&(*it), devices, mode(), *channels); if (err) break; in = new AudioStreamInALSA(this, &(*it), acoustics); err = in->set(format, channels, sampleRate); break; } if (status) *status = err; return in; }
AudioStreamIn * AudioHardwareALSA::openInputStream(uint32_t devices, int *format, uint32_t *channels, uint32_t *sampleRate, status_t *status, AudioSystem::audio_in_acoustics acoustics) { AutoMutex lock(mLock); status_t err = BAD_VALUE; AudioStreamInALSA *in = 0; if (devices & (devices - 1)) { if (status) *status = err; return in; } // Find the appropriate alsa device for(ALSAHandleList::iterator it = mDeviceList.begin(); it != mDeviceList.end(); ++it) if (it->devices & devices) { err = mALSADevice->open(&(*it), devices, mode()); if (err) break; if (devices & AudioSystem::DEVICE_OUT_WIRED_HDMI){ strcpy(mCurCard ,SPDIF); mMixer = mMixerSpdif; } else { strcpy(mCurCard,SGTL5000); mMixer = mMixerSgtl5000; } in = new AudioStreamInALSA(this, &(*it), acoustics); //set the format, channels, sampleRate to 0, so that it can make use of //the parameter from the hardware default config *format = 0; *channels = 0; *sampleRate = 0; err = in->set(format, channels, sampleRate); LOGW("the hardware default channels is %d, sampleRate is %d, format is %d", *channels, *sampleRate, *format); break; } if (status) *status = err; return in; }