7.20. ioctl VIDIOC_ENUMSTD, VIDIOC_SUBDEV_ENUMSTD¶
7.20.1. 名称¶
VIDIOC_ENUMSTD - VIDIOC_SUBDEV_ENUMSTD - 枚举支持的视频标准
7.20.2. 概要¶
-
VIDIOC_ENUMSTD¶
int ioctl(int fd, VIDIOC_ENUMSTD, struct v4l2_standard *argp)
-
VIDIOC_SUBDEV_ENUMSTD¶
int ioctl(int fd, VIDIOC_SUBDEV_ENUMSTD, struct v4l2_standard *argp)
7.20.3. 参数¶
fd
由
open()
返回的文件描述符。argp
指向 struct
v4l2_standard
的指针。
7.20.4. 描述¶
要查询视频标准的属性,特别是自定义(驱动程序定义)的标准,应用程序需要初始化 struct v4l2_standard
的 index
字段,并使用指向此结构的指针调用 ioctl VIDIOC_ENUMSTD, VIDIOC_SUBDEV_ENUMSTD ioctl。如果索引超出范围,驱动程序会填写结构的其余部分或返回 EINVAL
错误代码。要枚举所有标准,应用程序应从索引零开始,每次递增一,直到驱动程序返回 EINVAL
。在切换视频输入或输出后,驱动程序可能会枚举不同的标准集。[1]
-
type v4l2_standard¶
__u32 |
|
视频标准的编号,由应用程序设置。 |
|
此字段中的位标识标准为 typedef v4l2_std_id 中列出的通用标准之一,或者如果设置了第 32 位到第 63 位,则标识为自定义标准。如果硬件不区分这些标准,则可以设置多个位,但是单独的索引并不表示相反的情况。 |
|
__u8 |
|
标准的名称,以 NUL 结尾的 ASCII 字符串,例如:“PAL-B/G”,“NTSC Japan”。此信息供用户使用。 |
struct |
|
帧周期(不是场周期)为分子 / 分母。例如,M/NTSC 的帧周期为 1001 / 30000 秒。 |
__u32 |
|
每帧的总行数,包括消隐,例如,B/PAL 为 625。 |
__u32 |
|
保留供将来扩展。驱动程序必须将数组设置为零。 |
-
type v4l2_fract¶
__u32 |
|
|
__u32 |
|
__u64 |
|
此类型是一个集合,每一位代表另一个视频标准,如下所示以及在 视频标准(基于 itu470) 中列出。最高的 32 位保留用于自定义(驱动程序定义的)视频标准。 |
#define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001)
#define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002)
#define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004)
#define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008)
#define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010)
#define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020)
#define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040)
#define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080)
#define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100)
#define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200)
#define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400)
#define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800)
V4L2_STD_PAL_60
是一种混合标准,具有 525 行、60 Hz 刷新率和 4.43 MHz 色副载波的 PAL 色彩调制。某些 PAL 录像机可以以这种模式回放 NTSC 磁带,以便在 50/60 Hz 不可知 PAL 电视上显示。
#define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000)
#define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000)
#define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000)
V4L2_STD_NTSC_443
是一种混合标准,具有 525 行、60 Hz 刷新率和 4.43 MHz 色副载波的 NTSC 色彩调制。
#define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000)
#define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000)
#define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000)
#define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000)
#define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000)
#define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000)
#define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000)
#define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000)
#define V4L2_STD_SECAM_LC ((v4l2_std_id)0x00800000)
/* ATSC/HDTV */
#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)
#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
V4L2_STD_ATSC_8_VSB
和 V4L2_STD_ATSC_16_VSB
是美国的地面数字电视标准。目前,V4L2 API 不支持数字电视。另请参阅 https://linuxtv.org 上的 Linux DVB API。
#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |
V4L2_STD_PAL_B1 |
V4L2_STD_PAL_G)
#define V4L2_STD_B (V4L2_STD_PAL_B |
V4L2_STD_PAL_B1 |
V4L2_STD_SECAM_B)
#define V4L2_STD_GH (V4L2_STD_PAL_G |
V4L2_STD_PAL_H |
V4L2_STD_SECAM_G |
V4L2_STD_SECAM_H)
#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |
V4L2_STD_PAL_D1 |
V4L2_STD_PAL_K)
#define V4L2_STD_PAL (V4L2_STD_PAL_BG |
V4L2_STD_PAL_DK |
V4L2_STD_PAL_H |
V4L2_STD_PAL_I)
#define V4L2_STD_NTSC (V4L2_STD_NTSC_M |
V4L2_STD_NTSC_M_JP |
V4L2_STD_NTSC_M_KR)
#define V4L2_STD_MN (V4L2_STD_PAL_M |
V4L2_STD_PAL_N |
V4L2_STD_PAL_Nc |
V4L2_STD_NTSC)
#define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |
V4L2_STD_SECAM_K |
V4L2_STD_SECAM_K1)
#define V4L2_STD_DK (V4L2_STD_PAL_DK |
V4L2_STD_SECAM_DK)
#define V4L2_STD_SECAM (V4L2_STD_SECAM_B |
V4L2_STD_SECAM_G |
V4L2_STD_SECAM_H |
V4L2_STD_SECAM_DK |
V4L2_STD_SECAM_L |
V4L2_STD_SECAM_LC)
#define V4L2_STD_525_60 (V4L2_STD_PAL_M |
V4L2_STD_PAL_60 |
V4L2_STD_NTSC |
V4L2_STD_NTSC_443)
#define V4L2_STD_625_50 (V4L2_STD_PAL |
V4L2_STD_PAL_N |
V4L2_STD_PAL_Nc |
V4L2_STD_SECAM)
#define V4L2_STD_UNKNOWN 0
#define V4L2_STD_ALL (V4L2_STD_525_60 |
V4L2_STD_625_50)
特征 |
M/NTSC [2] |
M/PAL |
N/PAL [3] |
B, B1, G/PAL |
D, D1, K/PAL |
H/PAL |
I/PAL |
B, G/SECAM |
D, K/SECAM |
K1/SECAM |
L/SECAM |
---|---|---|---|---|---|---|---|---|---|---|---|
帧线 |
525 |
625 |
|||||||||
帧周期(秒) |
1001/30000 |
1/25 |
|||||||||
色度副载波频率(Hz) |
3579545 ± 10 |
3579611.49 ± 10 |
4433618.75 ± 5 (3582056.25 ± 5) |
4433618.75 ± 5 |
4433618.75 ± 1 |
fOR = 4406250 ± 2000, fOB = 4250000 ± 2000 |
|||||
标称射频信道带宽 (MHz) |
6 |
6 |
6 |
B:7;B1,G:8 |
8 |
8 |
8 |
8 |
8 |
8 |
8 |
声音载波相对于视觉载波 (MHz) |
4.5 |
4.5 |
4.5 |
6.5 ± 0.001 |
5.5 |
5.9996 ± 0.0005 |
5.5 ± 0.001 |
6.5 ± 0.001 |
6.5 |
6.5 [8] |
7.20.5. 返回值¶
成功时返回 0,错误时返回 -1,并适当地设置 errno
变量。通用错误代码在 通用错误代码 章节中描述。
- EINVAL
struct
v4l2_standard
的index
超出范围。- ENODATA
此输入或输出不支持标准视频时序。