• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 代码仓
2OHOS_STD/drivers_peripheral
3
4# 目录结构
5```
6    .
7    ├── hal
8    │   ├── adapter
9    │   │   ├── chipset
10    │   │   │   ├── gni
11    │   │   │   ├── hispark_taurus
12    │   │   │   │   ├── include
13    │   │   │   │   │   ├── device_manager
14    │   │   │   │   │   └── driver_adapter
15    │   │   │   │   └── src
16    │   │   │   │       ├── device_manager
17    │   │   │   │       ├── driver_adapter
18    │   │   │   │       └── pipeline_core
19    │   │   │   │           ├── ipp_algo_example
20    │   │   │   │           └── nodes
21    │   │   │   │               ├── mpi_node
22    │   │   │   │               ├── venc_node
23    │   │   │   │               ├── vi_node
24    │   │   │   │               ├── vo_node
25    │   │   │   │               └── vpss_node
26    │   │   │   └── rpi3
27    │   │   │       ├── include
28    │   │   │       │   └── device_manager
29    │   │   │       └── src
30    │   │   │           ├── device_manager
31    │   │   │           └── driver_adapter
32    │   │   │               ├── main_test
33    │   │   │               └── test
34    │   │   │                   └── unittest
35    │   │   │                       └── include
36    │   │   └── platform
37    │   │       └── v4l2
38    │   │           └── src
39    │   │               ├── driver_adapter
40    │   │               │   ├── include
41    │   │               │   └── src
42    │   │               └── pipeline_core
43    │   │                   ├── ipp_algo_example
44    │   │                   └── nodes
45    │   │                       ├── uvc_node
46    │   │                       └── v4l2_source_node
47    │   ├── buffer_manager
48    │   │   ├── include
49    │   │   ├── src
50    │   │   │   ├── gralloc_buffer_allocator
51    │   │   │   └── heap_buffer_allocator
52    │   │   └── test
53    │   │       └── unittest
54    │   ├── device_manager
55    │   │   ├── include
56    │   │   ├── src
57    │   │   └── test
58    │   │       └── unittest
59    │   │           ├── mpi
60    │   │           └── v4l2
61    │   ├── hdi_impl
62    │   │   ├── include
63    │   │   │   ├── camera_device
64    │   │   │   ├── camera_host
65    │   │   │   ├── offline_stream_operator
66    │   │   │   └── stream_operator
67    │   │   ├── src
68    │   │   │   ├── camera_device
69    │   │   │   ├── camera_host
70    │   │   │   ├── offline_stream_operator
71    │   │   │   └── stream_operator
72    │   │   └── test
73    │   │       └── unittest
74    │   ├── include
75    │   ├── init
76    │   ├── pipeline_core
77    │   │   ├── host_stream
78    │   │   │   ├── include
79    │   │   │   └── src
80    │   │   ├── include
81    │   │   ├── ipp
82    │   │   │   ├── include
83    │   │   │   └── src
84    │   │   ├── nodes
85    │   │   │   ├── include
86    │   │   │   └── src
87    │   │   │       ├── dummy_node
88    │   │   │       ├── fork_node
89    │   │   │       ├── merge_node
90    │   │   │       ├── node_base
91    │   │   │       ├── sensor_node
92    │   │   │       ├── sink_node
93    │   │   │       ├── source_node
94    │   │   │       └── transform_node
95    │   │   ├── pipeline_impl
96    │   │   │   ├── include
97    │   │   │   └── src
98    │   │   │       ├── builder
99    │   │   │       ├── dispatcher
100    │   │   │       ├── parser
101    │   │   │       └── strategy
102    │   │   │           └── config
103    │   │   ├── src
104    │   │   ├── test
105    │   │   │   └── unittest
106    │   │   └── utils
107    │   ├── test
108    │   │   ├── mpi
109    │   │   │   ├── include
110    │   │   │   └── src
111    │   │   └── v4l2
112    │   │       ├── include
113    │   │       └── src
114    │   └── utils
115    │       ├── event
116    │       └── watchdog
117    ├── hal_c
118    │   ├── hdi_cif
119    │   │   ├── include
120    │   │   └── src
121    │   └── include
122    └── interfaces
123        └── include
124            ├── callback
125            │   ├── device
126            │   ├── host
127            │   └── operator
128            ├── client
129            └── server
130
131```
132
133# 接口说明
134
135## 接口数量:25
136
137### 包:
138
139    package ohos.hdi.camera.host@1.0;
140
141### 路径:
142
143    interfaces/include/icamera_host.h
144
145### 类:
146
147    CameraHost:提供设备个数查询、能力查询和打开设备等接口;
148
149### 函数:
150
151```
152
153/**
154 * @brief 设置Host回调函数
155 *
156 * @param callback Host回调函数
157 * @return CamRetCode
158 */
159CamRetCode SetCallback([in] ICameraHostCallback callback);
160
161/**
162 * @brief 获取当前可用的Camera设备列表
163 *
164 * @param ids 返回的当前可用的设备列表
165 */
166CamRetCode GetCameraIds([out] String[] ids);
167
168/**
169 * @brief 获取Camera的能力集
170 *
171 * @param cameraId 要获取的Camera设备id
172 * @param ability Camera设备的能力集
173 * @return CamRetCode
174 * @see CameraAbility
175 */
176CamRetCode GetCameraAbility([in] String cameraId, [out] CameraAbility ability);
177
178/**
179 * @brief 打开Camera设备
180 *
181 * @param cameraId 要打开的Camera设备id
182 * @param callback Camera设备的回调函数
183 * @param camera 返回的Camera设备接口
184 * @return CamRetCode
185 * @see ICameraDeviceCallback
186 * @see ICameraDevice
187 */
188CamRetCode OpenCamera([in] String cameraId, [in] ICameraDeviceCallback callback, [out] ICameraDevice camera);
189
190/**
191 * @brief 打开或者关闭手电筒
192 *
193 * @param cameraId 手电筒与之关联的Camera设备id
194 * @param isEnable 闪光灯打开或者关闭
195 * @return CamRetCode
196 */
197CamRetCode SetFlashlight[in] String cameraId, [out] boolean isEnable);
198
199```
200
201
202### 包:
203    package ohos.hdi.camera.device@1.0;
204### 路径:
205    interfaces/include/icamera_device.h
206### 类:
207    CameraDevice: Camera设备控制接口;
208### 函数:
209
210    /**
211     * @brief 获取流控制器
212     *
213     * @param callback 流回调函数
214     * @param operator 返回的流控制器
215     * @return CamRetCode
216     */
217    CamRetCode GetStreamOperator([in] IStreamOperatorCallback callback, [out] IStreamOperator operator);
218
219    /**
220     * @brief 更新设备控制参数
221     *
222     * @param setting Camera设置参数
223     * @return CamRetCode
224     */
225    CamRetCode UpdateSettings(CameraSetting setting);
226
227    /**
228     * @brief 设置Result回调模式和回调函数
229     *
230     * @param mode Result的上报模式
231     * @param callback Result的上报callback函数
232     * @return CamRetCode
233     */
234    CamRetCode SetResultMode([in] ResultCallbackMode mode);
235
236    /**
237     * @brief 获取使能的ResultMeta
238     *
239     * @param results 使能的ResultMeta数组
240     * @return CamRetCode
241     */
242    CamRetCode GetEnabledResults([out] MetaType[] results);
243
244    /**
245     * @brief 使能具体的ResultMeta
246     *
247     * @param results 需要使能的ResultMeta数组
248     * @return CamRetCode
249     */
250    CamRetCode EnableResult([in] MetaType[] results);
251
252    /**
253     * @brief 禁止具体的ResultMeta
254     *
255     * @param results 需要禁止的ResultMeta数组
256     * @return CamRetCode
257     */
258    CamRetCode DisableResult(in] MetaType[] results);
259
260    /**
261     * @brief 关闭Camera设备
262     */
263    void Close();
264
265
266
267### 包:
268    package ohos.hdi.camera.stream@1.0;
269### 路径:
270    interfaces/include/istream_operator.h
271### 类:
272    SteamOperator: 提供设备个数查询、能力查询和打开设备等接口;
273### 函数:
274
275
276    /**
277     * @brief 查询模式和流的配置组合是否支持
278     *
279     * @param mode 要配置的模式
280     * @param modeSettings 模式对应的参数
281     * @param info 流的信息
282     * @param type 配置流支持的方式
283     * @return RetCode
284     */
285    RetCode IsStreamsSupported([in] OperationMode mode, [in] CameraMetadata modeSetting, [in] StreamInfo[] info, [out] StreamSupportType type);
286
287     /**
288     * @brief 创建流
289     *
290     * @param streamInfo 需要创建的流信息列表
291     * @return RetCode
292     */
293    RetCode CreateStreams([in] StreamInfo[] streamInfo);
294
295    /**
296     * @brief 释放流
297     *
298     * @param streamIds 需要释放的流Id列表
299     * @return RetCode
300     */
301    RetCode ReleaseStreams([in] int[] streamIds);
302
303    /**
304     * @brief 使能相机流的配置,并配置工作模式
305     *
306     * @param mode 要配置的模式
307     * @param modeSetting 模式对应的参数
308     * @return RetCode
309     * @see OperationMode
310     */
311    RetCode CommitStreams([in] OperationMode mode, [in] CameraMetadata modeSetting);
312
313    /**
314     * @brief 获取所有流特征
315     *
316     * @param streamId  需要获取额的流id
317     * @param attribute 流的属性
318     * @return RetCode
319     */
320    RetCode GetStreamAttributes([out] StreamAttribute[] attributes);
321
322    /**
323     * @brief 关联BufferQueue
324     *
325     * @param streamId 需要关联的流id
326     * @param producer 要关联的BufferQueue对应的producer接口
327     * @return RetCode
328     */
329    RetCode AttachBufferQueue([in] streamId, [in] IBufferClientProducer producer);
330
331    /**
332     * @brief 取消关联BufferQueue
333     *
334     * @param streamId 取消关联的流id
335     * @return RetCode
336     */
337    RetCode DetachBufferQueue([in] int streamId);
338
339    /**
340     * @brief 捕获图像
341     *
342     * @param captureId 标志此次捕获请求的id
343    * @param info 捕获图像的参数信息,如果数组中的info存在多个,则表明是batch模式,连续捕获多帧
344     * @param isStreaming 是否连续捕获
345     * @see StreamAttribute
346     * @return RetCode
347     */
348    RetCode Capture([in] int captureId, [in] CaptureInfo[] info, [in] bool isStreaming);
349
350    /**
351     * @brief 取消图像捕获
352     *
353     * @return RetCode
354     */
355    RetCode CancelCapture([in] int captureId);
356
357    /**
358     * @brief 将普通流转换成离线流
359     *
360     * @param streams 需要转换的普通流Id列表
361     * @param callback 离线流的callback
362     * @param offlineOperator 离线流的控制器
363     * @return RetCode
364     */
365    RetCode ChangeToOfflineStream([in] int[] streamIds, [in]IStreamOperatorCallback callback, [out]IOfflineStreamOperator offlineOperator);`
366
367### 包:
368    package ohos.hdi.camera.stream@1.0;
369### 路径:
370    interfaces/include/istream_operator.h
371### 类:
372    IOfflineStreamOperator: 离线流控制类;
373### 函数:
374
375    /**
376     * @brief 取消图像捕获
377     *
378     * @param captureId 取消捕获的captureId
379     * @return RetCode
380     */
381    RetCode CancelCapture([in] int captureId);
382
383    /**
384     * @brief 释放离线流资源
385     *
386     * @param streamIds 释放的流id列表
387     * @return RetCode
388     */
389    RetCode ReleaseStreams([in] int[] streamIds);
390
391    /**
392     * @brief 释放IOfflineStreamOperator句柄
393     *
394     * @return RetCode
395     */
396    RetCode Release();`
397
398## 数据结构定义
399
400    interfaces/hdi/types.h
401
402## 使用方法
403
404    using namespace Camera;
405
406### 获取CameraHost
407
408    std::shared_ptr<Camera::CameraHost> cameraHost = Camera::CameraHost::CreateCameraHost();
409
410### 获取配置的cameraId
411
412    std::vector<std::string> cameraIds;
413cameraHost->GetCameraIds(cameraIds); #
414
415### 打开camera设备并获取到device
416
417    const std::shared_ptr<Camera::ICameraDeviceCallback> callback = std::make_shared<Camera::ICameraDeviceCallback>();
418
419    std::shared_ptr<Camera::CameraDevice> device;
420
421    std::cout << "cameraIds.front() = " << cameraIds.front() << std::endl;
422
423    Camera::CamRetCode rc = cameraHost->OpenCamera(cameraIds.front(), callback, device);
424
425
426### 调用device的GetStreamOperator函数获取streamOperator
427
428    std::make_shared<Camera::IStreamOperatorCallback>();
429    std::shared_ptr<Camera::StreamOperator> streamOperator = nullptr;
430    rc = device->GetStreamOperator(streamOperatorCallback, streamOperator);`
431### 批量创建数据流
432    std::vector<std::shared_ptr<Camera::StreamInfo>> streamInfos;
433    std::shared_ptr<Camera::StreamInfo> streamInfo = std::make_shared<Camera::StreamInfo>();
434    streamInfo->streamId_ = 1001;
435    streamInfo->width_ = 1280;
436    streamInfo->height_ = 720;
437    streamInfo->format_ = 2;
438    streamInfo->datasapce_ = 10;
439    streamInfo->intent_ = Camera::PREVIEW;
440    streamInfo->tunneledMode_ = 5;
441    streamInfos.push_back(streamInfo);
442    rc = streamOperator->CreateStreams(streamInfos);
443### 配流起流
444    rc = streamOperator->CommitStreams(Camera::NORMAL, nullptr);
445
446