2.17. V4L2 DV 时序函数¶
-
struct v4l2_fract v4l2_calc_timeperframe(const struct v4l2_dv_timings *t)¶
辅助函数,用于基于 v4l2_dv_timings 字段计算 timeperframe。
参数
const struct v4l2_dv_timings *t
视频模式的时序。
描述
使用像素时钟值和水平/垂直测量值计算预期的 timeperframe。这意味着 v4l2_dv_timings 结构必须正确且完整地填充。
-
v4l2_check_dv_timings_fnc¶
类型定义:时序检查回调
语法
bool v4l2_check_dv_timings_fnc (const struct v4l2_dv_timings *t, void *handle)
参数
const struct v4l2_dv_timings *t
v4l2_dv_timings 结构。
void *handle
驱动程序的句柄。
描述
如果给定的时序有效,则返回 true。
-
bool v4l2_valid_dv_timings(const struct v4l2_dv_timings *t, const struct v4l2_dv_timings_cap *cap, v4l2_check_dv_timings_fnc fnc, void *fnc_handle)¶
这些时序是否有效?
参数
const struct v4l2_dv_timings *t
v4l2_dv_timings 结构。
const struct v4l2_dv_timings_cap *cap
v4l2_dv_timings_cap 功能。
v4l2_check_dv_timings_fnc fnc
回调以检查此时序是否正常。可以为 NULL。
void *fnc_handle
传递给 fnc 的句柄。
描述
如果给定的 dv_timings 结构受硬件功能支持,并且回调函数(如果非 NULL)返回 true,否则返回 false。
-
int v4l2_enum_dv_timings_cap(struct v4l2_enum_dv_timings *t, const struct v4l2_dv_timings_cap *cap, v4l2_check_dv_timings_fnc fnc, void *fnc_handle)¶
辅助函数,用于根据功能枚举可能的 DV 时序
参数
struct v4l2_enum_dv_timings *t
v4l2_enum_dv_timings 结构。
const struct v4l2_dv_timings_cap *cap
v4l2_dv_timings_cap 功能。
v4l2_check_dv_timings_fnc fnc
回调以检查此时序是否正常。可以为 NULL。
void *fnc_handle
传递给 fnc 的句柄。
描述
这将使用所有可能的 CEA-861 和 DMT 时序列表枚举 dv_timings,并根据硬件功能和回调函数(如果非 NULL)过滤掉任何不支持的时序。
如果找到给定索引的有效时序,它将填充 t 并返回 0,否则返回 -EINVAL。
-
bool v4l2_find_dv_timings_cap(struct v4l2_dv_timings *t, const struct v4l2_dv_timings_cap *cap, unsigned pclock_delta, v4l2_check_dv_timings_fnc fnc, void *fnc_handle)¶
查找最接近的时序结构
参数
struct v4l2_dv_timings *t
v4l2_enum_dv_timings 结构。
const struct v4l2_dv_timings_cap *cap
v4l2_dv_timings_cap 功能。
unsigned pclock_delta
t->pixelclock 与正在考虑的时序结构之间的最大增量。
v4l2_check_dv_timings_fnc fnc
回调以检查给定的时序结构是否正常。可以为 NULL。
void *fnc_handle
传递给 fnc 的句柄。
描述
此函数尝试将给定的时序映射到所有可能的 CEA-861 和 DMT 时序列表中的一个条目,并根据硬件功能和回调函数(如果非 NULL)过滤掉任何不支持的时序。
成功时,它将使用找到的时序填充 t 并返回 true。失败时,它将返回 false。
-
bool v4l2_find_dv_timings_cea861_vic(struct v4l2_dv_timings *t, u8 vic)¶
根据 CEA-861 VIC 查找时序
参数
struct v4l2_dv_timings *t
时序数据。
u8 vic
CEA-861 VIC 代码
描述
成功时,它将使用找到的时序填充 t 并返回 true。失败时,它将返回 false。
-
bool v4l2_match_dv_timings(const struct v4l2_dv_timings *measured, const struct v4l2_dv_timings *standard, unsigned pclock_delta, bool match_reduced_fps)¶
两个时序是否匹配?
参数
const struct v4l2_dv_timings *measured
测量的时序数据。
const struct v4l2_dv_timings *standard
符合标准的时序。
unsigned pclock_delta
标准时序的 pixelclock 和测量的时序之间最大允许的 Hz 差值。
bool match_reduced_fps
如果为 true,则当 V4L2_DV_FL_REDUCED_FPS 不匹配时失败。
描述
如果两个时序匹配,则返回 true,否则返回 false。
-
void v4l2_print_dv_timings(const char *dev_prefix, const char *prefix, const struct v4l2_dv_timings *t, bool detailed)¶
记录 dv_timings 结构的内容
参数
const char *dev_prefix
每行日志的设备前缀。
const char *prefix
每行日志的附加前缀,可以为 NULL。
const struct v4l2_dv_timings *t
时序数据。
bool detailed
如果为 true,则提供详细的日志。
-
bool v4l2_detect_cvt(unsigned int frame_height, unsigned int hfreq, unsigned int vsync, unsigned int active_width, u32 polarities, bool interlaced, const struct v4l2_dv_timings_cap *cap, struct v4l2_dv_timings *fmt)¶
检测给定的时序是否符合 CVT 标准
参数
unsigned int frame_height
帧的总高度(包括消隐)以行为单位。
unsigned int hfreq
水平频率,单位为 Hz。
unsigned int vsync
垂直同步的高度,以行为单位。
unsigned int active_width
图像的活动宽度(不包括消隐)。仅在版本 2 的缩减消隐情况下才需要此信息。在其他情况下,此参数对时序没有任何影响。
u32 polarities
水平和垂直极性(与 struct v4l2_bt_timings 的极性相同)。
bool interlaced
如果此标志为 true,则表示隔行扫描格式
const struct v4l2_dv_timings_cap *cap
v4l2_dv_timings_cap 功能。
struct v4l2_dv_timings *fmt
结果时序。
描述
此函数将尝试检测给定的值是否对应于有效的 CVT 格式。 如果是,则将返回 true,并且 fmt 将填充找到的 CVT 时序。
-
bool v4l2_detect_gtf(unsigned int frame_height, unsigned int hfreq, unsigned int vsync, u32 polarities, bool interlaced, struct v4l2_fract aspect, const struct v4l2_dv_timings_cap *cap, struct v4l2_dv_timings *fmt)¶
检测给定的时序是否符合 GTF 标准
参数
unsigned int frame_height
帧的总高度(包括消隐)以行为单位。
unsigned int hfreq
水平频率,单位为 Hz。
unsigned int vsync
垂直同步的高度,以行为单位。
u32 polarities
水平和垂直极性(与 struct v4l2_bt_timings 的极性相同)。
bool interlaced
如果此标志为 true,则表示隔行扫描格式
struct v4l2_fract aspect
首选宽高比。GTF 没有确定宽高比以便从图像高度推导出图像宽度的方法,因此必须显式传递它。通常,使用屏幕的原始宽高比。如果未正确填充,则将假定为 16:9。
const struct v4l2_dv_timings_cap *cap
v4l2_dv_timings_cap 功能。
struct v4l2_dv_timings *fmt
结果时序。
描述
此函数将尝试检测给定的值是否对应于有效的 GTF 格式。 如果是,则将返回 true,并且 fmt 将填充找到的 GTF 时序。
-
struct v4l2_fract v4l2_calc_aspect_ratio(u8 hor_landscape, u8 vert_portrait)¶
基于 EDID 中的字节 0x15 和 0x16 计算宽高比。
参数
u8 hor_landscape
来自 EDID 的字节 0x15。
u8 vert_portrait
来自 EDID 的字节 0x16。
描述
从 EDID 确定宽高比。请参阅 VESA Enhanced EDID 标准,版本 A,修订版 2,第 3.6.2 节:“水平和垂直屏幕尺寸或宽高比”
-
struct v4l2_fract v4l2_dv_timings_aspect_ratio(const struct v4l2_dv_timings *t)¶
基于 v4l2_dv_timings 信息计算宽高比。
参数
const struct v4l2_dv_timings *t
时序数据。
-
bool can_reduce_fps(struct v4l2_bt_timings *bt)¶
检查是否满足降低 fps 的条件。
参数
struct v4l2_bt_timings *bt
v4l2 时序结构
描述
对于不同的时序,如果满足以下条件,则允许降低 fps
对于 CVT 时序:如果缩减消隐 v2 (vsync == 8) 为 true。
对于 CEA861 时序:如果
V4L2_DV_FL_CAN_REDUCE_FPS
标志为 true。
-
struct v4l2_hdmi_colorimetry¶
描述 HDMI 色度信息
定义:
struct v4l2_hdmi_colorimetry {
enum v4l2_colorspace colorspace;
enum v4l2_ycbcr_encoding ycbcr_enc;
enum v4l2_quantization quantization;
enum v4l2_xfer_func xfer_func;
};
成员
色彩空间
enum v4l2_colorspace
,色彩空间ycbcr_enc
enum v4l2_ycbcr_encoding
,Y'CbCr 编码量化
enum v4l2_quantization
,色彩空间量化xfer_func
enum v4l2_xfer_func
,色彩空间传递函数