---
Somebody please doublecheck that I was not overeager with the unused
functions in those *celp*.c files, possibly they were intended to
fulfill some sort of purpose at some future point in time.
libavcodec/acelp_pitch_delay.c | 33 ----
libavcodec/acelp_pitch_delay.h | 81 ----------
libavcodec/acelp_vectors.c | 20 ---
libavcodec/acelp_vectors.h | 31 ----
libavcodec/amrnbdec.c | 2 +-
libavcodec/celp_math.c | 85 ----------
libavcodec/g729data.h | 278 ---------------------------------
libavcodec/g729dec.c | 331 ----------------------------------------
libavcodec/lsp.c | 4 -
9 files changed, 1 insertions(+), 864 deletions(-)
delete mode 100644 libavcodec/g729data.h
delete mode 100644 libavcodec/g729dec.c
diff --git a/libavcodec/acelp_pitch_delay.c b/libavcodec/acelp_pitch_delay.c
index 2b791b5..7f71eae 100644
--- a/libavcodec/acelp_pitch_delay.c
+++ b/libavcodec/acelp_pitch_delay.c
@@ -88,39 +88,6 @@ void ff_acelp_update_past_gain(
quant_energy[0] = (6165 * ((ff_log2(gain_corr_factor) >> 2) - (13 <<
13))) >> 13;
}
-int16_t ff_acelp_decode_gain_code(
- DSPContext *dsp,
- int gain_corr_factor,
- const int16_t* fc_v,
- int mr_energy,
- const int16_t* quant_energy,
- const int16_t* ma_prediction_coeff,
- int subframe_size,
- int ma_pred_order)
-{
- int i;
-
- mr_energy <<= 10;
-
- for(i=0; i<ma_pred_order; i++)
- mr_energy += quant_energy[i] * ma_prediction_coeff[i];
-
-#ifdef G729_BITEXACT
- mr_energy += (((-6165LL * ff_log2(dsp->scalarproduct_int16(fc_v, fc_v,
subframe_size, 0))) >> 3) & ~0x3ff);
-
- mr_energy = (5439 * (mr_energy >> 15)) >> 8; // (0.15) = (0.15)
* (7.23)
-
- return bidir_sal(
- ((ff_exp2(mr_energy & 0x7fff) + 16) >> 5) * (gain_corr_factor
>> 1),
- (mr_energy >> 15) - 25
- );
-#else
- mr_energy = gain_corr_factor * exp(M_LN10 / (20 << 23) * mr_energy) /
- sqrt(dsp->scalarproduct_int16(fc_v, fc_v, subframe_size, 0));
- return mr_energy >> 12;
-#endif
-}
-
float ff_amr_set_fixed_gain(float fixed_gain_factor, float fixed_mean_energy,
float *prediction_error, float energy_mean,
const float *pred_table)
diff --git a/libavcodec/acelp_pitch_delay.h b/libavcodec/acelp_pitch_delay.h
index e5410bb..5c232d2 100644
--- a/libavcodec/acelp_pitch_delay.h
+++ b/libavcodec/acelp_pitch_delay.h
@@ -137,87 +137,6 @@ void ff_acelp_update_past_gain(
int erasure);
/**
- * @brief Decode the adaptive codebook gain and add
- * correction (4.1.5 and 3.9.1 of G.729).
- * @param dsp initialized dsputil context
- * @param gain_corr_factor gain correction factor (2.13)
- * @param fc_v fixed-codebook vector (2.13)
- * @param mr_energy mean innovation energy and fixed-point correction (7.13)
- * @param[in,out] quant_energy past quantized energies (5.10)
- * @param subframe_size length of subframe
- *
- * @return quantized fixed-codebook gain (14.1)
- *
- * The routine implements equations 69, 66 and 71 of the G.729 specification
(3.9.1)
- *
- * Em - mean innovation energy (dB, constant, depends on decoding
algorithm)
- * Ep - mean-removed predicted energy (dB)
- * Er - mean-removed innovation energy (dB)
- * Ei - mean energy of the fixed-codebook contribution (dB)
- * N - subframe_size
- * M - MA (Moving Average) prediction order
- * gc - fixed-codebook gain
- * gc_p - predicted fixed-codebook gain
- *
- * Fixed codebook gain is computed using predicted gain gc_p and
- * correction factor gain_corr_factor as shown below:
- *
- * gc = gc_p * gain_corr_factor
- *
- * The predicted fixed codebook gain gc_p is found by predicting
- * the energy of the fixed-codebook contribution from the energy
- * of previous fixed-codebook contributions.
- *
- * mean = 1/N * sum(i,0,N){ fc_v[i] * fc_v[i] }
- *
- * Ei = 10log(mean)
- *
- * Er = 10log(1/N * gc^2 * mean) - Em = 20log(gc) + Ei - Em
- *
- * Replacing Er with Ep and gc with gc_p we will receive:
- *
- * Ep = 10log(1/N * gc_p^2 * mean) - Em = 20log(gc_p) + Ei - Em
- *
- * and from above:
- *
- * gc_p = 10^((Ep - Ei + Em) / 20)
- *
- * Ep is predicted using past energies and prediction coefficients:
- *
- * Ep = sum(i,0,M){ ma_prediction_coeff[i] * quant_energy[i] }
- *
- * gc_p in fixed-point arithmetic is calculated as following:
- *
- * mean = 1/N * sum(i,0,N){ (fc_v[i] / 2^13) * (fc_v[i] / 2^13) } =
- * = 1/N * sum(i,0,N) { fc_v[i] * fc_v[i] } / 2^26
- *
- * Ei = 10log(mean) = -10log(N) - 10log(2^26) +
- * + 10log(sum(i,0,N) { fc_v[i] * fc_v[i] })
- *
- * Ep - Ei + Em = Ep + Em + 10log(N) + 10log(2^26) -
- * - 10log(sum(i,0,N) { fc_v[i] * fc_v[i] }) =
- * = Ep + mr_energy - 10log(sum(i,0,N) { fc_v[i] * fc_v[i] })
- *
- * gc_p = 10 ^ ((Ep - Ei + Em) / 20) =
- * = 2 ^ (3.3219 * (Ep - Ei + Em) / 20) = 2 ^ (0.166 * (Ep - Ei + Em))
- *
- * where
- *
- * mr_energy = Em + 10log(N) + 10log(2^26)
- *
- * @remark The routine is used in G.729 and AMR (all modes).
- */
-int16_t ff_acelp_decode_gain_code(
- DSPContext *dsp,
- int gain_corr_factor,
- const int16_t* fc_v,
- int mr_energy,
- const int16_t* quant_energy,
- const int16_t* ma_prediction_coeff,
- int subframe_size,
- int max_pred_order);
-
-/**
* Calculate fixed gain (part of section 6.1.3 of AMR spec)
*
* @param fixed_gain_factor gain correction factor
diff --git a/libavcodec/acelp_vectors.c b/libavcodec/acelp_vectors.c
index 25a6ff2..b7c05e7 100644
--- a/libavcodec/acelp_vectors.c
+++ b/libavcodec/acelp_vectors.c
@@ -48,26 +48,6 @@ const uint8_t ff_fc_2pulses_9bits_track1_gray[16] =
28, 26,
};
-const uint8_t ff_fc_2pulses_9bits_track2_gray[32] =
-{
- 0, 2,
- 5, 4,
- 12, 10,
- 7, 9,
- 25, 24,
- 20, 22,
- 14, 15,
- 19, 17,
- 36, 31,
- 21, 26,
- 1, 6,
- 16, 11,
- 27, 29,
- 32, 30,
- 39, 37,
- 34, 35,
-};
-
const uint8_t ff_fc_4pulses_8bits_tracks_13[16] =
{
0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75,
diff --git a/libavcodec/acelp_vectors.h b/libavcodec/acelp_vectors.h
index 07d1000..2c5d319 100644
--- a/libavcodec/acelp_vectors.h
+++ b/libavcodec/acelp_vectors.h
@@ -82,37 +82,6 @@ extern const uint8_t ff_fc_2pulses_9bits_track1[16];
extern const uint8_t ff_fc_2pulses_9bits_track1_gray[16];
/**
- * Track|Pulse| Positions
- * -----------------------------------------
- * 2 | 1 | 0, 7, 14, 20, 27, 34, 1, 21
- * | | 2, 9, 15, 22, 29, 35, 6, 26
- * | | 4,10, 17, 24, 30, 37, 11, 31
- * | | 5,12, 19, 25, 32, 39, 16, 36
- * -----------------------------------------
- *
- * @remark Track in the table should be read top-to-bottom, left-to-right.
- *
- * @note (EE.1) This table (from the reference code) does not comply with
- * the specification.
- * The specification contains the following table:
- *
- * Track|Pulse| Positions
- * -----------------------------------------
- * 2 | 1 | 0, 5, 10, 15, 20, 25, 30, 35
- * | | 1, 6, 11, 16, 21, 26, 31, 36
- * | | 2, 7, 12, 17, 22, 27, 32, 37
- * | | 4, 9, 14, 19, 24, 29, 34, 39
- *
- * -----------------------------------------
- *
- * @note (EE.2) Reference G.729D code also uses gray decoding for each
- * pulse index before looking up the value in the table.
- *
- * Used in G.729 @@6.4k (with gray coding)
- */
-extern const uint8_t ff_fc_2pulses_9bits_track2_gray[32];
-
-/**
* b60 hamming windowed sinc function coefficients
*/
extern const float ff_b60_sinc[61];
diff --git a/libavcodec/amrnbdec.c b/libavcodec/amrnbdec.c
index 1c90aad..6680333 100644
--- a/libavcodec/amrnbdec.c
+++ b/libavcodec/amrnbdec.c
@@ -83,7 +83,7 @@
/** Maximum sharpening factor
*
* The specification says 0.8, which should be 13107, but the reference C code
- * uses 13017 instead. (Amusingly the same applies to SHARP_MAX in g729dec.c.)
+ * uses 13017 instead.
*/
#define SHARP_MAX 0.79449462890625
diff --git a/libavcodec/celp_math.c b/libavcodec/celp_math.c
index 4ab20ad..8d36d4e 100644
--- a/libavcodec/celp_math.c
+++ b/libavcodec/celp_math.c
@@ -27,82 +27,6 @@
#include "avcodec.h"
#include "celp_math.h"
-#ifdef G729_BITEXACT
-/**
- * Cosine table: base_cos[i] = (1<<15) * cos(i*PI/64)
- */
-static const int16_t base_cos[64] =
-{
- 32767, 32729, 32610, 32413, 32138, 31786, 31357, 30853,
- 30274, 29622, 28899, 28106, 27246, 26320, 25330, 24279,
- 23170, 22006, 20788, 19520, 18205, 16846, 15447, 14010,
- 12540, 11039, 9512, 7962, 6393, 4808, 3212, 1608,
- 0, -1608, -3212, -4808, -6393, -7962, -9512, -11039,
- -12540, -14010, -15447, -16846, -18205, -19520, -20788, -22006,
- -23170, -24279, -25330, -26320, -27246, -28106, -28899, -29622,
- -30274, -30853, -31357, -31786, -32138, -32413, -32610, -32729
-};
-
-/**
- * Slope used to compute cos(x)
- *
- * cos(ind*64+offset) = base_cos[ind]+offset*slope_cos[ind]
- * values multiplied by 1<<19
- */
-static const int16_t slope_cos[64] =
-{
- -632, -1893, -3150, -4399, -5638, -6863, -8072, -9261,
- -10428, -11570, -12684, -13767, -14817, -15832, -16808, -17744,
- -18637, -19486, -20287, -21039, -21741, -22390, -22986, -23526,
- -24009, -24435, -24801, -25108, -25354, -25540, -25664, -25726,
- -25726, -25664, -25540, -25354, -25108, -24801, -24435, -24009,
- -23526, -22986, -22390, -21741, -21039, -20287, -19486, -18637,
- -17744, -16808, -15832, -14817, -13767, -12684, -11570, -10428,
- -9261, -8072, -6863, -5638, -4399, -3150, -1893, -632
-};
-
-/**
- * Table used to compute exp2(x)
- *
- * tab_exp2[i] = (1<<14) * exp2(i/32) = 2^(i/32) i=0..32
- */
-static const uint16_t tab_exp2[33] =
-{
- 16384, 16743, 17109, 17484, 17867, 18258, 18658, 19066, 19484, 19911,
- 20347, 20792, 21247, 21713, 22188, 22674, 23170, 23678, 24196, 24726,
- 25268, 25821, 26386, 26964, 27554, 28158, 28774, 29405, 30048, 30706,
- 31379, 32066, 32767
-};
-
-int16_t ff_cos(uint16_t arg)
-{
- uint8_t offset= arg;
- uint8_t ind = arg >> 8;
-
- assert(arg < 0x4000);
-
- return FFMAX(base_cos[ind] + ((slope_cos[ind] * offset) >> 12), -0x8000);
-}
-
-int ff_exp2(uint16_t power)
-{
- uint16_t frac_x0;
- uint16_t frac_dx;
- int result;
-
- assert(power <= 0x7fff);
-
- frac_x0 = power >> 10;
- frac_dx = (power & 0x03ff) << 5;
-
- result = tab_exp2[frac_x0] << 15;
- result += frac_dx * (tab_exp2[frac_x0+1] - tab_exp2[frac_x0]);
-
- return result >> 10;
-}
-
-#else // G729_BITEXACT
-
/**
* Cosine table: base_cos[i] = (1<<15) * cos(i*PI/64)
*/
@@ -154,8 +78,6 @@ int ff_exp2(uint16_t power)
return result + ((result*(power&31)*89)>>22);
}
-#endif // else G729_BITEXACT
-
/**
* Table used to compute log2(x)
*
@@ -163,17 +85,10 @@ int ff_exp2(uint16_t power)
*/
static const uint16_t tab_log2[33] =
{
-#ifdef G729_BITEXACT
- 0, 1455, 2866, 4236, 5568, 6863, 8124, 9352,
- 10549, 11716, 12855, 13967, 15054, 16117, 17156, 18172,
- 19167, 20142, 21097, 22033, 22951, 23852, 24735, 25603,
- 26455, 27291, 28113, 28922, 29716, 30497, 31266, 32023, 32767,
-#else
4, 1459, 2870, 4240, 5572, 6867, 8127, 9355,
10552, 11719, 12858, 13971, 15057, 16120, 17158, 18175,
19170, 20145, 21100, 22036, 22954, 23854, 24738, 25605,
26457, 27294, 28116, 28924, 29719, 30500, 31269, 32025, 32769,
-#endif
};
int ff_log2(uint32_t value)
diff --git a/libavcodec/g729data.h b/libavcodec/g729data.h
deleted file mode 100644
index 48010a7..0000000
--- a/libavcodec/g729data.h
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * data for G.729 decoder
- * Copyright (c) 2007 Vladimir Voroshilov
- *
- * This file is part of Libav.
- *
- * Libav 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.1 of the License, or (at your option) any later version.
- *
- * Libav 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 Libav; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef AVCODEC_G729DATA_H
-#define AVCODEC_G729DATA_H
-
-#include <stdint.h>
-
-#define MA_NP 4 ///< Moving Average (MA) prediction order
-
-#define VQ_1ST_BITS 7 ///< first stage vector of quantizer (size in
bits)
-#define VQ_2ND_BITS 5 ///< second stage vector of quantizer (size in
bits)
-
-#define GC_1ST_IDX_BITS_8K 3 ///< gain codebook (first stage) index, 8k
mode (size in bits)
-#define GC_2ND_IDX_BITS_8K 4 ///< gain codebook (second stage) index, 8k
mode (size in bits)
-
-#define GC_1ST_IDX_BITS_6K4 3 ///< gain codebook (first stage) index, 6.4k
mode (size in bits)
-#define GC_2ND_IDX_BITS_6K4 3 ///< gain codebook (second stage) index, 6.4k
mode (size in bits)
-
-/**
- * first stage LSP codebook
- * (10-dimensional, with 128 entries (3.24 of G.729)
- */
-static const int16_t cb_lsp_1st[1<<VQ_1ST_BITS][10] = { /* (2.13) */
- { 1486, 2168, 3751, 9074, 12134, 13944, 17983, 19173, 21190, 21820},
- { 1730, 2640, 3450, 4870, 6126, 7876, 15644, 17817, 20294, 21902},
- { 1568, 2256, 3088, 4874, 11063, 13393, 18307, 19293, 21109, 21741},
- { 1733, 2512, 3357, 4708, 6977, 10296, 17024, 17956, 19145, 20350},
- { 1744, 2436, 3308, 8731, 10432, 12007, 15614, 16639, 21359, 21913},
- { 1786, 2369, 3372, 4521, 6795, 12963, 17674, 18988, 20855, 21640},
- { 1631, 2433, 3361, 6328, 10709, 12013, 13277, 13904, 19441, 21088},
- { 1489, 2364, 3291, 6250, 9227, 10403, 13843, 15278, 17721, 21451},
- { 1869, 2533, 3475, 4365, 9152, 14513, 15908, 17022, 20611, 21411},
- { 2070, 3025, 4333, 5854, 7805, 9231, 10597, 16047, 20109, 21834},
- { 1910, 2673, 3419, 4261, 11168, 15111, 16577, 17591, 19310, 20265},
- { 1141, 1815, 2624, 4623, 6495, 9588, 13968, 16428, 19351, 21286},
- { 2192, 3171, 4707, 5808, 10904, 12500, 14162, 15664, 21124, 21789},
- { 1286, 1907, 2548, 3453, 9574, 11964, 15978, 17344, 19691, 22495},
- { 1921, 2720, 4604, 6684, 11503, 12992, 14350, 15262, 16997, 20791},
- { 2052, 2759, 3897, 5246, 6638, 10267, 15834, 16814, 18149, 21675},
- { 1798, 2497, 5617, 11449, 13189, 14711, 17050, 18195, 20307, 21182},
- { 1009, 1647, 2889, 5709, 9541, 12354, 15231, 18494, 20966, 22033},
- { 3016, 3794, 5406, 7469, 12488, 13984, 15328, 16334, 19952, 20791},
- { 2203, 3040, 3796, 5442, 11987, 13512, 14931, 16370, 17856, 18803},
- { 2912, 4292, 7988, 9572, 11562, 13244, 14556, 16529, 20004, 21073},
- { 2861, 3607, 5923, 7034, 9234, 12054, 13729, 18056, 20262, 20974},
- { 3069, 4311, 5967, 7367, 11482, 12699, 14309, 16233, 18333, 19172},
- { 2434, 3661, 4866, 5798, 10383, 11722, 13049, 15668, 18862, 19831},
- { 2020, 2605, 3860, 9241, 13275, 14644, 16010, 17099, 19268, 20251},
- { 1877, 2809, 3590, 4707, 11056, 12441, 15622, 17168, 18761, 19907},
- { 2107, 2873, 3673, 5799, 13579, 14687, 15938, 17077, 18890, 19831},
- { 1612, 2284, 2944, 3572, 8219, 13959, 15924, 17239, 18592, 20117},
- { 2420, 3156, 6542, 10215, 12061, 13534, 15305, 16452, 18717, 19880},
- { 1667, 2612, 3534, 5237, 10513, 11696, 12940, 16798, 18058, 19378},
- { 2388, 3017, 4839, 9333, 11413, 12730, 15024, 16248, 17449, 18677},
- { 1875, 2786, 4231, 6320, 8694, 10149, 11785, 17013, 18608, 19960},
- { 679, 1411, 4654, 8006, 11446, 13249, 15763, 18127, 20361, 21567},
- { 1838, 2596, 3578, 4608, 5650, 11274, 14355, 15886, 20579, 21754},
- { 1303, 1955, 2395, 3322, 12023, 13764, 15883, 18077, 20180, 21232},
- { 1438, 2102, 2663, 3462, 8328, 10362, 13763, 17248, 19732, 22344},
- { 860, 1904, 6098, 7775, 9815, 12007, 14821, 16709, 19787, 21132},
- { 1673, 2723, 3704, 6125, 7668, 9447, 13683, 14443, 20538, 21731},
- { 1246, 1849, 2902, 4508, 7221, 12710, 14835, 16314, 19335, 22720},
- { 1525, 2260, 3862, 5659, 7342, 11748, 13370, 14442, 18044, 21334},
- { 1196, 1846, 3104, 7063, 10972, 12905, 14814, 17037, 19922, 22636},
- { 2147, 3106, 4475, 6511, 8227, 9765, 10984, 12161, 18971, 21300},
- { 1585, 2405, 2994, 4036, 11481, 13177, 14519, 15431, 19967, 21275},
- { 1778, 2688, 3614, 4680, 9465, 11064, 12473, 16320, 19742, 20800},
- { 1862, 2586, 3492, 6719, 11708, 13012, 14364, 16128, 19610, 20425},
- { 1395, 2156, 2669, 3386, 10607, 12125, 13614, 16705, 18976, 21367},
- { 1444, 2117, 3286, 6233, 9423, 12981, 14998, 15853, 17188, 21857},
- { 2004, 2895, 3783, 4897, 6168, 7297, 12609, 16445, 19297, 21465},
- { 1495, 2863, 6360, 8100, 11399, 14271, 15902, 17711, 20479, 22061},
- { 2484, 3114, 5718, 7097, 8400, 12616, 14073, 14847, 20535, 21396},
- { 2424, 3277, 5296, 6284, 11290, 12903, 16022, 17508, 19333, 20283},
- { 2565, 3778, 5360, 6989, 8782, 10428, 14390, 15742, 17770, 21734},
- { 2727, 3384, 6613, 9254, 10542, 12236, 14651, 15687, 20074, 21102},
- { 1916, 2953, 6274, 8088, 9710, 10925, 12392, 16434, 20010, 21183},
- { 3384, 4366, 5349, 7667, 11180, 12605, 13921, 15324, 19901, 20754},
- { 3075, 4283, 5951, 7619, 9604, 11010, 12384, 14006, 20658, 21497},
- { 1751, 2455, 5147, 9966, 11621, 13176, 14739, 16470, 20788, 21756},
- { 1442, 2188, 3330, 6813, 8929, 12135, 14476, 15306, 19635, 20544},
- { 2294, 2895, 4070, 8035, 12233, 13416, 14762, 17367, 18952, 19688},
- { 1937, 2659, 4602, 6697, 9071, 12863, 14197, 15230, 16047, 18877},
- { 2071, 2663, 4216, 9445, 10887, 12292, 13949, 14909, 19236, 20341},
- { 1740, 2491, 3488, 8138, 9656, 11153, 13206, 14688, 20896, 21907},
- { 2199, 2881, 4675, 8527, 10051, 11408, 14435, 15463, 17190, 20597},
- { 1943, 2988, 4177, 6039, 7478, 8536, 14181, 15551, 17622, 21579},
- { 1825, 3175, 7062, 9818, 12824, 15450, 18330, 19856, 21830, 22412},
- { 2464, 3046, 4822, 5977, 7696, 15398, 16730, 17646, 20588, 21320},
- { 2550, 3393, 5305, 6920, 10235, 14083, 18143, 19195, 20681, 21336},
- { 3003, 3799, 5321, 6437, 7919, 11643, 15810, 16846, 18119, 18980},
- { 3455, 4157, 6838, 8199, 9877, 12314, 15905, 16826, 19949, 20892},
- { 3052, 3769, 4891, 5810, 6977, 10126, 14788, 15990, 19773, 20904},
- { 3671, 4356, 5827, 6997, 8460, 12084, 14154, 14939, 19247, 20423},
- { 2716, 3684, 5246, 6686, 8463, 10001, 12394, 14131, 16150, 19776},
- { 1945, 2638, 4130, 7995, 14338, 15576, 17057, 18206, 20225, 20997},
- { 2304, 2928, 4122, 4824, 5640, 13139, 15825, 16938, 20108, 21054},
- { 1800, 2516, 3350, 5219, 13406, 15948, 17618, 18540, 20531, 21252},
- { 1436, 2224, 2753, 4546, 9657, 11245, 15177, 16317, 17489, 19135},
- { 2319, 2899, 4980, 6936, 8404, 13489, 15554, 16281, 20270, 20911},
- { 2187, 2919, 4610, 5875, 7390, 12556, 14033, 16794, 20998, 21769},
- { 2235, 2923, 5121, 6259, 8099, 13589, 15340, 16340, 17927, 20159},
- { 1765, 2638, 3751, 5730, 7883, 10108, 13633, 15419, 16808, 18574},
- { 3460, 5741, 9596, 11742, 14413, 16080, 18173, 19090, 20845, 21601},
- { 3735, 4426, 6199, 7363, 9250, 14489, 16035, 17026, 19873, 20876},
- { 3521, 4778, 6887, 8680, 12717, 14322, 15950, 18050, 20166, 21145},
- { 2141, 2968, 6865, 8051, 10010, 13159, 14813, 15861, 17528, 18655},
- { 4148, 6128, 9028, 10871, 12686, 14005, 15976, 17208, 19587, 20595},
- { 4403, 5367, 6634, 8371, 10163, 11599, 14963, 16331, 17982, 18768},
- { 4091, 5386, 6852, 8770, 11563, 13290, 15728, 16930, 19056, 20102},
- { 2746, 3625, 5299, 7504, 10262, 11432, 13172, 15490, 16875, 17514},
- { 2248, 3556, 8539, 10590, 12665, 14696, 16515, 17824, 20268, 21247},
- { 1279, 1960, 3920, 7793, 10153, 14753, 16646, 18139, 20679, 21466},
- { 2440, 3475, 6737, 8654, 12190, 14588, 17119, 17925, 19110, 19979},
- { 1879, 2514, 4497, 7572, 10017, 14948, 16141, 16897, 18397, 19376},
- { 2804, 3688, 7490, 10086, 11218, 12711, 16307, 17470, 20077, 21126},
- { 2023, 2682, 3873, 8268, 10255, 11645, 15187, 17102, 18965, 19788},
- { 2823, 3605, 5815, 8595, 10085, 11469, 16568, 17462, 18754, 19876},
- { 2851, 3681, 5280, 7648, 9173, 10338, 14961, 16148, 17559, 18474},
- { 1348, 2645, 5826, 8785, 10620, 12831, 16255, 18319, 21133, 22586},
- { 2141, 3036, 4293, 6082, 7593, 10629, 17158, 18033, 21466, 22084},
- { 1608, 2375, 3384, 6878, 9970, 11227, 16928, 17650, 20185, 21120},
- { 2774, 3616, 5014, 6557, 7788, 8959, 17068, 18302, 19537, 20542},
- { 1934, 4813, 6204, 7212, 8979, 11665, 15989, 17811, 20426, 21703},
- { 2288, 3507, 5037, 6841, 8278, 9638, 15066, 16481, 21653, 22214},
- { 2951, 3771, 4878, 7578, 9016, 10298, 14490, 15242, 20223, 20990},
- { 3256, 4791, 6601, 7521, 8644, 9707, 13398, 16078, 19102, 20249},
- { 1827, 2614, 3486, 6039, 12149, 13823, 16191, 17282, 21423, 22041},
- { 1000, 1704, 3002, 6335, 8471, 10500, 14878, 16979, 20026, 22427},
- { 1646, 2286, 3109, 7245, 11493, 12791, 16824, 17667, 18981, 20222},
- { 1708, 2501, 3315, 6737, 8729, 9924, 16089, 17097, 18374, 19917},
- { 2623, 3510, 4478, 5645, 9862, 11115, 15219, 18067, 19583, 20382},
- { 2518, 3434, 4728, 6388, 8082, 9285, 13162, 18383, 19819, 20552},
- { 1726, 2383, 4090, 6303, 7805, 12845, 14612, 17608, 19269, 20181},
- { 2860, 3735, 4838, 6044, 7254, 8402, 14031, 16381, 18037, 19410},
- { 4247, 5993, 7952, 9792, 12342, 14653, 17527, 18774, 20831, 21699},
- { 3502, 4051, 5680, 6805, 8146, 11945, 16649, 17444, 20390, 21564},
- { 3151, 4893, 5899, 7198, 11418, 13073, 15124, 17673, 20520, 21861},
- { 3960, 4848, 5926, 7259, 8811, 10529, 15661, 16560, 18196, 20183},
- { 4499, 6604, 8036, 9251, 10804, 12627, 15880, 17512, 20020, 21046},
- { 4251, 5541, 6654, 8318, 9900, 11686, 15100, 17093, 20572, 21687},
- { 3769, 5327, 7865, 9360, 10684, 11818, 13660, 15366, 18733, 19882},
- { 3083, 3969, 6248, 8121, 9798, 10994, 12393, 13686, 17888, 19105},
- { 2731, 4670, 7063, 9201, 11346, 13735, 16875, 18797, 20787, 22360},
- { 1187, 2227, 4737, 7214, 9622, 12633, 15404, 17968, 20262, 23533},
- { 1911, 2477, 3915, 10098, 11616, 12955, 16223, 17138, 19270, 20729},
- { 1764, 2519, 3887, 6944, 9150, 12590, 16258, 16984, 17924, 18435},
- { 1400, 3674, 7131, 8718, 10688, 12508, 15708, 17711, 19720, 21068},
- { 2322, 3073, 4287, 8108, 9407, 10628, 15862, 16693, 19714, 21474},
- { 2630, 3339, 4758, 8360, 10274, 11333, 12880, 17374, 19221, 19936},
- { 1721, 2577, 5553, 7195, 8651, 10686, 15069, 16953, 18703, 19929}
-};
-
-/**
- * second stage LSP codebook, high and low parts
- (both 5-dimensional, with 32 entries (3.2.4 of G.729)
- */
-static const int16_t cb_lsp_2nd[1<<VQ_2ND_BITS][10] = { /* (2.13) */
- { -435, -815, -742, 1033, -518, 582, -1201, 829, 86, 385},
- { -833, -891, 463, -8, -1251, 1450, 72, -231, 864, 661},
- {-1021, 231, -306, 321, -220, -163, -526, -754, -1633, 267},
- { 57, -198, -339, -33, -1468, 573, 796, -169, -631, 816},
- { 171, -350, 294, 1660, 453, 519, 291, 159, -640, -1296},
- { -701, -842, -58, 950, 892, 1549, 715, 527, -714, -193},
- { 584, 31, -289, 356, -333, -457, 612, -283, -1381, -741},
- { -109, -808, 231, 77, -87, -344, 1341, 1087, -654, -569},
- { -859, 1236, 550, 854, 714, -543, -1752, -195, -98, -276},
- { -877, -954, -1248, -299, 212, -235, -728, 949, 1517, 895},
- { -77, 344, -620, 763, 413, 502, -362, -960, -483, 1386},
- { -314, -307, -256, -1260, -429, 450, -466, -108, 1010, 2223},
- { 711, 693, 521, 650, 1305, -28, -378, 744, -1005, 240},
- { -112, -271, -500, 946, 1733, 271, -15, 909, -259, 1688},
- { 575, -10, -468, -199, 1101, -1011, 581, -53, -747, 878},
- { 145, -285, -1280, -398, 36, -498, -1377, 18, -444, 1483},
- {-1133, -835, 1350, 1284, -95, 1015, -222, 443, 372, -354},
- {-1459, -1237, 416, -213, 466, 669, 659, 1640, 932, 534},
- { -15, 66, 468, 1019, -748, 1385, -182, -907, -721, -262},
- { -338, 148, 1445, 75, -760, 569, 1247, 337, 416, -121},
- { 389, 239, 1568, 981, 113, 369, -1003, -507, -587, -904},
- { -312, -98, 949, 31, 1104, 72, -141, 1465, 63, -785},
- { 1127, 584, 835, 277, -1159, 208, 301, -882, 117, -404},
- { 539, -114, 856, -493, 223, -912, 623, -76, 276, -440},
- { 2197, 2337, 1268, 670, 304, -267, -525, 140, 882, -139},
- {-1596, 550, 801, -456, -56, -697, 865, 1060, 413, 446},
- { 1154, 593, -77, 1237, -31, 581, -1037, -895, 669, 297},
- { 397, 558, 203, -797, -919, 3, 692, -292, 1050, 782},
- { 334, 1475, 632, -80, 48, -1061, -484, 362, -597, -852},
- { -545, -330, -429, -680, 1133, -1182, -744, 1340, 262, 63},
- { 1320, 827, -398, -576, 341, -774, -483, -1247, -70, 98},
- { -163, 674, -11, -886, 531, -1125, -265, -242, 724, 934}
-};
-
-/**
- * gain codebook (first stage), 8k mode (3.9.2 of G.729)
- */
-static const int16_t cb_gain_1st_8k[1<<GC_1ST_IDX_BITS_8K][2] = { /*(0.14)
(2.13) */
- { 3242 , 9949 },
- { 1551 , 2425 },
- { 2678 , 27162 },
- { 1921 , 9291 },
- { 1831 , 5022 },
- { 1 , 1516 },
- { 356 , 14756 },
- { 57 , 5404 },
-};
-
-/**
- * gain codebook (second stage), 8k mode (3.9.2 of G.729)
- */
-static const int16_t cb_gain_2nd_8k[1<<GC_2ND_IDX_BITS_8K][2] = { /*(1.14)
(1.13) */
- { 5142 , 592 },
- { 17299 , 1861 },
- { 6160 , 2395 },
- { 16112 , 3392 },
- { 826 , 2005 },
- { 18973 , 5935 },
- { 1994 , 0 },
- { 15434 , 237 },
- { 10573 , 2966 },
- { 15132 , 4914 },
- { 11569 , 1196 },
- { 14194 , 1630 },
- { 8091 , 4861 },
- { 15161 , 14276 },
- { 9120 , 525 },
- { 13260 , 3256 },
-};
-
-/**
- * 4th order Moving Average (MA) Predictor codebook (3.2.4 of G.729)
- */
-static const int16_t cb_ma_predictor[2][MA_NP][10] = { /* (0.15) */
- {
- { 8421, 9109, 9175, 8965, 9034, 9057, 8765, 8775, 9106, 8673},
- { 7018, 7189, 7638, 7307, 7444, 7379, 7038, 6956, 6930, 6868},
- { 5472, 4990, 5134, 5177, 5246, 5141, 5206, 5095, 4830, 5147},
- { 4056, 3031, 2614, 3024, 2916, 2713, 3309, 3237, 2857, 3473}
- },
- {
- { 7733, 7880, 8188, 8175, 8247, 8490, 8637, 8601, 8359, 7569},
- { 4210, 3031, 2552, 3473, 3876, 3853, 4184, 4154, 3909, 3968},
- { 3214, 1930, 1313, 2143, 2493, 2385, 2755, 2706, 2542, 2919},
- { 3024, 1592, 940, 1631, 1723, 1579, 2034, 2084, 1913, 2601}
- }
-};
-
-static const int16_t cb_ma_predictor_sum[2][10] = { /* (0.15) */
- { 7798, 8447, 8205, 8293, 8126, 8477, 8447, 8703, 9043, 8604},
- {14585, 18333, 19772, 17344, 16426, 16459, 15155, 15220, 16043, 15708}
-};
-
-/**
- * initial LSP coefficients belongs to virtual frame preceding the
- * first frame of the stream
- */
-static const int16_t lsp_init[10]= { /* (0.15) */
- 30000, 26000, 21000, 15000, 8000, 0, -8000,-15000,-21000,-26000
-};
-#endif /* AVCODEC_G729DATA_H */
diff --git a/libavcodec/g729dec.c b/libavcodec/g729dec.c
deleted file mode 100644
index 71e7c5d..0000000
--- a/libavcodec/g729dec.c
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * G.729 decoder
- * Copyright (c) 2008 Vladimir Voroshilov
- *
- * This file is part of Libav.
- *
- * Libav 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.1 of the License, or (at your option) any later version.
- *
- * Libav 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 Libav; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-#include <stdlib.h>
-#include <inttypes.h>
-#include <limits.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include <assert.h>
-
-#include "avcodec.h"
-#include "libavutil/avutil.h"
-#include "get_bits.h"
-
-#include "lsp.h"
-#include "celp_math.h"
-#include "acelp_filters.h"
-#include "acelp_pitch_delay.h"
-#include "acelp_vectors.h"
-#include "g729data.h"
-
-/**
- * minimum quantized LSF value (3.2.4)
- * 0.005 in Q13
- */
-#define LSFQ_MIN 40
-
-/**
- * maximum quantized LSF value (3.2.4)
- * 3.135 in Q13
- */
-#define LSFQ_MAX 25681
-
-/**
- * minimum LSF distance (3.2.4)
- * 0.0391 in Q13
- */
-#define LSFQ_DIFF_MIN 321
-
-/**
- * minimum gain pitch value (3.8, Equation 47)
- * 0.2 in (1.14)
- */
-#define SHARP_MIN 3277
-
-/**
- * maximum gain pitch value (3.8, Equation 47)
- * (EE) This does not comply with the specification.
- * Specification says about 0.8, which should be
- * 13107 in (1.14), but reference C code uses
- * 13017 (equals to 0.7945) instead of it.
- */
-#define SHARP_MAX 13017
-
-/**
- * subframe size
- */
-#define SUBFRAME_SIZE 40
-
-
-typedef struct {
- uint8_t ac_index_bits[2]; ///< adaptive codebook index for second
subframe (size in bits)
- uint8_t parity_bit; ///< parity bit for pitch delay
- uint8_t gc_1st_index_bits; ///< gain codebook (first stage) index (size
in bits)
- uint8_t gc_2nd_index_bits; ///< gain codebook (second stage) index (size
in bits)
- uint8_t fc_signs_bits; ///< number of pulses in fixed-codebook vector
- uint8_t fc_indexes_bits; ///< size (in bits) of fixed-codebook index
entry
-} G729FormatDescription;
-
-typedef struct {
- int pitch_delay_int_prev; ///< integer part of previous subframe's pitch
delay (4.1.3)
-
- /// (2.13) LSP quantizer outputs
- int16_t past_quantizer_output_buf[MA_NP + 1][10];
- int16_t* past_quantizer_outputs[MA_NP + 1];
-
- int16_t lsfq[10]; ///< (2.13) quantized LSF coefficients from
previous frame
- int16_t lsp_buf[2][10]; ///< (0.15) LSP coefficients (previous and
current frames) (3.2.5)
- int16_t *lsp[2]; ///< pointers to lsp_buf
-} G729Context;
-
-static const G729FormatDescription format_g729_8k = {
- .ac_index_bits = {8,5},
- .parity_bit = 1,
- .gc_1st_index_bits = GC_1ST_IDX_BITS_8K,
- .gc_2nd_index_bits = GC_2ND_IDX_BITS_8K,
- .fc_signs_bits = 4,
- .fc_indexes_bits = 13,
-};
-
-static const G729FormatDescription format_g729d_6k4 = {
- .ac_index_bits = {8,4},
- .parity_bit = 0,
- .gc_1st_index_bits = GC_1ST_IDX_BITS_6K4,
- .gc_2nd_index_bits = GC_2ND_IDX_BITS_6K4,
- .fc_signs_bits = 2,
- .fc_indexes_bits = 9,
-};
-
-/**
- * @brief pseudo random number generator
- */
-static inline uint16_t g729_prng(uint16_t value)
-{
- return 31821 * value + 13849;
-}
-
-/**
- * Get parity bit of bit 2..7
- */
-static inline int get_parity(uint8_t value)
-{
- return (0x6996966996696996ULL >> (value >> 2)) & 1;
-}
-
-static void lsf_decode(int16_t* lsfq, int16_t* past_quantizer_outputs[MA_NP +
1],
- int16_t ma_predictor,
- int16_t vq_1st, int16_t vq_2nd_low, int16_t vq_2nd_high)
-{
- int i,j;
- static const uint8_t min_distance[2]={10, 5}; //(2.13)
- int16_t* quantizer_output = past_quantizer_outputs[MA_NP];
-
- for (i = 0; i < 5; i++) {
- quantizer_output[i] = cb_lsp_1st[vq_1st][i ] +
cb_lsp_2nd[vq_2nd_low ][i ];
- quantizer_output[i + 5] = cb_lsp_1st[vq_1st][i + 5] +
cb_lsp_2nd[vq_2nd_high][i + 5];
- }
-
- for (j = 0; j < 2; j++) {
- for (i = 1; i < 10; i++) {
- int diff = (quantizer_output[i - 1] - quantizer_output[i] +
min_distance[j]) >> 1;
- if (diff > 0) {
- quantizer_output[i - 1] -= diff;
- quantizer_output[i ] += diff;
- }
- }
- }
-
- for (i = 0; i < 10; i++) {
- int sum = quantizer_output[i] * cb_ma_predictor_sum[ma_predictor][i];
- for (j = 0; j < MA_NP; j++)
- sum += past_quantizer_outputs[j][i] *
cb_ma_predictor[ma_predictor][j][i];
-
- lsfq[i] = sum >> 15;
- }
-
- /* Rotate past_quantizer_outputs. */
- memmove(past_quantizer_outputs + 1, past_quantizer_outputs, MA_NP *
sizeof(int16_t*));
- past_quantizer_outputs[0] = quantizer_output;
-
- ff_acelp_reorder_lsf(lsfq, LSFQ_DIFF_MIN, LSFQ_MIN, LSFQ_MAX, 10);
-}
-
-static av_cold int decoder_init(AVCodecContext * avctx)
-{
- G729Context* ctx = avctx->priv_data;
- int i,k;
-
- if (avctx->channels != 1) {
- av_log(avctx, AV_LOG_ERROR, "Only mono sound is supported (requested
channels: %d).\n", avctx->channels);
- return AVERROR(EINVAL);
- }
-
- /* Both 8kbit/s and 6.4kbit/s modes uses two subframes per frame. */
- avctx->frame_size = SUBFRAME_SIZE << 1;
-
- for (k = 0; k < MA_NP + 1; k++) {
- ctx->past_quantizer_outputs[k] = ctx->past_quantizer_output_buf[k];
- for (i = 1; i < 11; i++)
- ctx->past_quantizer_outputs[k][i - 1] = (18717 * i) >> 3;
- }
-
- ctx->lsp[0] = ctx->lsp_buf[0];
- ctx->lsp[1] = ctx->lsp_buf[1];
- memcpy(ctx->lsp[0], lsp_init, 10 * sizeof(int16_t));
-
- return 0;
-}
-
-static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
- AVPacket *avpkt)
-{
- const uint8_t *buf = avpkt->data;
- int buf_size = avpkt->size;
- int16_t *out_frame = data;
- GetBitContext gb;
- G729FormatDescription format;
- int frame_erasure = 0; ///< frame erasure detected during decoding
- int bad_pitch = 0; ///< parity check failed
- int i;
- G729Context *ctx = avctx->priv_data;
- int16_t lp[2][11]; // (3.12)
- uint8_t ma_predictor; ///< switched MA predictor of LSP quantizer
- uint8_t quantizer_1st; ///< first stage vector of quantizer
- uint8_t quantizer_2nd_lo; ///< second stage lower vector of quantizer
(size in bits)
- uint8_t quantizer_2nd_hi; ///< second stage higher vector of quantizer
(size in bits)
-
- int pitch_delay_int; // pitch delay, integer part
- int pitch_delay_3x; // pitch delay, multiplied by 3
-
- if (*data_size < SUBFRAME_SIZE << 2) {
- av_log(avctx, AV_LOG_ERROR, "Error processing packet: output buffer
too small\n");
- return AVERROR(EIO);
- }
-
- if (buf_size == 10) {
- format = format_g729_8k;
- av_log(avctx, AV_LOG_DEBUG, "Packet type: %s\n", "G.729 @ 8kbit/s");
- } else if (buf_size == 8) {
- format = format_g729d_6k4;
- av_log(avctx, AV_LOG_DEBUG, "Packet type: %s\n", "G.729D @ 6.4kbit/s");
- } else {
- av_log(avctx, AV_LOG_ERROR, "Packet size %d is unknown.\n", buf_size);
- return AVERROR_INVALIDDATA;
- }
-
- for (i=0; i < buf_size; i++)
- frame_erasure |= buf[i];
- frame_erasure = !frame_erasure;
-
- init_get_bits(&gb, buf, buf_size);
-
- ma_predictor = get_bits(&gb, 1);
- quantizer_1st = get_bits(&gb, VQ_1ST_BITS);
- quantizer_2nd_lo = get_bits(&gb, VQ_2ND_BITS);
- quantizer_2nd_hi = get_bits(&gb, VQ_2ND_BITS);
-
- lsf_decode(ctx->lsfq, ctx->past_quantizer_outputs,
- ma_predictor,
- quantizer_1st, quantizer_2nd_lo, quantizer_2nd_hi);
-
- ff_acelp_lsf2lsp(ctx->lsp[1], ctx->lsfq, 10);
-
- ff_acelp_lp_decode(&lp[0][0], &lp[1][0], ctx->lsp[1], ctx->lsp[0], 10);
-
- FFSWAP(int16_t*, ctx->lsp[1], ctx->lsp[0]);
-
- for (i = 0; i < 2; i++) {
- uint8_t ac_index; ///< adaptive codebook index
- uint8_t pulses_signs; ///< fixed-codebook vector pulse signs
- int fc_indexes; ///< fixed-codebook indexes
- uint8_t gc_1st_index; ///< gain codebook (first stage) index
- uint8_t gc_2nd_index; ///< gain codebook (second stage) index
-
- ac_index = get_bits(&gb, format.ac_index_bits[i]);
- if(!i && format.parity_bit)
- bad_pitch = get_parity(ac_index) == get_bits1(&gb);
- fc_indexes = get_bits(&gb, format.fc_indexes_bits);
- pulses_signs = get_bits(&gb, format.fc_signs_bits);
- gc_1st_index = get_bits(&gb, format.gc_1st_index_bits);
- gc_2nd_index = get_bits(&gb, format.gc_2nd_index_bits);
-
- if(!i) {
- if (bad_pitch)
- pitch_delay_3x = 3 * ctx->pitch_delay_int_prev;
- else
- pitch_delay_3x = ff_acelp_decode_8bit_to_1st_delay3(ac_index);
- } else {
- int pitch_delay_min = av_clip(ctx->pitch_delay_int_prev - 5,
- PITCH_DELAY_MIN, PITCH_DELAY_MAX -
9);
-
- if(packet_type == FORMAT_G729D_6K4)
- pitch_delay_3x = ff_acelp_decode_4bit_to_2nd_delay3(ac_index,
pitch_delay_min);
- else
- pitch_delay_3x =
ff_acelp_decode_5_6_bit_to_2nd_delay3(ac_index, pitch_delay_min);
- }
-
- /* Round pitch delay to nearest (used everywhere except
ff_acelp_interpolate). */
- pitch_delay_int = (pitch_delay_3x + 1) / 3;
-
- ff_acelp_weighted_vector_sum(fc + pitch_delay_int,
- fc + pitch_delay_int,
- fc, 1 << 14,
- av_clip(ctx->gain_pitch, SHARP_MIN,
SHARP_MAX),
- 0, 14,
- SUBFRAME_SIZE - pitch_delay_int);
-
- if (frame_erasure) {
- ctx->gain_pitch = (29491 * ctx->gain_pitch) >> 15; // 0.90 (0.15)
- ctx->gain_code = ( 2007 * ctx->gain_code ) >> 11; // 0.98 (0.11)
-
- gain_corr_factor = 0;
- } else {
- ctx->gain_pitch = cb_gain_1st_8k[gc_1st_index][0] +
- cb_gain_2nd_8k[gc_2nd_index][0];
- gain_corr_factor = cb_gain_1st_8k[gc_1st_index][1] +
- cb_gain_2nd_8k[gc_2nd_index][1];
-
- ff_acelp_weighted_vector_sum(ctx->exc + i * SUBFRAME_SIZE,
- ctx->exc + i * SUBFRAME_SIZE, fc,
- (!voicing && frame_erasure) ? 0 :
ctx->gain_pitch,
- ( voicing && frame_erasure) ? 0 :
ctx->gain_code,
- 1 << 13, 14, SUBFRAME_SIZE);
-
- ctx->pitch_delay_int_prev = pitch_delay_int;
- }
-
- *data_size = SUBFRAME_SIZE << 2;
- return buf_size;
-}
-
-AVCodec ff_g729_decoder =
-{
- "g729",
- AVMEDIA_TYPE_AUDIO,
- CODEC_ID_G729,
- sizeof(G729Context),
- decoder_init,
- NULL,
- NULL,
- decode_frame,
- .long_name = NULL_IF_CONFIG_SMALL("G.729"),
-};
diff --git a/libavcodec/lsp.c b/libavcodec/lsp.c
index 26b3584..9ac56d2 100644
--- a/libavcodec/lsp.c
+++ b/libavcodec/lsp.c
@@ -150,11 +150,7 @@ void ff_acelp_lp_decode(int16_t* lp_1st, int16_t* lp_2nd,
const int16_t* lsp_2nd
/* LSP values for first subframe (3.2.5 of G.729, Equation 24)*/
for(i=0; i<lp_order; i++)
-#ifdef G729_BITEXACT
- lsp_1st[i] = (lsp_2nd[i] >> 1) + (lsp_prev[i] >> 1);
-#else
lsp_1st[i] = (lsp_2nd[i] + lsp_prev[i]) >> 1;
-#endif
ff_acelp_lsp2lpc(lp_1st, lsp_1st, lp_order >> 1);
--
1.7.1
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel