www.pudn.com > JM86.rar > biariencode.h, change:2004-09-16,size:5321b


/********************************************************************** 
 * Software Copyright Licensing Disclaimer 
 * 
 * This software module was originally developed by contributors to the 
 * course of the development of ISO/IEC 14496-10 for reference purposes 
 * and its performance may not have been optimized.  This software 
 * module is an implementation of one or more tools as specified by 
 * ISO/IEC 14496-10.  ISO/IEC gives users free license to this software 
 * module or modifications thereof. Those intending to use this software 
 * module in products are advised that its use may infringe existing 
 * patents.  ISO/IEC have no liability for use of this software module 
 * or modifications thereof.  The original contributors retain full 
 * rights to modify and use the code for their own purposes, and to 
 * assign or donate the code to third-parties. 
 * 
 * This copyright notice must be included in all copies or derivative 
 * works.  Copyright (c) ISO/IEC 2004. 
 **********************************************************************/ 
 
/*! 
 *************************************************************************** 
 * \file 
 *    biariencode.h 
 * 
 * \brief 
 *    Headerfile for binary arithmetic encoding routines 
 * 
 * \author 
 *    Detlev Marpe, 
 *    Gabi Blaettermann 
 *    Copyright (C) 2000 HEINRICH HERTZ INSTITUTE All Rights Reserved. 
 * 
 * \date 
 *    21. Oct 2000 
 ************************************************************************** 
 */ 
 
 
#ifndef _BIARIENCOD_H_ 
#define _BIARIENCOD_H_ 
 
 
 
/************************************************************************ 
 * D e f i n i t i o n s 
 *********************************************************************** 
 */ 
 
// some definitions to increase the readability of the source code 
 
#define Elow            (eep->Elow) 
#define Erange          (eep->Erange) 
#define Ebits_to_follow (eep->Ebits_to_follow) 
#define Ebuffer         (eep->Ebuffer) 
#define Ebits_to_go     (eep->Ebits_to_go) 
#define Ecodestrm       (eep->Ecodestrm) 
#define Ecodestrm_len   (eep->Ecodestrm_len) 
#define Ecodestrm_laststartcode   (eep->Ecodestrm_laststartcode) 
#define B_BITS     10 // Number of bits to represent the whole coding interval 
#define ONE                              (1 << B_BITS) 
#define HALF                     (1 << (B_BITS-1)) 
#define QUARTER    (1 << (B_BITS-2)) 
 
/* Range table for LPS */  
const byte rLPS_table_64x4[64][4]= 
{ 
        { 128, 176, 208, 240}, 
        { 128, 167, 197, 227}, 
        { 128, 158, 187, 216}, 
        { 123, 150, 178, 205}, 
        { 116, 142, 169, 195}, 
        { 111, 135, 160, 185}, 
        { 105, 128, 152, 175}, 
        { 100, 122, 144, 166}, 
        {  95, 116, 137, 158}, 
        {  90, 110, 130, 150}, 
        {  85, 104, 123, 142}, 
        {  81,  99, 117, 135}, 
        {  77,  94, 111, 128}, 
        {  73,  89, 105, 122}, 
        {  69,  85, 100, 116}, 
        {  66,  80,  95, 110}, 
        {  62,  76,  90, 104}, 
        {  59,  72,  86,  99}, 
        {  56,  69,  81,  94}, 
        {  53,  65,  77,  89}, 
        {  51,  62,  73,  85}, 
        {  48,  59,  69,  80}, 
        {  46,  56,  66,  76}, 
        {  43,  53,  63,  72}, 
        {  41,  50,  59,  69}, 
        {  39,  48,  56,  65}, 
        {  37,  45,  54,  62}, 
        {  35,  43,  51,  59}, 
        {  33,  41,  48,  56}, 
        {  32,  39,  46,  53}, 
        {  30,  37,  43,  50}, 
        {  29,  35,  41,  48}, 
        {  27,  33,  39,  45}, 
        {  26,  31,  37,  43}, 
        {  24,  30,  35,  41}, 
        {  23,  28,  33,  39}, 
        {  22,  27,  32,  37}, 
        {  21,  26,  30,  35}, 
        {  20,  24,  29,  33}, 
        {  19,  23,  27,  31}, 
        {  18,  22,  26,  30}, 
        {  17,  21,  25,  28}, 
        {  16,  20,  23,  27}, 
        {  15,  19,  22,  25}, 
        {  14,  18,  21,  24}, 
        {  14,  17,  20,  23}, 
        {  13,  16,  19,  22}, 
        {  12,  15,  18,  21}, 
        {  12,  14,  17,  20}, 
        {  11,  14,  16,  19}, 
        {  11,  13,  15,  18}, 
        {  10,  12,  15,  17}, 
        {  10,  12,  14,  16}, 
        {   9,  11,  13,  15}, 
        {   9,  11,  12,  14}, 
        {   8,  10,  12,  14}, 
        {   8,   9,  11,  13}, 
        {   7,   9,  11,  12}, 
        {   7,   9,  10,  12}, 
        {   7,   8,  10,  11}, 
        {   6,   8,   9,  11}, 
        {   6,   7,   9,  10}, 
        {   6,   7,   8,   9}, 
        {   2,   2,   2,   2} 
}; 
 
 
const unsigned short AC_next_state_MPS_64[64] =     
{ 
                1,2,3,4,5,6,7,8,9,10, 
                11,12,13,14,15,16,17,18,19,20, 
                21,22,23,24,25,26,27,28,29,30, 
                31,32,33,34,35,36,37,38,39,40, 
                41,42,43,44,45,46,47,48,49,50, 
                51,52,53,54,55,56,57,58,59,60, 
                61,62,62,63 
};       
 
const unsigned short AC_next_state_LPS_64[64] =     
{ 
                 0, 0, 1, 2, 2, 4, 4, 5, 6, 7, 
                 8, 9, 9,11,11,12,13,13,15,15,  
                 16,16,18,18,19,19,21,21,22,22, 
                 23,24,24,25,26,26,27,27,28,29, 
                 29,30,30,30,31,32,32,33,33,33, 
                 34,34,35,35,35,36,36,36,37,37,  
                 37,38,38,63  
}; 
 
 
#endif  // BIARIENCOD_H