3. 用于表示媒体图元素的类型和标志

媒体实体功能

MEDIA_ENT_F_UNKNOWNMEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN

未知实体。这通常表示驱动程序未正确初始化该实体,这是一个内核错误。

MEDIA_ENT_F_IO_V4L

数据流输入和/或输出实体。

MEDIA_ENT_F_IO_VBI

V4L VBI 流输入或输出实体

MEDIA_ENT_F_IO_SWRADIO

V4L 软件数字广播 (SDR) 流输入或输出实体

MEDIA_ENT_F_IO_DTV

DVB 数字电视流输入或输出实体

MEDIA_ENT_F_DTV_DEMOD

数字电视解调器实体。

MEDIA_ENT_F_TS_DEMUX

MPEG 传输流解复用实体。可通过硬件或 Linux DVB 子系统在内核空间实现。

MEDIA_ENT_F_DTV_CA

数字电视条件接收模块 (CAM) 实体

MEDIA_ENT_F_DTV_NET_DECAP

数字电视网络 ULE/MLE 解封装实体。可通过硬件或内核空间实现。

MEDIA_ENT_F_CONN_RF

射频 (RF) 信号连接器。

MEDIA_ENT_F_CONN_SVIDEO

S-Video 信号连接器。

MEDIA_ENT_F_CONN_COMPOSITE

RGB 复合信号连接器。

MEDIA_ENT_F_CAM_SENSOR

摄像头视频传感器实体。

MEDIA_ENT_F_FLASH

闪光灯控制器实体。

MEDIA_ENT_F_LENS

镜头控制器实体。

MEDIA_ENT_F_ATV_DECODER

模拟视频解码器,视频解码器的基本功能是接收来自广播、DVD 播放器、摄像机和录像机等各种来源的模拟视频,格式可以是 NTSC、PAL、SECAM 或 HD,将视频流分离成其分量部分(亮度信号和色度信号),并以适当的时序信号输出为某种数字视频标准。

MEDIA_ENT_F_TUNER

数字电视、模拟电视、广播和/或软件无线电调谐器,其包含一个 PLL 调谐级,将射频 (RF) 信号转换为中频 (IF)。现代调谐器内部具有用于音频和视频的 IF-PLL 解码器,而旧型号则将这些级实现在独立的实体上。

MEDIA_ENT_F_IF_VID_DECODER

IF-PLL 视频解码器。它从 PLL 接收中频,并解码模拟电视视频信号。这常见于一些非常旧的模拟调谐器,如飞利浦 MK3 设计。它们都包含 tda9887(或类似 tda9885 的软件兼容芯片)。这些设备使用与调谐器 PLL 不同的 I2C 地址。

MEDIA_ENT_F_IF_AUD_DECODER

IF-PLL 音频解码器。它从 PLL 接收中频,并解码模拟电视音频信号。这常见于一些非常旧的模拟硬件,如 Micronas msp3400、飞利浦 tda9840、tda985x 等。这些设备使用与调谐器 PLL 不同的 I2C 地址,应与 IF-PLL 视频解码器一起控制。

MEDIA_ENT_F_AUDIO_CAPTURE

音频捕获功能实体。

MEDIA_ENT_F_AUDIO_PLAYBACK

音频播放功能实体。

MEDIA_ENT_F_AUDIO_MIXER

音频混音器功能实体。

MEDIA_ENT_F_PROC_VIDEO_COMPOSER

视频合成器(混合器)。能够合成视频的实体必须至少有两个接收端点和一个源端点,并将输入视频帧合成到输出视频帧上。合成可以通过 Alpha 混合、色度键控、光栅操作 (ROP)、拼接或任何其他方式执行。

MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER

视频像素格式化器。能够进行像素格式化的实体必须至少有一个接收端点和一个源端点。读取像素格式化器从内存读取像素,并执行解包、裁剪、色度键控、Alpha 乘法和像素编码转换的一部分操作。写入像素格式化器执行抖动、像素编码转换和打包的一部分操作,并将像素写入内存。

MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV

视频像素编码转换器。能够进行像素编码转换的实体必须至少有一个接收端点和一个源端点,并将接收到其接收端点上的像素编码转换为其源端点上的不同编码输出。像素编码转换包括但不限于 RGB 与 HSV 之间的转换、RGB 与 YUV 之间的转换以及 CFA (Bayer) 到 RGB 的转换。

MEDIA_ENT_F_PROC_VIDEO_LUT

视频查找表。能够处理视频查找表的实体必须有一个接收端点和一个源端点。它使用其接收端点上接收到的像素值在内部表中查找条目,并将其输出到其源端点。查找处理可以对所有分量分别执行,也可以将它们组合起来进行多维表查找。

MEDIA_ENT_F_PROC_VIDEO_SCALER

视频缩放器。能够进行视频缩放的实体必须至少有一个接收端点和一个源端点,并将其接收端点上接收到的视频帧缩放到其源端点上的不同分辨率输出。支持的缩放比例范围是实体特定的,并且在水平和垂直方向上可能有所不同(特别是,可能仅在一个方向上支持缩放)。像素合并(Binning)和子采样(Sub-sampling)(有时也称为跳过)被视为缩放操作。

MEDIA_ENT_F_PROC_VIDEO_STATISTICS

视频统计计算(直方图、3A 等)。能够进行统计计算的实体必须有一个接收端点和一个源端点。它计算其接收端点上接收到的帧的统计数据,并将统计数据输出到其源端点。

MEDIA_ENT_F_PROC_VIDEO_ENCODER

视频(MPEG、HEVC、VPx 等)编码器。能够压缩视频帧的实体。必须有一个接收端点和至少一个源端点。

MEDIA_ENT_F_PROC_VIDEO_DECODER

视频(MPEG、HEVC、VPx 等)解码器。能够将压缩视频流解压缩为未压缩视频帧的实体。必须有一个接收端点和至少一个源端点。

MEDIA_ENT_F_PROC_VIDEO_ISP

图像信号处理器 (ISP) 设备。ISP 通常是独一无二的设备,它们使用自定义 V4L2 控制和 IOCTL 的组合以及元数据缓冲区中提供的参数来拥有其特定的控制接口。

MEDIA_ENT_F_VID_MUX

视频复用器。能够进行复用的实体必须至少有两个接收端点和一个源端点,并且必须将从活动接收端点接收到的视频帧传递到源端点。

MEDIA_ENT_F_VID_IF_BRIDGE

视频接口桥。视频接口桥实体必须至少有一个接收端点和至少一个源端点。它从一种输入视频总线(HDMI、eDP、MIPI CSI-2 等)在其接收端点上接收视频帧,并将其输出到其源端点上的另一种输出视频总线(eDP、MIPI CSI-2、并行等)。

MEDIA_ENT_F_DV_DECODER

数字视频解码器。视频解码器的基本功能是接收来自各种来源的数字视频,并以适当的时序信号输出为某种数字视频标准。

MEDIA_ENT_F_DV_ENCODER

数字视频编码器。视频编码器的基本功能是接收来自某种数字视频标准、带有适当时序信号(通常是带有同步信号的并行视频总线)的数字视频,并将其输出到 HDMI 或 DisplayPort 等数字视频输出连接器。

媒体实体标志

MEDIA_ENT_FL_DEFAULT

其类型的默认实体。用于发现默认的音频、VBI 和视频设备、默认的摄像头传感器等。

MEDIA_ENT_FL_CONNECTOR

该实体表示一个连接器。

媒体接口类型

MEDIA_INTF_T_DVB_FE

数字电视前端的设备节点接口

通常为,/dev/dvb/adapter?/frontend?

MEDIA_INTF_T_DVB_DEMUX

数字电视解复用器的设备节点接口

通常为,/dev/dvb/adapter?/demux?

MEDIA_INTF_T_DVB_DVR

数字电视 DVR 的设备节点接口

通常为,/dev/dvb/adapter?/dvr?

MEDIA_INTF_T_DVB_CA

数字电视条件接收的设备节点接口

通常为,/dev/dvb/adapter?/ca?

MEDIA_INTF_T_DVB_NET

数字电视网络控制的设备节点接口

通常为,/dev/dvb/adapter?/net?

MEDIA_INTF_T_V4L_VIDEO

视频 (V4L) 的设备节点接口

通常为,/dev/video?

MEDIA_INTF_T_V4L_VBI

VBI (V4L) 的设备节点接口

通常为,/dev/vbi?

MEDIA_INTF_T_V4L_RADIO

广播 (V4L) 的设备节点接口

通常为,/dev/radio?

MEDIA_INTF_T_V4L_SUBDEV

V4L 子设备的设备节点接口

通常为,/dev/v4l-subdev?

MEDIA_INTF_T_V4L_SWRADIO

软件定义无线电 (V4L) 的设备节点接口

通常为,/dev/swradio?

MEDIA_INTF_T_V4L_TOUCH

触摸设备 (V4L) 的设备节点接口

通常为,/dev/v4l-touch?

MEDIA_INTF_T_ALSA_PCM_CAPTURE

ALSA PCM 捕获的设备节点接口

通常为,/dev/snd/pcmC?D?c

MEDIA_INTF_T_ALSA_PCM_PLAYBACK

ALSA PCM 播放的设备节点接口

通常为,/dev/snd/pcmC?D?p

MEDIA_INTF_T_ALSA_CONTROL

ALSA 控制的设备节点接口

通常为,/dev/snd/controlC?

MEDIA_INTF_T_ALSA_COMPRESS

ALSA 压缩的设备节点接口

通常为,/dev/snd/compr?

MEDIA_INTF_T_ALSA_RAWMIDI

ALSA 原始 MIDI 的设备节点接口

通常为,/dev/snd/midi?

MEDIA_INTF_T_ALSA_HWDEP

ALSA 硬件相关的设备节点接口

通常为,/dev/snd/hwC?D?

MEDIA_INTF_T_ALSA_SEQUENCER

ALSA 序列器的设备节点接口

通常为,/dev/snd/seq

MEDIA_INTF_T_ALSA_TIMER

ALSA 定时器的设备节点接口

通常为,/dev/snd/timer

媒体端点标志

MEDIA_PAD_FL_SINK

输入端点,相对于实体。输入端点接收数据,并且是链接的目标。

MEDIA_PAD_FL_SOURCE

输出端点,相对于实体。输出端点提供数据,并且是链接的来源。

MEDIA_PAD_FL_MUST_CONNECT

如果设置此标志,则此端点若要进行流传输,必须至少由一个已启用的链接连接。即使未设置此标志,端点也可能由于临时原因(例如设备配置依赖性)而需要已启用的链接;未设置此标志并不意味着没有此需求。

每个端点必须且只能设置 MEDIA_PAD_FL_SINKMEDIA_PAD_FL_SOURCE 中的一个。

媒体链接标志

MEDIA_LNK_FL_ENABLED

该链接已启用,可用于传输媒体数据。当两个或更多链接指向一个接收端点时,一次只能启用其中一个。

MEDIA_LNK_FL_IMMUTABLE

链接的启用状态不能在运行时修改。不可变链接始终处于启用状态。

MEDIA_LNK_FL_DYNAMIC

链接的启用状态可以在流传输期间修改。此标志由驱动程序设置,对应用程序是只读的。

MEDIA_LNK_FL_LINK_TYPE

这是一个定义链接类型的位掩码。目前支持以下链接类型: