7.22. ioctl VIDIOC_G_AUDIO, VIDIOC_S_AUDIO

7.22.1. 名稱

VIDIOC_G_AUDIO - VIDIOC_S_AUDIO - 查詢或選擇當前音訊輸入及其屬性

7.22.2. 概要

VIDIOC_G_AUDIO

int ioctl(int fd, VIDIOC_G_AUDIO, struct v4l2_audio *argp)

VIDIOC_S_AUDIO

int ioctl(int fd, VIDIOC_S_AUDIO, const struct v4l2_audio *argp)

7.22.3. 引數

fd

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

argp

指向 struct v4l2_audio 的指標。

7.22.4. 描述

要查詢當前的音訊輸入,應用程式將 struct v4l2_audioreserved 陣列置零,並使用指向此結構的指標呼叫 VIDIOC_G_AUDIO ioctl。當裝置沒有音訊輸入,或沒有與當前影片輸入組合的音訊輸入時,驅動程式會填充結構的其餘部分或返回 EINVAL 錯誤程式碼。

音訊輸入具有一個可寫屬性,即音訊模式。要選擇當前的音訊輸入更改音訊模式,應用程式初始化 struct v4l2_audio 結構的 indexmode 欄位以及 reserved 陣列,並呼叫 VIDIOC_S_AUDIO ioctl。如果請求無法滿足,驅動程式可能會切換到不同的音訊模式。但是,這是一個只寫 ioctl,它不會返回實際的新音訊模式。

type v4l2_audio
struct v4l2_audio

__u32

index

標識音訊輸入,由驅動程式或應用程式設定。

__u8

name[32]

音訊輸入的名稱,一個以 NUL 結尾的 ASCII 字串,例如:“線路輸入”。此資訊供使用者使用,最好是裝置本身的聯結器標籤。

__u32

capability

音訊功能標誌,請參閱 音訊功能標誌

__u32

mode

由驅動程式和應用程式設定的音訊模式標誌(在 VIDIOC_S_AUDIO ioctl 上),請參閱 音訊模式標誌

__u32

reserved[2]

保留供未來擴充套件。驅動程式和應用程式必須將陣列設定為零。

音訊功能標誌

V4L2_AUDCAP_STEREO

0x00001

這是一個立體聲輸入。該標誌旨在在訊號始終為單聲道時自動停用立體聲錄製等。除非音訊輸入屬於調諧器,否則 API 不提供檢測是否接收到立體聲的方法。

V4L2_AUDCAP_AVL

0x00002

支援自動音量電平模式。

音訊模式標誌

V4L2_AUDMODE_AVL

0x00001

AVL 模式已開啟。

7.22.5. 返回值

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

EINVAL

沒有音訊輸入與當前影片輸入組合,或者所選音訊輸入的數量超出範圍或未組合。