这篇“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变量如何定义”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。