mpegvideoparser

mpegvideoparser — Convenience library for mpeg1 and 2 video bitstream parsing.

Functions

Types and Values

Object Hierarchy


Includes

#include <gst/codecparsers/gstmpegvideoparser.h>

Description

Provides useful functions for mpeg videos bitstream parsing.

Functions

gst_mpeg_video_parse ()

gboolean
gst_mpeg_video_parse (GstMpegVideoPacket *packet,
                      const guint8 *data,
                      gsize size,
                      guint offset);

Parses the MPEG 1/2 video bitstream contained in data , and returns the offset, and if known also the size, in packet . This function will scan the data to find the next packet if needed.

Parameters

packet

a GstMpegVideoPacket to fill with the data and offset of the next packet found

 

data

The data to parse

 

size

The size of data

 

offset

The offset from which to start parsing

 

Returns

TRUE if a packet start code was found, otherwise FALSE.


gst_mpeg_video_parse_sequence_header ()

gboolean
gst_mpeg_video_parse_sequence_header (GstMpegVideoSequenceHdr *seqhdr,
                                      const guint8 *data,
                                      gsize size,
                                      guint offset);

gst_mpeg_video_parse_sequence_header is deprecated and should not be used in newly-written code.

Use gst_mpeg_video_packet_parse_sequence_header() instead.

Parses the seqhdr Mpeg Video Sequence Header structure members from data

Parameters

seqhdr

The GstMpegVideoSequenceHdr structure to fill.

[out]

data

The data from which to parse the sequence header

 

size

The size of data

 

offset

The offset in byte from which to start parsing data

 

Returns

TRUE if the seqhdr could be parsed correctly, FALSE otherwize.


gst_mpeg_video_parse_picture_header ()

gboolean
gst_mpeg_video_parse_picture_header (GstMpegVideoPictureHdr *hdr,
                                     const guint8 *data,
                                     gsize size,
                                     guint offset);

gst_mpeg_video_parse_picture_header is deprecated and should not be used in newly-written code.

Use gst_mpeg_video_packet_parse_picture_header() instead.

Parsers the hdr Mpeg Video Picture Header structure members from data

Parameters

hdr

The GstMpegVideoPictureHdr structure to fill.

[out]

data

The data from which to parse the picture header

 

size

The size of data

 

offset

The offset in byte from which to start the parsing

 

Returns

TRUE if the picture sequence could be parsed correctly, FALSE otherwize.


gst_mpeg_video_parse_picture_extension ()

gboolean
gst_mpeg_video_parse_picture_extension
                               (GstMpegVideoPictureExt *ext,
                                const guint8 *data,
                                gsize size,
                                guint offset);

gst_mpeg_video_parse_picture_extension is deprecated and should not be used in newly-written code.

Use gst_mpeg_video_packet_parse_picture_extension() instead.

Parse the ext Mpeg Video Picture Extension structure members from data

Parameters

ext

The GstMpegVideoPictureExt structure to fill.

[out]

data

The data from which to parse the picture extension

 

size

The size of data

 

offset

The offset in byte from which to start the parsing

 

Returns

TRUE if the picture extension could be parsed correctly, FALSE otherwize.


gst_mpeg_video_parse_gop ()

gboolean
gst_mpeg_video_parse_gop (GstMpegVideoGop *gop,
                          const guint8 *data,
                          gsize size,
                          guint offset);

gst_mpeg_video_parse_gop is deprecated and should not be used in newly-written code.

Use gst_mpeg_video_packet_parse_gop() instead.

Parses the gop Mpeg Video Group of Picture structure members from data

Parameters

gop

The GstMpegVideoGop structure to fill.

[out]

data

The data from which to parse the gop

 

size

The size of data

 

offset

The offset in byte from which to start the parsing

 

Returns

TRUE if the gop could be parsed correctly, FALSE otherwize.


gst_mpeg_video_parse_sequence_extension ()

gboolean
gst_mpeg_video_parse_sequence_extension
                               (GstMpegVideoSequenceExt *seqext,
                                const guint8 *data,
                                gsize size,
                                guint offset);

gst_mpeg_video_parse_sequence_extension is deprecated and should not be used in newly-written code.

Use gst_mpeg_video_packet_parse_sequence_extension() instead.

Parses the seqext Mpeg Video Sequence Extension structure members from data

Parameters

seqext

The GstMpegVideoSequenceExt structure to fill.

[out]

data

The data from which to parse the sequence extension

 

size

The size of data

 

offset

The offset in byte from which to start parsing data

 

Returns

TRUE if the seqext could be parsed correctly, FALSE otherwize.


gst_mpeg_video_parse_sequence_display_extension ()

gboolean
gst_mpeg_video_parse_sequence_display_extension
                               (GstMpegVideoSequenceDisplayExt *seqdisplayext,
                                const guint8 *data,
                                gsize size,
                                guint offset);

gst_mpeg_video_parse_sequence_display_extension is deprecated and should not be used in newly-written code.


gst_mpeg_video_parse_quant_matrix_extension ()

gboolean
gst_mpeg_video_parse_quant_matrix_extension
                               (GstMpegVideoQuantMatrixExt *quant,
                                const guint8 *data,
                                gsize size,
                                guint offset);

gst_mpeg_video_parse_quant_matrix_extension is deprecated and should not be used in newly-written code.

Use gst_mpeg_video_packet_parse_quant_matrix_extension() instead.

Parses the quant Mpeg Video Quant Matrix Extension structure members from data

Parameters

quant

The GstMpegVideoQuantMatrixExt structure to fill.

[out]

data

The data from which to parse the Quantization Matrix extension

 

size

The size of data

 

offset

The offset in byte from which to start the parsing

 

Returns

TRUE if the quant matrix extension could be parsed correctly, FALSE otherwize.


gst_mpeg_video_finalise_mpeg2_sequence_header ()

gboolean
gst_mpeg_video_finalise_mpeg2_sequence_header
                               (GstMpegVideoSequenceHdr *hdr,
                                GstMpegVideoSequenceExt *seqext,
                                GstMpegVideoSequenceDisplayExt *displayext);

gst_mpeg_video_quant_matrix_get_raster_from_zigzag ()

void
gst_mpeg_video_quant_matrix_get_raster_from_zigzag
                               (guint8 out_quant[64],
                                const guint8 quant[64]);

Converts quantization matrix quant from zigzag scan order to raster scan order and store the resulting factors into out_quant .

Note: it is an error to pass the same table in both quant and out_quant arguments.

Parameters

out_quant

The resulting quantization matrix.

[out]

quant

The source quantization matrix

 

Since 1.2


gst_mpeg_video_quant_matrix_get_zigzag_from_raster ()

void
gst_mpeg_video_quant_matrix_get_zigzag_from_raster
                               (guint8 out_quant[64],
                                const guint8 quant[64]);

Converts quantization matrix quant from raster scan order to zigzag scan order and store the resulting factors into out_quant .

Note: it is an error to pass the same table in both quant and out_quant arguments.

Parameters

out_quant

The resulting quantization matrix.

[out]

quant

The source quantization matrix

 

Since 1.2

Types and Values

enum GstMpegVideoPacketTypeCode

Indicates the type of MPEG packet

Members

GST_MPEG_VIDEO_PACKET_PICTURE

Picture packet starting code

 

GST_MPEG_VIDEO_PACKET_SLICE_MIN

Slice min packet starting code

 

GST_MPEG_VIDEO_PACKET_SLICE_MAX

Slice max packet starting code

 

GST_MPEG_VIDEO_PACKET_USER_DATA

User data packet starting code

 

GST_MPEG_VIDEO_PACKET_SEQUENCE

Sequence packet starting code

 

GST_MPEG_VIDEO_PACKET_EXTENSION

Extension packet starting code

 

GST_MPEG_VIDEO_PACKET_SEQUENCE_END

Sequence end packet code

 

GST_MPEG_VIDEO_PACKET_GOP

Group of Picture packet starting code

 

GST_MPEG_VIDEO_PACKET_NONE

None packet code

 

enum GstMpegVideoPacketExtensionCode

Indicates what type of packets are in this block, some are mutually exclusive though - ie, sequence packs are accumulated separately. GOP & Picture may occur together or separately.

Members

GST_MPEG_VIDEO_PACKET_EXT_SEQUENCE

Sequence extension code

 

GST_MPEG_VIDEO_PACKET_EXT_SEQUENCE_DISPLAY

Sequence Display extension code

 

GST_MPEG_VIDEO_PACKET_EXT_QUANT_MATRIX

Quantization Matrix extension code

 

GST_MPEG_VIDEO_PACKET_EXT_SEQUENCE_SCALABLE

Sequence Scalable extension code

 

GST_MPEG_VIDEO_PACKET_EXT_PICTURE

Picture coding extension

 

enum GstMpegVideoLevel

Mpeg-2 Levels.

Members

GST_MPEG_VIDEO_LEVEL_HIGH

High level (HL)

 

GST_MPEG_VIDEO_LEVEL_HIGH_1440

High 1440 level (H-14)

 

GST_MPEG_VIDEO_LEVEL_MAIN

Main level (ML)

 

GST_MPEG_VIDEO_LEVEL_LOW

Low level (LL)

 

enum GstMpegVideoProfile

Mpeg-2 Profiles.

Members

GST_MPEG_VIDEO_PROFILE_422

4:2:2 profile (422)

 

GST_MPEG_VIDEO_PROFILE_HIGH

High profile (HP)

 

GST_MPEG_VIDEO_PROFILE_SPATIALLY_SCALABLE

Spatially Scalable profile (Spatial)

 

GST_MPEG_VIDEO_PROFILE_SNR_SCALABLE

SNR Scalable profile (SNR)

 

GST_MPEG_VIDEO_PROFILE_MAIN

Main profile (MP)

 

GST_MPEG_VIDEO_PROFILE_SIMPLE

Simple profile (SP)

 

enum GstMpegVideoPictureType

Picture type.

Members

GST_MPEG_VIDEO_PICTURE_TYPE_I

Intra-coded (I) frame

 

GST_MPEG_VIDEO_PICTURE_TYPE_P

Predictive-codec (P) frame

 

GST_MPEG_VIDEO_PICTURE_TYPE_B

Bidirectionally predictive-coded (B) frame

 

GST_MPEG_VIDEO_PICTURE_TYPE_D

D frame

 

enum GstMpegVideoPictureStructure

Picture structure type.

Members

GST_MPEG_VIDEO_PICTURE_STRUCTURE_TOP_FIELD

Top field

 

GST_MPEG_VIDEO_PICTURE_STRUCTURE_BOTTOM_FIELD

Bottom field

 

GST_MPEG_VIDEO_PICTURE_STRUCTURE_FRAME

Frame picture

 

struct GstMpegVideoSequenceHdr

struct GstMpegVideoSequenceHdr {
  guint16 width, height;
  guint8  aspect_ratio_info;
  guint8  frame_rate_code;
  guint32 bitrate_value;
  guint16 vbv_buffer_size_value;

  guint8  constrained_parameters_flag;

  guint8  intra_quantizer_matrix[64];
  guint8  non_intra_quantizer_matrix[64];

  /* Calculated values */
  guint   par_w, par_h;
  guint   fps_n, fps_d;
  guint   bitrate;
};

The Mpeg2 Video Sequence Header structure.

Members

guint16 width;

Width of each frame

 

guint16 height;

Height of each frame

 

guint8 aspect_ratio_info;

   

guint8 frame_rate_code;

   

guint32 bitrate_value;

Value of the bitrate as is in the stream (400bps unit)

 

guint16 vbv_buffer_size_value;

   

guint8 constrained_parameters_flag;

TRUE if this stream uses contrained parameters.

 

guint8 intra_quantizer_matrix[64];

intra-quantization table, in zigzag scan order

 

guint8 non_intra_quantizer_matrix[64];

non-intra quantization table, in zigzag scan order

 

guint par_w;

Calculated Pixel Aspect Ratio width

 

guint par_h;

Calculated Pixel Aspect Ratio height

 

guint fps_n;

Calculated Framrate nominator

 

guint fps_d;

Calculated Framerate denominator

 

guint bitrate;

the real bitrate of the Mpeg video stream in bits per second, 0 if VBR stream

 

struct GstMpegVideoSequenceExt

struct GstMpegVideoSequenceExt {
  /* mpeg2 decoder profile */
  guint8 profile;
  /* mpeg2 decoder level */
  guint8 level;

  guint8 progressive;
  guint8 chroma_format;

  guint8 horiz_size_ext, vert_size_ext;

  guint16 bitrate_ext;
  guint8 vbv_buffer_size_extension;
  guint8 low_delay;
  guint8 fps_n_ext, fps_d_ext;
};

The Mpeg2 Video Sequence Extension structure.

Members

guint8 profile;

mpeg2 decoder profile

 

guint8 level;

mpeg2 decoder level

 

guint8 progressive;

TRUE if the frames are progressive FALSE otherwise

 

guint8 chroma_format;

indicates the chrominance format

 

guint8 horiz_size_ext;

Horizontal size

 

guint8 vert_size_ext;

Vertical size

 

guint16 bitrate_ext;

The bitrate

 

guint8 vbv_buffer_size_extension;

VBV vuffer size

 

guint8 low_delay;

TRUE if the sequence doesn't contain any B-pictures, FALSE otherwise

 

guint8 fps_n_ext;

Framerate nominator code

 

guint8 fps_d_ext;

Framerate denominator code

 

struct GstMpegVideoPictureHdr

struct GstMpegVideoPictureHdr {
  guint16 tsn;
  guint8 pic_type;

  guint8 full_pel_forward_vector, full_pel_backward_vector;

  guint8 f_code[2][2];
};

The Mpeg2 Video Picture Header structure.

Members

guint16 tsn;

Temporal Sequence Number

 

guint8 pic_type;

Type of the frame

 

guint8 full_pel_forward_vector;

the full pel forward flag of the frame: 0 or 1.

 

guint8 full_pel_backward_vector;

the full pel backward flag of the frame: 0 or 1.

 

guint8 f_code[2][2];

F code

 

struct GstMpegVideoGop

struct GstMpegVideoGop {
  guint8 drop_frame_flag;

  guint8 hour, minute, second, frame;

  guint8 closed_gop;
  guint8 broken_link;
};

The Mpeg Video Group of Picture structure.

Members

guint8 drop_frame_flag;

Drop Frame Flag

 

guint8 hour;

Hour (0-23)

 

guint8 minute;

Minute (O-59)

 

guint8 second;

Second (0-59)

 

guint8 frame;

Frame (0-59)

 

guint8 closed_gop;

Closed Gop

 

guint8 broken_link;

Broken link

 

struct GstMpegVideoPictureExt

struct GstMpegVideoPictureExt {
  guint8 f_code[2][2];

  guint8 intra_dc_precision;
  guint8 picture_structure;
  guint8 top_field_first;
  guint8 frame_pred_frame_dct;
  guint8 concealment_motion_vectors;
  guint8 q_scale_type;
  guint8 intra_vlc_format;
  guint8 alternate_scan;
  guint8 repeat_first_field;
  guint8 chroma_420_type;
  guint8 progressive_frame;
  guint8 composite_display;
  guint8 v_axis;
  guint8 field_sequence;
  guint8 sub_carrier;
  guint8 burst_amplitude;
  guint8 sub_carrier_phase;
};

The Mpeg2 Video Picture Extension structure.

Members

guint8 f_code[2][2];

   

guint8 intra_dc_precision;

Intra DC precision

 

guint8 picture_structure;

Structure of the picture

 

guint8 top_field_first;

Top field first

 

guint8 frame_pred_frame_dct;

Frame

 

guint8 concealment_motion_vectors;

Concealment Motion Vectors

 

guint8 q_scale_type;

Q Scale Type

 

guint8 intra_vlc_format;

Intra Vlc Format

 

guint8 alternate_scan;

Alternate Scan

 

guint8 repeat_first_field;

Repeat First Field

 

guint8 chroma_420_type;

Chroma 420 Type

 

guint8 progressive_frame;

TRUE if the frame is progressive FALSE otherwize

 

guint8 composite_display;

   

guint8 v_axis;

   

guint8 field_sequence;

   

guint8 sub_carrier;

   

guint8 burst_amplitude;

   

guint8 sub_carrier_phase;

   

struct GstMpegVideoQuantMatrixExt

struct GstMpegVideoQuantMatrixExt {
 guint8 load_intra_quantiser_matrix;
 guint8 intra_quantiser_matrix[64];
 guint8 load_non_intra_quantiser_matrix;
 guint8 non_intra_quantiser_matrix[64];
 guint8 load_chroma_intra_quantiser_matrix;
 guint8 chroma_intra_quantiser_matrix[64];
 guint8 load_chroma_non_intra_quantiser_matrix;
 guint8 chroma_non_intra_quantiser_matrix[64];
};

The Quant Matrix Extension structure that exposes quantization matrices in zigzag scan order. i.e. the original encoded scan order.