Gst-nvvideoconvert#

此插件执行视频颜色格式转换。它接受 NVMM 内存以及 RAW (使用 calloc() 或 malloc() 分配的内存),并在输出端提供 NVMM 或 RAW 内存。

Gst-nvvideoconvert

输入和输出#

  • 输入

    • Gst Buffer 批量缓冲区

    • NvDsBatchMeta

    • 格式:(NVMM/RAW)

    • dGPU - NV12, I420, P010_10LE, BGRx, RGBA, GRAY8, RGB, BGR, Y444, Y444_10LE, Y444_12LE, BGR10A2_LE, UYVP, I420_12LE, RGB10A2_LE, GRAY16_LE

    • Jetson - NV12, I420, P010_10LE, BGRx, RGBA, GRAY8, RGB, BGR, BGR10A2_LE, UYVP, UYVY, YUY2, YVYU, Y42B, I420_12LE, GRAY16_LE

  • 控制参数

    • gpu-id (仅限 dGPU)

    • nvbuf-memory-type

    • src-crop

    • dst-crop

    • interpolation-method

    • compute-hw

    • flip-method

  • 输出

    • Gst Buffer

    • NvDsBatchMeta

    • 格式:(NVMM/RAW)

    • dGPU - NV12, I420, P010_10LE, BGRx, RGBA, GRAY8, RGB, BGR, Y444, Y444_10LE, Y444_12LE, BGR10A2_LE, UYVP, I420_12LE, RGB10A2_LE, GRAY16_LE

    • Jetson - NV12, I420, P010_10LE, BGRx, RGBA, GRAY8, RGB, BGR, BGR10A2_LE, UYVP, UYVY, YUY2, YVYU, Y42B, I420_12LE, GRAY16_LE

注意

  • 对于 12 位 NV12 格式,输入/输出 caps 显示 I420_12LE。但数据被处理为半平面 12 位数据。这是一个权宜之计,因为 gstreamer v1.16 没有针对 12 位 NV12 的特定 caps。下游组件应将其视为仅 12 位 NV12 进行处理。

  • 仅为 I420_12LE、Y444_10LE 和 Y444_12LE 格式添加了 NVMM 内存支持。

特性#

此插件支持 NVMM 到 NVMM、RAW 到 NVMM 以及 NVMM 到 RAW 和 RAW 到 RAW 缓冲区类型转换的缩放和转换。该插件支持输入和输出帧的裁剪。

Gst 属性#

下表描述了 Gst-nvvideoconvert 插件的 Gst 属性。

Gst-nvvideoconvert gst 属性#

属性

含义

类型和范围

示例注释

nvbuf-memory-type

要分配的内存类型。对于 dGPU

0 (nvbuf-mem-default): 默认内存,cuda 设备

1 (nvbuf-mem-cuda-pinned): 锁定/主机 CUDA 内存

2 (nvbuf-mem-cuda-device) 设备 CUDA 内存

3 (nvbuf-mem-cuda-unified): 统一 CUDA 内存

对于 Jetson

0 (nvbuf-mem-default): 默认内存,表面数组

1 (nvbuf-mem-cuda-pinned): 锁定/主机 CUDA 内存

2 (nvbuf-mem-cuda-device) 设备 CUDA 内存

3 (nvbuf-mem-cuda-unified): 统一 CUDA 内存

4 (nvbuf-mem-surface-array): 表面数组内存

enum GstNvVidConvBufMemoryType

src-crop

像素位置:输入图像的 left:top:width:height,将被裁剪并转换为输出缓冲区。如果裁剪位置超出范围,则这些值将被钳制到输入图像的图像边界。此属性将应用于批处理中的所有输入图像

字符串

src-crop=”20:40:150:100”

dest-crop

像素位置:left:top:width:height 是输出图像中输入图像将被转换到的位置。如果裁剪位置超出范围,则这些值将被钳制到输出图像的图像边界。此属性将应用于批处理中的所有输出图像

字符串

dest-crop=”20:40:150:100”

interpolation-method

插值方法

0: 最近邻

1: 双线性

2: 算法 1 (GPU—三次, VIC—5 抽头)

3: 算法 2 (GPU—超级, VIC—10 抽头)

4: 算法 3 (GPU—LanzoS, VIC—智能)

5: 算法 4 (GPU—忽略, VIC—最佳)

6: 默认 (GPU—最近邻, VIC—最近邻)

enum GstInterpolationMethod

interpolation-method=1 默认值为 6。

compute-hw

计算硬件类型

0: 默认 (dGPU 使用 GPU,Jetson 使用 VIC)

1: GPU

2: VIC

enum GstComputeHW

compute-hw=0 默认值为 0。

gpu-id

用于格式转换的 GPU 设备 ID

整数,0 到 4,294,967,295

gpu-id=0

output-buffers

缓冲区池的输出缓冲区数量

无符号整数,1 到 4,294,967,295

output-buffers=4

bl-output

仅适用于 Jetson 的标志,用于为 NV12 格式输出块线性 NVMM 缓冲区。对于 dGPU、软件内存(输出缓冲区)和 NV12 以外的格式,此标志将被忽略

布尔值。默认值:false

bl-output=1

flip-method

旋转方法类型。此标志适用于 Jetson 和 GPU。

翻转方法

0: 恒等 (无旋转)

1: 逆时针旋转 90 度

2: 旋转 180 度

3: 顺时针旋转 90 度

4: 水平旋转

5: 沿右上/左下对角线旋转

6: 垂直旋转

7: 沿左上/右下对角线旋转

enum GstNvDsVideoFlipMethod

flip-method=1 默认值为 0。

allow-odd-crop

允许源和目标裁剪矩形的奇数维度的标志

布尔值

allow-odd-crop=1 默认值为 1。

contiguous-buffers

启用连续输出缓冲区

布尔值

contiguous-buffers=1 默认值为 0。

disable-passthrough

在初始化时禁用直通模式

布尔值

disable-passthrough=1 默认值为 0。

copy-hw

选择用于表面复制的硬件

1: GPU

2: VIC

标志:可读,可写,可控

enum GstNvCopyHWType

copy-hw=2 默认值为 1。