root/src/bifs/quant.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


/*
 *                      GPAC - Multimedia Framework C SDK
 *
 *                      Authors: Jean Le Feuvre
 *                      Copyright (c) Telecom ParisTech 2000-2012
 *                                      All rights reserved
 *
 *  This file is part of GPAC / BIFS codec sub-project
 *
 *  GPAC is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU Lesser General Public License as published by
 *  the Free Software Foundation; either version 2, or (at your option)
 *  any later version.
 *
 *  GPAC 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 Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; see the file COPYING.  If not, write to
 *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 */


#ifndef __QUANTIZE_H
#define __QUANTIZE_H

#include <gpac/internal/bifs_dev.h>

#ifndef GPAC_DISABLE_BIFS

/*Quantization Categories*/
enum
{
        QC_NONE                         =       0,
        QC_3DPOS                        =       1,
        QC_2DPOS                        =       2,
        QC_ORDER                        =       3,
        QC_COLOR                        =       4,
        QC_TEXTURE_COORD        =       5,
        QC_ANGLE                        =       6,
        QC_SCALE                        =       7,
        QC_INTERPOL_KEYS        =       8,
        QC_NORMALS                      =       9,
        QC_ROTATION                     =       10,
        QC_SIZE_3D                      =       11,
        QC_SIZE_2D                      =       12,
        QC_LINEAR_SCALAR        =       13,
        QC_COORD_INDEX          =       14,
        QC_RESERVED                     =       15,
        QC_NOTDEF                       =       16,
};

#ifdef GPAC_ENABLE_BIFS_PMF
GF_Err gf_bifs_dec_pred_mf_field(GF_BifsDecoder * codec, GF_BitStream *bs, GF_Node *node, GF_FieldInfo *field);
#endif

Bool Q_IsTypeOn(M_QuantizationParameter *qp, u32 q_type, u32 *NbBits, SFVec3f *b_min, SFVec3f *b_max);


/*QP14 decode*/
u32 gf_bifs_dec_qp14_get_bits(GF_BifsDecoder *codec);
void gf_bifs_dec_qp14_enter(GF_BifsDecoder * codec, Bool Enter);
void gf_bifs_dec_qp14_reset(GF_BifsDecoder * codec);
void gf_bifs_dec_qp14_set_length(GF_BifsDecoder * codec, u32 NbElements);
/*QP decoder (un)registration*/
GF_Err gf_bifs_dec_qp_set(GF_BifsDecoder *codec, GF_Node *qp);
GF_Err gf_bifs_dec_qp_remove(GF_BifsDecoder *codec, Bool ActivatePrev);

SFFloat gf_bifs_dec_mantissa_float(GF_BifsDecoder * codec, GF_BitStream *bs);
GF_Err gf_bifs_dec_unquant_field(GF_BifsDecoder * codec, GF_BitStream *bs, GF_Node *node, GF_FieldInfo *field);

#ifndef GPAC_DISABLE_BIFS_ENC

/*QP14 encode*/
u32 gf_bifs_enc_qp14_get_bits(GF_BifsEncoder *codec);
void gf_bifs_enc_qp14_enter(GF_BifsEncoder *codec, Bool Enter);
void gf_bifs_enc_qp14_reset(GF_BifsEncoder *codec);
void gf_bifs_enc_qp14_set_length(GF_BifsEncoder *codec, u32 NbElements);
/*QP encoder (un)registration*/
GF_Err gf_bifs_enc_qp_set(GF_BifsEncoder *codec, GF_Node *qp);
GF_Err gf_bifs_enc_qp_remove(GF_BifsEncoder *codec, Bool ActivatePrev);
void gf_bifs_enc_mantissa_float(GF_BifsEncoder * codec, SFFloat val, GF_BitStream *bs);
GF_Err gf_bifs_enc_quant_field(GF_BifsEncoder * codec, GF_BitStream *bs, GF_Node *node, GF_FieldInfo *field);

#endif /*GPAC_DISABLE_BIFS_ENC*/

#ifdef GPAC_ENABLE_BIFS_PMF

/*
                Predictive MFField decode - mainly IM1 code (GPL H263 AA coder used)
*/

typedef struct _aamodel GF_AAModel;
GF_AAModel *gp_bifs_aa_model_new();
void gp_bifs_aa_model_del(GF_AAModel *model);
void gp_bifs_aa_model_init(GF_AAModel *model, u32 nbBits);

typedef struct _aadecoder GF_AADecoder;
GF_AADecoder *gp_bifs_aa_dec_new(GF_BitStream *bs);
void gp_bifs_aa_dec_del(GF_AADecoder *dec);
void gp_bifs_aa_dec_flush(GF_AADecoder *dec);
/*get input bit*/
s32 gp_bifs_aa_dec_get_bit(GF_AADecoder *dec);
/*resync after input bit has been fetched (full buffer (16 bit) rewind in source stream)*/
void gp_bifs_aa_dec_resync_bit(GF_AADecoder *dec);
/*resync bitstream*/
void gp_bifs_aa_dec_resync(GF_AADecoder *dec);
/*decode symbol in given model*/
s32 gp_bifs_aa_decode(GF_AADecoder *dec, GF_AAModel *model);
/*reset decoder - called after each parsed I frame*/
void gp_bifs_aa_dec_reset(GF_AADecoder *dec);


#endif /*GPAC_ENABLE_BIFS_PMF*/


#endif /*GPAC_DISABLE_BIFS*/

#endif

/* [<][>][^][v][top][bottom][index][help] */