在应用程序获取视频数据的流程中,都是通过 ioctl 命令与驱动程序进行交互,结合实际需求,实现struct v4l2_ioctl_ops相关的成员即可。
//源码:include/media/v4l2-ioctl.h /** * struct v4l2_ioctl_ops - describe operations for each V4L2 ioctl * * @vidioc_querycap: pointer to the function that implements * :ref:`VIDIOC_QUERYCAP ` ioctl * @vidioc_enum_fmt_vid_cap: pointer to the function that implements * :ref:`VIDIOC_ENUM_FMT ` ioctl logic * for video capture in single plane mode * @vidioc_enum_fmt_vid_overlay: pointer to the function that implements * :ref:`VIDIOC_ENUM_FMT ` ioctl logic * for video overlay * @vidioc_enum_fmt_vid_out: pointer to the function that implements * :ref:`VIDIOC_ENUM_FMT ` ioctl logic * for video output in single plane mode * @vidioc_enum_fmt_vid_cap_mplane: pointer to the function that implements * :ref:`VIDIOC_ENUM_FMT ` ioctl logic * for video capture in multiplane mode * @vidioc_enum_fmt_vid_out_mplane: pointer to the function that implements * :ref:`VIDIOC_ENUM_FMT ` ioctl logic * for video output in multiplane mode * @vidioc_enum_fmt_sdr_cap: pointer to the function that implements * :ref:`VIDIOC_ENUM_FMT ` ioctl logic * for Software Defined Radio capture * @vidioc_enum_fmt_sdr_out: pointer to the function that implements * :ref:`VIDIOC_ENUM_FMT ` ioctl logic * for Software Defined Radio output * @vidioc_enum_fmt_meta_cap: pointer to the function that implements * :ref:`VIDIOC_ENUM_FMT ` ioctl logic * for metadata capture * @vidioc_g_fmt_vid_cap: pointer to the function that implements * :ref:`VIDIOC_G_FMT ` ioctl logic for video capture * in single plane mode * @vidioc_g_fmt_vid_overlay: pointer to the function that implements * :ref:`VIDIOC_G_FMT ` ioctl logic for video overlay * @vidioc_g_fmt_vid_out: pointer to the function that implements * :ref:`VIDIOC_G_FMT ` ioctl logic for video out * in single plane mode * @vidioc_g_fmt_vid_out_overlay: pointer to the function that implements * :ref:`VIDIOC_G_FMT ` ioctl logic for video overlay output * @vidioc_g_fmt_vbi_cap: pointer to the function that implements * :ref:`VIDIOC_G_FMT ` ioctl logic for raw VBI capture * @vidioc_g_fmt_vbi_out: pointer to the function that implements * :ref:`VIDIOC_G_FMT ` ioctl logic for raw VBI output * @vidioc_g_fmt_sliced_vbi_cap: pointer to the function that implements * :ref:`VIDIOC_G_FMT ` ioctl logic for sliced VBI capture * @vidioc_g_fmt_sliced_vbi_out: pointer to the function that implements * :ref:`VIDIOC_G_FMT ` ioctl logic for sliced VBI output * @vidioc_g_fmt_vid_cap_mplane: pointer to the function that implements * :ref:`VIDIOC_G_FMT ` ioctl logic for video capture * in multiple plane mode * @vidioc_g_fmt_vid_out_mplane: pointer to the function that implements * :ref:`VIDIOC_G_FMT ` ioctl logic for video out * in multiplane plane mode * @vidioc_g_fmt_sdr_cap: pointer to the function that implements * :ref:`VIDIOC_G_FMT ` ioctl logic for Software Defined * Radio capture * @vidioc_g_fmt_sdr_out: pointer to the function that implements * :ref:`VIDIOC_G_FMT ` ioctl logic for Software Defined * Radio output * @vidioc_g_fmt_meta_cap: pointer to the function that implements * :ref:`VIDIOC_G_FMT ` ioctl logic for metadata capture * @vidioc_s_fmt_vid_cap: pointer to the function that implements * :ref:`VIDIOC_S_FMT ` ioctl logic for video capture * in single plane mode * @vidioc_s_fmt_vid_overlay: pointer to the function that implements * :ref:`VIDIOC_S_FMT ` ioctl logic for video overlay * @vidioc_s_fmt_vid_out: pointer to the function that implements * :ref:`VIDIOC_S_FMT ` ioctl logic for video out * in single plane mode * @vidioc_s_fmt_vid_out_overlay: pointer to the function that implements * :ref:`VIDIOC_S_FMT ` ioctl logic for video overlay output * @vidioc_s_fmt_vbi_cap: pointer to the function that implements * :ref:`VIDIOC_S_FMT ` ioctl logic for raw VBI capture * @vidioc_s_fmt_vbi_out: pointer to the function that implements * :ref:`VIDIOC_S_FMT ` ioctl logic for raw VBI output * @vidioc_s_fmt_sliced_vbi_cap: pointer to the function that implements * :ref:`VIDIOC_S_FMT ` ioctl logic for sliced VBI capture * @vidioc_s_fmt_sliced_vbi_out: pointer to the function that implements * :ref:`VIDIOC_S_FMT ` ioctl logic for sliced VBI output * @vidioc_s_fmt_vid_cap_mplane: pointer to the function that implements * :ref:`VIDIOC_S_FMT ` ioctl logic for video capture * in multiple plane mode * @vidioc_s_fmt_vid_out_mplane: pointer to the function that implements * :ref:`VIDIOC_S_FMT ` ioctl logic for video out * in multiplane plane mode * @vidioc_s_fmt_sdr_cap: pointer to the function that implements * :ref:`VIDIOC_S_FMT ` ioctl logic for Software Defined * Radio capture * @vidioc_s_fmt_sdr_out: pointer to the function that implements * :ref:`VIDIOC_S_FMT ` ioctl logic for Software Defined * Radio output * @vidioc_s_fmt_meta_cap: pointer to the function that implements * :ref:`VIDIOC_S_FMT ` ioctl logic for metadata capture * @vidioc_try_fmt_vid_cap: pointer to the function that implements * :ref:`VIDIOC_TRY_FMT ` ioctl logic for video capture * in single plane mode * @vidioc_try_fmt_vid_overlay: pointer to the function that implements * :ref:`VIDIOC_TRY_FMT ` ioctl logic for video overlay * @vidioc_try_fmt_vid_out: pointer to the function that implements * :ref:`VIDIOC_TRY_FMT ` ioctl logic for video out * in single plane mode * @vidioc_try_fmt_vid_out_overlay: pointer to the function that implements * :ref:`VIDIOC_TRY_FMT ` ioctl logic for video overlay * output * @vidioc_try_fmt_vbi_cap: pointer to the function that implements * :ref:`VIDIOC_TRY_FMT ` ioctl logic for raw VBI capture * @vidioc_try_fmt_vbi_out: pointer to the function that implements * :ref:`VIDIOC_TRY_FMT ` ioctl logic for raw VBI output * @vidioc_try_fmt_sliced_vbi_cap: pointer to the function that implements * :ref:`VIDIOC_TRY_FMT ` ioctl logic for sliced VBI * capture * @vidioc_try_fmt_sliced_vbi_out: pointer to the function that implements * :ref:`VIDIOC_TRY_FMT ` ioctl logic for sliced VBI output * @vidioc_try_fmt_vid_cap_mplane: pointer to the function that implements * :ref:`VIDIOC_TRY_FMT ` ioctl logic for video capture * in multiple plane mode * @vidioc_try_fmt_vid_out_mplane: pointer to the function that implements * :ref:`VIDIOC_TRY_FMT ` ioctl logic for video out * in multiplane plane mode * @vidioc_try_fmt_sdr_cap: pointer to the function that implements * :ref:`VIDIOC_TRY_FMT ` ioctl logic for Software Defined * Radio capture * @vidioc_try_fmt_sdr_out: pointer to the function that implements * :ref:`VIDIOC_TRY_FMT ` ioctl logic for Software Defined * Radio output * @vidioc_try_fmt_meta_cap: pointer to the function that implements * :ref:`VIDIOC_TRY_FMT ` ioctl logic for metadata capture * @vidioc_reqbufs: pointer to the function that implements * :ref:`VIDIOC_REQBUFS ` ioctl * @vidioc_querybuf: pointer to the function that implements * :ref:`VIDIOC_QUERYBUF ` ioctl * @vidioc_qbuf: pointer to the function that implements * :ref:`VIDIOC_QBUF ` ioctl * @vidioc_expbuf: pointer to the function that implements * :ref:`VIDIOC_EXPBUF ` ioctl * @vidioc_dqbuf: pointer to the function that implements * :ref:`VIDIOC_DQBUF ` ioctl * @vidioc_create_bufs: pointer to the function that implements * :ref:`VIDIOC_CREATE_BUFS ` ioctl * @vidioc_prepare_buf: pointer to the function that implements * :ref:`VIDIOC_PREPARE_BUF ` ioctl * @vidioc_overlay: pointer to the function that implements * :ref:`VIDIOC_OVERLAY ` ioctl * @vidioc_g_fbuf: pointer to the function that implements * :ref:`VIDIOC_G_FBUF ` ioctl * @vidioc_s_fbuf: pointer to the function that implements * :ref:`VIDIOC_S_FBUF ` ioctl * @vidioc_streamon: pointer to the function that implements * :ref:`VIDIOC_STREAMON ` ioctl * @vidioc_streamoff: pointer to the function that implements * :ref:`VIDIOC_STREAMOFF ` ioctl * @vidioc_g_std: pointer to the function that implements * :ref:`VIDIOC_G_STD ` ioctl * @vidioc_s_std: pointer to the function that implements * :ref:`VIDIOC_S_STD ` ioctl * @vidioc_querystd: pointer to the function that implements * :ref:`VIDIOC_QUERYSTD ` ioctl * @vidioc_enum_input: pointer to the function that implements * :ref:`VIDIOC_ENUM_INPUT ` ioctl * @vidioc_g_input: pointer to the function that implements * :ref:`VIDIOC_G_INPUT ` ioctl * @vidioc_s_input: pointer to the function that implements * :ref:`VIDIOC_S_INPUT ` ioctl * @vidioc_enum_output: pointer to the function that implements * :ref:`VIDIOC_ENUM_OUTPUT ` ioctl * @vidioc_g_output: pointer to the function that implements * :ref:`VIDIOC_G_OUTPUT ` ioctl * @vidioc_s_output: pointer to the function that implements * :ref:`VIDIOC_S_OUTPUT ` ioctl * @vidioc_queryctrl: pointer to the function that implements * :ref:`VIDIOC_QUERYCTRL ` ioctl * @vidioc_query_ext_ctrl: pointer to the function that implements * :ref:`VIDIOC_QUERY_EXT_CTRL ` ioctl * @vidioc_g_ctrl: pointer to the function that implements * :ref:`VIDIOC_G_CTRL ` ioctl * @vidioc_s_ctrl: pointer to the function that implements * :ref:`VIDIOC_S_CTRL ` ioctl * @vidioc_g_ext_ctrls: pointer to the function that implements * :ref:`VIDIOC_G_EXT_CTRLS