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¶
Typedef: 時序檢查回撥
語法
bool v4l2_check_dv_timings_fnc (const struct v4l2_dv_timings *t, void *handle)
引數
const struct v4l2_dv_timings *tv4l2_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 *tv4l2_dv_timings 結構。
const struct v4l2_dv_timings_cap *capv4l2_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 *tv4l2_enum_dv_timings 結構。
const struct v4l2_dv_timings_cap *capv4l2_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 *tv4l2_enum_dv_timings 結構。
const struct v4l2_dv_timings_cap *capv4l2_dv_timings_cap 功能。
unsigned pclock_deltat->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 vicCEA-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_deltastandard->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 *capv4l2_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 *capv4l2_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_landscapeEDID 中的位元組 0x15。
u8 vert_portraitEDID 中的位元組 0x16。
描述
從 EDID 確定寬高比。請參閱 VESA 增強型 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 *btv4l2 時序結構
描述
對於不同的時序,如果滿足以下條件,則允許降低 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;
};
成員
colorspaceenum v4l2_colorspace,色彩空間ycbcr_encenum v4l2_ycbcr_encoding, Y’CbCr 編碼quantizationenum v4l2_quantization, 色彩空間量化xfer_funcenum v4l2_xfer_func, 色彩空間傳輸函式