Jetson Linux API 参考

32.7.4 版本
06_jpeg_decode (JPEG 解码)

概述

JPEG 解码示例演示了 JPEG 解码以及 lib4L2 转换 API 的可选使用,以便在需要缓冲区格式转换时使用。


构建和运行

前提条件

  • 您已按照构建和运行中的步骤 1-3 进行操作。
  • 如果您是从主机 Linux PC (x86) 构建,则您已按照构建和运行中的步骤 4 进行操作。

构建

  • 输入
     $ cd /usr/src/jetson_multimedia_api/samples/06_jpeg_decode
     $ make
    

运行

  • 输入
     $ ./jpeg_decode num_files <number of files to decode> \
         <in-file1> <out-file1> ...<in-filen> <out-filen> [OPTIONS]
    

示例

   $ ./jpeg_decode num_files 1 ../../data/Picture/nvidia-logo.jpg ../../data/Picture/nvidia-logo.yuv


流程

下图显示了数据流经示例的流程。

更多细节

输出平面用于接收输入,捕获平面用于生成输出。当调用 decodeToFd 时,数据格式与 Tegra 硬件匹配,因此不需要格式转换。调用 decodeToBuffer 需要在硬件加速 JPEG 解码后将缓冲区转换为软件格式。JPEG 文件格式包含标准软件格式。


主要结构和类

此示例使用以下主要结构和类

元素描述
NvVideoConverter 包含用于视频格式转换的元素和函数。
NvJpegDecoder 包含用于解码 JPEG 图像的元素和函数。

NvVideoConverter 包含所有视频转换相关的元素和函数。示例中使用的 NvVideoConverter 的主要成员包括

NvVideoConverter 成员描述
output_plane V4l2 输出平面。
capture_plane V4l2 捕获平面。
waitForIdle 等待直到所有排队的输出平面缓冲区都被处理并从捕获平面出队。
setOutputPlaneFormat 设置输出平面格式。
setCapturePlaneFormat 设置捕获平面格式。

NvVideoConverter 元素 output_planecapture_plane 属于 NvV4l2ElementPlane 类。NvV4l2ElementPlane 中示例使用的主要成员如下

元素描述
setupPlane 设置 V4l2 元素的平面。
deinitPlane 销毁 V4l2 元素的平面。
setStreamStatus 启动/停止流。
setDQThreadCallback 设置出队缓冲区线程的回调函数。
startDQThread 启动出队缓冲区线程。
stopDQThread 停止出队缓冲区线程。
qBuffer 排队 V4l2 缓冲区。
dqBuffer 出队 V4l2 缓冲区。
getNumBuffers 获取 V4l2 缓冲区的数量。
getNumQueuedBuffers 获取队列中 V4l2 缓冲区的数量。
getNthBuffer 获取索引 N 处的 NvBuffer

NvJpegDecoder 类包含所有用于 JPEG 图像解码的函数。使用的主要成员是

函数描述
decodeToFd 解码到硬件缓冲区(在文件描述符处),数据可供其他组件使用。
decodeToBuffer 解码到软件缓冲区。
. All rights reserved.