2.2.16 V4L2 DV Timings functions

DV(Digital Video,数字视频)
struct v4l2_fract v4l2_calc_timeperframe(const struct v4l2_dv_timings *t)
计算时间间隔(timeperframe)的辅助函数,基于v4l2_dv_timings结构体的字段进行计算。
参数:
const struct v4l2_dv_timings *t 视频模式的时序参数。
描述:
根据像素时钟值和水平/垂直测量值,计算预期的时间间隔(timeperframe)。这意味着v4l2_dv_timings结构体必须被正确和完整地填充。
在使用此函数之前,需要确保v4l2_dv_timings结构体中的字段已经正确设置,并完整填充了相关信息。该函数将基于时序参数中的像素时钟值和测量值来计算时间间隔。
返回值为一个v4l2_fract结构体,表示计算得到的时间间隔。
v4l2_check_dv_timings_fnc(时序检查回调函数)
类型定义:timings check callback(时序检查回调函数)
语法:
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。
该函数是一个回调函数,用于检查给定的时序参数是否有效。它接收一个指向v4l2_dv_timings结构体的指针和一个驱动程序提供的句柄作为参数,并返回一个布尔值,表示给定的时序是否有效。
在使用该函数时,应根据具体的驱动程序实现进行处理,以确保时序参数的有效性。如果返回true,表示给定的时序是有效的;如果返回false,则表示给定的时序无效。
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,则返回true;否则返回false。
该函数用于检查给定的dv_timings结构体是否被硬件能力所支持,并且通过回调函数(如果提供了回调函数)进行进一步验证。它接收一个指向v4l2_dv_timings结构体的指针、一个指向v4l2_dv_timings_cap能力结构体的指针、一个用于检查该时序参数是否可行的回调函数(可以为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时序的完整列表进行时序枚举,根据硬件能力和回调函数(如果提供了回调函数)过滤掉不支持的时序。
如果找到给定索引的有效时序,则填充t并返回0;否则返回-EINVAL。
该函数用于枚举基于硬件能力和回调函数的可能的DV时序。它接收一个指向v4l2_enum_dv_timings结构体的指针、一个指向v4l2_dv_timings_cap能力结构体的指针、一个用于检查该时序参数是否可行的回调函数(可以为NULL),以及一个传递给回调函数的句柄。
在枚举过程中,该函数会使用所有可能的CEA-861和DMT时序进行筛选,过滤掉不被硬件能力所支持的时序。如果找到了给定索引的有效时序(即被硬件能力和回调函数验证通过),则会将其填充到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_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时序的完整列表中的一个条目,并根据硬件能力和回调函数(如果提供了回调函数)过滤掉不支持的时序。
如果成功找到匹配的时序,则将其填充到t中并返回true。如果未找到匹配的时序,则返回false。
该函数用于寻找最接近给定时序的符合硬件能力和回调函数要求的时序结构体。它接收一个指向v4l2_dv_timings结构体的指针、一个指向v4l2_dv_timings_cap能力结构体的指针、一个用于限制t->pixelclock和待考虑时序结构体之间最大差距的参数、一个用于检查给定时序结构体是否可行的回调函数(可以为NULL),以及一个传递给回调函数的句柄。
在查找过程中,该函数会遍历可能的CEA-861和DMT时序的完整列表,并根据硬件能力和回调函数的要求过滤掉不符合条件的时序结构体。如果找到了与给定时序最接近的有效时序,即满足硬件能力和回调函数验证通过的时序,则将其填充到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代码
描述:
该函数根据CEA-861 VIC代码寻找对应的时序。
如果成功找到匹配的时序,则将其填充到t中并返回true。如果未找到匹配的时序,则返回false表示失败。
该函数用于基于CEA-861 VIC代码寻找对应的时序结构体。它接收一个指向v4l2_dv_timings结构体的指针和一个CEA-861 VIC代码作为参数。
在查找过程中,该函数会根据给定的VIC代码在支持的时序列表中查找对应的时序结构体。如果找到了对应的时序,即满足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 standard->pixelclock和测量到的时序之间最大差距(以Hz为单位)。
bool match_reduced_fps 如果为true,则当V4L2_DV_FL_REDUCED_FPS不匹配时返回失败。
描述:
如果两个时序匹配,则返回true,否则返回false。
该函数用于判断给定的两个时序是否匹配。它接收测量到的时序数据和标准时序数据作为输入,以及一个最大允许的像素时钟差值和一个布尔值来指定是否需要匹配V4L2_DV_FL_REDUCED_FPS。
在判断过程中,该函数会比较两个时序的各个参数,包括像素时钟、线数、前端同步等,检查它们是否匹配。如果两个时序在给定的误差范围内匹配,并且如果需要匹配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,则提供详细的日志。
描述:
该函数用于记录dv_timings结构体的内容日志。它接收设备前缀、额外前缀、时序数据和一个布尔值参数。
在记录日志时,函数会按照指定的格式输出dv_timings结构体的各个字段的值。如果提供了设备前缀和额外前缀,每行日志都会以这些前缀开始。如果需要详细的日志,函数还会输出更多的信息。
该函数通常用于调试和日志记录目的,可以方便地查看和追踪dv_timings结构体的内容。
bool v4l2_detect_cvt(unsigned frame_height, unsigned hfreq, unsigned vsync, unsigned active_width, u32 polarities, bool interlaced, struct v4l2_dv_timings *fmt)
检测给定的时序是否符合CVT标准。
参数:
unsigned frame_height 帧的总高度(包括消隐)。
unsigned hfreq 水平频率(以Hz为单位)。
unsigned vsync 垂直同步的高度(以行数为单位)。
unsigned active_width 图像的有效宽度(不包括消隐)。只有在减少消隐的版本2中才需要此信息。在其他情况下,此参数对时序没有任何影响。
u32 polarities 水平和垂直极性(与struct v4l2_bt_timings的polarities字段相同)。
bool interlaced 如果为true,表示为隔行格式。
struct v4l2_dv_timings *fmt 存储检测到的CVT时序。
描述:
该函数尝试检测给定的值是否对应于一个有效的CVT格式。如果是,则返回true,并将找到的CVT时序填充到fmt中。
在检测过程中,函数会根据给定的参数比较其与CVT标准的符合程度。它会检查总高度、水平频率、垂直同步高度、极性等参数是否满足CVT标准要求。如果是CVT格式,并且满足要求,则返回true表示检测成功,并将找到的CVT时序填写到fmt中。
该函数通常用于判断给定的时序是否符合CVT标准,以便进行相应的处理和配置。
bool v4l2_detect_gtf(unsigned frame_height, unsigned hfreq, unsigned vsync, u32 polarities, bool interlaced, struct v4l2_fract aspect, struct v4l2_dv_timings *fmt)
检测给定的时序是否符合GTF标准。
参数:
unsigned frame_height 帧的总高度(包括消隐)。
unsigned hfreq 水平频率(以Hz为单位)。
unsigned vsync 垂直同步的高度(以行数为单位)。
u32 polarities 水平和垂直极性(与struct v4l2_bt_timings的polarities字段相同)。
bool interlaced 如果为true,表示为隔行格式。
struct v4l2_fract aspect 首选的宽高比。GTF没有通过推导图像宽度来确定宽高比的方法,因此必须显式传递它。通常使用本机屏幕的宽高比。如果未正确填写,则假定为 16:9。
struct v4l2_dv_timings *fmt 存储检测到的GTF时序。
描述:
该函数尝试检测给定的值是否对应于一个有效的GTF格式。如果是,则返回true,并将找到的GTF时序填充到fmt中。
在检测过程中,函数会根据给定的参数比较其与GTF标准的符合程度。它会检查总高度、水平频率、垂直同步高度、极性等参数是否满足GTF标准要求。同时,还会根据传入的首选宽高比确定图像的宽度。如果是GTF格式,并且满足要求,则返回true表示检测成功,并将找到的GTF时序填写到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增强型EDID标准,A版,修订2,第3.6.2节:“水平和垂直屏幕尺寸或宽高比”。
根据EDID规范,字节0x15和0x16包含了关于显示器水平和垂直的屏幕尺寸或宽高比的信息。该函数通过提取这两个字节的值,并进行相应的计算,来确定显示器的宽高比。
函数会根据字节0x15和0x16的值进行计算,并返回一个struct v4l2_fract类型的结果,其中包含了计算得到的宽高比。
该函数通常用于解析EDID数据并计算显示器的宽高比,以便在应用程序中进行相应的处理和配置。
struct v4l2_fract v4l2_dv_timings_aspect_ratio(const struct v4l2_dv_timings *t)
根据v4l2_dv_timings信息计算宽高比。
参数:
const struct v4l2_dv_timings *t 输入的时序数据。
描述:
该函数根据给定的v4l2_dv_timings结构体信息计算宽高比。
v4l2_dv_timings结构体包含了有关视频时序的详细信息,包括图像的宽度、高度、水平和垂直频率等。通过提取这些信息并进行相应的计算,该函数确定了给定视频时序的宽高比。
函数会读取v4l2_dv_timings结构体中的相关字段,并进行宽高比的计算。最后,它会返回一个struct v4l2_fract类型的结果,其中包含了计算得到的宽高比。
该函数通常用于从给定的视频时序数据中提取和计算宽高比,以便在应用程序中进行相应的处理和配置。
bool can_reduce_fps(struct v4l2_bt_timings *bt)
检查是否满足减少帧率的条件。
参数:
struct v4l2_bt_timings *bt v4l2时序结构体。
描述:
对于不同的时序,如果满足以下条件,则允许减少帧率:
• 对于CVT时序:如果启用了减少后空白时间v2(vsync == 8)。
• 对于CEA861时序:如果V4L2_DV_FL_CAN_REDUCE_FPS标志为真。
该函数用于检查给定的v4l2_bt_timings结构体是否满足减少帧率的条件。它会根据时序结构体中的相关字段进行条件检查,以确定是否可以减少帧率。
如果满足减少帧率的条件,函数将返回true,否则返回false。
该函数常用于在应用程序中根据给定的时序数据判断是否可以减少帧率,以便进行相应的处理和配置。
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;
};

成员:
colorspace enum v4l2_colorspace,颜色空间
ycbcr_enc enum v4l2_ycbcr_encoding,Y'CbCr编码
quantization enum v4l2_quantization,颜色空间量化
xfer_func enum v4l2_xfer_func,颜色空间传输函数
该结构体用于描述HDMI视频信号的色彩信息。它包含了四个成员,分别表示颜色空间、Y'CbCr编码、颜色空间量化和颜色空间传输函数。
颜色空间表示像素值如何表示颜色的方式,例如RGB或YUV。
Y'CbCr编码表示亮度(Y)和色差(Cb和Cr)信号的编码方式。
颜色空间量化表示将连续的色彩范围映射到离散的数值范围的方式。
颜色空间传输函数表示电子设备之间色彩值的映射关系,例如gamma校正。
通过使用该结构体,可以获取和设置HDMI视频信号的色彩相关信息,以便在应用程序中进行相应的处理和配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值