camera_device_ops 结构体参考文档

camera_device_ops 结构体参考文档

#include < camera.h >

数据字段

int(*  set_preview_window )(struct camera_device *, struct preview_stream_ops *window)
 
void(*  set_callbacks )(struct camera_device *, camera_notify_callback notify_cb, camera_data_callback data_cb, camera_data_timestamp_callback data_cb_timestamp, camera_request_memory get_memory, void *user)
 
void(*  enable_msg_type )(struct camera_device *, int32_t msg_type)
 
void(*  disable_msg_type )(struct camera_device *, int32_t msg_type)
 
int(*  msg_type_enabled )(struct camera_device *, int32_t msg_type)
 
int(*  start_preview )(struct camera_device *)
 
void(*  stop_preview )(struct camera_device *)
 
int(*  preview_enabled )(struct camera_device *)
 
int(*  store_meta_data_in_buffers )(struct camera_device *, int enable)
 
int(*  start_recording )(struct camera_device *)
 
void(*  stop_recording )(struct camera_device *)
 
int(*  recording_enabled )(struct camera_device *)
 
void(*  release_recording_frame )(struct camera_device *, const void *opaque)
 
int(*  auto_focus )(struct camera_device *)
 
int(*  cancel_auto_focus )(struct camera_device *)
 
int(*  take_picture )(struct camera_device *)
 
int(*  cancel_picture )(struct camera_device *)
 
int(*  set_parameters )(struct camera_device *, const char *parms)
 
char *(*  get_parameters )(struct camera_device *)
 
void(*  put_parameters )(struct camera_device *, char *)
 
int(*  send_command )(struct camera_device *, int32_t cmd, int32_t arg1, int32_t arg2)
 
void(*  release )(struct camera_device *)
 
int(*  dump )(struct camera_device *, int fd)
 

详细说明

定义位于文件 camera.h 99 行。

字段文档

int(* auto_focus)(struct camera_device *)

开始自动对焦,在对焦完成后,系统会使用 CAMERA_MSG_FOCUS 调用一次通知回调例程。如果需要再次自动对焦,系统会再次调用 autoFocus()。

定义位于文件 camera.h 227 行。

int(* cancel_auto_focus)(struct camera_device *)

取消自动对焦功能。如果自动对焦仍在进行中,此函数会取消自动对焦。无论自动对焦是否正在进行,此函数都会将焦点位置返回为默认位置。如果相机不支持自动对焦,则此操作不会执行任何操作。

定义位于文件 camera.h 235 行。

int(* cancel_picture)(struct camera_device *)

取消使用 takePicture 启动的拍照操作。在未拍摄照片时调用此方法不会产生任何操作。

定义位于文件 camera.h 246 行。

void(* disable_msg_type)(struct camera_device *, int32_t msg_type)

停用一条或一组消息。

收到对 disableMsgType(CAMERA_MSG_VIDEO_FRAME) 的调用后,相机 HAL 不应依赖于其客户端调用 releaseRecordingFrame() 来释放相机 HAL 在调用 disableMsgType(CAMERA_MSG_VIDEO_FRAME) 之前和之后发送的视频录制帧。调用 disableMsgType(CAMERA_MSG_VIDEO_FRAME) 后,相机 HAL 客户端不得修改/访问任何视频录制帧。

定义位于文件 camera.h 132 行。

int(* dump)(struct camera_device *, int fd)

转储相机硬件的状态

定义位于文件 camera.h 282 行。

void(* enable_msg_type)(struct camera_device *, int32_t msg_type)

以下三个函数都接受 msg_type,它是 include/ui/Camera.h 中定义的消息的位掩码。启用某个消息或一组消息。

定义位于文件 camera.h 120 行。

char*(* get_parameters)(struct camera_device *)

检索相机参数。如果 put_parameters 不为 NULL,则必须使用 put_parameters 将相机 HAL 返回的缓冲区返回给它。

定义位于文件 camera.h 258 行。

int(* msg_type_enabled)(struct camera_device *, int32_t msg_type)

查询某条消息或一组消息是否已启用。请注意,这会按 AND 运算,如果查询的任何消息处于关闭状态,则会返回 false。

定义位于文件 camera.h 139 行。

int(* preview_enabled)(struct camera_device *)

如果启用了预览,则返回 true。

定义位于文件 camera.h 154 行

void(* put_parameters)(struct camera_device *, char *)

当我们调用 get_parameters 时,相机 HAL 会使用自己的内存向我们传递参数。如果 put_parameters 不为 NULL,请使用此函数将内存返回给相机 HAL。如果 put_parameters 为 NULL,则必须使用 free() 释放内存。

定义位于文件 camera.h 265 行中。

int(* recording_enabled)(struct camera_device *)

如果已启用录制功能,则返回 true。

定义位于文件 camera.h 208 行。

void(* release)(struct camera_device *)

释放此对象拥有的硬件资源。请注意,这 不是 在析构函数中完成的。

定义位于文件 camera.h 277 行。

void(* release_recording_frame)(struct camera_device *, const void *opaque)

释放 CAMERA_MSG_VIDEO_FRAME 之前返回的录制帧。

在相机 HAL 收到对 disableMsgType(CAMERA_MSG_VIDEO_FRAME) 的调用之前,相机 HAL 客户端有责任释放相机 HAL 发送的视频录制帧。收到对 disableMsgType(CAMERA_MSG_VIDEO_FRAME) 的调用后,相机 HAL 负责管理视频录制帧的生命周期。

定义位于文件 camera.h 219 行。

int(* send_command)(struct camera_device *, int32_t cmd, int32_t arg1, int32_t arg2)

向相机驱动程序发送命令。

定义位于文件 camera.h 270 行。

void(* set_callbacks)(struct camera_device *, camera_notify_callback notify_cb, camera_data_callback data_cb, camera_data_timestamp_callback data_cb_timestamp, camera_request_memory get_memory, void *user)

设置通知和数据回调

定义位于文件 camera.h 105 行。

int(* set_parameters)(struct camera_device *, const char *parms)

设置相机参数。如果任何参数无效或不受支持,此方法会返回 BAD_VALUE。

定义位于文件 camera.h 252 行。

int(* set_preview_window)(struct camera_device *, struct preview_stream_ops *window)

设置要将预览帧发送到的 ANativeWindow

定义位于文件 camera.h 101 行。

int(* start_preview)(struct camera_device *)

启动预览模式。

定义位于文件 camera.h 144 行。

int(* start_recording)(struct camera_device *)

开始录制模式。有录制图片可用时,系统会发送 CAMERA_MSG_VIDEO_FRAME 消息以及相应的帧。摄像头 HAL 客户端必须先通过 releaseRecordingFrame() 释放每个录制帧,然后才能调用 disableMsgType(CAMERA_MSG_VIDEO_FRAME)。客户端调用 disableMsgType(CAMERA_MSG_VIDEO_FRAME) 后,摄像头 HAL 负责管理视频录制帧的生命周期,并且客户端不得修改/访问任何视频录制帧。

定义位于文件 camera.h 198 行

void(* stop_preview)(struct camera_device *)

停止之前启动的预览。

定义位于文件 camera.h 149 行。

void(* stop_recording)(struct camera_device *)

停止之前开始的录制。

定义位于文件 camera.h 203 行。

int(* store_meta_data_in_buffers)(struct camera_device *, int enable)

请求相机 HAL 在通过 CAMERA_MSG_VIDEO_FRAME 发送的视频缓冲区中存储录制会话的元数据或实际 YUV 数据。如果未调用该方法,默认的相机 HAL 行为是在视频缓冲区中存储实际的 YUV 数据。

此方法应在 startRecording() 之前调用,才能生效。

如果元数据存储在视频缓冲区中,则视频缓冲区的接收器需要借助缓冲区中的元数据来解读内容并查找实际帧数据。具体实现方式不在本方法的讨论范围之内。

某些相机 HAL 可能不支持在视频缓冲区中存储元数据,但所有相机 HAL 都应支持在视频缓冲区中存储实际的 YUV 数据。如果相机 HAL 在收到存储元数据到视频缓冲区中的请求时不支持此操作,则必须返回 INVALID_OPERATION。让摄像头 HAL 直接将元数据(而非实际帧数据)传递给视频编码器非常有用,因为如果视频大小较大,未压缩的帧数据量可能会非常大。

参数
启用 如果为 true,则指示相机 HAL 在视频缓冲区中存储元数据;如果为 false,则指示相机 HAL 在视频缓冲区中存储实际的 YUV 数据。
返回值
成功时返回 OK。

定义位于文件 camera.h 186 行。

int(* take_picture)(struct camera_device *)

拍照。

定义位于文件 camera.h 240 行。


此结构体的文档是根据以下文件生成的: