[FFmpeg-cvslog] Remove unused and non-compiling vestigial g729 decoder

Diego Biurrun git at videolan.org
Thu Jul 21 16:54:42 CEST 2011


ffmpeg | branch: master | Diego Biurrun <diego at biurrun.de> | Fri Jul 15 02:37:33 2011 +0200| [79a9aab56f06b870bfb8090e8e29fabdd0cfc6df] | committer: Diego Biurrun

Remove unused and non-compiling vestigial g729 decoder

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=79a9aab56f06b870bfb8090e8e29fabdd0cfc6df
---

 libavcodec/acelp_vectors.c |   20 ---
 libavcodec/acelp_vectors.h |   31 ----
 libavcodec/amrnbdec.c      |    2 +-
 libavcodec/g729data.h      |  278 -------------------------------------
 libavcodec/g729dec.c       |  331 --------------------------------------------
 5 files changed, 1 insertions(+), 661 deletions(-)

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..501b137 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. (Amusingly the same applies to SHARP_MAX in bitexact G.729.)
  */
 #define SHARP_MAX 0.79449462890625
 
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"),
-};



More information about the ffmpeg-cvslog mailing list