status_t AudioALSAStreamIn::close() { // call close() only when mLock is locked. ASSERT(mLock.tryLock() != 0); ALOGD("%s()", __FUNCTION__); status_t status = NO_ERROR; if (mStandby == false) { mStandby = true; ASSERT(mCaptureHandler != NULL); // close audio hardware status = mCaptureHandler->close(); if (status != NO_ERROR) { ALOGE("%s(), close() fail!!", __FUNCTION__); } ClosePCMDump(); // destroy playback handler mStreamManager->destroyCaptureHandler(mCaptureHandler); mCaptureHandler = NULL; } ASSERT(mCaptureHandler == NULL); return status; }
status_t AudioALSACaptureDataProviderVoiceDL::close() { ALOGD("%s()", __FUNCTION__); ASSERT(mClientLock.tryLock() != 0); // lock by base class detach mEnable = false; AudioAutoTimeoutLock _l(mEnableLock); ClosePCMDump(); return SpeechDataProcessingHandler::getInstance()->recordOff(RECORD_TYPE_DL); }
status_t AudioALSACaptureDataProviderVoice::close() { ALOGD("%s()", __FUNCTION__); ASSERT(mClientLock.tryLock() != 0); // lock by base class detach mEnable = false; AudioAutoTimeoutLock _l(mEnableLock); ClosePCMDump(); return SpeechDriverFactory::GetInstance()->GetSpeechDriver()->RecordOff(); }
status_t AudioALSACaptureDataProviderBTCVSD::close() { ALOGD("%s()", __FUNCTION__); ASSERT(mClientLock.tryLock() != 0); // lock by base class detach mEnable = false; AudioAutoTimeoutLock _l(mEnableLock); ClosePCMDump(); mAudioBTCVSDControl->BT_SCO_RX_End(mFd2); return NO_ERROR; }
status_t AudioALSACaptureDataProviderBTSCO::close() { ALOGD("%s()", __FUNCTION__); ASSERT(mClientLock.tryLock() != 0); // lock by base class detach mEnable = false; AudioAutoTimeoutLock _l(mEnableLock); ClosePCMDump(); pcm_stop(mPcm); pcm_close(mPcm); mPcm = NULL; return NO_ERROR; }
status_t AudioALSACaptureDataProviderTDM::close() { ALOGD("%s()", __FUNCTION__); ASSERT(mClientLock.tryLock() != 0); // lock by base class detach mEnable = false; AudioAutoTimeoutLock _l(mEnableLock); AudioAutoTimeoutLock _l2(*AudioALSADriverUtility::getInstance()->getStreamSramDramLock()); ClosePCMDump(); pcm_stop(mPcm); pcm_close(mPcm); mPcm = NULL; return NO_ERROR; }
status_t AudioALSACaptureDataProviderEchoRefExt::close() { ALOGD("%s()", __FUNCTION__); ASSERT(mClientLock.tryLock() != 0); // lock by base class detach mEnable = false; AudioAutoTimeoutLock _l(mEnableLock); ClosePCMDump(); pcm_stop(mPcm); pcm_close(mPcm); mPcm = NULL; AudioALSASampleRateController *pAudioALSASampleRateController = AudioALSASampleRateController::getInstance(); pAudioALSASampleRateController->resetScenarioStatus(PLAYBACK_SCENARIO_ECHO_REF_EXT); return NO_ERROR; }
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 AudioALSAStreamOut::close() { // call close() only when mLock is locked. ASSERT(mLock.tryLock() != 0); ALOGD("%s()", __FUNCTION__); status_t status = NO_ERROR; if (mStandby == false) { mStandby = true; // HDMI stereo + HDMI multi-channel => disable HDMI stereo if (mStreamOutType == STREAM_OUT_HDMI_MULTI_CHANNEL) { ALOGD("Recover mStreamOutHDMIStereo"); AudioALSAStreamOut::setSuspendStreamOutHDMIStereo(false); } ASSERT(mPlaybackHandler != NULL); // close audio hardware status = mPlaybackHandler->close(); if (status != NO_ERROR) { ALOGE("%s(), close() fail!!", __FUNCTION__); } ClosePCMDump(); // destroy playback handler mStreamManager->destroyPlaybackHandler(mPlaybackHandler); mPlaybackHandler = NULL; AudioALSASampleRateController::getInstance()->resetScenarioStatus(PLAYBACK_SCENARIO_STREAM_OUT); } ASSERT(mPlaybackHandler == NULL); return status; }
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; }
status_t AudioALSAPlaybackHandlerOffload::close() { ALOGD("+%s()", __FUNCTION__); AudioAutoTimeoutLock _l(*AudioALSADriverUtility::getInstance()->getStreamSramDramLock()); //close compress device driver send_offload_cmd(OFFLOAD_CMD_CLOSE); while(!threadExit) { usleep(1 * 1000); } pthread_join(offload_stream.offload_pthread, (void **) NULL); pthread_cond_destroy(&offload_stream.offload_cond); pthread_mutex_destroy(&offload_stream.offload_mutex); closeComprDriver(); //============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 //doug to check SetLowJitterMode(false, mStreamAttributeTarget.sample_rate); DeinitDataPending(); // bit conversion deinitBitConverter(); // SRC deinitBliSrc(); // post processing deinitPostProcessing(); // debug pcm dump ClosePCMDump(); //release pmic clk mHardwareResourceManager->EnableAudBufClk(false); //SetMHLChipEnable(false); //doug to check //close decoder mDecHandler->DeinitAudioDecoder(); //free codec params if(mDecBsbuf != NULL) { free(mDecBsbuf); mDecBsbuf = NULL; } if(mDecPcmbuf != NULL) { free(mDecPcmbuf); mDecPcmbuf = NULL; } ALOGD("%s(), mComprConfig.codec:%p", mComprConfig.codec); if(mComprConfig.codec) { free((void*)mComprConfig.codec); mComprConfig.codec = NULL; } memset(&mComprConfig,0, sizeof(mComprConfig)); // offload_callback(STREAM_CBK_EVENT_WRITE_READY); // usleep(1 * 1000); // offload_callback(STREAM_CBK_EVENT_DRAIN_READY); ALOGD("-%s()", __FUNCTION__); return NO_ERROR; }