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 实体。所有脏细节,如缩放器和裁剪硬件都被隐藏了。虽然这种映射对于以 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 处理程序停止媒体源和与视频设备关联的媒体实体之间的活动媒体管道。
返回
成功返回零或返回负错误代码。
-
int v4l2_create_fwnode_links_to_pad(struct v4l2_subdev *src_sd, struct media_pad *sink, u32 flags)¶
从源子设备创建基于 fwnode 的链接到接收器填充。
参数
struct v4l2_subdev *src_sd
指向源子设备的指针
struct media_pad *sink
指向接收器填充的指针
u32 flags
链接标志
描述
此函数搜索从源子设备到单个接收器填充的 fwnode 端点连接,如果找到合适的连接,则将其转换为该填充的媒体链接。接收器可以在其 v4l2-async 通知程序绑定回调中调用此函数,以创建来自绑定源子设备的链接。
flags 参数指定链接标志。调用者应确保标志有效,无论可能创建的链接数量如何。例如,设置 MEDIA_LNK_FL_ENABLED 标志将导致所有创建的链接都被启用,如果创建了多个链接,则这是无效的。
注意
任何调用此函数的接收器子设备都必须实现 .get_fwnode_pad 媒体操作,以便验证传递给接收器的端点是否归接收器所有。
成功返回 0,失败返回负错误代码。
-
int v4l2_create_fwnode_links(struct v4l2_subdev *src_sd, struct v4l2_subdev *sink_sd)¶
从源子设备创建基于 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()
配对使用。
-
int v4l2_pipeline_link_notify(struct media_link *link, u32 flags, unsigned int notification)¶
链接管理通知回调
参数
struct media_link *link
链接
u32 flags
将应用的新链接标志
unsigned int notification
链接的状态更改通知类型 (MEDIA_DEV_NOTIFY_*)
描述
此函数已弃用。请勿在新驱动程序中使用。请改用子设备驱动程序上的运行时 PM。
通过更新链接的源端和接收端中所有实体的使用计数来响应电源管道上的链接管理。实体会相应地打开或关闭电源。此函数的使用应与 v4l2_pipeline_pm_{get,put}() 配对使用。
成功时返回 0,失败时返回负错误代码。假设关闭实体电源永远不会失败。对于断开连接事件,此函数不会失败。