AudioStreamOut * AudioHardwareALSA::openOutputStream(uint32_t devices, int *format, uint32_t *channels, uint32_t *sampleRate, status_t *status) { AutoMutex lock(mLock); LOGD("openOutputStream called for devices: 0x%08x", devices); status_t err = BAD_VALUE; AudioStreamOutALSA *out = 0; if (devices & (devices - 1)) { if (status) *status = err; LOGD("openOutputStream called with bad devices"); return out; } // 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; out = new AudioStreamOutALSA(this, &(*it)); err = out->set(format, channels, sampleRate); break; } if (status) *status = err; return out; }
AudioStreamOut * AudioHardwareALSA::openOutputStream(uint32_t devices, int *format, uint32_t *channels, uint32_t *sampleRate, status_t *status) { AutoMutex lock(mLock); LOGD("openOutputStream called for devices: 0x%08x", devices); status_t err = BAD_VALUE; AudioStreamOutALSA *out = 0; if (devices & (devices - 1)) { if (status) *status = err; LOGD("openOutputStream called with bad devices"); return out; } // 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; } out = new AudioStreamOutALSA(this, &(*it)); err = out->set(format, channels, sampleRate); break; } if (status) *status = err; return out; }