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
指向结构体
v4l2_standard
的指针。
7.20.4. 描述¶
要查询视频标准的属性,尤其是自定义(驱动程序定义)标准,应用程序初始化结构体 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 不支持数字电视。 另请参阅 Linux DVB API,网址为 https://linuxtv.org。
#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
结构体
v4l2_standard
index
超出范围。- ENODATA
此输入或输出不支持标准视频时序。