2.29. V4L2 JPEG header related functions and data structures¶
-
struct v4l2_jpeg_reference¶
reference into the JPEG buffer
Definition:
struct v4l2_jpeg_reference {
u8 *start;
size_t length;
};
Members
start
pointer to the start of the referenced segment or table
length
size of the referenced segment or table
Description
Wnen referencing marker segments, start points right after the marker code, and length is the size of the segment parameters, excluding the marker code.
-
struct v4l2_jpeg_frame_component_spec¶
frame component-specification
Definition:
struct v4l2_jpeg_frame_component_spec {
u8 component_identifier;
u8 horizontal_sampling_factor;
u8 vertical_sampling_factor;
u8 quantization_table_selector;
};
Members
component_identifier
C[i]
horizontal_sampling_factor
H[i]
vertical_sampling_factor
V[i]
quantization_table_selector
quantization table destination selector Tq[i]
-
struct v4l2_jpeg_frame_header¶
JPEG frame header
Definition:
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;
};
Members
height
Y
width
X
precision
P
num_components
Nf
component
component-specification, see v4l2_jpeg_frame_component_spec
subsampling
decoded subsampling from component-specification
-
struct v4l2_jpeg_scan_component_spec¶
scan component-specification
Definition:
struct v4l2_jpeg_scan_component_spec {
u8 component_selector;
u8 dc_entropy_coding_table_selector;
u8 ac_entropy_coding_table_selector;
};
Members
component_selector
Cs[j]
dc_entropy_coding_table_selector
Td[j]
ac_entropy_coding_table_selector
Ta[j]
-
struct v4l2_jpeg_scan_header¶
JPEG scan header
Definition:
struct v4l2_jpeg_scan_header {
u8 num_components;
struct v4l2_jpeg_scan_component_spec component[V4L2_JPEG_MAX_COMPONENTS];
};
Members
num_components
Ns
component
component-specification, see v4l2_jpeg_scan_component_spec
-
enum v4l2_jpeg_app14_tf¶
APP14 transform flag According to Rec. ITU-T T.872 (06/2012) 6.5.3 APP14 segment is for color encoding, it contains a transform flag, which may have values of 0, 1 and 2 and are interpreted as follows:
Constants
V4L2_JPEG_APP14_TF_CMYK_RGB
CMYK for images encoded with four components RGB for images encoded with three components
V4L2_JPEG_APP14_TF_YCBCR
an image encoded with three components using YCbCr
V4L2_JPEG_APP14_TF_YCCK
an image encoded with four components using YCCK
V4L2_JPEG_APP14_TF_UNKNOWN
indicate app14 is not present
-
struct v4l2_jpeg_header¶
parsed JPEG header
Definition:
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;
};
Members
sof
pointer to frame header and size
sos
pointer to scan header and size
num_dht
number of entries in dht
dht
pointers to huffman tables and sizes
num_dqt
number of entries in dqt
dqt
pointers to quantization tables and sizes
frame
parsed frame header
scan
pointer to parsed scan header, optional
quantization_tables
references to four quantization tables, optional
huffman_tables
references to four Huffman tables in DC0, DC1, AC0, AC1 order, optional
restart_interval
number of MCU per restart interval, Ri
ecs_offset
buffer offset in bytes to the entropy coded segment
app14_tf
transform flag from app14 data
Description
When this structure is passed to v4l2_jpeg_parse_header, the optional scan, quantization_tables, and huffman_tables pointers must be initialized to NULL or point at valid memory.
-
int v4l2_jpeg_parse_header(void *buf, size_t len, struct v4l2_jpeg_header *out)¶
locate marker segments and optionally parse headers
Parameters
void *buf
address of the JPEG buffer, should start with a SOI marker
size_t len
length of the JPEG buffer
struct v4l2_jpeg_header *out
returns marker segment positions and optionally parsed headers
Description
The out->scan_header pointer must be initialized to NULL or point to a valid v4l2_jpeg_scan_header structure. The out->huffman_tables and out->quantization_tables pointers must be initialized to NULL or point to a valid array of 4 v4l2_jpeg_reference structures each.
Returns 0 or negative error if parsing failed.
-
int v4l2_jpeg_parse_frame_header(void *buf, size_t len, struct v4l2_jpeg_frame_header *frame_header)¶
parse frame header
Parameters
void *buf
address of the frame header, after the SOF0 marker
size_t len
length of the frame header
struct v4l2_jpeg_frame_header *frame_header
returns the parsed frame header
Description
Returns 0 or negative error if parsing failed.
-
int v4l2_jpeg_parse_scan_header(void *buf, size_t len, struct v4l2_jpeg_scan_header *scan_header)¶
parse scan header
Parameters
void *buf
address of the scan header, after the SOS marker
size_t len
length of the scan header
struct v4l2_jpeg_scan_header *scan_header
returns the parsed scan header
Description
Returns 0 or negative error if parsing failed.
-
int v4l2_jpeg_parse_quantization_tables(void *buf, size_t len, u8 precision, struct v4l2_jpeg_reference *q_tables)¶
parse quantization tables segment
Parameters
void *buf
address of the quantization table segment, after the DQT marker
size_t len
length of the quantization table segment
u8 precision
sample precision (P) in bits per component
struct v4l2_jpeg_reference *q_tables
returns four references into the buffer for the four possible quantization table destinations
Description
Returns 0 or negative error if parsing failed.
-
int v4l2_jpeg_parse_huffman_tables(void *buf, size_t len, struct v4l2_jpeg_reference *huffman_tables)¶
parse huffman tables segment
Parameters
void *buf
address of the Huffman table segment, after the DHT marker
size_t len
length of the Huffman table segment
struct v4l2_jpeg_reference *huffman_tables
returns four references into the buffer for the four possible Huffman table destinations, in the order DC0, DC1, AC0, AC1
Description
Returns 0 or negative error if parsing failed.