Jetson Linux API 参考文档

32.7.4 版本
V4L2 视频转换器

详细描述

NVIDIA V4L2 视频转换器描述和扩展。

使用视频转换器进行颜色空间转换、缩放以及硬件缓冲区内存 (V4L2_MEMORY_MMAP/V4L2_MEMORY_DMABUF)、软件缓冲区内存 (V4L2_MEMORY_USERPTR) 之间的转换,以及其他操作,例如裁剪、翻转/旋转和时域噪声抑制 (TNR)。视频转换器设备节点为 "/dev/nvhost-vic"

支持的像素格式

像素格式像素格式
V4L2_PIX_FMT_YUV444MV4L2_PIX_FMT_YVU422M
V4L2_PIX_FMT_YUV420MV4L2_PIX_FMT_YVU420M
V4L2_PIX_FMT_NV12MV4L2_PIX_FMT_GREY
V4L2_PIX_FMT_YUYVV4L2_PIX_FMT_YVYU
V4L2_PIX_FMT_UYVYV4L2_PIX_FMT_VYUY
V4L2_PIX_FMT_ABGR32V4L2_PIX_FMT_XBGR32

支持的 TNR 像素格式

像素格式像素格式
V4L2_PIX_FMT_YUV420MV4L2_PIX_FMT_NV12M
V4L2_PIX_FMT_UYVYV4L2_PIX_FMT_YUYV

支持的内存类型

内存输出平面捕获平面
V4L2_MEMORY_MMAP
V4L2_MEMORY_DMABUF
V4L2_MEMORY_USERPTR

支持的控件

裁剪

视频转换器支持使用类型为 V4L2_BUF_TYPE_VIDEO_CAPTURE 和目标为 V4L2_SEL_TGT_CROPVIDIOC_S_SELECTION IOCTL 进行裁剪。这必须在请求任一平面上的缓冲区之前设置。

EOS 处理

必须遵循以下顺序来发送 EOS 并从转换器接收 EOS。

  1. 通过在输出平面上排队一个 0th 平面 (v4l2_buffer.m.planes[0].bytesused = 0) 的 bytesused = 0 的缓冲区,将 EOS 发送到转换器。
  2. 在捕获平面上出队缓冲区,直到它获得一个 0th 平面的 bytesused = 0 的缓冲区。
注意
目前,V4L2 插件不支持奇数分辨率。

数据结构

struct  v4l2_ctrl_video_displaydata_
 
struct  _v4l2_ctrl_video_hdrmasteringdisplaydata
 HDR 元数据。 更多...
 
struct  _v4l2_ctrl_video_device_poll
 轮询设备。 更多...
 

#define V4L2_CID_VIDEO_CONVERT_OUTPUT_PLANE_LAYOUT   (V4L2_CID_MPEG_BASE+523)
 定义用于设置转换器输出平面缓冲区布局的 Control ID。 更多...
 
#define V4L2_CID_VIDEO_CONVERT_CAPTURE_PLANE_LAYOUT   (V4L2_CID_MPEG_BASE+524)
 定义用于设置转换器捕获平面缓冲区布局的 Control ID。 更多...
 
#define V4L2_CID_VIDEO_CONVERT_FLIP_METHOD   (V4L2_CID_MPEG_BASE+525)
 定义用于设置转换器翻转/旋转方法的 Control ID。 更多...
 
#define V4L2_CID_VIDEO_CONVERT_INTERPOLATION_METHOD   (V4L2_CID_MPEG_BASE+526)
 定义用于设置转换器插值方法的 Control ID。 更多...
 
#define V4L2_CID_VIDEO_CONVERT_TNR_ALGORITHM   (V4L2_CID_MPEG_BASE+527)
 定义用于设置转换器时域噪声抑制 (TNR) 算法的 Control ID。 更多...
 

类型定义

typedef struct v4l2_ctrl_video_displaydata_ v4l2_ctrl_video_displaydata
 
typedef struct _v4l2_ctrl_video_hdrmasteringdisplaydata v4l2_ctrl_video_hdrmasteringdisplaydata
 HDR 元数据。 更多...
 
typedef struct _v4l2_ctrl_video_device_poll v4l2_ctrl_video_device_poll
 轮询设备。 更多...
 

枚举

enum  v4l2_nv_buffer_layout {
  V4L2_NV_BUFFER_LAYOUT_PITCH = 0,
  V4L2_NV_BUFFER_LAYOUT_BLOCKLINEAR = 1
}
 枚举指定缓冲区布局的类型。 更多...
 
enum  v4l2_flip_method {
  V4L2_FLIP_METHOD_IDENTITY = 0,
  V4L2_FLIP_METHOD_90L = 1,
  V4L2_FLIP_METHOD_180 = 2,
  V4L2_FLIP_METHOD_90R = 3,
  V4L2_FLIP_METHOD_HORIZ = 4,
  V4L2_FLIP_METHOD_INVTRANS = 5,
  V4L2_FLIP_METHOD_VERT = 6,
  V4L2_FLIP_METHOD_TRANS = 7
}
 指定旋转/翻转算法的类型。 更多...
 
enum  v4l2_interpolation_method {
  V4L2_INTERPOLATION_NEAREST = 1,
  V4L2_INTERPOLATION_BILINEAR = 2,
  V4L2_INTERPOLATION_5_TAP = 3,
  V4L2_INTERPOLATION_10_TAP = 4,
  V4L2_INTERPOLATION_SMART = 5,
  V4L2_INTERPOLATION_NICEST = 6
}
 指定插值方法的类型。 更多...
 
enum  v4l2_tnr_algorithm {
  V4L2_TNR_ALGO_ORIGINAL = 0,
  V4L2_TNR_ALGO_OUTDOOR_LOW_LIGHT = 1,
  V4L2_TNR_ALGO_OUTDOOR_MEDIUM_LIGHT = 2,
  V4L2_TNR_ALGO_OUTDOOR_HIGH_LIGHT = 3,
  V4L2_TNR_ALGO_INDOOR_LOW_LIGHT = 4,
  V4L2_TNR_ALGO_INDOOR_MEDIUM_LIGHT = 5,
  V4L2_TNR_ALGO_INDOOR_HIGH_LIGHT = 6
}
 指定 TNR 算法的类型。 更多...
 
enum  v4l2_yuv_rescale_method {
  V4L2_YUV_RESCALE_NONE = 0,
  V4L2_YUV_RESCALE_STD_TO_EXT = 1,
  V4L2_YUV_RESCALE_EXT_TO_STD = 2
}
 指定 YUV 重新缩放方法的类型。 更多...
 

宏定义文档

◆ V4L2_CID_VIDEO_CONVERT_CAPTURE_PLANE_LAYOUT

#define V4L2_CID_VIDEO_CONVERT_CAPTURE_PLANE_LAYOUT   (V4L2_CID_MPEG_BASE+524)

定义用于设置转换器捕获平面缓冲区布局的 Control ID。

类型为 v4l2_nv_buffer_layout 的值必须与此控件一起提供。

注意
此控件必须在请求捕获平面上的缓冲区之前设置。

定义于文件 v4l2_nv_extensions.h 的第 693 行。

◆ V4L2_CID_VIDEO_CONVERT_FLIP_METHOD

#define V4L2_CID_VIDEO_CONVERT_FLIP_METHOD   (V4L2_CID_MPEG_BASE+525)

定义用于设置转换器翻转/旋转方法的 Control ID。

类型为 v4l2_flip_method 的值必须与此控件一起提供。

注意
此控件必须在请求任一平面上的缓冲区之前设置。

定义于文件 v4l2_nv_extensions.h 的第 702 行。

◆ V4L2_CID_VIDEO_CONVERT_INTERPOLATION_METHOD

#define V4L2_CID_VIDEO_CONVERT_INTERPOLATION_METHOD   (V4L2_CID_MPEG_BASE+526)

定义用于设置转换器插值方法的 Control ID。

类型为 v4l2_interpolation_method 的值必须与此控件一起提供。

注意
此控件必须在请求任一平面上的缓冲区之前设置。

定义于文件 v4l2_nv_extensions.h 的第 711 行。

◆ V4L2_CID_VIDEO_CONVERT_OUTPUT_PLANE_LAYOUT

#define V4L2_CID_VIDEO_CONVERT_OUTPUT_PLANE_LAYOUT   (V4L2_CID_MPEG_BASE+523)

定义用于设置转换器输出平面缓冲区布局的 Control ID。

类型为 v4l2_nv_buffer_layout 的值必须与此控件一起提供。

注意
此控件必须在请求输出平面上的缓冲区之前设置。

定义于文件 v4l2_nv_extensions.h 的第 684 行。

◆ V4L2_CID_VIDEO_CONVERT_TNR_ALGORITHM

#define V4L2_CID_VIDEO_CONVERT_TNR_ALGORITHM   (V4L2_CID_MPEG_BASE+527)

定义用于设置转换器时域噪声抑制 (TNR) 算法的 Control ID。

类型为 v4l2_tnr_algorithm 的值必须与此控件一起提供。

注意
此控件必须在请求任一平面上的缓冲区之前设置。
YUV422 和 YUV444 捕获平面格式不支持 TNR 算法。

定义于文件 v4l2_nv_extensions.h 的第 722 行。

类型定义文档

◆ v4l2_ctrl_video_device_poll

◆ v4l2_ctrl_video_displaydata

◆ v4l2_ctrl_video_hdrmasteringdisplaydata

枚举类型文档

◆ v4l2_flip_method

指定旋转/翻转算法的类型。

枚举器
V4L2_FLIP_METHOD_IDENTITY 

恒等(不旋转)。

V4L2_FLIP_METHOD_90L 

逆时针旋转 90 度。

V4L2_FLIP_METHOD_180 

旋转 180 度。

V4L2_FLIP_METHOD_90R 

顺时针旋转 90 度。

V4L2_FLIP_METHOD_HORIZ 

水平翻转。

V4L2_FLIP_METHOD_INVTRANS 

沿右上/左下对角线翻转。

V4L2_FLIP_METHOD_VERT 

垂直翻转。

V4L2_FLIP_METHOD_TRANS 

沿左上/右下对角线翻转。

定义于文件 v4l2_nv_extensions.h 的第 2491 行。

◆ v4l2_interpolation_method

指定插值方法的类型。

枚举器
V4L2_INTERPOLATION_NEAREST 

最近邻插值法。

V4L2_INTERPOLATION_BILINEAR 

双线性插值法。

V4L2_INTERPOLATION_5_TAP 

5-Tap 插值法

V4L2_INTERPOLATION_10_TAP 

10-Tap 插值法

V4L2_INTERPOLATION_SMART 

智能插值法。

V4L2_INTERPOLATION_NICEST 

最佳插值法。

定义于文件 v4l2_nv_extensions.h 的第 2505 行。

◆ v4l2_nv_buffer_layout

枚举指定缓冲区布局的类型。

枚举器
V4L2_NV_BUFFER_LAYOUT_PITCH 

Pitch 线性布局。

V4L2_NV_BUFFER_LAYOUT_BLOCKLINEAR 

块线性布局。

定义于文件 v4l2_nv_extensions.h 的第 2483 行。

◆ v4l2_tnr_algorithm

指定 TNR 算法的类型。

枚举器
V4L2_TNR_ALGO_ORIGINAL 

默认 TNR 算法。

V4L2_TNR_ALGO_OUTDOOR_LOW_LIGHT 

户外低光 TNR 算法。

V4L2_TNR_ALGO_OUTDOOR_MEDIUM_LIGHT 

户外中光 TNR 算法。

V4L2_TNR_ALGO_OUTDOOR_HIGH_LIGHT 

户外高光 TNR 算法。

V4L2_TNR_ALGO_INDOOR_LOW_LIGHT 

室内低光 TNR 算法。

V4L2_TNR_ALGO_INDOOR_MEDIUM_LIGHT 

室内中光 TNR 算法。

V4L2_TNR_ALGO_INDOOR_HIGH_LIGHT 

室内高光 TNR 算法。

定义于文件 v4l2_nv_extensions.h 的第 2517 行。

◆ v4l2_yuv_rescale_method

指定 YUV 重新缩放方法的类型。

枚举器
V4L2_YUV_RESCALE_NONE 

禁用。

标准(有限范围 [16 235])到扩展(全范围 [0 255])

V4L2_YUV_RESCALE_STD_TO_EXT 

扩展(全范围 [0 255])到标准(有限范围 [16 235])

V4L2_YUV_RESCALE_EXT_TO_STD 

定义于文件 v4l2_nv_extensions.h 的第 2530 行。

. All rights reserved.