camera: intel: Use token to replace mojo channel manager instance
We want to hide the detail of the camera mojo channel manager and camera
hal also doesn't need it. Use a token to decouple it.
BUG=b:173033342
TEST=emerge cros-camera-hal-intel-ipu3 cros-camera-hal-intel-ipu6
Pass camera.CCAUITakePicture.swa on nautilus and dedede.
Change-Id: I2fddddc692aa0906aac96c65535b775cd22e6e7e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2550966
Tested-by: Hsu Wei-Cheng <mojahsu@chromium.org>
Commit-Queue: Hsu Wei-Cheng <mojahsu@chromium.org>
Reviewed-by: Tianshu Qiu <tian.shu.qiu@intel.com>
Reviewed-by: Hung-yu Wu <hywu@chromium.org>
diff --git a/camera/hal/intel/ipu3/AAL/Camera3HAL.h b/camera/hal/intel/ipu3/AAL/Camera3HAL.h
index 65668ab..e14a8a4 100644
--- a/camera/hal/intel/ipu3/AAL/Camera3HAL.h
+++ b/camera/hal/intel/ipu3/AAL/Camera3HAL.h
@@ -17,7 +17,7 @@
#ifndef _CAMERA3_HAL_H_
#define _CAMERA3_HAL_H_
-#include <cros-camera/camera_mojo_channel_manager.h>
+#include <cros-camera/camera_mojo_channel_manager_token.h>
#include <hardware/camera3.h>
#include "CameraConf.h"
@@ -27,7 +27,7 @@
namespace cros {
namespace intel {
-extern CameraMojoChannelManager* g_mojo_manager;
+extern CameraMojoChannelManagerToken* g_mojo_manager_token;
/**
* \class Camera3HAL
diff --git a/camera/hal/intel/ipu3/Camera3HALModule.cpp b/camera/hal/intel/ipu3/Camera3HALModule.cpp
index 76449d6..2b19445 100644
--- a/camera/hal/intel/ipu3/Camera3HALModule.cpp
+++ b/camera/hal/intel/ipu3/Camera3HALModule.cpp
@@ -54,7 +54,7 @@
*/
static std::mutex sCameraHalMutex;
-CameraMojoChannelManager* cros::intel::g_mojo_manager = nullptr;
+CameraMojoChannelManagerToken* cros::intel::g_mojo_manager_token = nullptr;
int openCameraHardware(int id, const hw_module_t* module, hw_device_t** device)
{
@@ -233,9 +233,9 @@
return 0;
}
-static void set_up(CameraMojoChannelManager* mojo_manager)
+static void set_up(CameraMojoChannelManagerToken* token)
{
- cros::intel::g_mojo_manager = mojo_manager;
+ cros::intel::g_mojo_manager_token = token;
LogHelper::setDebugLevel();
PerformanceTraces::reset();
@@ -251,7 +251,7 @@
{
PlatformData::deinit();
- cros::intel::g_mojo_manager = nullptr;
+ cros::intel::g_mojo_manager_token = nullptr;
}
static struct hw_module_methods_t hal_module_methods = {
diff --git a/camera/hal/intel/ipu3/common/jpeg/ImgEncoder.cpp b/camera/hal/intel/ipu3/common/jpeg/ImgEncoder.cpp
index ef5084a..c7c4c26 100644
--- a/camera/hal/intel/ipu3/common/jpeg/ImgEncoder.cpp
+++ b/camera/hal/intel/ipu3/common/jpeg/ImgEncoder.cpp
@@ -28,7 +28,7 @@
namespace intel {
ImgEncoder::ImgEncoder(int cameraid) :
- mJpegCompressor(cros::JpegCompressor::GetInstance(g_mojo_manager))
+ mJpegCompressor(cros::JpegCompressor::GetInstance(g_mojo_manager_token))
{
LOG1("@%s", __FUNCTION__);
}
diff --git a/camera/hal/intel/ipu3/psl/ipu3/CaptureUnit.h b/camera/hal/intel/ipu3/psl/ipu3/CaptureUnit.h
index b0198ee..af24537 100644
--- a/camera/hal/intel/ipu3/psl/ipu3/CaptureUnit.h
+++ b/camera/hal/intel/ipu3/psl/ipu3/CaptureUnit.h
@@ -14,6 +14,7 @@
* limitations under the License.
*/
+#include <queue>
#include <utils/Errors.h>
#include <vector>
diff --git a/camera/hal/intel/ipu3/psl/ipu3/ipc/client/Intel3AClient.cpp b/camera/hal/intel/ipu3/psl/ipu3/ipc/client/Intel3AClient.cpp
index 0c54ef5..ddb7c76 100644
--- a/camera/hal/intel/ipu3/psl/ipu3/ipc/client/Intel3AClient.cpp
+++ b/camera/hal/intel/ipu3/psl/ipu3/ipc/client/Intel3AClient.cpp
@@ -41,7 +41,7 @@
Intel3AClient::notify = notifyCallback;
mBridge = cros::CameraAlgorithmBridge::CreateInstance(
- cros::CameraAlgorithmBackend::kVendorCpu, g_mojo_manager);
+ cros::CameraAlgorithmBackend::kVendorCpu, g_mojo_manager_token);
CheckError(!mBridge, VOID_VALUE, "@%s, mBridge is nullptr", __FUNCTION__);
CheckError((mBridge->Initialize(this) != 0), VOID_VALUE, "@%s, call mBridge->Initialize fail", __FUNCTION__);
diff --git a/camera/hal/intel/ipu6/aal/Camera3HALModule.cpp b/camera/hal/intel/ipu6/aal/Camera3HALModule.cpp
index a004e46..4c1627c 100644
--- a/camera/hal/intel/ipu6/aal/Camera3HALModule.cpp
+++ b/camera/hal/intel/ipu6/aal/Camera3HALModule.cpp
@@ -246,15 +246,15 @@
* 4. get_number_of_cameras()
* ......
*/
-static void hal_set_up(cros::CameraMojoChannelManager* mojoManager) {
+static void hal_set_up(cros::CameraMojoChannelManagerToken* token) {
LOG1("@%s", __func__);
icamera::Log::setDebugLevel();
icamera::CameraDump::setDumpLevel();
#ifdef ENABLE_SANDBOXING
- // Create IntelAlgoClient and set the mojo manager
- icamera::IntelAlgoClient::getInstance()->setMojoManager(mojoManager);
+ // Create IntelAlgoClient and set the mojo manager token
+ icamera::IntelAlgoClient::getInstance()->setMojoManagerToken(token);
#endif
}
diff --git a/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.cpp b/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.cpp
index 44c330f..7546a14 100644
--- a/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.cpp
+++ b/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.cpp
@@ -60,7 +60,7 @@
: mErrCb(nullptr),
mGpuBridge(nullptr),
mIPCStatus(true),
- mMojoManager(nullptr),
+ mMojoManagerToken(nullptr),
mInitialized(false) {
LOGIPC("@%s", __func__);
}
@@ -70,8 +70,8 @@
}
int IntelAlgoClient::initialize() {
- LOGIPC("@%s, mMojoManager: %p", __func__, mMojoManager);
- CheckError(!mMojoManager, UNKNOWN_ERROR, "@%s, mMojoManager is nullptr", __func__);
+ LOGIPC("@%s, mMojoManagerToken: %p", __func__, mMojoManagerToken);
+ CheckError(!mMojoManagerToken, UNKNOWN_ERROR, "@%s, mMojoManagerToken is nullptr", __func__);
mCallback = base::Bind(&IntelAlgoClient::callbackHandler, base::Unretained(this));
IntelAlgoClient::return_callback = returnCallback;
@@ -80,14 +80,14 @@
IntelAlgoClient::notify = notifyCallback;
mBridge = cros::CameraAlgorithmBridge::CreateInstance(cros::CameraAlgorithmBackend::kVendorCpu,
- mMojoManager);
+ mMojoManagerToken);
CheckError(!mBridge, UNKNOWN_ERROR, "@%s, mBridge is nullptr", __func__);
CheckError(mBridge->Initialize(this) != 0, UNKNOWN_ERROR, "@%s, mBridge init fails", __func__);
if (PlatformData::isUsingGpuAlgo()) {
LOGIPC("@%s GPU algo enabled", __func__);
mGpuBridge = cros::CameraAlgorithmBridge::CreateInstance(
- cros::CameraAlgorithmBackend::kVendorGpu, mMojoManager);
+ cros::CameraAlgorithmBackend::kVendorGpu, mMojoManagerToken);
CheckError(!mGpuBridge, UNKNOWN_ERROR, "@%s, mGpuBridge is nullptr", __func__);
CheckError(mGpuBridge->Initialize(this) != 0, UNKNOWN_ERROR, "@%s, mGpuBridge init fails",
__func__);
diff --git a/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.h b/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.h
index 2e4edac..7cfa6f2 100644
--- a/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.h
+++ b/camera/hal/intel/ipu6/modules/sandboxing/client/IntelAlgoClient.h
@@ -47,7 +47,7 @@
IntelAlgoClient();
virtual ~IntelAlgoClient();
- void setMojoManager(cros::CameraMojoChannelManager* manager) { mMojoManager = manager; }
+ void setMojoManagerToken(cros::CameraMojoChannelManagerToken* token) { mMojoManagerToken = token; }
// Connect to the algo processes(cpu and gpu)
// It must be called after all preparation are ready in camera service
@@ -106,7 +106,7 @@
std::unordered_map<void*, int32_t> mShmMap[MAX_ALGO_SHM];
std::mutex mShmMapMutex; // the mutex for mShmMap
- cros::CameraMojoChannelManager* mMojoManager;
+ cros::CameraMojoChannelManagerToken* mMojoManagerToken;
bool mInitialized;
private: