status_t AudioALSAPlaybackHandlerNormal::close() { ALOGD("+%s()", __FUNCTION__); AudioAutoTimeoutLock _l(*AudioALSADriverUtility::getInstance()->getStreamSramDramLock()); //============Voice UI&Unlock REFERECE============= AudioVUnlockDL *VUnlockhdl = AudioVUnlockDL::getInstance(); if (VUnlockhdl != NULL) { VUnlockhdl->SetInputStandBy(true); } //=========================================== // close codec driver mHardwareResourceManager->stopOutputDevice(); // close pcm driver closePcmDriver(); // disable lowjitter mode SetLowJitterMode(false, mStreamAttributeTarget.sample_rate); DeinitDataPending(); // bit conversion deinitBitConverter(); // SRC deinitBliSrc(); // post processing deinitPostProcessing(); // debug pcm dump ClosePCMDump(); //release pmic clk mHardwareResourceManager->EnableAudBufClk(false); ALOGD("-%s()", __FUNCTION__); return NO_ERROR; }
status_t AudioALSAPlaybackHandlerBTSCO::close() { ALOGD("+%s()", __FUNCTION__); // close pcm driver closePcmDriver(); // bit conversion deinitBitConverter(); // SRC deinitBliSrc(); // debug pcm dump ClosePCMDump(); ALOGD("-%s()", __FUNCTION__); return NO_ERROR; }
status_t AudioALSAPlaybackHandlerSphDL::close() { ALOGD("+%s()", __FUNCTION__); // close codec driver // Don't stopoutputDevice here, let speech driver to open. mHardwareResourceManager->stopOutputDevice(); //Echo reference path if (mixer_ctl_set_enum_by_string(mixer_get_ctl_by_name(mMixer, "Audio_Dl1_MD_Echo_Ref_Switch"), "Off")) { ALOGE("Error: Audio_Dl1_MD_Echo_Ref_Switch invalid value"); } // close pcm driver closePcmDriver(); // bit conversion deinitBitConverter(); // SRC deinitBliSrc(); // post processing deinitPostProcessing(); // debug pcm dump ClosePCMDump(); ALOGD("-%s()", __FUNCTION__); return NO_ERROR; }