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_standardindex超出範圍。- ENODATA
此輸入或輸出不支援標準影片時序。