camera_device_ops 结构参考

camera_device_ops 结构参考

#include < camera.h >

数据字段

整数(* set_preview_window )(struct camera_device *, struct preview_stream_ops *window)
空白(* 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)
空白(* enable_msg_type )(struct camera_device *, int32_t msg_type)
空白(* disable_msg_type )(struct camera_device *, int32_t msg_type)
整数(* msg_type_enabled )(struct camera_device *, int32_t msg_type)
整数(* start_preview )(struct camera_device *)
空白(* stop_preview )(struct camera_device *)
整数(* preview_enabled )(struct camera_device *)
整数(* store_meta_data_in_buffers )(struct camera_device *, int enable)
整数(* start_recording )(struct camera_device *)
空白(* stop_recording )(struct camera_device *)
整数(*录音启用)(结构相机设备*)
空白(* release_recording_frame )(struct camera_device *, const void *opaque)
整数(* auto_focus )(struct camera_device *)
整数(* cancel_auto_focus )(struct camera_device *)
整数(* take_picture )(struct camera_device *)
整数(* cancel_picture )(struct camera_device *)
整数(* set_parameters )(struct camera_device *, const char *parms)
字符 *(* get_parameters )(struct camera_device *)
空白(* put_parameters )(struct camera_device *, char *)
整数(* send_command )(struct camera_device *, int32_t cmd, int32_t arg1, int32_t arg2)
空白(*释放)(struct camera_device *)
整数(*转储)(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) 调用之前和之后发出的视频录制帧。 Camera HAL 客户端在调用 disableMsgType(CAMERA_MSG_VIDEO_FRAME) 后不得修改/访问任何视频录制帧。

在文件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,则相机 HAL 返回的缓冲区必须使用 put_parameters 返回给它。

在文件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 消息和相应的帧。在客户端调用 disableMsgType(CAMERA_MSG_VIDEO_FRAME) 之前,相机 HAL 客户端必须通过 releaseRecordingFrame() 释放每个记录帧。客户端调用 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 将元数据或真实 YUV 数据存储在通过 CAMERA_MSG_VIDEO_FRAME 发送的视频缓冲区中以进行录制会话。如果未调用,默认的相机 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行定义。


此结构的文档是从以下文件生成的: