mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
157 lines
5.1 KiB
C
157 lines
5.1 KiB
C
/* GStreamer H.263 Parser
|
|
* Copyright (C) <2010> Arun Raghavan <arun.raghavan@collabora.co.uk>
|
|
* Copyright (C) <2010> Edward Hervey <edward.hervey@collabora.co.uk>
|
|
* Copyright (C) <2010> Collabora Multimedia
|
|
* Copyright (C) <2010> Nokia Corporation
|
|
*
|
|
* 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., 51 Franklin St, Fifth Floor,
|
|
* Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef __GST_H263_PARAMS_H__
|
|
#define __GST_H263_PARAMS_H__
|
|
|
|
#include <gst/gst.h>
|
|
#include <gst/base/gstadapter.h>
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
typedef enum
|
|
{
|
|
PARSING = 0,
|
|
GOT_HEADER,
|
|
PASSTHROUGH
|
|
} H263ParseState;
|
|
|
|
/* H263 Optional Features */
|
|
typedef enum
|
|
{
|
|
/* Optional Unrestricted Motion Vector (UMV) mode (see Annex D) */
|
|
H263_OPTION_UMV_MODE = 1 << 0,
|
|
/* Optional Syntax-based Arithmetic Coding (SAC) mode (see Annex E) */
|
|
H263_OPTION_SAC_MODE = 1 << 1,
|
|
/* Optional Advanced Prediction mode (AP) (see Annex F) */
|
|
H263_OPTION_AP_MODE = 1 << 2,
|
|
/* Optional PB-frames mode (see Annex G) */
|
|
H263_OPTION_PB_MODE = 1 << 3,
|
|
/* Optional Advanced INTRA Coding (AIC) mode (see Annex I) */
|
|
H263_OPTION_AIC_MODE = 1 << 4,
|
|
/* Optional Deblocking Filter (DF) mode (see Annex J) */
|
|
H263_OPTION_DF_MODE = 1 << 5,
|
|
/* Optional Slice Structured (SS) mode (see Annex K) */
|
|
H263_OPTION_SS_MODE = 1 << 6,
|
|
/* Optional Reference Picture Selection (RPS) mode (see Annex N) */
|
|
H263_OPTION_RPS_MODE = 1 << 7,
|
|
/* Optional Independent Segment Decoding (ISD) mode (see Annex R) */
|
|
H263_OPTION_ISD_MODE = 1 << 8,
|
|
/* Optional Alternative INTER VLC (AIV) mode (see Annex S) */
|
|
H263_OPTION_AIV_MODE = 1 << 9,
|
|
/* Optional Modified Quantization (MQ) mode (see Annex T) */
|
|
H263_OPTION_MQ_MODE = 1 << 10,
|
|
/* Optional Reference Picture Resampling (RPR) mode (see Annex P) */
|
|
H263_OPTION_RPR_MODE = 1 << 11,
|
|
/* Optional Reduced-Resolution Update (RRU) mode (see Annex Q) */
|
|
H263_OPTION_RRU_MODE = 1 << 12,
|
|
/* Optional Enhanced Reference Picture Selection (ERPS) mode (see Annex U) */
|
|
H263_OPTION_ERPS_MODE = 1 << 13,
|
|
/* Optional Data Partitioned Slices (DPS) mode (see Annex V) */
|
|
H263_OPTION_DPS_MODE = 1 << 14
|
|
} H263OptionalFeatures;
|
|
|
|
/* H263 Picture Types */
|
|
typedef enum
|
|
{
|
|
PICTURE_I = 0, /* I-picture (INTRA) Baseline */
|
|
PICTURE_P, /* P-picture (INTER) Baseline */
|
|
PICTURE_IMPROVED_PB, /* Improved PB-frame (Annex M) */
|
|
PICTURE_B, /* B-picture (Annex O) */
|
|
PICTURE_EI, /* EI-picture (Annex O) */
|
|
PICTURE_EP, /* EP-picture (Annex O) */
|
|
PICTURE_RESERVED1,
|
|
PICTURE_RESERVED2,
|
|
PICTURE_PB /* PB-frame (See Annex G) */
|
|
} H263PictureType;
|
|
|
|
/* H263 Picture Format */
|
|
typedef enum
|
|
{
|
|
PICTURE_FMT_FORBIDDEN_0 = 0,
|
|
PICTURE_FMT_SUB_QCIF,
|
|
PICTURE_FMT_QCIF,
|
|
PICTURE_FMT_CIF,
|
|
PICTURE_FMT_4CIF,
|
|
PICTURE_FMT_16CIF,
|
|
PICTURE_FMT_RESERVED1,
|
|
PICTURE_FMT_EXTENDEDPTYPE
|
|
} H263PictureFormat;
|
|
|
|
typedef enum
|
|
{
|
|
UUI_ABSENT = 0,
|
|
UUI_IS_1,
|
|
UUI_IS_01,
|
|
} H263UUI;
|
|
|
|
|
|
typedef struct _H263Params H263Params;
|
|
|
|
struct _H263Params
|
|
{
|
|
guint32 temporal_ref;
|
|
|
|
H263OptionalFeatures features;
|
|
|
|
gboolean splitscreen;
|
|
gboolean documentcamera;
|
|
gboolean fullpicturefreezerelease;
|
|
gboolean custompcfpresent;
|
|
H263UUI uui;
|
|
guint8 sss;
|
|
|
|
H263PictureFormat format;
|
|
|
|
H263PictureType type;
|
|
|
|
guint32 width;
|
|
guint32 height;
|
|
guint8 parnum, pardenom;
|
|
gint32 pcfnum, pcfdenom;
|
|
};
|
|
|
|
gboolean gst_h263_parse_is_delta_unit (const H263Params * params);
|
|
|
|
GstFlowReturn gst_h263_parse_get_params (H263Params * params_p,
|
|
GstBuffer * buffer,
|
|
gboolean fast,
|
|
H263ParseState * state);
|
|
|
|
void gst_h263_parse_get_framerate (const H263Params * params,
|
|
gint * num,
|
|
gint * denom);
|
|
|
|
void gst_h263_parse_get_par (const H263Params * params,
|
|
gint * num,
|
|
gint * denom);
|
|
|
|
gint gst_h263_parse_get_profile (const H263Params * params);
|
|
|
|
gint gst_h263_parse_get_level (const H263Params * params,
|
|
gint profile,
|
|
guint bitrate,
|
|
gint fps_num,
|
|
gint fps_denom);
|
|
|
|
G_END_DECLS
|
|
#endif
|