Camera hal3 在 android 框架中所处的位置如上图, 对上,主要实现 Framework 一整套 API 接口,响应其 控制命令,返回数据与控制参数结果。 对下, 主要是通 V4l2 框架实现与 kernel 的交互。3a 控制则是通 control loop 接口与 camera_engine_isp 交互。 另外,其中一些组件或功能的实现也会调用到其他一些第三方 库, 如 cameraBuffer 相关,会调用到 Galloc 相关库, jpeg 编码则会调用到 Hwjpeg 相关库。
二.Camera hal3 与 Frame work 交互时序
三.usbcamera调试
首先硬件给usb供电,供电后插上usbcamera可以看到新生成的pid vid。
ls /dev/video*
新生成了video1 video2.
media-ctl -d /dev/media0 -p
1|console:/ # media-ctl -d /dev/media0 -p
Opening media device /dev/media0
Enumerating entities
Found 4 entities
Enumerating pads and links
Media controller API version 0.0.189
Media device information
------------------------
driver uvcvideo
model USB2.0 PC CAMERA: USB2.0 PC CAM
serial
bus info usb-fc880000.usb-1.3
hw revision 0x100
driver version 0.0.189
Device topology
- entity 1: USB2.0 PC CAMERA: USB2.0 PC CAM (1 pad, 1 link)
type Node subtype V4L
device node name /dev/video1
pad0: Sink
<- "Processing 2":1 [ENABLED,IMMUTABLE]
- entity 4: USB2.0 PC CAMERA: USB2.0 PC CAM (0 pad, 0 link)
type Node subtype V4L
device node name /dev/video2
- entity 8: Processing 2 (2 pads, 2 links)
type V4L2 subdev subtype Unknown
pad0: Sink
v4l2_subdev_open: Failed to open subdev device node
<- "Input 1":0 [ENABLED,IMMUTABLE]
pad1: Source
v4l2_subdev_open: Failed to open subdev device node
-> "USB2.0 PC CAMERA: USB2.0 PC CAM":0 [ENABLED,IMMUTABLE]
- entity 11: Input 1 (1 pad, 1 link)
type V4L2 subdev subtype Sensor
pad0: Source
v4l2_subdev_open: Failed to open subdev device node
-> "Processing 2":0 [ENABLED,IMMUTABLE]
查看拓扑图,生成新的video1 video2.
dumpsys media.camera
onsole:/ # dumpsys media.camera
== Service global info: &