温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

c++ mModule变量如何定义

发布时间:2022-03-25 09:24:04 来源:亿速云 阅读:153 作者:iii 栏目:互联网科技

这篇“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变量如何定义”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI