GstVp9Parser
For more details about the structures, you can refer to the specifications:
Functions
gst_vp9_parser_free
void gst_vp9_parser_free (GstVp9Parser * parser)
Frees parser.
Parameters:
parser
–
the GstVp9Parser to free
Since : 1.8
gst_vp9_parser_new
GstVp9Parser * gst_vp9_parser_new ()
Creates a new GstVp9Parser. It should be freed with gst_vp9_parser_free after use.
a new GstVp9Parser
Since : 1.8
gst_vp9_parser_parse_frame_header
GstVp9ParserResult gst_vp9_parser_parse_frame_header (GstVp9Parser * parser, GstVp9FrameHdr * frame_hdr, guint8* data, gsize size)
Parses the VP9 bitstream contained in data, and fills in frame_hdr with the information. The size argument represent the whole frame size.
Parameters:
parser
–
The GstVp9Parser
frame_hdr
–
The GstVp9FrameHdr to fill
data
–
The data to parse
size
–
The size of the data to parse
Since : 1.8
gst_vp9_parser_parse_superframe_info
GstVp9ParserResult gst_vp9_parser_parse_superframe_info (GstVp9Parser * parser, GstVp9SuperframeInfo * superframe_info, guint8* data, gsize size)
Parses the VP9 bitstream contained in data, and fills in superframe_info with the information. The size argument represent the whole superframe size. If data is not superframe but normal frame, the parser returns GST_VP9_PARSER_OK, frame_size[0] is set to size and frames_in_superframe is set to 1. Also this method does not validate vp9frame header and verifying the frame header is caller's responsibility.
Parameters:
parser
–
The GstVp9Parser
superframe_info
–
The GstVp9SuperframeInfo to fill
data
–
The data to parse
size
–
The size of the data to parse
Since : 1.18
Structures
GstVp9FrameHdr
struct _GstVp9FrameHdr { guint profile; guint8 show_existing_frame; gint frame_to_show; guint frame_type; guint8 show_frame; guint8 error_resilient_mode; guint32 width; guint32 height; guint8 display_size_enabled; guint32 display_width; guint32 display_height; guint frame_context_idx; guint8 intra_only; gint reset_frame_context; gint refresh_frame_flags; gint ref_frame_indices[GST_VP9_REFS_PER_FRAME]; gint ref_frame_sign_bias[GST_VP9_REFS_PER_FRAME]; gint allow_high_precision_mv; guint8 mcomp_filter_type; gint refresh_frame_context; /* frame_parallel_decoding_mode in vp9 code*/ gint frame_parallel_decoding_mode; GstVp9LoopFilter loopfilter; GstVp9QuantIndices quant_indices; GstVp9SegmentationInfo segmentation; gint log2_tile_rows; gint log2_tile_columns; guint32 first_partition_size; /* calculated values */ guint lossless_flag; guint32 frame_header_length_in_bytes; };
Frame header
Fields
profile
(guint)
–
encoded profile
show_existing_frame
(guint8)
–
display already decoded frame instead of doing the decoding
frame_to_show
(gint)
–
which frame to show if show_existing_frame is true
frame_type
(guint)
–
frame type
show_frame
(guint8)
–
indicate whether it is a displayable frame or not
error_resilient_mode
(guint8)
–
error resilent mode
width
(guint32)
–
frame width
height
(guint32)
–
frame height
display_size_enabled
(guint8)
–
display size enabled (cropping)
display_width
(guint32)
–
display width
display_height
(guint32)
–
display height
frame_context_idx
(guint)
–
frame context index
intra_only
(guint8)
–
intra only frame
reset_frame_context
(gint)
–
reset frame context
refresh_frame_flags
(gint)
–
refresh reference frame flags
ref_frame_indices
(gint[3] )
–
reference frame index
ref_frame_sign_bias
(gint[3] )
–
sign bias for selecting altref,last and golden frames
allow_high_precision_mv
(gint)
–
allow hight precision motion vector
mcomp_filter_type
(guint8)
–
interpolation filter type
refresh_frame_context
(gint)
–
refresh frame context indicator
frame_parallel_decoding_mode
(gint)
–
enable or disable parallel decoding support.
loopfilter
(GstVp9LoopFilter)
–
loopfilter values
quant_indices
(GstVp9QuantIndices)
–
quantization indices
segmentation
(GstVp9SegmentationInfo)
–
segmentation info
log2_tile_rows
(gint)
–
tile row indicator
log2_tile_columns
(gint)
–
tile column indicator
first_partition_size
(guint32)
–
first partition size (after the uncompressed header)
lossless_flag
(guint)
–
lossless mode decode
frame_header_length_in_bytes
(guint32)
–
length of uncompressed header
Since : 1.8
GstVp9LoopFilter
struct _GstVp9LoopFilter { gint filter_level; gint sharpness_level; guint8 mode_ref_delta_enabled; guint8 mode_ref_delta_update; guint8 update_ref_deltas[GST_VP9_MAX_REF_LF_DELTAS]; gint8 ref_deltas[GST_VP9_MAX_REF_LF_DELTAS]; guint8 update_mode_deltas[GST_VP9_MAX_MODE_LF_DELTAS]; gint8 mode_deltas[GST_VP9_MAX_MODE_LF_DELTAS]; };
Loop filter values
Fields
filter_level
(gint)
–
indicates loop filter level for the current frame
sharpness_level
(gint)
–
indicates sharpness level for thecurrent frame
mode_ref_delta_enabled
(guint8)
–
indicate if filter adjust is on
mode_ref_delta_update
(guint8)
–
indicates if the delta values used in an adjustment are updated in the current frame
update_ref_deltas
(guint8[4] )
–
indicate which ref deltas are updated
ref_deltas
(gint8[4] )
–
Loop filter strength adjustments based on frame type (intra, inter)
update_mode_deltas
(guint8[2] )
–
indicate with mode deltas are updated
mode_deltas
(gint8[2] )
–
Loop filter strength adjustments based on mode (zero, new mv)
Since : 1.8
GstVp9Parser
struct _GstVp9Parser { #ifndef GST_REMOVE_DEPRECATED void *priv; /* unused, kept around for ABI compatibility */ #endif gint subsampling_x; gint subsampling_y; guint bit_depth; guint color_space; guint color_range; guint8 mb_segment_tree_probs[GST_VP9_SEG_TREE_PROBS]; guint8 segment_pred_probs[GST_VP9_PREDICTION_PROBS]; GstVp9Segmentation segmentation[GST_VP9_MAX_SEGMENTS]; };
Parser context that needs to be live across frames
Fields
priv
(void *)
–
GstVp9ParserPrivate struct to keep track of state variables
subsampling_x
(gint)
–
horizontal subsampling
subsampling_y
(gint)
–
vertical subsampling
bit_depth
(guint)
–
bit depth of the stream
color_space
(guint)
–
color space standard
color_range
(guint)
–
color range standard
mb_segment_tree_probs
(guint8[7] )
–
decoding tree probabilities
segment_pred_probs
(guint8[3] )
–
segment prediction probabiilties
segmentation
(GstVp9Segmentation[8] )
–
Segmentation info
Since : 1.8
GstVp9QuantIndices
struct _GstVp9QuantIndices { guint8 y_ac_qi; gint8 y_dc_delta; gint8 uv_dc_delta; gint8 uv_ac_delta; };
Dequantization indices.
Fields
y_ac_qi
(guint8)
–
indicates the dequantization table index used for the luma AC coefficients
y_dc_delta
(gint8)
–
indicates the delta value that is added to the baseline index to obtain the luma DC coefficient dequantization index
uv_dc_delta
(gint8)
–
indicates the delta value that is added to the baseline index to obtain the chroma DC coefficient dequantization index
uv_ac_delta
(gint8)
–
indicates the delta value that is added to the baseline index to obtain the chroma AC coefficient dequantization index
Since : 1.8
GstVp9Segmentation
struct _GstVp9Segmentation { guint8 filter_level[GST_VP9_MAX_REF_LF_DELTAS][GST_VP9_MAX_MODE_LF_DELTAS]; gint16 luma_ac_quant_scale; gint16 luma_dc_quant_scale; gint16 chroma_ac_quant_scale; gint16 chroma_dc_quant_scale; guint8 reference_frame_enabled; gint reference_frame; guint8 reference_skip; };
Segmentation info kept across multiple frames
Fields
filter_level
(guint8[4][2] )
–
loop filter level
luma_ac_quant_scale
(gint16)
–
AC quant scale for luma(Y) component
luma_dc_quant_scale
(gint16)
–
DC quant scale for luma(Y) component chroma_ac_quant_scale AC quant scale for chroma(U/V) component
chroma_ac_quant_scale
(gint16)
–
chroma_dc_quant_scale
(gint16)
–
DC quant scale for chroma (U/V) component
reference_frame_enabled
(guint8)
–
alternate reference frame enablement
reference_frame
(gint)
–
alternate reference frame
reference_skip
(guint8)
–
a block skip mode that implies both the use of a (0,0) motion vector and that no residual will be coded
Since : 1.8
GstVp9SegmentationInfo
struct _GstVp9SegmentationInfo { /* enable in setup_segmentation*/ guint8 enabled; /* update_map in setup_segmentation*/ guint8 update_map; /* tree_probs exist or not*/ guint8 update_tree_probs[GST_VP9_SEG_TREE_PROBS]; guint8 tree_probs[GST_VP9_SEG_TREE_PROBS]; /* pred_probs exist or not*/ guint8 update_pred_probs[GST_VP9_PREDICTION_PROBS]; guint8 pred_probs[GST_VP9_PREDICTION_PROBS]; /* abs_delta in setup_segmentation */ guint8 abs_delta; /* temporal_update in setup_segmentation */ guint8 temporal_update; /* update_data in setup_segmentation*/ guint8 update_data; GstVp9SegmentationInfoData data[GST_VP9_MAX_SEGMENTS]; };
Segmentation info
Fields
enabled
(guint8)
–
enables the segmentation feature for the current frame
update_map
(guint8)
–
determines if segmentation is updated in the current frame
update_tree_probs
(guint8[7] )
–
determines if tree probabilities updated or not
tree_probs
(guint8[7] )
–
segment tree probabilities
update_pred_probs
(guint8[3] )
–
determines if prediction probabilities updated or not
pred_probs
(guint8[3] )
–
prediction probabilities
abs_delta
(guint8)
–
interpretation of segment data values
temporal_update
(guint8)
–
type of map update
update_data
(guint8)
–
indicates if the segment feature data is updated in the current frame
data
(GstVp9SegmentationInfoData[8] )
–
segment feature data
Since : 1.8
GstVp9SegmentationInfoData
struct _GstVp9SegmentationInfoData { /* SEG_LVL_ALT_Q */ guint8 alternate_quantizer_enabled; gint16 alternate_quantizer; /* SEG_LVL_ALT_LF */ guint8 alternate_loop_filter_enabled; gint8 alternate_loop_filter; /* SEG_LVL_REF_FRAME */ guint8 reference_frame_enabled; gint reference_frame; guint8 reference_skip; };
Segmentation info for each segment
Fields
alternate_quantizer_enabled
(guint8)
–
indicate alternate quantizer enabled at segment level
alternate_quantizer
(gint16)
–
alternate quantizer value
alternate_loop_filter_enabled
(guint8)
–
indicate alternate loop filter enabled at segment level
alternate_loop_filter
(gint8)
–
alternate loop filter
reference_frame_enabled
(guint8)
–
indicate alternate reference frame at segment level
reference_frame
(gint)
–
alternate reference frame
reference_skip
(guint8)
–
a block skip mode that implies both the use of a (0,0) motion vector and that no residual will be coded.
Since : 1.8
GstVp9SuperframeInfo
struct _GstVp9SuperframeInfo { guint32 bytes_per_framesize; guint32 frames_in_superframe; guint32 frame_sizes[GST_VP9_MAX_FRAMES_IN_SUPERFRAME]; guint32 superframe_index_size; };
Superframe info
Fields
bytes_per_framesize
(guint32)
–
indicates the number of bytes needed to code each frame size
frames_in_superframe
(guint32)
–
indicates the number of frames within this superframe
frame_sizes
(guint32[8] )
–
specifies the size in bytes of frame number i (zero indexed) within this superframe
superframe_index_size
(guint32)
–
indicates the total size of the superframe_index
Since : 1.18
Aliases
GstVp9ColorRange
typedef enum GstVp9ColorRange GstVp9ColorRange
Possible color value ranges
Since : 1.8
GstVp9ColorSpace
typedef enum GstVp9ColorSpace GstVp9ColorSpace
Supported ColorSpace standards
Since : 1.8
GstVp9InterpolationFilter
typedef enum GstVp9InterpolationFilter GstVp9InterpolationFilter
Interpolation Filters Types
Since : 1.8
GstVp9RefFrameType
typedef enum GstVp9RefFrameType GstVp9RefFrameType
Reference Frame types
Since : 1.8
The results of the search are