本示例演示如何使用 libargus 创建相机对象并作为帧生产者接口,以便 EGL 图像渲染器可以显示、预览或执行图像捕获到 JPEG 文件。
$ cd /usr/src/jetson_multimedia_api/samples/09_camera_jpeg_capture $ make
$ ./camera_jpeg_capture [OPTIONS]
捕获的预览流可以通过 HDMI 显示。JPEG 文件存储在当前目录中。
$ ./camera_jpeg_capture -h
下图显示了样本中数据的流向。
该示例使用生产者和消费者模型来建立从相机对象生成帧输出到连接 EGLStream 缓冲区的消费者(用于渲染预览模式)的帧流。
一旦您熟悉它,编程模型就非常简单高效。
该 API 是基于帧的跨平台用户模式 API。 设计旨在确保在消耗输出帧时实现零缓冲区复制。
关于 libargus 和 EGLStream,请参考 libargus 文档。
类 | 描述 |
---|---|
类 NvEglRenderer | 此类包含将帧渲染到 EGL 窗口的元素和函数。 |
类 NvJpegEncoder | 此类包含编码 JPEG 图像的元素和函数。 |
NvEglRendererRenderer 是封装所有视频渲染功能的类。 样本中使用的主要成员如下:
NvEglRenderer | 描述 |
---|---|
NvEglRenderer::render | 将 FD 渲染到 EGL 窗口。 |
NvJpegEncoder 是封装所有 JPEG 编码功能的类。 使用的主要成员是
NvV4l2ElementPlane | 描述 |
---|---|
encodeFromFd | 从 V4L2 元素导出的缓冲区的 FD 进行编码。 |