![]() |
![]() |
![]() |
GStreamer Bad Plugins 1.0 Library Reference Manual | ![]() |
---|---|---|---|---|
Top | Description |
#include <gst/codecparsers/gstjpegparser.h> #define GST_JPEG_MAX_FRAME_COMPONENTS #define GST_JPEG_MAX_SCAN_COMPONENTS #define GST_JPEG_MAX_QUANT_ELEMENTS #define GST_JPEG_MARKER_SOF_MIN #define GST_JPEG_MARKER_SOF_MAX #define GST_JPEG_MARKER_APP_MIN #define GST_JPEG_MARKER_APP_MAX #define GST_JPEG_MARKER_RST_MIN #define GST_JPEG_MARKER_RST_MAX enum GstJpegEntropyCodingMode; enum GstJpegProfile; struct GstJpegSegment; gboolean gst_jpeg_parse (GstJpegSegment *seg
,const guint8 *data
,gsize size
,guint offset
); struct GstJpegFrameHdr; struct GstJpegFrameComponent; gboolean gst_jpeg_segment_parse_frame_header (const GstJpegSegment *segment
,GstJpegFrameHdr *frame_hdr
); struct GstJpegScanHdr; struct GstJpegScanComponent; gboolean gst_jpeg_segment_parse_scan_header (const GstJpegSegment *segment
,GstJpegScanHdr *scan_hdr
); struct GstJpegHuffmanTables; struct GstJpegHuffmanTable; gboolean gst_jpeg_segment_parse_huffman_table (const GstJpegSegment *segment
,GstJpegHuffmanTables *huff_tables
); struct GstJpegQuantTable; gboolean gst_jpeg_segment_parse_quantization_table (const GstJpegSegment *segment
,GstJpegQuantTables *quant_tables
); gboolean gst_jpeg_segment_parse_restart_interval (const GstJpegSegment *segment
,guint *interval
); void gst_jpeg_get_default_quantization_tables (GstJpegQuantTables *quant_tables
); void gst_jpeg_get_default_huffman_tables (GstJpegHuffmanTables *huff_tables
);
#define GST_JPEG_MAX_FRAME_COMPONENTS 256
Maximum number of image components in a frame (Nf).
Since 1.6
#define GST_JPEG_MAX_SCAN_COMPONENTS 4
Maximum number of image components in a scan (Ns).
Since 1.6
#define GST_JPEG_MAX_QUANT_ELEMENTS 64
Number of elements in the quantization table.
Since 1.6
typedef enum { GST_JPEG_ENTROPY_CODING_HUFFMAN = 0x00, GST_JPEG_ENTROPY_CODING_ARITHMETIC = 0x08 } GstJpegEntropyCodingMode;
JPEG entropy coding mode.
Since 1.6
typedef enum { GST_JPEG_PROFILE_BASELINE = 0x00, GST_JPEG_PROFILE_EXTENDED = 0x01, GST_JPEG_PROFILE_PROGRESSIVE = 0x02, GST_JPEG_PROFILE_LOSSLESS = 0x03, } GstJpegProfile;
JPEG encoding processes.
Baseline DCT | |
Extended sequential DCT | |
Progressive DCT | |
Lossless (sequential) |
Since 1.6
struct GstJpegSegment { GstJpegMarker marker; const guint8 *data; guint offset; gssize size; };
A structure that contains the type of a segment, its offset and its size.
The type of the segment that starts at offset
|
|
the data containing the jpeg segment starting at offset
|
|
The offset to the segment start in bytes. This is the exact start of the segment, no marker code included | |
The size of the segment in bytes, or -1 if the end was not found. It is the exact size of the segment, without the sync byte and marker code but including any length bytes. |
Since 1.6
gboolean gst_jpeg_parse (GstJpegSegment *seg
,const guint8 *data
,gsize size
,guint offset
);
Parses the JPEG bitstream contained in data
, and returns the
detected segment as a GstJpegSegment.
Note that a valid segment may be returned with a length that exceeds the available data. It is up to the caller to make sure there's enough data available when parsing the segment.
|
pointer to a GstJpegSegment structure to fill in. [out] |
|
The data to parse |
|
The size of data
|
|
The offset from which to start parsing |
Returns : |
TRUE if a packet start code was found. |
Since 1.6
struct GstJpegFrameHdr { guint8 sample_precision; /* 2 .. 16 */ guint16 width; /* 1 .. 65535 */ guint16 height; /* 0 .. 65535 */ guint8 num_components; /* 1 .. 255 */ GstJpegFrameComponent components[GST_JPEG_MAX_FRAME_COMPONENTS]; };
Frame header.
Sample precision (P) | |
Number of samples per line (X) | |
Number of lines (Y) | |
Number of image components in frame (Nf) | |
GstJpegFrameComponent |
Image components |
Since 1.6
struct GstJpegFrameComponent { guint8 identifier; /* 0 .. 255 */ guint8 horizontal_factor; /* 1 .. 4 */ guint8 vertical_factor; /* 1 .. 4 */ guint8 quant_table_selector; /* 0 .. 3 */ };
Component-specification parameters.
Component identifier (Ci) | |
Horizontal sampling factor (Hi) | |
Vertical sampling factor (Vi) | |
Quantization table destination selector (Tqi) |
Since 1.6
gboolean gst_jpeg_segment_parse_frame_header (const GstJpegSegment *segment
,GstJpegFrameHdr *frame_hdr
);
Parses the frame_hdr
JPEG frame header structure members from segment
.
The caller must make sure there is enough data for the whole segment available.
|
the JPEG segment |
|
The GstJpegFrameHdr structure to fill in. [out] |
Returns : |
TRUE if the frame header was correctly parsed. |
Since 1.6
struct GstJpegScanHdr { guint8 num_components; /* 1 .. 4 */ GstJpegScanComponent components[GST_JPEG_MAX_SCAN_COMPONENTS]; };
Scan header.
Number of image components in scan (Ns) | |
GstJpegScanComponent |
Image components |
Since 1.6
struct GstJpegScanComponent { guint8 component_selector; /* 0 .. 255 */ guint8 dc_selector; /* 0 .. 3 */ guint8 ac_selector; /* 0 .. 3 */ };
Component-specification parameters.
Scan component selector (Csj) | |
DC entropy coding table destination selector (Tdj) | |
AC entropy coding table destination selector (Taj) |
Since 1.6
gboolean gst_jpeg_segment_parse_scan_header (const GstJpegSegment *segment
,GstJpegScanHdr *scan_hdr
);
Parses the scan_hdr
JPEG scan header structure members from segment
.
The caller must make sure there is enough data for the whole segment available.
|
the JPEG segment |
|
The GstJpegScanHdr structure to fill in. [out] |
Returns : |
TRUE if the scan header was correctly parsed |
Since 1.6
struct GstJpegHuffmanTables { GstJpegHuffmanTable dc_tables[GST_JPEG_MAX_SCAN_COMPONENTS]; GstJpegHuffmanTable ac_tables[GST_JPEG_MAX_SCAN_COMPONENTS]; };
Helper data structure that holds all AC/DC Huffman tables used to decode an image.
GstJpegHuffmanTable |
DC Huffman tables |
GstJpegHuffmanTable |
AC Huffman tables |
Since 1.6
struct GstJpegHuffmanTable { guint8 huf_bits[16]; guint8 huf_values[256]; gboolean valid; };
Huffman table.
Number of Huffman codes of length i + 1 (Li) | |
If the Huffman table is valid, which means it has already been parsed |
Since 1.6
gboolean gst_jpeg_segment_parse_huffman_table (const GstJpegSegment *segment
,GstJpegHuffmanTables *huff_tables
);
Parses the JPEG Huffman table structure members from segment
.
The caller must make sure there is enough data for the whole segment available.
Note: huf_tables
represents the complete set of possible Huffman
tables. However, the parser will only write to the Huffman table
specified by the table destination identifier (Th). While doing so,
the valid
flag of the specified Huffman table will also be set to
TRUE
;
|
the JPEG segment |
|
The GstJpegHuffmanTables structure to fill in. [out] |
Returns : |
TRUE if the Huffman table was correctly parsed. |
Since 1.6
struct GstJpegQuantTable { guint8 quant_precision; guint16 quant_table[GST_JPEG_MAX_QUANT_ELEMENTS]; gboolean valid; };
Quantization table.
Quantization table element precision (Pq) | |
Quantization table elements (Qk) | |
If the quantization table is valid, which means it has already been parsed |
Since 1.6
gboolean gst_jpeg_segment_parse_quantization_table (const GstJpegSegment *segment
,GstJpegQuantTables *quant_tables
);
Parses the JPEG quantization table structure members from segment
.
The caller must make sure there is enough data for the whole segment available.
Note: quant_tables
represents the complete set of possible
quantization tables. However, the parser will only write to the
quantization table specified by the table destination identifier
(Tq). While doing so, the valid
flag of the specified quantization
table will also be set to TRUE
.
|
the JPEG segment |
|
The GstJpegQuantTables structure to fill in. [out] |
Returns : |
TRUE if the quantization table was correctly parsed. |
Since 1.6
gboolean gst_jpeg_segment_parse_restart_interval (const GstJpegSegment *segment
,guint *interval
);
The caller must make sure there is enough data for the whole segment available.
|
the JPEG segment |
|
The parsed restart interval value. [out] |
Returns : |
TRUE if the restart interval value was correctly parsed. |
Since 1.6
void gst_jpeg_get_default_quantization_tables
(GstJpegQuantTables *quant_tables
);
void gst_jpeg_get_default_huffman_tables (GstJpegHuffmanTables *huff_tables
);
Fills in huf_tables
with the default AC/DC Huffman tables, as
specified by the JPEG standard.
|
The default DC/AC Huffman tables to fill in. [out] |
Since 1.6