mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 03:35:21 +00:00
codecparsers: mpeg4: Implement an Mpeg4 part 2 parsing library
This commit is contained in:
parent
4439048e4a
commit
fd593d6cc8
5 changed files with 2288 additions and 2 deletions
|
@ -30,6 +30,7 @@
|
|||
</para>
|
||||
<xi:include href="xml/gsth264parser.xml" />
|
||||
<xi:include href="xml/gstmpegvideoparser.xml" />
|
||||
<xi:include href="xml/gstmpeg4parser.xml" />
|
||||
<xi:include href="xml/gstvc1parser.xml" />
|
||||
</chapter>
|
||||
|
||||
|
|
|
@ -117,6 +117,41 @@ gst_mpeg_video_parse_quant_matrix_extension
|
|||
<SUBSECTION Private>
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gstmpeg4parser</FILE>
|
||||
<TITLE>mpeg4parser</TITLE>
|
||||
<INCLUDE>gst/codecparsers/gstmpeg4parser.h</INCLUDE>
|
||||
GstMpeg4StartCode
|
||||
GstMpeg4VisualObjectType
|
||||
GstMpeg4AspectRatioInfo
|
||||
GstMpeg4ParseResult
|
||||
GstMpeg4VideoObjectCodingType
|
||||
GstMpeg4ChromaFormat
|
||||
GstMpeg4VideoObjectLayerShape
|
||||
GstMpeg4SpriteEnable
|
||||
GstMpeg4Profile
|
||||
GstMpeg4Level
|
||||
GstMpeg4VisualObjectSequence
|
||||
GstMpeg4VisualObject
|
||||
GstMpeg4VideoSignalType
|
||||
GstMpeg4VideoPlaneShortHdr
|
||||
GstMpeg4VideoObjectLayer
|
||||
GstMpeg4SpriteTrajectory
|
||||
GstMpeg4GroupOfVOP
|
||||
GstMpeg4VideoObjectPlane
|
||||
GstMpeg4Packet
|
||||
GstMpeg4VideoPacketHdr
|
||||
gst_mpeg4_parse
|
||||
gst_mpeg4_parse_video_object_plane
|
||||
gst_mpeg4_parse_group_of_vop
|
||||
gst_mpeg4_parse_video_object_layer
|
||||
gst_mpeg4_parse_visual_object
|
||||
gst_mpeg4_parse_visual_object_sequence
|
||||
gst_mpeg4_parse_video_packet_header
|
||||
<SUBSECTION Standard>
|
||||
<SUBSECTION Private>
|
||||
</SECTION>
|
||||
|
||||
<SECTION>
|
||||
<FILE>gstphotography</FILE>
|
||||
GST_PHOTOGRAPHY_AUTOFOCUS_DONE
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
lib_LTLIBRARIES = libgstcodecparsers-@GST_MAJORMINOR@.la
|
||||
|
||||
libgstcodecparsers_@GST_MAJORMINOR@_la_SOURCES = \
|
||||
gstmpegvideoparser.c gsth264parser.c gstvc1parser.c parserutils.c
|
||||
gstmpegvideoparser.c gsth264parser.c gstvc1parser.c gstmpeg4parser.c \
|
||||
parserutils.c
|
||||
|
||||
libgstcodecparsers_@GST_MAJORMINOR@includedir = \
|
||||
$(includedir)/gstreamer-@GST_MAJORMINOR@/gst/codecparsers
|
||||
|
@ -9,7 +10,7 @@ libgstcodecparsers_@GST_MAJORMINOR@includedir = \
|
|||
noinst_HEADERS = parserutils.h
|
||||
|
||||
libgstcodecparsers_@GST_MAJORMINOR@include_HEADERS = \
|
||||
gstmpegvideoparser.h gsth264parser.h gstvc1parser.h
|
||||
gstmpegvideoparser.h gsth264parser.h gstvc1parser.h gstmpeg4parser.h
|
||||
|
||||
libgstcodecparsers_@GST_MAJORMINOR@_la_CFLAGS = \
|
||||
$(GST_PLUGINS_BAD_CFLAGS) \
|
||||
|
|
1666
gst-libs/gst/codecparsers/gstmpeg4parser.c
Normal file
1666
gst-libs/gst/codecparsers/gstmpeg4parser.c
Normal file
File diff suppressed because it is too large
Load diff
583
gst-libs/gst/codecparsers/gstmpeg4parser.h
Normal file
583
gst-libs/gst/codecparsers/gstmpeg4parser.h
Normal file
|
@ -0,0 +1,583 @@
|
|||
/*
|
||||
* GStreamer
|
||||
* Copyright (C) 2009 Carl-Anton Ingmarsson <ca.ingmarsson@gmail.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GST_MPEG4UTIL_H__
|
||||
#define __GST_MPEG4UTIL_H__
|
||||
|
||||
#include <gst/gst.h>
|
||||
#include <gst/base/gstbitreader.h>
|
||||
|
||||
typedef struct _GstMpeg4VisualObjectSequence GstMpeg4VisualObjectSequence;
|
||||
typedef struct _GstMpeg4VisualObject GstMpeg4VisualObject;
|
||||
typedef struct _GstMpeg4VideoObjectLayer GstMpeg4VideoObjectLayer;
|
||||
typedef struct _GstMpeg4GroupOfVOP GstMpeg4GroupOfVOP;
|
||||
typedef struct _GstMpeg4VideoObjectPlane GstMpeg4VideoObjectPlane;
|
||||
typedef struct _GstMpeg4VideoSignalType GstMpeg4VideoSignalType;
|
||||
typedef struct _GstMpeg4VideoPlaneShortHdr GstMpeg4VideoPlaneShortHdr;
|
||||
typedef struct _GstMpeg4VideoPacketHdr GstMpeg4VideoPacketHdr;
|
||||
|
||||
typedef struct _GstMpeg4SpriteTrajectory GstMpeg4SpriteTrajectory;
|
||||
|
||||
typedef struct _GstMpeg4Packet GstMpeg4Packet;
|
||||
|
||||
/**
|
||||
* GstMpeg4StartCode:
|
||||
*
|
||||
* Defines the different startcodes present in the bitstream as
|
||||
* defined in: Table 6-3 — Start code values
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
GST_MPEG4_VIDEO_OBJ_FIRST = 0x00,
|
||||
GST_MPEG4_VIDEO_OBJ_LAST = 0x1f,
|
||||
GST_MPEG4_VIDEO_LAYER_FIRST = 0x20,
|
||||
GST_MPEG4_VIDEO_LAYER_LAST = 0x2f,
|
||||
GST_MPEG4_VISUAL_OBJ_SEQ_START = 0xb0,
|
||||
GST_MPEG4_VISUAL_OBJ_SEQ_END = 0xb1,
|
||||
GST_MPEG4_USER_DATA = 0xb2,
|
||||
GST_MPEG4_GROUP_OF_VOP = 0xb3,
|
||||
GST_MPEG4_VIDEO_SESSION_ERR = 0xb4,
|
||||
GST_MPEG4_VISUAL_OBJ = 0xb5,
|
||||
GST_MPEG4_VIDEO_OBJ_PLANE = 0xb6,
|
||||
GST_MPEG4_FBA = 0xba,
|
||||
GST_MPEG4_FBA_PLAN = 0xbb,
|
||||
GST_MPEG4_MESH = 0xbc,
|
||||
GST_MPEG4_MESH_PLAN = 0xbd,
|
||||
GST_MPEG4_STILL_TEXTURE_OBJ = 0xbe,
|
||||
GST_MPEG4_TEXTURE_SPATIAL = 0xbf,
|
||||
GST_MPEG4_TEXTURE_SNR_LAYER = 0xc0,
|
||||
GST_MPEG4_TEXTURE_TILE = 0xc1,
|
||||
GST_MPEG4_SHAPE_LAYER = 0xc2,
|
||||
GST_MPEG4_STUFFING = 0xc3,
|
||||
GST_MPEG4_SYSTEM_FIRST = 0xc6,
|
||||
GST_MPEG4_SYSTEM_LAST = 0xff,
|
||||
GST_MPEG4_RESYNC = 0xfff
|
||||
} GstMpeg4StartCode;
|
||||
|
||||
/**
|
||||
* GstMpeg4VisualObjectType:
|
||||
*
|
||||
* Defines the different visual object types as
|
||||
* defined in: Table 6-5 -- Meaning of visual object type
|
||||
*/
|
||||
typedef enum {
|
||||
GST_MPEG4_VIDEO_ID = 0x01,
|
||||
GST_MPEG4_STILL_TEXTURE_ID = 0x02,
|
||||
GST_MPEG4_STILL_MESH_ID = 0x03,
|
||||
GST_MPEG4_STILL_FBA_ID = 0x04,
|
||||
GST_MPEG4_STILL_3D_MESH_ID = 0x05,
|
||||
/*... reserved */
|
||||
|
||||
} GstMpeg4VisualObjectType;
|
||||
|
||||
/**
|
||||
* GstMpeg4AspectRatioInfo:
|
||||
* @GST_MPEG4_SQUARE: 1:1 square
|
||||
* @GST_MPEG4_625_TYPE_4_3: 12:11 (625-type for 4:3 picture)
|
||||
* @GST_MPEG4_525_TYPE_4_3: 10:11 (525-type for 4:3 picture)
|
||||
* @GST_MPEG4_625_TYPE_16_9: 16:11 (625-type stretched for 16:9 picture)
|
||||
* @GST_MPEG4_525_TYPE_16_9: 40:33 (525-type stretched for 16:9 picture)
|
||||
* @GST_MPEG4_EXTENDED_PAR: Extended par
|
||||
*
|
||||
* Defines the different pixel aspect ratios as
|
||||
* defined in: Table 6-12 -- Meaning of pixel aspect ratio
|
||||
*/
|
||||
typedef enum {
|
||||
GST_MPEG4_SQUARE = 0x01,
|
||||
GST_MPEG4_625_TYPE_4_3 = 0x02,
|
||||
GST_MPEG4_525_TYPE_4_3 = 0x03,
|
||||
GST_MPEG4_625_TYPE_16_9 = 0x04,
|
||||
GST_MPEG4_525_TYPE_16_9 = 0x05,
|
||||
GST_MPEG4_EXTENDED_PAR = 0x0f,
|
||||
} GstMpeg4AspectRatioInfo;
|
||||
|
||||
/**
|
||||
* GstMpeg4ParseResult:
|
||||
* @GST_MPEG4_PARSER_OK: The parsing went well
|
||||
* @GST_MPEG4_PARSER_BROKEN_DATA: The bitstream was broken
|
||||
* @GST_MPEG4_PARSER_NO_PACKET: There was no packet in the buffer
|
||||
* @GST_MPEG4_PARSER_NO_PACKET_END: There was no packet end in the buffer
|
||||
* @GST_MPEG4_PARSER_NO_PACKET_ERROR: An error accured durint the parsing
|
||||
*
|
||||
* Result type of any parsing function.
|
||||
*/
|
||||
typedef enum {
|
||||
GST_MPEG4_PARSER_OK,
|
||||
GST_MPEG4_PARSER_BROKEN_DATA,
|
||||
GST_MPEG4_PARSER_NO_PACKET,
|
||||
GST_MPEG4_PARSER_NO_PACKET_END,
|
||||
GST_MPEG4_PARSER_ERROR,
|
||||
} GstMpeg4ParseResult;
|
||||
|
||||
/**
|
||||
* GstMpeg4VideoObjectCodingType:
|
||||
* @GST_MPEG4_I_VOP: intra-coded (I)
|
||||
* @GST_MPEG4_P_VOP: predictive-coded (P)
|
||||
* @GST_MPEG4_B_VOP: bidirectionally-predictive-coded (B)
|
||||
* @GST_MPEG4_S_VOP: sprite (S)
|
||||
*
|
||||
* The vop coding types as defined in:
|
||||
* Table 6-20 -- Meaning of vop_coding_type
|
||||
*/
|
||||
typedef enum {
|
||||
GST_MPEG4_I_VOP = 0x0,
|
||||
GST_MPEG4_P_VOP = 0x1,
|
||||
GST_MPEG4_B_VOP = 0x2,
|
||||
GST_MPEG4_S_VOP = 0x3
|
||||
} GstMpeg4VideoObjectCodingType;
|
||||
|
||||
/**
|
||||
* GstMpeg4ChromaFormat
|
||||
*
|
||||
* The chroma format in use as
|
||||
* defined in: Table 6-13 -- Meaning of chroma_format
|
||||
*/
|
||||
typedef enum {
|
||||
/* Other value are reserved */
|
||||
GST_MPEG4_CHROMA_4_2_0 = 0x01
|
||||
} GstMpeg4ChromaFormat;
|
||||
|
||||
/**
|
||||
* GstMpeg4VideoObjectLayerShape:
|
||||
*
|
||||
* The different video object layer shapes as defined in:
|
||||
* Table 6-16 — Video Object Layer shape type
|
||||
*/
|
||||
typedef enum {
|
||||
GST_MPEG4_RECTANGULAR,
|
||||
GST_MPEG4_BINARY,
|
||||
GST_MPEG4_BINARY_ONLY,
|
||||
GST_MPEG4_GRAYSCALE
|
||||
} GstMpeg4VideoObjectLayerShape;
|
||||
|
||||
/**
|
||||
* GstMpeg4SpriteEnable:
|
||||
*
|
||||
* Indicates the usage of static sprite coding
|
||||
* or global motion compensation (GMC) as defined in:
|
||||
* Table V2 - 2 -- Meaning of sprite_enable codewords
|
||||
*/
|
||||
typedef enum {
|
||||
GST_MPEG4_SPRITE_UNUSED,
|
||||
GST_MPEG4_SPRITE_STATIC,
|
||||
GST_MPEG4_SPRITE_GMG
|
||||
} GstMpeg4SpriteEnable;
|
||||
|
||||
/**
|
||||
* GstMpeg4Profile:
|
||||
*
|
||||
* Different defined profiles as defined in:
|
||||
* 9- Profiles and levels
|
||||
*
|
||||
* It is computed using:
|
||||
* Table G.1 — FLC table for profile_and_level_indication
|
||||
*/
|
||||
typedef enum {
|
||||
GST_MPEG4_PROFILE_CORE,
|
||||
GST_MPEG4_PROFILE_MAIN,
|
||||
GST_MPEG4_PROFILE_N_BIT,
|
||||
GST_MPEG4_PROFILE_SIMPLE,
|
||||
GST_MPEG4_PROFILE_HYBRYD,
|
||||
GST_MPEG4_PROFILE_RESERVED,
|
||||
GST_MPEG4_PROFILE_SIMPLE_FBA,
|
||||
GST_MPEG4_PROFILE_CORE_STUDIO,
|
||||
GST_MPEG4_PROFILE_SIMPLE_STUDIO,
|
||||
GST_MPEG4_PROFILE_CORE_SCALABLE,
|
||||
GST_MPEG4_PROFILE_ADVANCED_CORE,
|
||||
GST_MPEG4_PROFILE_ADVANCED_SIMPLE,
|
||||
GST_MPEG4_PROFILE_SIMPLE_SCALABLE,
|
||||
GST_MPEG4_PROFILE_SCALABLE_TEXTURE,
|
||||
GST_MPEG4_PROFILE_SIMPLE_FACE_ANIMATION,
|
||||
GST_MPEG4_PROFILE_BASIC_ANIMATED_TEXTURE,
|
||||
GST_MPEG4_PROFILE_ADVANCED_REALTIME_SIMPLE,
|
||||
GST_MPEG4_PROFILE_ADVANCED_SCALABLE_TEXTURE,
|
||||
GST_MPEG4_PROFILE_FINE_GRANULARITY_SCALABLE,
|
||||
GST_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY
|
||||
} GstMpeg4Profile;
|
||||
|
||||
/**
|
||||
* GstMpeg4Level:
|
||||
*
|
||||
* Different levels as defined in:
|
||||
* 9- Profiles and levels
|
||||
*
|
||||
* It is computed using:
|
||||
* Table G.1 — FLC table for profile_and_level_indication
|
||||
*/
|
||||
typedef enum {
|
||||
GST_MPEG4_LEVEL0,
|
||||
GST_MPEG4_LEVEL1,
|
||||
GST_MPEG4_LEVEL2,
|
||||
GST_MPEG4_LEVEL3,
|
||||
GST_MPEG4_LEVEL3b,
|
||||
GST_MPEG4_LEVEL4,
|
||||
GST_MPEG4_LEVEL5,
|
||||
GST_MPEG4_LEVEL_RESERVED
|
||||
} GstMpeg4Level;
|
||||
|
||||
/**
|
||||
* GstMpeg4VisualObjectSequence:
|
||||
*
|
||||
* The visual object sequence structure as defined in:
|
||||
* 6.2.2 Visual Object Sequence and Visual Object
|
||||
*/
|
||||
struct _GstMpeg4VisualObjectSequence {
|
||||
guint8 profile_and_level_indication;
|
||||
|
||||
/* Computed according to:
|
||||
* Table G.1 — FLC table for profile_and_level_indication */
|
||||
GstMpeg4Level level;
|
||||
GstMpeg4Profile profile;
|
||||
};
|
||||
|
||||
/**
|
||||
* The visual object structure as defined in:
|
||||
* 6.2.2 Visual Object Sequence and Visual Object
|
||||
*/
|
||||
struct _GstMpeg4VisualObject {
|
||||
guint8 is_identifier;
|
||||
/* If is_identifier */
|
||||
guint8 verid;
|
||||
guint8 priority;
|
||||
|
||||
GstMpeg4VisualObjectType type;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstMpeg4VideoSignalType:
|
||||
*
|
||||
* The video signal type structure as defined in:
|
||||
* 6.2.2 Visual Object Sequence and Visual Object.
|
||||
*/
|
||||
struct _GstMpeg4VideoSignalType {
|
||||
guint8 type;
|
||||
|
||||
guint8 format;
|
||||
guint8 range;
|
||||
guint8 color_description;
|
||||
guint8 color_primaries;
|
||||
guint8 transfer_characteristics;
|
||||
guint8 matrix_coefficients;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstMpeg4VideoPlaneShortHdr:
|
||||
*
|
||||
* The video plane short header structure as defined in:
|
||||
* 6.2.5.2 Video Plane with Short Header
|
||||
*/
|
||||
struct _GstMpeg4VideoPlaneShortHdr {
|
||||
guint8 temporal_reference;
|
||||
guint8 split_screen_indicator;
|
||||
guint8 document_camera_indicator;
|
||||
guint8 full_picture_freeze_release;
|
||||
guint8 source_format;
|
||||
guint8 picture_coding_type;
|
||||
guint8 vop_quant;
|
||||
guint8 pei;
|
||||
guint8 psupp;
|
||||
|
||||
/* Gob layer specific fields */
|
||||
guint8 gob_header_empty;
|
||||
guint8 gob_number;
|
||||
guint8 gob_frame_id;
|
||||
guint8 quant_scale;
|
||||
|
||||
/* Computed
|
||||
* If all the values are set to 0, then it is reserved
|
||||
* Table 6-25 -- Parameters Defined by source_format Field
|
||||
*/
|
||||
guint16 vop_width;
|
||||
guint16 vop_height;
|
||||
guint16 num_macroblocks_in_gob;
|
||||
guint8 num_gobs_in_vop;
|
||||
|
||||
/* The size in bits */
|
||||
guint size;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstMpeg4VideoObjectLayer:
|
||||
*
|
||||
* The video object layer structure as defined in:
|
||||
* 6.2.3 Video Object Layer
|
||||
*/
|
||||
struct _GstMpeg4VideoObjectLayer {
|
||||
guint8 random_accessible_vol;
|
||||
guint8 video_object_type_indication;
|
||||
|
||||
guint8 is_object_layer_identifier;
|
||||
/* if is_object_layer_identifier */
|
||||
guint8 verid;
|
||||
guint8 priority;
|
||||
|
||||
GstMpeg4AspectRatioInfo aspect_ratio_info;
|
||||
guint8 par_width;
|
||||
guint8 par_height;
|
||||
|
||||
guint8 control_parameters;
|
||||
/* if control_parameters */
|
||||
GstMpeg4ChromaFormat chroma_format;
|
||||
guint8 low_delay;
|
||||
guint8 vbv_parameters;
|
||||
/* if vbv_parameters */
|
||||
guint16 first_half_bitrate;
|
||||
guint16 latter_half_bitrate;
|
||||
guint16 first_half_vbv_buffer_size;
|
||||
guint16 latter_half_vbv_buffer_size;
|
||||
guint16 first_half_vbv_occupancy;
|
||||
guint16 latter_half_vbv_occupancy;
|
||||
|
||||
/* Computed values */
|
||||
guint32 bit_rate;
|
||||
guint32 vbv_buffer_size;
|
||||
|
||||
GstMpeg4VideoObjectLayerShape shape;
|
||||
/* if shape == GST_MPEG4_GRAYSCALE && verid =! 1 */
|
||||
guint8 shape_extension;
|
||||
|
||||
guint16 vop_time_increment_resolution;
|
||||
guint8 vop_time_increment_bits;
|
||||
guint8 fixed_vop_rate;
|
||||
/* if fixed_vop_rate */
|
||||
guint16 fixed_vop_time_increment;
|
||||
|
||||
guint16 width;
|
||||
guint16 height;
|
||||
guint8 interlaced;
|
||||
guint8 obmc_disable;
|
||||
|
||||
GstMpeg4SpriteEnable sprite_enable;
|
||||
/* if vol->sprite_enable == SPRITE_GMG or SPRITE_STATIC*/
|
||||
/* if vol->sprite_enable != GST_MPEG4_SPRITE_GMG */
|
||||
guint16 sprite_width;
|
||||
guint16 sprite_height;
|
||||
guint16 sprite_left_coordinate;
|
||||
guint16 sprite_top_coordinate;
|
||||
|
||||
guint8 no_of_sprite_warping_points;
|
||||
guint8 sprite_warping_accuracy;
|
||||
guint8 sprite_brightness_change;
|
||||
/* if vol->sprite_enable != GST_MPEG4_SPRITE_GMG */
|
||||
guint8 low_latency_sprite_enable;
|
||||
|
||||
/* if shape != GST_MPEG4_RECTANGULAR */
|
||||
guint8 sadct_disable;
|
||||
|
||||
guint8 not_8_bit;
|
||||
|
||||
/* if no_8_bit */
|
||||
guint8 quant_precision;
|
||||
guint8 bits_per_pixel;
|
||||
|
||||
/* if shape == GRAYSCALE */
|
||||
guint8 no_gray_quant_update;
|
||||
guint8 composition_method;
|
||||
guint8 linear_composition;
|
||||
|
||||
guint8 quant_type;
|
||||
/* if quant_type */
|
||||
guint8 load_intra_quant_mat;
|
||||
guint8 intra_quant_mat[64];
|
||||
guint8 load_non_intra_quant_mat;
|
||||
guint8 non_intra_quant_mat[64];
|
||||
|
||||
guint8 quarter_sample;
|
||||
guint8 complexity_estimation_disable;
|
||||
guint8 resync_marker_disable;
|
||||
guint8 data_partitioned;
|
||||
guint8 reversible_vlc;
|
||||
guint8 newpred_enable;
|
||||
guint8 reduced_resolution_vop_enable;
|
||||
guint8 scalability;
|
||||
guint8 enhancement_type;
|
||||
|
||||
GstMpeg4VideoPlaneShortHdr short_hdr;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstMpeg4SpriteTrajectory:
|
||||
*
|
||||
* The sprite trajectory structure as defined in:
|
||||
* 7.8.4 Sprite reference point decoding and
|
||||
* 6.2.5.4 Sprite coding
|
||||
*/
|
||||
struct _GstMpeg4SpriteTrajectory {
|
||||
guint16 vop_ref_points[63]; /* Defined as "du" in 6.2.5.4 */
|
||||
guint16 sprite_ref_points[63]; /* Defined as "dv" in 6.2.5.4 */
|
||||
};
|
||||
|
||||
/**
|
||||
* GstMpeg4GroupOfVOP:
|
||||
*
|
||||
* The group of video object plane structure as defined in:
|
||||
* 6.2.4 Group of Video Object Plane
|
||||
*/
|
||||
struct _GstMpeg4GroupOfVOP {
|
||||
guint8 hours;
|
||||
guint8 minutes;
|
||||
guint8 seconds;
|
||||
|
||||
guint8 closed;
|
||||
guint8 broken_link;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstMpeg4VideoObjectPlane:
|
||||
*
|
||||
* The Video object plane structure as defined in:
|
||||
* 6.2.5 Video Object Plane and Video Plane with Short Header
|
||||
*/
|
||||
struct _GstMpeg4VideoObjectPlane {
|
||||
GstMpeg4VideoObjectCodingType coding_type;
|
||||
|
||||
guint8 modulo_time_base;
|
||||
guint16 time_increment;
|
||||
|
||||
guint8 coded;
|
||||
/* if newpred_enable */
|
||||
guint16 id;
|
||||
guint8 id_for_prediction_indication;
|
||||
guint16 id_for_prediction;
|
||||
|
||||
guint16 width;
|
||||
guint16 height;
|
||||
guint16 horizontal_mc_spatial_ref;
|
||||
guint16 vertical_mc_spatial_ref;
|
||||
|
||||
guint8 rounding_type;
|
||||
/*if vol->shape != GST_MPEG4_RECTANGULAR */
|
||||
guint8 background_composition;
|
||||
guint8 change_conv_ratio_disable;
|
||||
guint8 constant_alpha;
|
||||
guint8 constant_alpha_value;
|
||||
guint8 reduced_resolution;
|
||||
|
||||
guint8 intra_dc_vlc_thr;
|
||||
|
||||
|
||||
guint8 top_field_first;
|
||||
guint8 alternate_vertical_scan_flag;
|
||||
|
||||
guint16 quant;
|
||||
|
||||
guint8 fcode_forward;
|
||||
guint8 fcode_backward;
|
||||
|
||||
guint8 shape_coding_type;
|
||||
guint8 load_backward_shape;
|
||||
guint8 ref_select_code;
|
||||
|
||||
/* Computed macroblock informations */
|
||||
guint16 mb_height;
|
||||
guint16 mb_width;
|
||||
guint mb_num;
|
||||
|
||||
/* The size of the header */
|
||||
guint size;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstMpeg4VideoPacketHdr:
|
||||
* @size: Size of the header in bit.
|
||||
*
|
||||
* The video packet header structure as defined in:
|
||||
* 6.2.5.2 Video Plane with Short Header
|
||||
*/
|
||||
struct _GstMpeg4VideoPacketHdr {
|
||||
guint8 header_extension_code;
|
||||
guint16 macroblock_number;
|
||||
guint16 quant_scale;
|
||||
guint size;
|
||||
};
|
||||
|
||||
/**
|
||||
* GstMpeg4Packet:
|
||||
* @type: the type of the packet that start at @offset
|
||||
* @data: the data of the packet, statring at @offset
|
||||
* @offset: offset of the start of the packet (without the 3 bytes startcode), but
|
||||
* including the #GstMpeg4StartCode byte.
|
||||
* @size: The size in bytes of the packet or %G_MAXUINT if the end wasn't found.
|
||||
* Set to 0 if type == GST_MPEG4_RESYNC.
|
||||
* @marker_size: The size in bit of the resync marker.
|
||||
*
|
||||
* A structure that contains the type of a packet, its offset and its size
|
||||
*/
|
||||
struct _GstMpeg4Packet
|
||||
{
|
||||
const guint8 *data;
|
||||
guint offset;
|
||||
gsize size;
|
||||
guint marker_size;
|
||||
|
||||
GstMpeg4StartCode type;
|
||||
};
|
||||
|
||||
GstMpeg4ParseResult gst_h263_parse (GstMpeg4Packet * packet,
|
||||
const guint8 * data, guint offset,
|
||||
gsize size);
|
||||
|
||||
|
||||
GstMpeg4ParseResult gst_mpeg4_parse (GstMpeg4Packet * packet,
|
||||
gboolean skip_user_data,
|
||||
const guint8 * data, guint offset,
|
||||
gsize size);
|
||||
|
||||
GstMpeg4ParseResult
|
||||
gst_mpeg4_parse_video_object_plane (GstMpeg4VideoObjectPlane *vop,
|
||||
GstMpeg4SpriteTrajectory *sprite_trajectory,
|
||||
GstMpeg4VideoObjectLayer *vol,
|
||||
const guint8 * data,
|
||||
gsize size);
|
||||
|
||||
GstMpeg4ParseResult
|
||||
gst_mpeg4_parse_group_of_vop (GstMpeg4GroupOfVOP *gov,
|
||||
const guint8 * data, gsize size);
|
||||
|
||||
GstMpeg4ParseResult
|
||||
gst_mpeg4_parse_video_object_layer (GstMpeg4VideoObjectLayer *vol,
|
||||
GstMpeg4VisualObject *vo,
|
||||
const guint8 * data, gsize size);
|
||||
|
||||
GstMpeg4ParseResult
|
||||
gst_mpeg4_parse_visual_object (GstMpeg4VisualObject *vo,
|
||||
GstMpeg4VideoSignalType *signal_type,
|
||||
const guint8 * data, gsize size);
|
||||
|
||||
GstMpeg4ParseResult
|
||||
gst_mpeg4_parse_visual_object_sequence (GstMpeg4VisualObjectSequence *vos,
|
||||
const guint8 * data, gsize size);
|
||||
GstMpeg4ParseResult
|
||||
gst_mpeg4_parse_video_plane_short_header (GstMpeg4VideoPlaneShortHdr * shorthdr,
|
||||
const guint8 * data, gsize size);
|
||||
|
||||
GstMpeg4ParseResult
|
||||
gst_mpeg4_next_resync (GstMpeg4Packet * packet,
|
||||
const GstMpeg4VideoObjectPlane * vop,
|
||||
const guint8 *data, gsize size);
|
||||
|
||||
GstMpeg4ParseResult
|
||||
gst_mpeg4_parse_video_packet_header (GstMpeg4VideoPacketHdr * videopackethdr,
|
||||
GstMpeg4VideoObjectLayer * vol,
|
||||
GstMpeg4VideoObjectPlane * vop,
|
||||
GstMpeg4SpriteTrajectory * sprite_trajectory,
|
||||
const guint8 * data, gsize size);
|
||||
|
||||
#endif /* __GST_MPEG4UTIL_H__ */
|
Loading…
Reference in a new issue