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. 引數¶
fdopen()返回的檔案描述符。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
此輸入或輸出不支援標準影片時序。