camera_sample 应用程序是一个单元级实现,用于演示如何使用 libv4l2_nvargus 接口进行流传输。
该应用程序读取捕获的缓冲区,以便使用 EGL 渲染器进行预览,或者将原始缓冲区转储到文件中,而无需额外的内存复制。
$ cd /usr/src/jetson_multimedia_api/samples/unittest_samples/camera_unit_sample $ make
$ ./camera_sample [OPTIONS]
捕获的预览流可以通过 HDMI 显示。
$ ./camera_sample -r 1920 1080 -fps 30 1
$ ./camera_sample -h
以下图表显示了此示例的流程。
该示例使用以下主要类和结构
元素 | 描述 |
---|---|
Buffer | 基于 v4l2_buffer 结构的类模型。 |
类 | 描述 |
---|---|
class NvEGLRender | 该类包含将帧渲染到 EGL 窗口的元素和函数。 |
NvEGLRender 是封装所有视频渲染功能的类。示例中使用的主要成员如下:
NvEGLRender | 描述 |
---|---|
NvEglRenderer::render | 将 FD 渲染到 EGL 窗口。 |
示例中使用的主要结构和函数如下:
函数 | 描述 |
---|---|
dq_buffer | 从平面出队缓冲区。 |
capture_plane_callback | DQ 回调函数。 |
q_buffer | 在平面上排队缓冲区。 |
req_buffers_on_capture_plane | 在编码器捕获平面上请求缓冲区。 |
set_plane_format | 在编码器捕获平面上设置格式。 |
set_controls | 设置 Argus 属性和控件的值。 |