Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
598a3b16
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
598a3b16
编写于
12月 29, 2021
作者:
W
wu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modified: zh-cn/device-dev/driver/driver-peripherals-camera-des.md
Signed-off-by:
N
wu
<
wuzhimin8@huawei.com
>
上级
0bb35dee
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
67 addition
and
66 deletion
+67
-66
zh-cn/device-dev/driver/driver-peripherals-camera-des.md
zh-cn/device-dev/driver/driver-peripherals-camera-des.md
+67
-66
未找到文件。
zh-cn/device-dev/driver/driver-peripherals-camera-des.md
浏览文件 @
598a3b16
# Camera<a name="ZH-CN_TOPIC_0000001078436908"></a>
# Camera<a name="ZH-CN_TOPIC_0000001078436908"></a>
-
[
概述
](
#section11660541593
)
-
[
Camera<a name="ZH-CN_TOPIC_0000001078436908"></a>
](
#camera
)
-
[
开发指导
](
#section161941989596
)
-
[
概述<a name="section11660541593"></a>
](
#概述
)
-
[
接口说明
](
#section1551164914237
)
-
[
开发指导<a name="section161941989596"></a>
](
#开发指导
)
-
[
开发步骤
](
#section19806524151819
)
-
[
HDI接口说明<a name="section1551164914237"></a>
](
#hdi接口说明
)
-
[
开发实例
](
#section1564411661810
)
-
[
开发步骤<a name="section19806524151819"></a>
](
#开发步骤
)
-
[
开发实例<a name="section1564411661810"></a>
](
#开发实例
)
## 概述<a name="section11660541593"></a>
## 概述<a name="section11660541593"></a>
...
@@ -48,7 +49,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
...
@@ -48,7 +49,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
### 开发步骤<a name="section19806524151819"></a>
### 开发步骤<a name="section19806524151819"></a>
下面分步骤描述了Camera驱动框架的主要接口,包括注册、检测;创建、捕获和销毁流;打开和关闭设备等接口(为了更清晰的展示和描述主要功能的实现部分,该章节删除了部分判错和LOG源码)。
下面分步骤描述了Camera驱动框架的主要接口,包括注册、检测;创建、捕获和销毁流;打开和关闭设备等接口(为了更清晰的展示和描述主要功能的实现部分,该章节删除了部分判错和LOG源码)。
####
1. 注册CameraHost
1.
注册CameraHost
定义Camera的HdfDriverEntry结构体,该结构体中定义了CameraHost初始化的方法。
定义Camera的HdfDriverEntry结构体,该结构体中定义了CameraHost初始化的方法。
...
@@ -63,7 +64,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
...
@@ -63,7 +64,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
HDF_INIT(g_cameraHostDriverEntry); // 将Camera的HdfDriverEntry结构体注册到HDF上
HDF_INIT(g_cameraHostDriverEntry); // 将Camera的HdfDriverEntry结构体注册到HDF上
```
```
####
2. CameraHost初始化
2.
CameraHost初始化
步骤1中提到的HdfCameraHostDriverBind接口提供了CameraServiceDispatch和CameraHostStubInstance的注册。这两个接口一个是远端调用CameraHost的方法,如OpenCamera(),SetFlashlight()等,另外一个是Camera设备的初始化,在开机时被调用。
步骤1中提到的HdfCameraHostDriverBind接口提供了CameraServiceDispatch和CameraHostStubInstance的注册。这两个接口一个是远端调用CameraHost的方法,如OpenCamera(),SetFlashlight()等,另外一个是Camera设备的初始化,在开机时被调用。
...
@@ -122,7 +123,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
...
@@ -122,7 +123,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
CameraHostStubInstance()接口最终调用CameraHostImpl::Init()方法,该方法会获取物理Camera,并对DeviceManager和PipelineCore进行初始化。
CameraHostStubInstance()接口最终调用CameraHostImpl::Init()方法,该方法会获取物理Camera,并对DeviceManager和PipelineCore进行初始化。
####
3. 获取CamerHost
3.
获取CamerHost
调用Get()接口从远端CameraService中获取CameraHost对象。get()方法如下:
调用Get()接口从远端CameraService中获取CameraHost对象。get()方法如下:
...
@@ -148,7 +149,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
...
@@ -148,7 +149,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
}
}
```
```
####
4. OpenCamera()接口
4.
OpenCamera()接口
获取CameraHost对象,该对象中有五个方法,分别是SetCallback、GetCameraIds、GetCameraAbility、OpenCamera和SetFlashlight。下面着重描述OpenCamera接口。
获取CameraHost对象,该对象中有五个方法,分别是SetCallback、GetCameraIds、GetCameraAbility、OpenCamera和SetFlashlight。下面着重描述OpenCamera接口。
CameraHostProxy的OpenCamera()接口通过CMD_CAMERA_HOST_OPEN_CAMERA调用远端CameraHostStubOpenCamera()接口并获取ICameraDevice对象。
CameraHostProxy的OpenCamera()接口通过CMD_CAMERA_HOST_OPEN_CAMERA调用远端CameraHostStubOpenCamera()接口并获取ICameraDevice对象。
...
@@ -215,7 +216,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
...
@@ -215,7 +216,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
}
}
```
```
####
5. 获取GetStreamOperator对象
5.
获取GetStreamOperator对象
IStreamOperator定义了一系列对流控制和操作的接口,主要有CreateStreams、CommitStreams、Capture、CancelCapture等。
IStreamOperator定义了一系列对流控制和操作的接口,主要有CreateStreams、CommitStreams、Capture、CancelCapture等。
...
@@ -245,7 +246,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
...
@@ -245,7 +246,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
}
}
```
```
####
6. 创建流
6.
创建流
调用CreateStreams创建流前需要填充StreamInfo结构体,具体内容如下:
调用CreateStreams创建流前需要填充StreamInfo结构体,具体内容如下:
...
@@ -288,7 +289,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
...
@@ -288,7 +289,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
}
}
```
```
####
7. 配置流
7.
配置流
CommitStreams()是配置流的接口,必须在创建流之后调用,其主要作用是初始化Pipeline和创建Pipeline。
CommitStreams()是配置流的接口,必须在创建流之后调用,其主要作用是初始化Pipeline和创建Pipeline。
...
@@ -327,7 +328,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
...
@@ -327,7 +328,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
}
}
```
```
####
8. 捕获图像
8.
捕获图像
在调用Capture()接口前需要先填充CaptureInfo结构体,具体内容如下:
在调用Capture()接口前需要先填充CaptureInfo结构体,具体内容如下:
...
@@ -369,7 +370,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
...
@@ -369,7 +370,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
}
}
```
```
####
9. 取消捕获和释放离线流
9.
取消捕获和释放离线流
StreamOperatorImpl类中的CancelCapture()接口的主要作用是根据captureId取消数据流的捕获。
StreamOperatorImpl类中的CancelCapture()接口的主要作用是根据captureId取消数据流的捕获。
...
@@ -396,7 +397,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
...
@@ -396,7 +397,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
}
}
```
```
####
10. 关闭Camera设备
10.
关闭Camera设备
调用CameraDeviceImpl中的Close()来关闭CameraDevice,该接口调用deviceManager中的PowerDown()来给设备下电。
调用CameraDeviceImpl中的Close()来关闭CameraDevice,该接口调用deviceManager中的PowerDown()来给设备下电。
...
@@ -405,7 +406,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
...
@@ -405,7 +406,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
在/drivers/peripheral/camera/hal/init目录下有一个关于Camera的demo,开机后会在/system/bin下生成可执行文件ohos_camera_demo,该demo可以完成camera的预览,拍照等基础功能。下面我们就以此demo为例讲述怎样用HDI接口去编写预览PreviewOn()和拍照CaptureON()的用例。
在/drivers/peripheral/camera/hal/init目录下有一个关于Camera的demo,开机后会在/system/bin下生成可执行文件ohos_camera_demo,该demo可以完成camera的预览,拍照等基础功能。下面我们就以此demo为例讲述怎样用HDI接口去编写预览PreviewOn()和拍照CaptureON()的用例。
1.
在main函数中构造一个Hos3516Demo对象,该对象中有对camera初始化、启停流、释放等控制的方法。下面mainDemo->InitSensors()函数为初始化CameraHost,mainDemo->InitCameraDevice()函数为初始化CameraDevice。
1.
在main函数中构造一个Hos3516Demo对象,该对象中有对camera初始化、启停流、释放等控制的方法。下面mainDemo->InitSensors()函数为初始化CameraHost,mainDemo->InitCameraDevice()函数为初始化CameraDevice。
```
```
int main(int argc, char** argv)
int main(int argc, char** argv)
...
@@ -468,7 +469,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
...
@@ -468,7 +469,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
}
}
```
```
2.
PreviewOn()接口包含配置流、开启预览流和启动Capture动作。该接口执行完成后Camera预览通路已经开始运转并开启了两路流,一路流是preview,另外一路流是capture或者video,两路流中仅对preview流进行capture动作。
2.
PreviewOn()接口包含配置流、开启预览流和启动Capture动作。该接口执行完成后Camera预览通路已经开始运转并开启了两路流,一路流是preview,另外一路流是capture或者video,两路流中仅对preview流进行capture动作。
```
```
static RetCode PreviewOn(int mode, const std::shared_ptr<Hos3516Demo>& mainDemo)
static RetCode PreviewOn(int mode, const std::shared_ptr<Hos3516Demo>& mainDemo)
...
@@ -572,7 +573,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
...
@@ -572,7 +573,7 @@ OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Driver Inter
}
}
```
```
3.
ManuList()函数从控制台通过fgets()接口获取字符,不同字符所对应demo支持的功能不同,并打印出该demo所支持功能的菜单。
3.
ManuList()函数从控制台通过fgets()接口获取字符,不同字符所对应demo支持的功能不同,并打印出该demo所支持功能的菜单。
```
```
static void ManuList(const std::shared_ptr<Hos3516Demo>& mainDemo,
static void ManuList(const std::shared_ptr<Hos3516Demo>& mainDemo,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录