#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 |
Development mentored by Benjamin Larson
Definition in file qcelpdata.h.
#define QCELP_BANDWIDTH_EXPANSION_COEFF 0.9883 |
initial coefficient to perform bandwidth expansion on LPC
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 |
#define QCELP_RATE_HALF_CODEBOOK_RATIO 0.5 |
#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 uint16_t qcelp_vector[2] |
Definition at line 284 of file qcelpdata.h.
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}
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] |
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}}
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.
const QCELPBitmap qcelp_rate_full_bitmap[] [static] |
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 }
TIA/EIA/IS-733 2.4.6.1-2
Definition at line 459 of file qcelpdata.h.
Referenced by compute_svector().
const QCELPBitmap qcelp_rate_half_bitmap[] [static] |
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 }
TIA/EIA/IS-733 2.4.6.1-1
Definition at line 484 of file qcelpdata.h.
Referenced by compute_svector().
const QCELPBitmap qcelp_rate_octave_bitmap[] [static] |
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) }
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.
const QCELPBitmap qcelp_rate_quarter_bitmap[] [static] |
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) }
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 }
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:
{ 0, FF_ARRAY_ELEMS(qcelp_rate_octave_bitmap), FF_ARRAY_ELEMS(qcelp_rate_quarter_bitmap), FF_ARRAY_ELEMS(qcelp_rate_half_bitmap), FF_ARRAY_ELEMS(qcelp_rate_full_bitmap), }
Definition at line 276 of file qcelpdata.h.
Referenced by qcelp_decode_frame().
const QCELPBitmap* const qcelp_unpacking_bitmaps_per_rate[5] [static] |
Initial value:
{ NULL, qcelp_rate_octave_bitmap, qcelp_rate_quarter_bitmap, qcelp_rate_half_bitmap, qcelp_rate_full_bitmap, }
Definition at line 268 of file qcelpdata.h.
Referenced by qcelp_decode_frame().