// --------------------------------------------------------------------------- // QCameraStream_Rdi // --------------------------------------------------------------------------- void QCameraStream_Rdi::stop() { ALOGD("%s: E", __func__); int ret=MM_CAMERA_OK; uint32_t stream_info; if(!mActive) { return; } Mutex::Autolock lock(mStopCallbackLock); mActive = false; /* unregister the notify fn from the mmmm_camera_t object*/ ALOGI("%s: Stop the thread \n", __func__); /* call stop() in parent class to stop the monitor thread*/ stream_info = mHalCamCtrl->getChannelInterface(); ret = cam_ops_action(mCameraId, FALSE, MM_CAMERA_OPS_RDI, 0); if(MM_CAMERA_OK != ret) { ALOGE ("%s: camera rdi stop err=%d\n", __func__, ret); } ret = cam_config_unprepare_buf(mCameraId, MM_CAMERA_CH_RDI); if(ret != MM_CAMERA_OK) { ALOGE("%s:Unreg rdi buf err=%d\n", __func__, ret); } /* In case of a clean stop, we need to clean all buffers*/ /*free camera_memory handles and return buffer back to surface*/ freeBufferRdi(); ALOGD("%s: X", __func__); }
// --------------------------------------------------------------------------- // QCameraStream_preview // --------------------------------------------------------------------------- void QCameraStream_preview::stop() { ALOGE("%s: E", __func__); int ret=MM_CAMERA_OK; if(!mActive) { return; } mActive = false; Mutex::Autolock lock(mStopCallbackLock); /* unregister the notify fn from the mmmm_camera_t object*/ /* call stop() in parent class to stop the monitor thread*/ ret = cam_ops_action(mCameraId, FALSE, MM_CAMERA_OPS_PREVIEW, 0); if(MM_CAMERA_OK != ret) { ALOGE ("%s: camera preview stop err=%d\n", __func__, ret); } ALOGE("Debug : %s : Preview streaming Stopped",__func__); ret = cam_config_unprepare_buf(mCameraId, MM_CAMERA_CH_PREVIEW); if(ret != MM_CAMERA_OK) { ALOGE("%s:Unreg preview buf err=%d\n", __func__, ret); //ret = BAD_VALUE; } ALOGE("Debug : %s : Buffer Unprepared",__func__); if (mDisplayBuf.preview.buf.mp != NULL) { delete[] mDisplayBuf.preview.buf.mp; } /*free camera_memory handles and return buffer back to surface*/ putBufferToSurface(); ALOGE("%s: X", __func__); }
// --------------------------------------------------------------------------- // QCameraStream_preview // --------------------------------------------------------------------------- void QCameraStream_preview::stop() { ALOGE("%s: E", __func__); int ret=MM_CAMERA_OK; if(!mActive) { return; } Mutex::Autolock lock(mLock); mActive = false; /* unregister the notify fn from the mmmm_camera_t object*/ ALOGI("%s: Stop the thread \n", __func__); /* call stop() in parent class to stop the monitor thread*/ //stream_info = mHalCamCtrl->getChannelInterface(); ret = streamOff(0); if(MM_CAMERA_OK != ret) { ALOGE ("%s: camera preview stop err=%d\n", __func__, ret); } #if 0 ret = cam_config_unprepare_buf(mCameraId, MM_CAMERA_CH_PREVIEW); if(ret != MM_CAMERA_OK) { ALOGE("%s:Unreg preview buf err=%d\n", __func__, ret); //ret = BAD_VALUE; } #endif /* In case of a clean stop, we need to clean all buffers*/ ALOGE("Debug : %s : Buffer Unprepared",__func__); /*free camera_memory handles and return buffer back to surface*/ ret= QCameraStream::deinitStream(); ALOGE(": %s : De init Channel",__func__); if(ret != MM_CAMERA_OK) { ALOGE("%s:Deinit preview channel failed=%d\n", __func__, ret); //ret = BAD_VALUE; } ALOGE("%s: X", __func__); }