千家信息网

c++ mModule变量如何定义

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇"c++ mModule变量如何定义"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇
千家信息网最后更新 2025年01月31日c++ mModule变量如何定义

这篇"c++ mModule变量如何定义"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"c++ mModule变量如何定义"文章吧。

文件 CameraHardwareInterface.h
status_t startPreview()
{
ALOGV("%s(%s)", __FUNCTION__, mName.string());
if (mDevice->ops->start_preview)
return mDevice->ops->start_preview(mDevice);
return INVALID_OPERATION;
}

首先

private: camera_device_t *mDevice;

在方法initialize中进行了初始化赋值

status_t initialize(CameraModule *module){

。。。

if (module->getModuleApiVersion() >= CAMERA_MODULE_API_VERSION_2_3 &&
info.device_version > CAMERA_DEVICE_API_VERSION_1_0) {
// Open higher version camera device as HAL1.0 device.
rc = module->openLegacy(mName.string(),
CAMERA_DEVICE_API_VERSION_1_0,
(hw_device_t **)&mDevice);
} else {
rc = module->oCameraHardwareInterface.hpen(mName.string(), (hw_device_t **)&mDevice);

//注意这里的二级指针&mDevice,应该最后意图指向一个结构体
}

。。。

}

然后来到CameraModule.cpp 文件

int CameraModule::open(const char* id, struct hw_device_t** device) {
int res;
ATRACE_BEGIN("camera_module->open");
res = filterOpenErrorCode(mModule->common.methods->open(&mModule->common, id, device));
ATRACE_END();
return res;
}

在这里mModule 变量 定义

camera_module_t *mModule;

至于后面的common 实际上是camera_module_t 结构体的属性

typedef struct camera_module {

。。。

hw_module_t common; //这里不是指针

。。。

}

继续 typedef struct hw_module_t{

。。。

struct hw_module_methods_t* methods;

。。。

}

typedef struct hw_module_methods_t {
/** Open a specific device */
int (*open)(const struct hw_module_t* module, const char* id,
struct hw_device_t** device);

} hw_module_methods_t;

现在可以明白了

mModule->common.methods->open(&mModule->common, id, device) 的写法了吧

继续device,就是hw_device_t 对象实例

typedef struct camera_device {
hw_device_t common;
camera_device_ops_t *ops;
void *priv;
} camera_device_t;

open 是一个指针函数,它指向的是 QCamera2Factory 的 camera_device_open 方法

以上就是关于"c++ mModule变量如何定义"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

0