2.19. V4L2 媒体控制器函数和数据结构

int v4l2_mc_create_media_graph(struct media_device *mdev)

在图形中创建媒体控制器链接。

参数

struct media_device *mdev

指向 media_device 结构的指针。

描述

在 V4L2 侧,在 PC 客户的硬件上常见的实体之间添加链接:摄像头传感器、音频和视频 PLL-IF 解码器、调谐器、模拟电视解码器和 I/O 实体(视频、VBI 和软件定义无线电)。

注意

网络摄像头以一种非常简单的方式建模:传感器直接连接到 I/O 实体。所有肮脏的细节,如缩放器和裁剪 HW 都被隐藏了。虽然这种映射对于以 v4l2 接口为中心的 PC 消费者硬件来说已经足够了,但以 V4L2 子设备为中心的摄像头硬件不应该使用这个例程,因为它不会构建正确的图形。

int v4l_enable_media_source(struct video_device *vdev)

如果空闲,则保持媒体源以供独占使用

参数

struct video_device *vdev

指向 struct video_device 的指针

描述

此接口调用 enable_source 处理程序来确定媒体源是否可以免费使用。 enable_source 处理程序负责检查媒体源是否空闲,并启动媒体源和与视频设备关联的媒体实体之间的管道。应该从更改源配置的 v4l2-core 和 dvb-core 接口调用此接口。

返回

成功时返回零,否则返回负错误代码。

void v4l_disable_media_source(struct video_device *vdev)

释放媒体源

参数

struct video_device *vdev

指向 struct video_device 的指针

描述

此接口调用 disable_source 处理程序来释放媒体源。 disable_source 处理程序停止媒体源和与视频设备关联的媒体实体之间的活动媒体管道。

返回

成功时返回零,否则返回负错误代码。

从源子设备到接收器衬垫创建基于 fwnode 的链接。

参数

struct v4l2_subdev *src_sd

指向源子设备的指针

struct media_pad *sink

指向接收器衬垫的指针

u32 flags

链接标志

描述

此函数搜索从源子设备到单个接收器衬垫的基于 fwnode 端点的连接,如果找到合适的连接,则将它们转换为到该衬垫的媒体链接。接收器可以在其 v4l2-async 通知器绑定回调中调用该函数,以创建来自绑定源子设备的链接。

flags 参数指定链接标志。调用者应确保标志有效,而不管可能创建的链接数量如何。例如,设置 MEDIA_LNK_FL_ENABLED 标志将导致所有创建的链接都被启用,如果创建了多个链接,则这无效。

注意

任何调用此函数的接收器子设备都必须实现 .get_fwnode_pad 媒体操作,以便验证传递给接收器的端点是否归接收器所有。

成功时返回 0,失败时返回负错误代码。

从源子设备到接收器子设备创建基于 fwnode 的链接。

参数

struct v4l2_subdev *src_sd

指向源子设备的指针

struct v4l2_subdev *sink_sd

指向接收器子设备的指针

描述

此函数搜索源子设备和接收器子设备之间的任何和所有 fwnode 端点连接,并将它们转换为媒体链接。接收器子设备可以在其 v4l2-async 通知器子设备绑定回调中调用该函数,以创建来自绑定源子设备的所有链接。

注意

任何调用此函数的接收器子设备都必须实现 .get_fwnode_pad 媒体操作,以便验证传递给接收器的端点是否归接收器所有。

成功时返回 0,失败时返回负错误代码。

int v4l2_pipeline_pm_get(struct media_entity *entity)

增加管道的使用计数

参数

struct media_entity *entity

管道的根实体

描述

此函数已被弃用。请勿在新驱动程序中使用。改为在子设备驱动程序上使用运行时 PM。

更新管道中所有实体的使用计数并打开电源实体。

此函数旨在在视频节点打开时调用。它使用 struct media_entity.use_count 来跟踪电源状态。此函数的使用应与 v4l2_pipeline_link_notify() 配对。

成功时返回 0,失败时返回负错误代码。

void v4l2_pipeline_pm_put(struct media_entity *entity)

减少管道的使用计数

参数

struct media_entity *entity

管道的根实体

描述

此函数已被弃用。请勿在新驱动程序中使用。改为在子设备驱动程序上使用运行时 PM。

更新管道中所有实体的使用计数并关闭电源实体。

此函数旨在在视频节点释放时调用。它使用 struct media_entity.use_count 来跟踪电源状态。此函数的使用应与 v4l2_pipeline_link_notify() 配对。

链接管理通知回调

参数

struct media_link *link

链接

u32 flags

将要应用的新链接标志

unsigned int notification

链接的状态更改通知类型 (MEDIA_DEV_NOTIFY_*)

描述

此函数已被弃用。请勿在新驱动程序中使用。改为在子设备驱动程序上使用运行时 PM。

通过更新链接源端和接收端中所有实体的使用计数来对供电管道上的链接管理做出反应。相应地打开或关闭实体的电源。此函数的使用应与 v4l2_pipeline_pm_{get,put}() 配对。

成功时返回 0,失败时返回负错误代码。假定关闭实体电源永远不会失败。此函数不会因断开连接事件而失败。