2.27. V4L2 常用函式和資料結構

int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 step, s32 def)

填充 struct v4l2_queryctrl

引數

struct v4l2_queryctrl *qctrl

要填充的 struct v4l2_queryctrl 的指標

s32 min

控制元件的最小值

s32 max

控制元件的最大值

s32 step

控制元件步長

s32 def

控制元件的預設值

描述

填充查詢控制元件的 struct v4l2_queryctrl 欄位。

注意

此函式假定已填充 qctrl->id 欄位。

如果 V4L2 核心不知道該控制元件,則返回 -EINVAL,成功則返回 0。

enum v4l2_i2c_tuner_type

指定在搜尋 I2C 裝置時應使用的調諧器地址範圍。

常量

ADDRS_RADIO

無線電調諧器地址。表示以下 I2C 地址:0x10(如果使用 tea5761 支援編譯)和 0x60。

ADDRS_DEMOD

解調器調諧器地址。表示以下 I2C 地址:0x42、0x43、0x4a 和 0x4b。

ADDRS_TV

電視調諧器地址。表示以下 I2C 地址:0x42、0x43、0x4a、0x4b、0x60、0x61、0x62、0x63 和 0x64。

ADDRS_TV_WITH_DEMOD

如果存在解調器,則為電視調諧器地址,這會將解調器使用的地址從候選列表Excluded。表示以下 I2C 地址:0x60、0x61、0x62、0x63 和 0x64。

注意

以上所有 I2C 地址都使用 7 位表示法。

struct v4l2_subdev *v4l2_i2c_new_subdev(struct v4l2_device *v4l2_dev, struct i2c_adapter *adapter, const char *client_type, u8 addr, const unsigned short *probe_addrs)

載入 i2c 模組並返回初始化的 struct v4l2_subdev

引數

struct v4l2_device *v4l2_dev

指向 struct v4l2_device 的指標

struct i2c_adapter *adapter

指向 struct i2c_adapter 的指標

const char *client_type

介面卡上晶片的名稱。

u8 addr

I2C 地址。如果為零,它將使用 probe_addrs

const unsigned short *probe_addrs

包含地址列表的陣列。此類陣列中的最後一個條目應為 I2C_CLIENT_END

描述

返回 struct v4l2_subdev 指標。

struct v4l2_subdev *v4l2_i2c_new_subdev_board(struct v4l2_device *v4l2_dev, struct i2c_adapter *adapter, struct i2c_board_info *info, const unsigned short *probe_addrs)

載入 i2c 模組並返回初始化的 struct v4l2_subdev

引數

struct v4l2_device *v4l2_dev

指向 struct v4l2_device 的指標

struct i2c_adapter *adapter

指向 struct i2c_adapter 的指標

struct i2c_board_info *info

指向 struct i2c_board_info 的指標,用於替換 irq、platform_data 和 addr 引數。

const unsigned short *probe_addrs

包含地址列表的陣列。此類陣列中的最後一個條目應為 I2C_CLIENT_END

描述

返回 struct v4l2_subdev 指標。

void v4l2_i2c_subdev_set_name(struct v4l2_subdev *sd, struct i2c_client *client, const char *devname, const char *postfix)

為 I²C 子裝置設定名稱

引數

struct v4l2_subdev *sd

指向 struct v4l2_subdev 的指標

struct i2c_client *client

指向 struct i2c_client 的指標

const char *devname

裝置名稱;如果為 NULL,將使用 I²C 裝置驅動程式的名稱

const char *postfix

子裝置特定字串,放在 I²C 裝置名稱之後;可以為 NULL

void v4l2_i2c_subdev_init(struct v4l2_subdev *sd, struct i2c_client *client, const struct v4l2_subdev_ops *ops)

使用來自 i2c_client 結構的資料初始化 struct v4l2_subdev

引數

struct v4l2_subdev *sd

指向 struct v4l2_subdev 的指標

struct i2c_client *client

指向 struct i2c_client 的指標

const struct v4l2_subdev_ops *ops

指向 struct v4l2_subdev_ops 的指標

unsigned short v4l2_i2c_subdev_addr(struct v4l2_subdev *sd)

返回 struct v4l2_subdev 的 i2c 客戶端地址。

引數

struct v4l2_subdev *sd

指向 struct v4l2_subdev 的指標

描述

返回 I2C 子裝置的地址

const unsigned short *v4l2_i2c_tuner_addrs(enum v4l2_i2c_tuner_type type)

返回要探測的 I2C 調諧器地址列表。

引數

enum v4l2_i2c_tuner_type type

要搜尋的調諧器的型別,如 enum v4l2_i2c_tuner_type 所定義。

注意

僅在調諧器地址未知時使用。

void v4l2_i2c_subdev_unregister(struct v4l2_subdev *sd)

登出 v4l2_subdev

引數

struct v4l2_subdev *sd

指向 struct v4l2_subdev 的指標

struct v4l2_subdev *v4l2_spi_new_subdev(struct v4l2_device *v4l2_dev, struct spi_controller *ctlr, struct spi_board_info *info)

載入 spi 模組並返回初始化的 struct v4l2_subdev

引數

struct v4l2_device *v4l2_dev

指向 struct v4l2_device 的指標。

struct spi_controller *ctlr

指向 struct spi_controller 的指標。

struct spi_board_info *info

指向 struct spi_board_info 的指標。

描述

返回 struct v4l2_subdev 指標。

void v4l2_spi_subdev_init(struct v4l2_subdev *sd, struct spi_device *spi, const struct v4l2_subdev_ops *ops)

使用來自 spi_device 結構的資料初始化 v4l2_subdev。

引數

struct v4l2_subdev *sd

指向 struct v4l2_subdev 的指標

struct spi_device *spi

指向 struct spi_device 的指標。

const struct v4l2_subdev_ops *ops

指向 struct v4l2_subdev_ops 的指標

void v4l2_spi_subdev_unregister(struct v4l2_subdev *sd)

登出 v4l2_subdev

引數

struct v4l2_subdev *sd

指向 struct v4l2_subdev 的指標

void v4l_bound_align_image(unsigned int *width, unsigned int wmin, unsigned int wmax, unsigned int walign, unsigned int *height, unsigned int hmin, unsigned int hmax, unsigned int halign, unsigned int salign)

根據給定的約束調整影片尺寸。

引數

unsigned int *width

指向寬度的指標,如果需要,將進行調整。

unsigned int wmin

最小寬度。

unsigned int wmax

最大寬度。

unsigned int walign

寬度上的最低有效位。

unsigned int *height

指向高度的指標,如果需要,將進行調整。

unsigned int hmin

最小高度。

unsigned int hmax

最大高度。

unsigned int halign

高度上的最低有效位。

unsigned int salign

影像大小的最低有效位(例如,width * height)。

描述

裁剪影像以使 widthwminwmax 之間,並且 heighthminhmax 之間(含)。

此外,width 將是 2^{walign} 的倍數,height 將是 2^{halign} 的倍數,並且總大小 width * height 將是 2^{salign} 的倍數。

注意

  1. 可以縮小或放大裁剪矩形以適合對齊約束。

  2. wmax 不得小於 wmin

  3. hmax 不得小於 hmin

  4. 對齊方式不得太高,以至於允許的範圍內沒有可能的影像大小。

  5. wminhmin 必須至少為 1(不要使用 0)。

  6. 對於 walignhalignsalign,如果您不關心某個對齊方式,請指定 0,因為 2^0 = 1 和一個位元組的對齊方式相當於不對齊。

  7. 如果您只想向下調整,請指定一個與初始值相同的最大值。

v4l2_find_nearest_size_conditional

v4l2_find_nearest_size_conditional (array, array_size, width_field, height_field, width, height, func, context)

在驅動程式特定結構的陣列中包含的一組離散解析度中查詢最接近的尺寸,並有條件地排除某些模式

引數

陣列

驅動程式特定的影像大小陣列

array_size

驅動程式特定的影像大小陣列的長度

width_field

驅動程式特定結構中寬度欄位的名稱

height_field

驅動程式特定結構中高度欄位的名稱

width

所需寬度

height

所需高度

func

如果返回 false,則忽略模式

context

函式的上下文

描述

查詢最接近的解析度,以最大限度地減少請求的解析度和支援的解析度之間的寬度和高度差異。驅動程式特定結構中寬度和高度欄位的大小必須等於 u32 的大小,即四個位元組。對於考慮的每種模式都會呼叫 func,如果 func 對其返回 false,則忽略該模式。

返回最佳匹配,如果陣列的長度為零,則返回 NULL。

v4l2_find_nearest_size

v4l2_find_nearest_size (array, array_size, width_field, height_field, width, height)

在驅動程式特定結構的陣列中包含的一組離散解析度中查詢最接近的尺寸

引數

陣列

驅動程式特定的影像大小陣列

array_size

驅動程式特定的影像大小陣列的長度

width_field

驅動程式特定結構中寬度欄位的名稱

height_field

驅動程式特定結構中高度欄位的名稱

width

所需寬度

height

所需高度

描述

查詢最接近的解析度,以最大限度地減少請求的解析度和支援的解析度之間的寬度和高度差異。驅動程式特定結構中寬度和高度欄位的大小必須等於 u32 的大小,即四個位元組。

返回最佳匹配,如果陣列的長度為零,則返回 NULL。

int v4l2_g_parm_cap(struct video_device *vdev, struct v4l2_subdev *sd, struct v4l2_streamparm *a)

vidioc_g_parm 的輔助例程,透過呼叫給定子裝置的 get_frame_interval 操作來填充此資訊。它僅適用於 V4L2_BUF_TYPE_VIDEO_CAPTURE(_MPLANE),因此函式名稱中包含 _cap。

引數

struct video_device *vdev

struct video_device 指標。用於確定裝置容量。

struct v4l2_subdev *sd

子裝置指標。

struct v4l2_streamparm *a

VIDIOC_G_PARM 引數。

int v4l2_s_parm_cap(struct video_device *vdev, struct v4l2_subdev *sd, struct v4l2_streamparm *a)

vidioc_s_parm 的輔助例程,透過呼叫給定子裝置的 set_frame_interval 操作來填充此資訊。它僅適用於 V4L2_BUF_TYPE_VIDEO_CAPTURE(_MPLANE),因此函式名稱中包含 _cap。

引數

struct video_device *vdev

struct video_device 指標。用於確定裝置容量。

struct v4l2_subdev *sd

子裝置指標。

struct v4l2_streamparm *a

VIDIOC_S_PARM 引數。

enum v4l2_pixel_encoding

指定畫素編碼值

常量

V4L2_PIXEL_ENC_UNKNOWN

畫素編碼未知/未初始化

V4L2_PIXEL_ENC_YUV

畫素編碼為 YUV

V4L2_PIXEL_ENC_RGB

畫素編碼為 RGB

V4L2_PIXEL_ENC_BAYER

畫素編碼為 Bayer

struct v4l2_format_info

有關 V4L2 格式的資訊

定義:

struct v4l2_format_info {
    u32 format;
    u8 pixel_enc;
    u8 mem_planes;
    u8 comp_planes;
    u8 bpp[4];
    u8 bpp_div[4];
    u8 hdiv;
    u8 vdiv;
    u8 block_w[4];
    u8 block_h[4];
};

成員

格式

4CC 格式識別符號 (V4L2_PIX_FMT_*)

pixel_enc

畫素編碼(請參閱上面的 enum v4l2_pixel_encoding

mem_planes

記憶體平面數量,包括 alpha 平面(1 到 4)。

comp_planes

元件平面數量,包括 alpha 平面(1 到 4)。

bpp

每個平面的每畫素位元組陣列

bpp_div

每個平面的每畫素位元組除數陣列,以支援小數畫素大小。

hdiv

水平色度二次取樣因子

vdiv

垂直色度二次取樣因子

block_w

每個平面的宏塊畫素寬度(可選)

block_h

每個平面的宏塊畫素高度(可選)

v4l2_get_link_freq (pad, mul, div)

從發射器獲取鏈路速率

引數

pad

發射器的媒體填充(或非 MC 使用者的控制處理程式或出於相容性原因,請勿在新程式碼中使用)

mul

畫素速率和鏈路頻率之間的乘數。D-PHY 上的每畫素位數,並行上的每時鐘取樣數。否則為 0。

div

畫素速率和鏈路頻率之間的除數。D-PHY 上的資料通道數量乘以 2,並行上為 1。否則為 0。

描述

此函式旨在從發射器子裝置獲取鏈路頻率。它返回鏈路速率,無論是來自發射器實現的 V4L2_CID_LINK_FREQ 控制元件,還是根據發射器實現的 V4L2_CID_PIXEL_RATE 計算的值。

返回值

  • >0:鏈路頻率

  • -ENOENT:未找到鏈路頻率或畫素速率控制元件

  • -EINVAL:鏈路頻率值無效

計算平臺支援的鏈路頻率

引數

struct device *dev

struct device

const u64 *fw_link_freqs

韌體中的鏈路頻率陣列

unsigned int num_of_fw_link_freqs

fw_link_freqs 中的條目數

const s64 *driver_link_freqs

驅動程式支援的鏈路頻率陣列

unsigned int num_of_driver_link_freqs

driver_link_freqs 中的條目數

unsigned long *bitmap

fw_link_freqs 中找到的驅動程式支援的鏈路頻率的點陣圖

描述

此函式檢查系統韌體中啟用了哪些驅動程式支援的鏈路頻率,並在 bitmap 中設定相應的位(首先將其清零)。

返回值

  • 0:成功

  • -ENOENT:在驅動程式支援的鏈路頻率和韌體中可用的鏈路頻率之間未找到匹配項。

  • -ENODATA:韌體中未指定鏈路頻率。

struct v4l2_ioctl_ops

描述每個 V4L2 ioctl 的操作

定義:

struct v4l2_ioctl_ops {
    int (*vidioc_querycap)(struct file *file, void *fh, struct v4l2_capability *cap);
    int (*vidioc_enum_fmt_vid_cap)(struct file *file, void *fh, struct v4l2_fmtdesc *f);
    int (*vidioc_enum_fmt_vid_overlay)(struct file *file, void *fh, struct v4l2_fmtdesc *f);
    int (*vidioc_enum_fmt_vid_out)(struct file *file, void *fh, struct v4l2_fmtdesc *f);
    int (*vidioc_enum_fmt_sdr_cap)(struct file *file, void *fh, struct v4l2_fmtdesc *f);
    int (*vidioc_enum_fmt_sdr_out)(struct file *file, void *fh, struct v4l2_fmtdesc *f);
    int (*vidioc_enum_fmt_meta_cap)(struct file *file, void *fh, struct v4l2_fmtdesc *f);
    int (*vidioc_enum_fmt_meta_out)(struct file *file, void *fh, struct v4l2_fmtdesc *f);
    int (*vidioc_g_fmt_vid_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_g_fmt_vid_overlay)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_g_fmt_vid_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_g_fmt_vid_out_overlay)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_g_fmt_vbi_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_g_fmt_vbi_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_g_fmt_sliced_vbi_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_g_fmt_sliced_vbi_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_g_fmt_vid_cap_mplane)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_g_fmt_vid_out_mplane)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_g_fmt_sdr_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_g_fmt_sdr_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_g_fmt_meta_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_g_fmt_meta_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_s_fmt_vid_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_s_fmt_vid_overlay)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_s_fmt_vid_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_s_fmt_vid_out_overlay)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_s_fmt_vbi_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_s_fmt_vbi_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_s_fmt_sliced_vbi_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_s_fmt_sliced_vbi_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_s_fmt_vid_cap_mplane)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_s_fmt_vid_out_mplane)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_s_fmt_sdr_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_s_fmt_sdr_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_s_fmt_meta_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_s_fmt_meta_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_try_fmt_vid_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_try_fmt_vid_overlay)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_try_fmt_vid_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_try_fmt_vid_out_overlay)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_try_fmt_vbi_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_try_fmt_vbi_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_try_fmt_sliced_vbi_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_try_fmt_sliced_vbi_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_try_fmt_vid_cap_mplane)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_try_fmt_vid_out_mplane)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_try_fmt_sdr_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_try_fmt_sdr_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_try_fmt_meta_cap)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_try_fmt_meta_out)(struct file *file, void *fh, struct v4l2_format *f);
    int (*vidioc_reqbufs)(struct file *file, void *fh, struct v4l2_requestbuffers *b);
    int (*vidioc_querybuf)(struct file *file, void *fh, struct v4l2_buffer *b);
    int (*vidioc_qbuf)(struct file *file, void *fh, struct v4l2_buffer *b);
    int (*vidioc_expbuf)(struct file *file, void *fh, struct v4l2_exportbuffer *e);
    int (*vidioc_dqbuf)(struct file *file, void *fh, struct v4l2_buffer *b);
    int (*vidioc_create_bufs)(struct file *file, void *fh, struct v4l2_create_buffers *b);
    int (*vidioc_prepare_buf)(struct file *file, void *fh, struct v4l2_buffer *b);
    int (*vidioc_remove_bufs)(struct file *file, void *fh, struct v4l2_remove_buffers *d);
    int (*vidioc_overlay)(struct file *file, void *fh, unsigned int i);
    int (*vidioc_g_fbuf)(struct file *file, void *fh, struct v4l2_framebuffer *a);
    int (*vidioc_s_fbuf)(struct file *file, void *fh, const struct v4l2_framebuffer *a);
    int (*vidioc_streamon)(struct file *file, void *fh, enum v4l2_buf_type i);
    int (*vidioc_streamoff)(struct file *file, void *fh, enum v4l2_buf_type i);
    int (*vidioc_g_std)(struct file *file, void *fh, v4l2_std_id *norm);
    int (*vidioc_s_std)(struct file *file, void *fh, v4l2_std_id norm);
    int (*vidioc_querystd)(struct file *file, void *fh, v4l2_std_id *a);
    int (*vidioc_enum_input)(struct file *file, void *fh, struct v4l2_input *inp);
    int (*vidioc_g_input)(struct file *file, void *fh, unsigned int *i);
    int (*vidioc_s_input)(struct file *file, void *fh, unsigned int i);
    int (*vidioc_enum_output)(struct file *file, void *fh, struct v4l2_output *a);
    int (*vidioc_g_output)(struct file *file, void *fh, unsigned int *i);
    int (*vidioc_s_output)(struct file *file, void *fh, unsigned int i);
    int (*vidioc_query_ext_ctrl)(struct file *file, void *fh, struct v4l2_query_ext_ctrl *a);
    int (*vidioc_g_ext_ctrls)(struct file *file, void *fh, struct v4l2_ext_controls *a);
    int (*vidioc_s_ext_ctrls)(struct file *file, void *fh, struct v4l2_ext_controls *a);
    int (*vidioc_try_ext_ctrls)(struct file *file, void *fh, struct v4l2_ext_controls *a);
    int (*vidioc_querymenu)(struct file *file, void *fh, struct v4l2_querymenu *a);
    int (*vidioc_enumaudio)(struct file *file, void *fh, struct v4l2_audio *a);
    int (*vidioc_g_audio)(struct file *file, void *fh, struct v4l2_audio *a);
    int (*vidioc_s_audio)(struct file *file, void *fh, const struct v4l2_audio *a);
    int (*vidioc_enumaudout)(struct file *file, void *fh, struct v4l2_audioout *a);
    int (*vidioc_g_audout)(struct file *file, void *fh, struct v4l2_audioout *a);
    int (*vidioc_s_audout)(struct file *file, void *fh, const struct v4l2_audioout *a);
    int (*vidioc_g_modulator)(struct file *file, void *fh, struct v4l2_modulator *a);
    int (*vidioc_s_modulator)(struct file *file, void *fh, const struct v4l2_modulator *a);
    int (*vidioc_g_pixelaspect)(struct file *file, void *fh, int buf_type, struct v4l2_fract *aspect);
    int (*vidioc_g_selection)(struct file *file, void *fh, struct v4l2_selection *s);
    int (*vidioc_s_selection)(struct file *file, void *fh, struct v4l2_selection *s);
    int (*vidioc_g_jpegcomp)(struct file *file, void *fh, struct v4l2_jpegcompression *a);
    int (*vidioc_s_jpegcomp)(struct file *file, void *fh, const struct v4l2_jpegcompression *a);
    int (*vidioc_g_enc_index)(struct file *file, void *fh, struct v4l2_enc_idx *a);
    int (*vidioc_encoder_cmd)(struct file *file, void *fh, struct v4l2_encoder_cmd *a);
    int (*vidioc_try_encoder_cmd)(struct file *file, void *fh, struct v4l2_encoder_cmd *a);
    int (*vidioc_decoder_cmd)(struct file *file, void *fh, struct v4l2_decoder_cmd *a);
    int (*vidioc_try_decoder_cmd)(struct file *file, void *fh, struct v4l2_decoder_cmd *a);
    int (*vidioc_g_parm)(struct file *file, void *fh, struct v4l2_streamparm *a);
    int (*vidioc_s_parm)(struct file *file, void *fh, struct v4l2_streamparm *a);
    int (*vidioc_g_tuner)(struct file *file, void *fh, struct v4l2_tuner *a);
    int (*vidioc_s_tuner)(struct file *file, void *fh, const struct v4l2_tuner *a);
    int (*vidioc_g_frequency)(struct file *file, void *fh, struct v4l2_frequency *a);
    int (*vidioc_s_frequency)(struct file *file, void *fh, const struct v4l2_frequency *a);
    int (*vidioc_enum_freq_bands)(struct file *file, void *fh, struct v4l2_frequency_band *band);
    int (*vidioc_g_sliced_vbi_cap)(struct file *file, void *fh, struct v4l2_sliced_vbi_cap *a);
    int (*vidioc_log_status)(struct file *file, void *fh);
    int (*vidioc_s_hw_freq_seek)(struct file *file, void *fh, const struct v4l2_hw_freq_seek *a);
#ifdef CONFIG_VIDEO_ADV_DEBUG;
    int (*vidioc_g_register)(struct file *file, void *fh, struct v4l2_dbg_register *reg);
    int (*vidioc_s_register)(struct file *file, void *fh, const struct v4l2_dbg_register *reg);
    int (*vidioc_g_chip_info)(struct file *file, void *fh, struct v4l2_dbg_chip_info *chip);
#endif;
    int (*vidioc_enum_framesizes)(struct file *file, void *fh, struct v4l2_frmsizeenum *fsize);
    int (*vidioc_enum_frameintervals)(struct file *file, void *fh, struct v4l2_frmivalenum *fival);
    int (*vidioc_s_dv_timings)(struct file *file, void *fh, struct v4l2_dv_timings *timings);
    int (*vidioc_g_dv_timings)(struct file *file, void *fh, struct v4l2_dv_timings *timings);
    int (*vidioc_query_dv_timings)(struct file *file, void *fh, struct v4l2_dv_timings *timings);
    int (*vidioc_enum_dv_timings)(struct file *file, void *fh, struct v4l2_enum_dv_timings *timings);
    int (*vidioc_dv_timings_cap)(struct file *file, void *fh, struct v4l2_dv_timings_cap *cap);
    int (*vidioc_g_edid)(struct file *file, void *fh, struct v4l2_edid *edid);
    int (*vidioc_s_edid)(struct file *file, void *fh, struct v4l2_edid *edid);
    int (*vidioc_subscribe_event)(struct v4l2_fh *fh, const struct v4l2_event_subscription *sub);
    int (*vidioc_unsubscribe_event)(struct v4l2_fh *fh, const struct v4l2_event_subscription *sub);
    long (*vidioc_default)(struct file *file, void *fh, bool valid_prio, unsigned int cmd, void *arg);
};

成員

vidioc_querycap

指向實現 VIDIOC_QUERYCAP ioctl 的函式的指標

vidioc_enum_fmt_vid_cap

指向為單平面和多平面模式下的影片捕獲實現 VIDIOC_ENUM_FMT ioctl 邏輯的函式的指標

vidioc_enum_fmt_vid_overlay

指向為影片疊加實現 VIDIOC_ENUM_FMT ioctl 邏輯的函式的指標

vidioc_enum_fmt_vid_out

指向為單平面和多平面模式下的影片輸出實現 VIDIOC_ENUM_FMT ioctl 邏輯的函式的指標

vidioc_enum_fmt_sdr_cap

指向為軟體定義無線電捕獲實現 VIDIOC_ENUM_FMT ioctl 邏輯的函式的指標

vidioc_enum_fmt_sdr_out

指向為軟體定義無線電輸出實現 VIDIOC_ENUM_FMT ioctl 邏輯的函式的指標

vidioc_enum_fmt_meta_cap

指向為元資料捕獲實現 VIDIOC_ENUM_FMT ioctl 邏輯的函式的指標

vidioc_enum_fmt_meta_out

指向為元資料輸出實現 VIDIOC_ENUM_FMT ioctl 邏輯的函式的指標

vidioc_g_fmt_vid_cap

指向為單平面模式下的影片捕獲實現 VIDIOC_G_FMT ioctl 邏輯的函式的指標

vidioc_g_fmt_vid_overlay

指向為影片疊加實現 VIDIOC_G_FMT ioctl 邏輯的函式的指標

vidioc_g_fmt_vid_out

指向為單平面模式下的影片輸出實現 VIDIOC_G_FMT ioctl 邏輯的函式的指標

vidioc_g_fmt_vid_out_overlay

指向為影片疊加輸出實現 VIDIOC_G_FMT ioctl 邏輯的函式的指標

vidioc_g_fmt_vbi_cap

指向為原始 VBI 捕獲實現 VIDIOC_G_FMT ioctl 邏輯的函式的指標

vidioc_g_fmt_vbi_out

指向為原始 VBI 輸出實現 VIDIOC_G_FMT ioctl 邏輯的函式的指標

vidioc_g_fmt_sliced_vbi_cap

指向為切片 VBI 捕獲實現 VIDIOC_G_FMT ioctl 邏輯的函式的指標

vidioc_g_fmt_sliced_vbi_out

指向為切片 VBI 輸出實現 VIDIOC_G_FMT ioctl 邏輯的函式的指標

vidioc_g_fmt_vid_cap_mplane

指向為多平面模式下的影片捕獲實現 VIDIOC_G_FMT ioctl 邏輯的函式的指標

vidioc_g_fmt_vid_out_mplane

指向為多平面模式下的影片輸出實現 VIDIOC_G_FMT ioctl 邏輯的函式的指標

vidioc_g_fmt_sdr_cap

指向為軟體定義無線電捕獲實現 VIDIOC_G_FMT ioctl 邏輯的函式的指標

vidioc_g_fmt_sdr_out

指向為軟體定義無線電輸出實現 VIDIOC_G_FMT ioctl 邏輯的函式的指標

vidioc_g_fmt_meta_cap

指向為元資料捕獲實現 VIDIOC_G_FMT ioctl 邏輯的函式的指標

vidioc_g_fmt_meta_out

指向為元資料輸出實現 VIDIOC_G_FMT ioctl 邏輯的函式的指標

vidioc_s_fmt_vid_cap

指向為單平面模式下的影片捕獲實現 VIDIOC_S_FMT ioctl 邏輯的函式的指標

vidioc_s_fmt_vid_overlay

指向為影片疊加實現 VIDIOC_S_FMT ioctl 邏輯的函式的指標

vidioc_s_fmt_vid_out

指向為單平面模式下的影片輸出實現 VIDIOC_S_FMT ioctl 邏輯的函式的指標

vidioc_s_fmt_vid_out_overlay

指向為影片疊加輸出實現 VIDIOC_S_FMT ioctl 邏輯的函式的指標

vidioc_s_fmt_vbi_cap

指向為原始 VBI 捕獲實現 VIDIOC_S_FMT ioctl 邏輯的函式的指標

vidioc_s_fmt_vbi_out

指向為原始 VBI 輸出實現 VIDIOC_S_FMT ioctl 邏輯的函式的指標

vidioc_s_fmt_sliced_vbi_cap

指向為切片 VBI 捕獲實現 VIDIOC_S_FMT ioctl 邏輯的函式的指標

vidioc_s_fmt_sliced_vbi_out

指向為切片 VBI 輸出實現 VIDIOC_S_FMT ioctl 邏輯的函式的指標

vidioc_s_fmt_vid_cap_mplane

指向為多平面模式下的影片捕獲實現 VIDIOC_S_FMT ioctl 邏輯的函式的指標

vidioc_s_fmt_vid_out_mplane

指向為多平面模式下的影片輸出實現 VIDIOC_S_FMT ioctl 邏輯的函式的指標

vidioc_s_fmt_sdr_cap

指向為軟體定義無線電捕獲實現 VIDIOC_S_FMT ioctl 邏輯的函式的指標

vidioc_s_fmt_sdr_out

指向為軟體定義無線電輸出實現 VIDIOC_S_FMT ioctl 邏輯的函式的指標

vidioc_s_fmt_meta_cap

指向為元資料捕獲實現 VIDIOC_S_FMT ioctl 邏輯的函式的指標

vidioc_s_fmt_meta_out

指向為元資料輸出實現 VIDIOC_S_FMT ioctl 邏輯的函式的指標

vidioc_try_fmt_vid_cap

指向為單平面模式下的影片捕獲實現 VIDIOC_TRY_FMT ioctl 邏輯的函式的指標

vidioc_try_fmt_vid_overlay

指向為影片疊加實現 VIDIOC_TRY_FMT ioctl 邏輯的函式的指標

vidioc_try_fmt_vid_out

指向為單平面模式下的影片輸出實現 VIDIOC_TRY_FMT ioctl 邏輯的函式的指標

vidioc_try_fmt_vid_out_overlay

指向為影片疊加輸出實現 VIDIOC_TRY_FMT ioctl 邏輯的函式的指標

vidioc_try_fmt_vbi_cap

指向為原始 VBI 捕獲實現 VIDIOC_TRY_FMT ioctl 邏輯的函式的指標

vidioc_try_fmt_vbi_out

指向為原始 VBI 輸出實現 VIDIOC_TRY_FMT ioctl 邏輯的函式的指標

vidioc_try_fmt_sliced_vbi_cap

指向為切片 VBI 捕獲實現 VIDIOC_TRY_FMT ioctl 邏輯的函式的指標

vidioc_try_fmt_sliced_vbi_out

指向為切片 VBI 輸出實現 VIDIOC_TRY_FMT ioctl 邏輯的函式的指標

vidioc_try_fmt_vid_cap_mplane

指向為多平面模式下的影片捕獲實現 VIDIOC_TRY_FMT ioctl 邏輯的函式的指標

vidioc_try_fmt_vid_out_mplane

指向為多平面模式下的影片輸出實現 VIDIOC_TRY_FMT ioctl 邏輯的函式的指標

vidioc_try_fmt_sdr_cap

指向為軟體定義無線電捕獲實現 VIDIOC_TRY_FMT ioctl 邏輯的函式的指標

vidioc_try_fmt_sdr_out

指向為軟體定義無線電輸出實現 VIDIOC_TRY_FMT ioctl 邏輯的函式的指標

vidioc_try_fmt_meta_cap

指向為元資料捕獲實現 VIDIOC_TRY_FMT ioctl 邏輯的函式的指標

vidioc_try_fmt_meta_out

指向為元資料輸出實現 VIDIOC_TRY_FMT ioctl 邏輯的函式的指標

vidioc_reqbufs

指向實現 VIDIOC_REQBUFS ioctl 的函式的指標

vidioc_querybuf

指向實現 VIDIOC_QUERYBUF ioctl 的函式的指標

vidioc_qbuf

指向實現 VIDIOC_QBUF ioctl 的函式的指標

vidioc_expbuf

指向實現 VIDIOC_EXPBUF ioctl 的函式的指標

vidioc_dqbuf

指向實現 VIDIOC_DQBUF ioctl 的函式的指標

vidioc_create_bufs

指向實現 VIDIOC_CREATE_BUFS ioctl 的函式的指標

vidioc_prepare_buf

指向實現 VIDIOC_PREPARE_BUF ioctl 的函式的指標

vidioc_remove_bufs

指向實現 VIDIOC_REMOVE_BUFS ioctl 的函式的指標

vidioc_overlay

指向實現 VIDIOC_OVERLAY ioctl 的函式的指標

vidioc_g_fbuf

指向實現 VIDIOC_G_FBUF ioctl 的函式的指標

vidioc_s_fbuf

指向實現 VIDIOC_S_FBUF ioctl 的函式的指標

vidioc_streamon

指向實現 VIDIOC_STREAMON ioctl 的函式的指標

vidioc_streamoff

指向實現 VIDIOC_STREAMOFF ioctl 的函式的指標

vidioc_g_std

指向實現 VIDIOC_G_STD ioctl 的函式的指標

vidioc_s_std

指向實現 VIDIOC_S_STD ioctl 的函式的指標

vidioc_querystd

指向實現 VIDIOC_QUERYSTD ioctl 的函式的指標

vidioc_enum_input

指向實現 VIDIOC_ENUM_INPUT ioctl 的函式的指標

vidioc_g_input

指向實現 VIDIOC_G_INPUT ioctl 的函式的指標

vidioc_s_input

指向實現 VIDIOC_S_INPUT ioctl 的函式的指標

vidioc_enum_output

指向實現 VIDIOC_ENUM_OUTPUT ioctl 的函式的指標

vidioc_g_output

指向實現 VIDIOC_G_OUTPUT ioctl 的函式的指標

vidioc_s_output

指向實現 VIDIOC_S_OUTPUT ioctl 的函式的指標

vidioc_query_ext_ctrl

指向實現 VIDIOC_QUERY_EXT_CTRL ioctl 的函式的指標

vidioc_g_ext_ctrls

指向實現 VIDIOC_G_EXT_CTRLS ioctl 的函式的指標

vidioc_s_ext_ctrls

指向實現 VIDIOC_S_EXT_CTRLS ioctl 的函式的指標

vidioc_try_ext_ctrls

指向實現 VIDIOC_TRY_EXT_CTRLS ioctl 的函式的指標

vidioc_querymenu

指向實現 VIDIOC_QUERYMENU ioctl 的函式的指標

vidioc_enumaudio

指向實現 VIDIOC_ENUMAUDIO ioctl 的函式的指標

vidioc_g_audio

指向實現 VIDIOC_G_AUDIO ioctl 的函式的指標

vidioc_s_audio

指向實現 VIDIOC_S_AUDIO ioctl 的函式的指標

vidioc_enumaudout

指向實現 VIDIOC_ENUMAUDOUT ioctl 的函式的指標

vidioc_g_audout

指向實現 VIDIOC_G_AUDOUT ioctl 的函式的指標

vidioc_s_audout

指向實現 VIDIOC_S_AUDOUT ioctl 的函式的指標

vidioc_g_modulator

指向實現 VIDIOC_G_MODULATOR ioctl 的函式的指標

vidioc_s_modulator

指向實現 VIDIOC_S_MODULATOR ioctl 的函式的指標

vidioc_g_pixelaspect

指向實現 VIDIOC_CROPCAP ioctl 的 pixelaspect 部分的函式的指標

vidioc_g_selection

指向實現 VIDIOC_G_SELECTION ioctl 的函式的指標

vidioc_s_selection

指向實現 VIDIOC_S_SELECTION ioctl 的函式的指標

vidioc_g_jpegcomp

指向實現 VIDIOC_G_JPEGCOMP ioctl 的函式的指標

vidioc_s_jpegcomp

指向實現 VIDIOC_S_JPEGCOMP ioctl 的函式的指標

vidioc_g_enc_index

指向實現 VIDIOC_G_ENC_INDEX ioctl 的函式的指標

vidioc_encoder_cmd

指向實現 VIDIOC_ENCODER_CMD ioctl 的函式的指標

vidioc_try_encoder_cmd

指向實現 VIDIOC_TRY_ENCODER_CMD ioctl 的函式的指標

vidioc_decoder_cmd

指向實現 VIDIOC_DECODER_CMD ioctl 的函式的指標

vidioc_try_decoder_cmd

指向實現 VIDIOC_TRY_DECODER_CMD ioctl 的函式的指標

vidioc_g_parm

指向實現 VIDIOC_G_PARM ioctl 的函式的指標

vidioc_s_parm

指向實現 VIDIOC_S_PARM ioctl 的函式的指標

vidioc_g_tuner

指向實現 VIDIOC_G_TUNER ioctl 的函式的指標

vidioc_s_tuner

指向實現 VIDIOC_S_TUNER ioctl 的函式的指標

vidioc_g_frequency

指向實現 VIDIOC_G_FREQUENCY ioctl 的函式的指標

vidioc_s_frequency

指向實現 VIDIOC_S_FREQUENCY ioctl 的函式的指標

vidioc_enum_freq_bands

指向實現 VIDIOC_ENUM_FREQ_BANDS ioctl 的函式的指標

vidioc_g_sliced_vbi_cap

指向實現 VIDIOC_G_SLICED_VBI_CAP ioctl 的函式的指標

vidioc_log_status

指向實現 VIDIOC_LOG_STATUS ioctl 的函式的指標

vidioc_s_hw_freq_seek

指向實現 VIDIOC_S_HW_FREQ_SEEK ioctl 的函式的指標

vidioc_g_register

指向實現 VIDIOC_DBG_G_REGISTER ioctl 的函式的指標

vidioc_s_register

指向實現 VIDIOC_DBG_S_REGISTER ioctl 的函式的指標

vidioc_g_chip_info

指向實現 VIDIOC_DBG_G_CHIP_INFO ioctl 的函式的指標

vidioc_enum_framesizes

指向實現 VIDIOC_ENUM_FRAMESIZES ioctl 的函式的指標

vidioc_enum_frameintervals

指向實現 VIDIOC_ENUM_FRAMEINTERVALS ioctl 的函式的指標

vidioc_s_dv_timings

指向實現 VIDIOC_S_DV_TIMINGS ioctl 的函式的指標

vidioc_g_dv_timings

指向實現 VIDIOC_G_DV_TIMINGS ioctl 的函式的指標

vidioc_query_dv_timings

指向實現 VIDIOC_QUERY_DV_TIMINGS ioctl 的函式的指標

vidioc_enum_dv_timings

指向實現 VIDIOC_ENUM_DV_TIMINGS ioctl 的函式的指標

vidioc_dv_timings_cap

指向實現 VIDIOC_DV_TIMINGS_CAP ioctl 的函式的指標

vidioc_g_edid

指向實現 VIDIOC_G_EDID ioctl 的函式的指標

vidioc_s_edid

指向實現 VIDIOC_S_EDID ioctl 的函式的指標

vidioc_subscribe_event

指向實現 VIDIOC_SUBSCRIBE_EVENT ioctl 的函式的指標

vidioc_unsubscribe_event

指向實現 VIDIOC_UNSUBSCRIBE_EVENT ioctl 的函式的指標

vidioc_default

用於允許其他 ioctl

const char *v4l2_norm_to_name(v4l2_std_id id)

從模擬電視標準 ID 獲取輔助例程。

引數

v4l2_std_id id

模擬電視標準 ID。

返回值

返回一個包含模擬電視標準名稱的字串。如果找不到該標準,或者如果 id 指向多個標準,則返回“Unknown”。

void v4l2_video_std_frame_period(int id, struct v4l2_fract *frameperiod)

用預設幀速率分數填充 v4l2_fract 結構指標的輔助例程。

引數

int id

模擬電視標準 ID。

struct v4l2_fract *frameperiod

要填充的 struct v4l2_fract 指標

int v4l2_video_std_construct(struct v4l2_standard *vs, int id, const char *name)

根據 id 引數填充 v4l2_standard 結構的欄位的輔助例程。

引數

struct v4l2_standard *vs

要填充的 struct v4l2_standard 指標

int id

模擬電視標準 ID。

const char *name

要使用的標準的名稱

描述

注意

此輔助例程已過時。不應在新驅動程式上使用。

int v4l_video_std_enumstd(struct v4l2_standard *vs, v4l2_std_id id)

根據 idvs->index 引數填充 v4l2_standard 結構的欄位的輔助例程。

引數

struct v4l2_standard *vs

要填充的 struct v4l2_standard 指標。

v4l2_std_id id

模擬電視標準 ID。

void v4l_printk_ioctl(const char *prefix, unsigned int cmd)

以人類可讀的格式列印 ioctl 的輔助例程。

引數

const char *prefix

要新增到 ioctl 列印的字首。

unsigned int cmd

ioctl 名稱

描述

注意

如果 prefix != NULL,則它將首先發出 printk(KERN_DEBUG "``s: ", prefix)``。

long int v4l2_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg)

用於 64 位處理器的 32 位相容性層

引數

struct file *file

指向 struct file 的指標。

unsigned int cmd

Ioctl 名稱。

unsigned long arg

Ioctl 引數。

v4l2_kioctl

Typedef:用於傳遞 ioctl 處理程式的 Typedef。

語法

long v4l2_kioctl (struct file *file, unsigned int cmd, void *arg)

引數

struct file *file

指向 struct file 的指標。

unsigned int cmd

Ioctl 名稱。

void *arg

Ioctl 引數。

long int video_usercopy(struct file *file, unsigned int cmd, unsigned long int arg, v4l2_kioctl func)

發出 ioctl 時,將資料從使用者空間記憶體複製到使用者空間記憶體。

引數

struct file *file

指向 struct file 的指標。

unsigned int cmd

Ioctl 名稱。

unsigned long int arg

Ioctl 引數。

v4l2_kioctl func

將處理 ioctl 的函式

描述

注意

此例程應僅在 V4L2 核心中使用。

long int video_ioctl2(struct file *file, unsigned int cmd, unsigned long int arg)

處理 V4L2 ioctl。

引數

struct file *file

指向 struct file 的指標。

unsigned int cmd

Ioctl 名稱。

unsigned long int arg

Ioctl 引數。

描述

用於處理 ioctl 的方法。應用於填充所有 V4L2 驅動程式上的 v4l2_ioctl_ops.unlocked_ioctl