Completely removed the old allocation table.
[opus.git] / libcelt / modes.h
index fdb4850..816a10b 100644 (file)
@@ -1,5 +1,7 @@
-/* (C) 2007-2008 Jean-Marc Valin, CSIRO
-*/
+/* Copyright (c) 2007-2008 CSIRO
+   Copyright (c) 2007-2009 Xiph.Org Foundation
+   Copyright (c) 2008 Gregory Maxwell 
+   Written by Jean-Marc Valin and Gregory Maxwell */
 /*
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions
 #include "celt.h"
 #include "arch.h"
 #include "mdct.h"
-#include "psy.h"
+#include "pitch.h"
+
+#define MAX_CONFIG_SIZES 5
+
+#define CELT_BITSTREAM_VERSION 0x8000000c
+
+#ifdef STATIC_MODES
+#include "static_modes.h"
+#endif
 
 #define MAX_PERIOD 1024
 
+#ifndef MCHANNELS
+# ifdef DISABLE_STEREO
+#  define MCHANNELS(mode) (1)
+# else
+#  define MCHANNELS(mode) ((mode)->nbChannels)
+# endif
+#endif
+
+#ifndef CHANNELS
+# ifdef DISABLE_STEREO
+#  define CHANNELS(_C) (1)
+# else
+#  define CHANNELS(_C) (_C)
+# endif
+#endif
+
+#ifndef OVERLAP
+#define OVERLAP(mode) ((mode)->overlap)
+#endif
+
+#ifndef FRAMESIZE
+#define FRAMESIZE(mode) ((mode)->mdctSize)
+#endif
+
 /** Mode definition (opaque)
  @brief Mode definition 
  */
 struct CELTMode {
-   celt_uint32_t marker_start;
-   celt_int32_t Fs;
+   celt_uint32 marker_start;
+   celt_int32 Fs;
    int          overlap;
    int          mdctSize;
-   int          nbMdctBlocks;
-   int          nbChannels;
-   
+
    int          nbEBands;
-   int          nbPBands;
    int          pitchEnd;
    
-   const int   *eBands;   /**< Definition for each "pseudo-critical band" */
-   const int   *pBands;   /**< Definition of the bands used for the pitch */
+   const celt_int16   *eBands;   /**< Definition for each "pseudo-critical band" */
    
-   celt_word16_t ePredCoef;/**< Prediction coefficient for the energy encoding */
+   celt_word16 ePredCoef;/**< Prediction coefficient for the energy encoding */
    
    int          nbAllocVectors; /**< Number of lines in the matrix below */
-   const int   *allocVectors;   /**< Number of bits in each band for several rates */
+   const unsigned char   *allocVectors;   /**< Number of bits in each band for several rates */
    
-   const int * const *bits; /**< Cache for pulses->bits mapping in each band */
+   const celt_int16 * const **bits;
+   const celt_int16 * const *(_bits[MAX_CONFIG_SIZES]); /**< Cache for pulses->bits mapping in each band */
 
    /* Stuff that could go in the {en,de}coder, but we save space this way */
-   mdct_lookup mdct;
-   
-   const celt_word16_t *window;
+   mdct_lookup mdct[MAX_CONFIG_SIZES];
+
+   const celt_word16 *window;
 
-   struct PsyDecay psy;
+   int         nbShortMdcts;
+   int         shortMdctSize;
 
-   celt_uint32_t marker_end;
+   int *prob;
+   const celt_int16 *logN;
+   celt_uint32 marker_end;
 };
 
 int check_mode(const CELTMode *mode);