2.29. V4L2 JPEG 頭部相關函式和資料結構¶
-
struct v4l2_jpeg_reference¶
對 JPEG 緩衝區的引用
定義:
struct v4l2_jpeg_reference {
u8 *start;
size_t length;
};
成員
start指向引用段或表的起始位置的指標
length引用段或表的大小
描述
引用標記段時,start 指向緊隨標記程式碼之後的位置,length 是段引數的大小,不包括標記程式碼。
-
struct v4l2_jpeg_frame_component_spec¶
幀元件規範
定義:
struct v4l2_jpeg_frame_component_spec {
u8 component_identifier;
u8 horizontal_sampling_factor;
u8 vertical_sampling_factor;
u8 quantization_table_selector;
};
成員
component_identifierC[i]
horizontal_sampling_factorH[i]
vertical_sampling_factorV[i]
quantization_table_selector量化表目標選擇器 Tq[i]
-
struct v4l2_jpeg_frame_header¶
JPEG 幀頭部
定義:
struct v4l2_jpeg_frame_header {
u16 height;
u16 width;
u8 precision;
u8 num_components;
struct v4l2_jpeg_frame_component_spec component[V4L2_JPEG_MAX_COMPONENTS];
enum v4l2_jpeg_chroma_subsampling subsampling;
};
成員
heightY
widthX
precisionP
num_componentsNf
component元件規範,參見 v4l2_jpeg_frame_component_spec
subsampling從元件規範解碼的子取樣
-
struct v4l2_jpeg_scan_component_spec¶
掃描元件規範
定義:
struct v4l2_jpeg_scan_component_spec {
u8 component_selector;
u8 dc_entropy_coding_table_selector;
u8 ac_entropy_coding_table_selector;
};
成員
component_selectorCs[j]
dc_entropy_coding_table_selectorTd[j]
ac_entropy_coding_table_selectorTa[j]
-
struct v4l2_jpeg_scan_header¶
JPEG 掃描頭部
定義:
struct v4l2_jpeg_scan_header {
u8 num_components;
struct v4l2_jpeg_scan_component_spec component[V4L2_JPEG_MAX_COMPONENTS];
};
成員
num_componentsNs
component元件規範,參見 v4l2_jpeg_scan_component_spec
-
enum v4l2_jpeg_app14_tf¶
APP14 轉換標誌 根據 Rec. ITU-T T.872 (06/2012) 6.5.3,APP14 段用於顏色編碼,它包含一個轉換標誌,其值可能為 0、1 和 2,解釋如下
常量
V4L2_JPEG_APP14_TF_CMYK_RGBCMYK 用於使用四個元件編碼的影像,RGB 用於使用三個元件編碼的影像
V4L2_JPEG_APP14_TF_YCBCR使用 YCbCr 編碼的包含三個元件的影像
V4L2_JPEG_APP14_TF_YCCK使用 YCCK 編碼的包含四個元件的影像
V4L2_JPEG_APP14_TF_UNKNOWN指示 app14 不存在
-
struct v4l2_jpeg_header¶
已解析的 JPEG 頭部
定義:
struct v4l2_jpeg_header {
struct v4l2_jpeg_reference sof;
struct v4l2_jpeg_reference sos;
unsigned int num_dht;
struct v4l2_jpeg_reference dht[V4L2_JPEG_MAX_TABLES];
unsigned int num_dqt;
struct v4l2_jpeg_reference dqt[V4L2_JPEG_MAX_TABLES];
struct v4l2_jpeg_frame_header frame;
struct v4l2_jpeg_scan_header *scan;
struct v4l2_jpeg_reference *quantization_tables;
struct v4l2_jpeg_reference *huffman_tables;
u16 restart_interval;
size_t ecs_offset;
enum v4l2_jpeg_app14_tf app14_tf;
};
成員
sof指向幀頭部和大小的指標
sos指向掃描頭部和大小的指標
num_dhtdht 中的條目數
dht指向霍夫曼表和大小的指標
num_dqtdqt 中的條目數
dqt指向量化表和大小的指標
frame已解析的幀頭部
scan指向已解析的掃描頭部的指標,可選
quantization_tables對四個量化表的引用,可選
huffman_tables對 DC0、DC1、AC0、AC1 順序的四個霍夫曼表的引用,可選
restart_interval每個重啟間隔的 MCU 數量,Ri
ecs_offset到熵編碼段的位元組緩衝區偏移量
app14_tf來自 app14 資料的轉換標誌
描述
當此結構傳遞給 v4l2_jpeg_parse_header 時,可選的 scan、quantization_tables 和 huffman_tables 指標必須初始化為 NULL 或指向有效的記憶體。
-
int v4l2_jpeg_parse_header(void *buf, size_t len, struct v4l2_jpeg_header *out)¶
定位標記段並選擇性地解析頭部
引數
void *bufJPEG 緩衝區的地址,應以 SOI 標記開頭
size_t lenJPEG 緩衝區的長度
struct v4l2_jpeg_header *out返回標記段位置並選擇性地解析頭部
描述
out->scan_header 指標必須初始化為 NULL 或指向有效的 v4l2_jpeg_scan_header 結構。 out->huffman_tables 和 out->quantization_tables 指標必須初始化為 NULL 或指向每個包含 4 個 v4l2_jpeg_reference 結構的有效陣列。
如果解析失敗,則返回 0 或負錯誤。
-
int v4l2_jpeg_parse_frame_header(void *buf, size_t len, struct v4l2_jpeg_frame_header *frame_header)¶
解析幀頭部
引數
void *buf幀頭部的地址,在 SOF0 標記之後
size_t len幀頭部的長度
struct v4l2_jpeg_frame_header *frame_header返回已解析的幀頭部
描述
如果解析失敗,則返回 0 或負錯誤。
-
int v4l2_jpeg_parse_scan_header(void *buf, size_t len, struct v4l2_jpeg_scan_header *scan_header)¶
解析掃描頭部
引數
void *buf掃描頭部的地址,在 SOS 標記之後
size_t len掃描頭部的長度
struct v4l2_jpeg_scan_header *scan_header返回已解析的掃描頭部
描述
如果解析失敗,則返回 0 或負錯誤。
-
int v4l2_jpeg_parse_quantization_tables(void *buf, size_t len, u8 precision, struct v4l2_jpeg_reference *q_tables)¶
解析量化表段
引數
void *buf量化表段的地址,在 DQT 標記之後
size_t len量化表段的長度
u8 precision每個元件的取樣精度 (P),以位為單位
struct v4l2_jpeg_reference *q_tables返回緩衝區中對四個可能的量化表目標的四個引用
描述
如果解析失敗,則返回 0 或負錯誤。
-
int v4l2_jpeg_parse_huffman_tables(void *buf, size_t len, struct v4l2_jpeg_reference *huffman_tables)¶
解析霍夫曼表段
引數
void *buf霍夫曼表段的地址,在 DHT 標記之後
size_t len霍夫曼表段的長度
struct v4l2_jpeg_reference *huffman_tables返回緩衝區中對四個可能的霍夫曼表目標的四個引用,順序為 DC0、DC1、AC0、AC1
描述
如果解析失敗,則返回 0 或負錯誤。