Jetson Linux API 参考文档

32.7.4 版本
transform_unit_sample (nvbuf_utils 像素格式转换)

概述

NVIDIA 缓冲实用程序 nvbuf_utils 提供了一个封装器,用于简化应用程序/插件在缓冲和转换、合成或混合用例中的使用。

transform unit sample 演示了如何使用 nvbuf_utils 通过 VIC 或 GPU 将像素格式从一种转换为另一种。支持的像素格式、过滤器、合成和其他属性在 nvbuf_utils 中描述。

支持的像素格式包括

  • NV12
  • NV21
  • NV12_709
  • ARGB32
  • XRGB32
  • YUV420
  • YVU420
  • YUV420_709


构建和运行

前提条件

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

构建

  • 输入
     $ cd /usr/src/jetson_multimedia_api/samples/unittest_samples/transform_unit_sample
     $ make
    

运行

  • 输入
     $ ./transform_sample <in-file> <in-pix-fmt> <in-width> <in-height> <out-file> <out-pixfmt> <enable-gpu>
    

查看支持的选项

输入

   $ ./transform_sample --help

使用 VIC 执行转换的示例

  $ ./transform_sample ../../data/Video/sample_outdoor_car_1080p_10fps.yuv
  yuv420 1920 1080 sample_outdoor_car_1080p_10fps_nv12.yuv nv12 0

使用 GPU 执行转换的示例

  $ ./transform_sample ../../data/Video/sample_outdoor_car_1080p_10fps.yuv
  yuv420 1920 1080 sample_outdoor_car_1080p_10fps_nv12.yuv nv12 1


流程

以下步骤显示了本示例的流程。

  1. 创建输入和输出 DMA 映射硬件缓冲区。
  2. 定义转换参数。
  3. 调用 NvBufferTransform,它将输入 DMA 缓冲区转换为输出 DMA 缓冲区,两者都导出为 fd。
  4. 应用程序将转换后的缓冲区写入文件。


关键结构和类

该示例使用 nvbuf_utils 函数

元素描述
NvBufferMemMap 获取平面的内存映射虚拟地址。
NvBufferMemUnMap 取消映射平面的内存映射虚拟地址。
NvBufferGetParams 获取缓冲区参数。
NvBufferCreateEx 分配硬件缓冲区。
NvBufferMemSyncForCpu 同步 CPU 的硬件内存缓存。
NvBufferMemSyncForDevice 同步设备的硬件内存缓存。
NvBufferTransform 将一个 DMA 缓冲区转换为另一个 DMA 缓冲区。
NvBufferDestroy 销毁硬件缓冲区。
. All rights reserved.