libavcodec/qcelpdata.h File Reference

Data tables for the QCELP decoder. More...

#include <stddef.h>
#include <stdint.h>
#include "libavutil/common.h"

Go to the source code of this file.

Data Structures

struct  QCELPFrame
 QCELP unpacked data frame. More...
struct  QCELPBitmap

Defines

#define QCELP_OF(variable, bit, len)   {offsetof(QCELPFrame, variable), bit, len}
#define QCELP_SCALE   8192.
 the final gain scalefactor before clipping into a usable output float
#define QCELP_RATE_FULL_CODEBOOK_RATIO   .01
#define QCELP_RATE_HALF_CODEBOOK_RATIO   0.5
#define QCELP_SQRT1887   1.373681186
 sqrt(1.887) is the maximum of the pseudorandom white sequence used to generate the scaled codebook vector for bitrate 1/4.
#define QCELP_LSP_SPREAD_FACTOR   0.02
 This spread factor is used, for bitrate 1/8 and I_F_Q, to force the LSP frequencies to be at least 80 Hz apart.
#define QCELP_LSP_OCTAVE_PREDICTOR   29.0/32
 predictor coefficient for the conversion of LSP codes to LSP frequencies for 1/8 and I_F_Q
#define QCELP_BANDWIDTH_EXPANSION_COEFF   0.9883
 initial coefficient to perform bandwidth expansion on LPC

Typedefs

typedef uint16_t qcelp_vector [2]

Variables

static const float qcelp_hammsinc_table [4] = { -0.006822, 0.041249, -0.143459, 0.588863}
 pre-calculated table for hammsinc function Only half of the table is needed because of symmetry.
static const QCELPBitmap qcelp_rate_full_bitmap []
 bitmap unpacking tables for RATE_FULL
static const QCELPBitmap qcelp_rate_half_bitmap []
 bitmap unpacking tables for RATE_HALF
static const QCELPBitmap qcelp_rate_quarter_bitmap []
 bitmap unpacking tables for RATE_QUARTER
static const QCELPBitmap qcelp_rate_octave_bitmap []
 bitmap unpacking tables for RATE_OCTAVE
static const QCELPBitmap *const qcelp_unpacking_bitmaps_per_rate [5]
 position of the bitmapping data for each packet type in the QCELPContext
static const uint16_t qcelp_unpacking_bitmaps_lengths [5]
static const qcelp_vector qcelp_lspvq1 [64]
 LSP vector quantization tables in x*10000 form.
static const qcelp_vector qcelp_lspvq2 [128]
static const qcelp_vector qcelp_lspvq3 [128]
static const qcelp_vector qcelp_lspvq4 [64]
static const qcelp_vector qcelp_lspvq5 [64]
static const qcelp_vector *const qcelp_lspvq [5]
static const float qcelp_g12ga [61]
 table for computing Ga (decoded linear codebook gain magnitude)
static const int16_t qcelp_rate_full_codebook [128]
 circular codebook for rate 1 frames in x*100 form
static const int8_t qcelp_rate_half_codebook [128]
 circular codebook for rate 1/2 frames in x*2 form
static const double qcelp_rnd_fir_coefs [11]
 table for impulse response of BPF used to filter the white excitation for bitrate 1/4 synthesis


Detailed Description

Data tables for the QCELP decoder.

Author:
Reynaldo H. Verdejo Pinochet
Remarks:
FFmpeg merging spearheaded by Kenan Gillet

Development mentored by Benjamin Larson

Definition in file qcelpdata.h.


Define Documentation

#define QCELP_BANDWIDTH_EXPANSION_COEFF   0.9883

initial coefficient to perform bandwidth expansion on LPC

Note:
: 0.9883 looks like an approximation of 253/256.
TIA/EIA/IS-733 2.4.3.3.6 6

Definition at line 550 of file qcelpdata.h.

Referenced by lspf2lpc().

#define QCELP_LSP_OCTAVE_PREDICTOR   29.0/32

predictor coefficient for the conversion of LSP codes to LSP frequencies for 1/8 and I_F_Q

TIA/EIA/IS-733 2.4.3.2.7-2

Definition at line 541 of file qcelpdata.h.

Referenced by decode_lspf().

#define QCELP_LSP_SPREAD_FACTOR   0.02

This spread factor is used, for bitrate 1/8 and I_F_Q, to force the LSP frequencies to be at least 80 Hz apart.

TIA/EIA/IS-733 2.4.3.3.2

Definition at line 533 of file qcelpdata.h.

Referenced by decode_lspf().

#define QCELP_OF ( variable,
bit,
len   )     {offsetof(QCELPFrame, variable), bit, len}

Definition at line 82 of file qcelpdata.h.

#define QCELP_RATE_FULL_CODEBOOK_RATIO   .01

Definition at line 477 of file qcelpdata.h.

Referenced by compute_svector().

#define QCELP_RATE_HALF_CODEBOOK_RATIO   0.5

Definition at line 502 of file qcelpdata.h.

Referenced by compute_svector().

#define QCELP_SCALE   8192.

the final gain scalefactor before clipping into a usable output float

Definition at line 425 of file qcelpdata.h.

#define QCELP_SQRT1887   1.373681186

sqrt(1.887) is the maximum of the pseudorandom white sequence used to generate the scaled codebook vector for bitrate 1/4.

TIA/EIA/IS-733 2.4.8.1.2

Definition at line 511 of file qcelpdata.h.

Referenced by compute_svector().


Typedef Documentation

typedef uint16_t qcelp_vector[2]

Definition at line 284 of file qcelpdata.h.


Variable Documentation

const float qcelp_g12ga[61] [static]

Initial value:

 {
    1.000/QCELP_SCALE,   1.125/QCELP_SCALE,   1.250/QCELP_SCALE,   1.375/QCELP_SCALE,
    1.625/QCELP_SCALE,   1.750/QCELP_SCALE,   2.000/QCELP_SCALE,   2.250/QCELP_SCALE,
    2.500/QCELP_SCALE,   2.875/QCELP_SCALE,   3.125/QCELP_SCALE,   3.500/QCELP_SCALE,
    4.000/QCELP_SCALE,   4.500/QCELP_SCALE,   5.000/QCELP_SCALE,   5.625/QCELP_SCALE,
    6.250/QCELP_SCALE,   7.125/QCELP_SCALE,   8.000/QCELP_SCALE,   8.875/QCELP_SCALE,
   10.000/QCELP_SCALE,  11.250/QCELP_SCALE,  12.625/QCELP_SCALE,  14.125/QCELP_SCALE,
   15.875/QCELP_SCALE,  17.750/QCELP_SCALE,  20.000/QCELP_SCALE,  22.375/QCELP_SCALE,
   25.125/QCELP_SCALE,  28.125/QCELP_SCALE,  31.625/QCELP_SCALE,  35.500/QCELP_SCALE,
   39.750/QCELP_SCALE,  44.625/QCELP_SCALE,  50.125/QCELP_SCALE,  56.250/QCELP_SCALE,
   63.125/QCELP_SCALE,  70.750/QCELP_SCALE,  79.375/QCELP_SCALE,  89.125/QCELP_SCALE,
  100.000/QCELP_SCALE, 112.250/QCELP_SCALE, 125.875/QCELP_SCALE, 141.250/QCELP_SCALE,
  158.500/QCELP_SCALE, 177.875/QCELP_SCALE, 199.500/QCELP_SCALE, 223.875/QCELP_SCALE,
  251.250/QCELP_SCALE, 281.875/QCELP_SCALE, 316.250/QCELP_SCALE, 354.875/QCELP_SCALE,
  398.125/QCELP_SCALE, 446.625/QCELP_SCALE, 501.125/QCELP_SCALE, 562.375/QCELP_SCALE,
  631.000/QCELP_SCALE, 708.000/QCELP_SCALE, 794.375/QCELP_SCALE, 891.250/QCELP_SCALE,
 1000.000/QCELP_SCALE}
table for computing Ga (decoded linear codebook gain magnitude)

Note:
The table could fit in int16_t in x*8 form, but it seems to be slower on x86
TIA/EIA/IS-733 2.4.6.2.1-3

Definition at line 436 of file qcelpdata.h.

Referenced by decode_gain_and_index().

const float qcelp_hammsinc_table[4] = { -0.006822, 0.041249, -0.143459, 0.588863} [static]

pre-calculated table for hammsinc function Only half of the table is needed because of symmetry.

TIA/EIA/IS-733 2.4.5.2-2/3

Definition at line 74 of file qcelpdata.h.

Referenced by do_pitchfilter().

const qcelp_vector* const qcelp_lspvq[5] [static]

Initial value:

Definition at line 414 of file qcelpdata.h.

Referenced by decode_lspf().

const qcelp_vector qcelp_lspvq1[64] [static]

Initial value:

 {
{ 327, 118},{ 919, 111},{ 427, 440},{1327, 185},
{ 469,  50},{1272,  91},{ 892,  59},{1771, 193},
{ 222, 158},{1100, 127},{ 827,  55},{ 978, 791},
{ 665,  47},{ 700,1401},{ 670, 859},{1913,1048},
{ 471, 215},{1046, 125},{ 645, 298},{1599, 160},
{ 593,  39},{1187, 462},{ 749, 341},{1520, 511},
{ 290, 792},{ 909, 362},{ 753,  81},{1111,1058},
{ 519, 253},{ 828, 839},{ 685, 541},{1421,1258},
{ 386, 130},{ 962, 119},{ 542, 387},{1431, 185},
{ 526,  51},{1175, 260},{ 831, 167},{1728, 510},
{ 273, 437},{1172, 113},{ 771, 144},{1122, 751},
{ 619, 119},{ 492,1276},{ 658, 695},{1882, 615},
{ 415, 200},{1018,  88},{ 681, 339},{1436, 325},
{ 555, 122},{1042, 485},{ 826, 345},{1374, 743},
{ 383,1018},{1005, 358},{ 704,  86},{1301, 586},
{ 597, 241},{ 832, 621},{ 555, 573},{1504, 839}}
LSP vector quantization tables in x*10000 form.

TIA/EIA/IS-733 tables 2.4.3.2.6.3-1 through 2.4.3.2.6.3-5

Definition at line 292 of file qcelpdata.h.

const qcelp_vector qcelp_lspvq2[128] [static]

Definition at line 310 of file qcelpdata.h.

const qcelp_vector qcelp_lspvq3[128] [static]

Definition at line 344 of file qcelpdata.h.

const qcelp_vector qcelp_lspvq4[64] [static]

Initial value:

 {
{ 348, 311},{ 812,1145},{ 552, 461},{1826, 263},
{ 601, 675},{1730, 172},{1523, 193},{2449, 277},
{ 334, 668},{ 805,1441},{1319, 207},{1684, 910},
{ 582,1318},{1403,1098},{ 979, 832},{2700,1359},
{ 624, 228},{1292, 979},{ 800, 195},{2226, 285},
{ 730, 862},{1537, 601},{1115, 509},{2720, 354},
{ 218,1167},{1212,1538},{1074, 247},{1674,1710},
{ 322,2142},{1263, 777},{ 981, 556},{2119,1710},
{ 193, 596},{1035, 957},{ 694, 397},{1997, 253},
{ 743, 603},{1584, 321},{1346, 346},{2221, 708},
{ 451, 732},{1040,1415},{1184, 230},{1853, 919},
{ 310,1661},{1625, 706},{ 856, 843},{2902, 702},
{ 467, 348},{1108,1048},{ 859, 306},{1964, 463},
{ 560,1013},{1425, 533},{1142, 634},{2391, 879},
{ 397,1084},{1345,1700},{ 976, 248},{1887,1189},
{ 644,2087},{1262, 603},{ 877, 550},{2203,1307}}

Definition at line 378 of file qcelpdata.h.

const qcelp_vector qcelp_lspvq5[64] [static]

Initial value:

 {
{ 360, 222},{ 820,1097},{ 601, 319},{1656, 198},
{ 604, 513},{1552, 141},{1391, 155},{2474, 261},
{ 269, 785},{1463, 646},{1123, 191},{2015, 223},
{ 785, 844},{1202,1011},{ 980, 807},{3014, 793},
{ 570, 180},{1135,1382},{ 778, 256},{1901, 179},
{ 807, 622},{1461, 458},{1231, 178},{2028, 821},
{ 387, 927},{1496,1004},{ 888, 392},{2246, 341},
{ 295,1462},{1156, 694},{1022, 473},{2226,1364},
{ 210, 478},{1029,1020},{ 722, 181},{1730, 251},
{ 730, 488},{1465, 293},{1303, 326},{2595, 387},
{ 458, 584},{1569, 742},{1029, 173},{1910, 495},
{ 605,1159},{1268, 719},{ 973, 646},{2872, 428},
{ 443, 334},{ 835,1465},{ 912, 138},{1716, 442},
{ 620, 778},{1316, 450},{1186, 335},{1446,1665},
{ 486,1050},{1675,1019},{ 880, 278},{2214, 202},
{ 539,1564},{1142, 533},{ 984, 391},{2130,1089}}

Definition at line 396 of file qcelpdata.h.

bitmap unpacking tables for RATE_FULL

TIA/EIA/IS-733 Table 2.4.7.1-1

Definition at line 89 of file qcelpdata.h.

const int16_t qcelp_rate_full_codebook[128] [static]

Initial value:

 {
     10,  -65,  -59,   12,  110,   34, -134,  157,
    104,  -84,  -34, -115,   23, -101,    3,   45,
   -101,  -16,  -59,   28,  -45,  134,  -67,   22,
     61,  -29,  226,  -26,  -55, -179,  157,  -51,
   -220,  -93,  -37,   60,  118,   74,  -48,  -95,
   -181,  111,   36,  -52, -215,   78, -112,   39,
    -17,  -47, -223,   19,   12,  -98, -142,  130,
     54, -127,   21,  -12,   39,  -48,   12,  128,
      6, -167,   82, -102,  -79,   55,  -44,   48,
    -20,  -53,    8,  -61,   11,  -70, -157, -168,
     20,  -56,  -74,   78,   33,  -63, -173,   -2,
    -75,  -53, -146,   77,   66,  -29,    9,  -75,
     65,  119,  -43,   76,  233,   98,  125, -156,
    -27,   78,   -9,  170,  176,  143, -148,   -7,
     27, -136,    5,   27,   18,  139,  204,    7,
   -184, -197,   52,   -3,   78, -189,    8,  -65
}
circular codebook for rate 1 frames in x*100 form

TIA/EIA/IS-733 2.4.6.1-2

Definition at line 459 of file qcelpdata.h.

Referenced by compute_svector().

bitmap unpacking tables for RATE_HALF

TIA/EIA/IS-733 Table 2.4.7.2-1

Definition at line 176 of file qcelpdata.h.

const int8_t qcelp_rate_half_codebook[128] [static]

Initial value:

 {
     0, -4,  0, -3,  0,  0,  0,  0,
     0,  0,  0,  0,  0,  0,  0,  0,
     0, -3, -2,  0,  0,  0,  0,  0,
     0,  0,  0,  0,  0,  0,  0,  5,
     0,  0,  0,  0,  0,  0,  4,  0,
     0,  3,  2,  0,  3,  4,  0,  0,
     0,  0,  0,  0,  0,  0,  0,  0,
     0,  0,  0,  0,  0,  3,  0,  0,
    -3,  3,  0,  0, -2,  0,  3,  0,
     0,  0,  0,  0,  0,  0, -5,  0,
     0,  0,  0,  3,  0,  0,  0,  3,
     0,  0,  0,  0,  0,  0,  0,  4,
     0,  0,  0,  0,  0,  0,  0,  0,
     0,  3,  6, -3, -4,  0, -3, -3,
     3, -3,  0,  0,  0,  0,  0,  0,
     0,  0,  0,  0,  0,  0,  0,  0
}
circular codebook for rate 1/2 frames in x*2 form

TIA/EIA/IS-733 2.4.6.1-1

Definition at line 484 of file qcelpdata.h.

Referenced by compute_svector().

Initial value:

 {
                                
    QCELP_OF(cbsign[15], 3, 1), 
    QCELP_OF(lspv   [0], 0, 1), 
    QCELP_OF(lspv   [1], 0, 1), 
    QCELP_OF(lspv   [2], 0, 1), 
    QCELP_OF(cbsign[15], 2, 1), 
    QCELP_OF(lspv   [3], 0, 1), 
    QCELP_OF(lspv   [4], 0, 1), 
    QCELP_OF(lspv   [5], 0, 1), 
    QCELP_OF(cbsign[15], 1, 1), 
    QCELP_OF(lspv   [6], 0, 1), 
    QCELP_OF(lspv   [7], 0, 1), 
    QCELP_OF(lspv   [8], 0, 1), 
    QCELP_OF(cbsign[15], 0, 1), 
    QCELP_OF(lspv   [9], 0, 1), 
    QCELP_OF(cbgain [0], 0, 2), 
    QCELP_OF(reserved,   0, 4)  
}
bitmap unpacking tables for RATE_OCTAVE

trick: CBSEED is written into QCELPContext.cbsign[15], which is not used for RATE_OCTAVE. CBSEED is only used to ensure the occurrence of random bit patterns in the 16 first bits that are used as the seed.

TIA/EIA/IS-733 Table 2.4.7.4-1

Definition at line 244 of file qcelpdata.h.

Initial value:

 {
                               
    QCELP_OF(lspv  [2], 0, 3), 
    QCELP_OF(lspv  [1], 0, 7), 
    QCELP_OF(lspv  [0], 0, 6), 
    QCELP_OF(lspv  [4], 0, 6), 
    QCELP_OF(lspv  [3], 0, 6), 
    QCELP_OF(lspv  [2], 3, 4), 
    QCELP_OF(cbgain[3], 0, 4), 
    QCELP_OF(cbgain[2], 0, 4), 
    QCELP_OF(cbgain[1], 0, 4), 
    QCELP_OF(cbgain[0], 0, 4), 
    QCELP_OF(reserved,  0, 2), 
    QCELP_OF(cbgain[4], 0, 4)  
}
bitmap unpacking tables for RATE_QUARTER

TIA/EIA/IS-733 Table 2.4.7.3-1

Definition at line 218 of file qcelpdata.h.

const double qcelp_rnd_fir_coefs[11] [static]

Initial value:

 {
  -1.344519e-1, 1.735384e-2, -6.905826e-2, 2.434368e-2,
  -8.210701e-2, 3.041388e-2, -9.251384e-2, 3.501983e-2,
  -9.918777e-2, 3.749518e-2,  8.985137e-1
}
table for impulse response of BPF used to filter the white excitation for bitrate 1/4 synthesis

Only half the tables are needed because of symmetry.

TIA/EIA/IS-733 2.4.8.1.2-1.1

Definition at line 521 of file qcelpdata.h.

Referenced by compute_svector().

const uint16_t qcelp_unpacking_bitmaps_lengths[5] [static]

Initial value:

position of the bitmapping data for each packet type in the QCELPContext

Definition at line 268 of file qcelpdata.h.

Referenced by qcelp_decode_frame().


Generated on Fri Oct 26 02:39:46 2012 for FFmpeg by  doxygen 1.5.8