7.51. ioctl VIDIOC_QUERYSTD, VIDIOC_SUBDEV_QUERYSTD

7.51.1. 名稱

VIDIOC_QUERYSTD - VIDIOC_SUBDEV_QUERYSTD - 感應當前輸入接收到的影片標準

7.51.2. 概要

VIDIOC_QUERYSTD

int ioctl(int fd, VIDIOC_QUERYSTD, v4l2_std_id *argp)

VIDIOC_SUBDEV_QUERYSTD

int ioctl(int fd, VIDIOC_SUBDEV_QUERYSTD, v4l2_std_id *argp)

7.51.3. 引數

fd

open() 返回的檔案描述符。

argp

指向 v4l2_std_id 的指標。

7.51.4. 描述

硬體可能能夠自動檢測當前影片標準。為此,應用程式呼叫 ioctl VIDIOC_QUERYSTD, VIDIOC_SUBDEV_QUERYSTD,並傳遞指向 v4l2_std_id 型別的指標。驅動程式在此處儲存一組候選標準,可以是一個標誌或一組支援的標準,例如,如果硬體只能區分 50 和 60 Hz 系統。如果未檢測到訊號,則驅動程式將返回 V4L2_STD_UNKNOWN。如果檢測不可行或失敗,則該集合必須包含當前影片輸入或輸出支援的所有標準。

注意

如果檢測到新的影片標準,驅動程式不應自動切換影片標準。相反,驅動程式應傳送 V4L2_EVENT_SOURCE_CHANGE 事件(如果它們支援此事件),並期望使用者空間透過呼叫 ioctl VIDIOC_QUERYSTD, VIDIOC_SUBDEV_QUERYSTD 來採取行動。原因是新的影片標準也可能意味著不同的緩衝區大小,並且您無法動態更改緩衝區大小。一般來說,收到源更改事件的應用程式將需要呼叫 ioctl VIDIOC_QUERYSTD, VIDIOC_SUBDEV_QUERYSTD,並且如果檢測到的影片標準有效,則它們將需要停止流式傳輸,設定新標準,分配新緩衝區並再次開始流式傳輸。

7.51.5. 返回值

成功時返回 0,出錯時返回 -1 並適當設定 errno 變數。通用錯誤程式碼在 通用錯誤程式碼 章節中描述。

ENODATA

此輸入或輸出不支援標準影片時序。