34 #define DSS_SP_FRAME_SIZE        42 
   35 #define DSS_SP_SAMPLE_COUNT     (66 * SUBFRAMES) 
   36 #define DSS_SP_FORMULA(a, b, c) (((((a) << 15) + (b) * (c)) + 0x4000) >> 15) 
   90            12,        13,        14,         15,         16,         17,
 
   91            18,        19,        20,         21,         22,         23,
 
   92            24,        25,        26,         27,         28,         29,
 
   93            30,        31,        32,         33,         34,         35,
 
   94            36,        37,        38,         39,         40,         41,
 
   95            42,        43,        44,         45,         46,         47,
 
   96            48,        49,        50,         51,         52,         53,
 
   97            54,        55,        56,         57,         58,         59,
 
   98            60,        61,        62,         63,         64,         65,
 
   99            66,        67,        68,         69,         70,         71 },
 
  101            15,        21,        28,         36,         45,         55,
 
  102            66,        78,        91,        105,        120,        136,
 
  103           153,       171,       190,        210,        231,        253,
 
  104           276,       300,       325,        351,        378,        406,
 
  105           435,       465,       496,        528,        561,        595,
 
  106           630,       666,       703,        741,        780,        820,
 
  107           861,       903,       946,        990,       1035,       1081,
 
  108          1128,      1176,      1225,       1275,       1326,       1378,
 
  109          1431,      1485,      1540,       1596,       1653,       1711,
 
  110          1770,      1830,      1891,       1953,       2016,       2080,
 
  111          2145,      2211,      2278,       2346,       2415,       2485 },
 
  113            20,        35,        56,         84,        120,        165,
 
  114           220,       286,       364,        455,        560,        680,
 
  115           816,       969,      1140,       1330,       1540,       1771,
 
  116          2024,      2300,      2600,       2925,       3276,       3654,
 
  117          4060,      4495,      4960,       5456,       5984,       6545,
 
  118          7140,      7770,      8436,       9139,       9880,      10660,
 
  119         11480,     12341,     13244,      14190,      15180,      16215,
 
  120         17296,     18424,     19600,      20825,      22100,      23426,
 
  121         24804,     26235,     27720,      29260,      30856,      32509,
 
  122         34220,     35990,     37820,      39711,      41664,      43680,
 
  123         45760,     47905,     50116,      52394,      54740,      57155 },
 
  125            15,        35,        70,        126,        210,        330,
 
  126           495,       715,      1001,       1365,       1820,       2380,
 
  127          3060,      3876,      4845,       5985,       7315,       8855,
 
  128         10626,     12650,     14950,      17550,      20475,      23751,
 
  129         27405,     31465,     35960,      40920,      46376,      52360,
 
  130         58905,     66045,     73815,      82251,      91390,     101270,
 
  131        111930,    123410,    135751,     148995,     163185,     178365,
 
  132        194580,    211876,    230300,     249900,     270725,     292825,
 
  133        316251,    341055,    367290,     395010,     424270,     455126,
 
  134        487635,    521855,    557845,     595665,     635376,     677040,
 
  135        720720,    766480,    814385,     864501,     916895,     971635 },
 
  137             6,        21,        56,        126,        252,        462,
 
  138           792,      1287,      2002,       3003,       4368,       6188,
 
  139          8568,     11628,     15504,      20349,      26334,      33649,
 
  140         42504,     53130,     65780,      80730,      98280,     118755,
 
  141        142506,    169911,    201376,     237336,     278256,     324632,
 
  142        376992,    435897,    501942,     575757,     658008,     749398,
 
  143        850668,    962598,   1086008,    1221759,    1370754,    1533939,
 
  144       1712304,   1906884,   2118760,    2349060,    2598960,    2869685,
 
  145       3162510,   3478761,   3819816,    4187106,    4582116,    5006386,
 
  146       5461512,   5949147,   6471002,    7028847,    7624512,    8259888,
 
  147       8936928,   9657648,  10424128,   11238513,   12103014,   13019909 },
 
  149             1,         7,        28,         84,        210,        462,
 
  150           924,      1716,      3003,       5005,       8008,      12376,
 
  151         18564,     27132,     38760,      54264,      74613,     100947,
 
  152        134596,    177100,    230230,     296010,     376740,     475020,
 
  153        593775,    736281,    906192,    1107568,    1344904,    1623160,
 
  154       1947792,   2324784,   2760681,    3262623,    3838380,    4496388,
 
  155       5245786,   6096454,   7059052,    8145060,    9366819,   10737573,
 
  156      12271512,  13983816,  15890700,   18009460,   20358520,   22957480,
 
  157      25827165,  28989675,  32468436,   36288252,   40475358,   45057474,
 
  158      50063860,  55525372,  61474519,   67945521,   74974368,   82598880,
 
  159      90858768,  99795696, 109453344,  119877472,  131115985,  143218999 },
 
  161             0,         1,         8,         36,        120,        330,
 
  162           792,      1716,      3432,       6435,      11440,      19448,
 
  163         31824,     50388,     77520,     116280,     170544,     245157,
 
  164        346104,    480700,    657800,     888030,    1184040,    1560780,
 
  165       2035800,   2629575,   3365856,    4272048,    5379616,    6724520,
 
  166       8347680,  10295472,  12620256,   15380937,   18643560,   22481940,
 
  167      26978328,  32224114,  38320568,   45379620,   53524680,   62891499,
 
  168      73629072,  85900584,  99884400,  115775100,  133784560,  154143080,
 
  169     177100560, 202927725, 231917400,  264385836,  300674088,  341149446,
 
  170     386206920, 436270780, 491796152,  553270671,  621216192,  696190560,
 
  171     778789440, 869648208, 969443904, 1078897248, 1198774720, 1329890705 },
 
  175     { -32653, -32587, -32515, -32438, -32341, -32216, -32062, -31881,
 
  176       -31665, -31398, -31080, -30724, -30299, -29813, -29248, -28572,
 
  177       -27674, -26439, -24666, -22466, -19433, -16133, -12218,  -7783,
 
  178        -2834,   1819,   6544,  11260,  16050,  20220,  24774,  28120 },
 
  180     { -27503, -24509, -20644, -17496, -14187, -11277,  -8420,  -5595,
 
  181        -3013,   -624,   1711,   3880,   5844,   7774,   9739,  11592,
 
  182        13364,  14903,  16426,  17900,  19250,  20586,  21803,  23006,
 
  183        24142,  25249,  26275,  27300,  28359,  29249,  30118,  31183 },
 
  185     { -27827, -24208, -20943, -17781, -14843, -11848,  -9066,  -6297,
 
  186        -3660,   -910,   1918,   5025,   8223,  11649,  15086,  18423,
 
  187            0,      0,      0,      0,      0,      0,      0,      0,
 
  188            0,      0,      0,      0,      0,      0,      0,      0 },
 
  190     { -17128, -11975,  -8270,  -5123,  -2296,    183,   2503,   4707,
 
  191         6798,   8945,  11045,  13239,  15528,  18248,  21115,  24785,
 
  192            0,      0,      0,      0,      0,      0,      0,      0,
 
  193            0,      0,      0,      0,      0,      0,      0,      0 },
 
  195     { -21557, -17280, -14286, -11644,  -9268,  -7087,  -4939,  -2831,
 
  196         -691,   1407,   3536,   5721,   8125,  10677,  13721,  17731,
 
  197            0,      0,      0,      0,      0,      0,      0,      0,
 
  198            0,      0,      0,      0,      0,      0,      0,      0 },
 
  200     { -15030, -10377,  -7034,  -4327,  -1900,    364,   2458,   4450,
 
  201         6422,   8374,  10374,  12486,  14714,  16997,  19626,  22954,
 
  202            0,      0,      0,      0,      0,      0,      0,      0,
 
  203            0,      0,      0,      0,      0,      0,      0,      0 },
 
  205     { -16155, -12362,  -9698,  -7460,  -5258,  -3359,  -1547,    219,
 
  206         1916,   3599,   5299,   6994,   8963,  11226,  13716,  16982,
 
  207            0,      0,      0,      0,      0,      0,      0,      0,
 
  208            0,      0,      0,      0,      0,      0,      0,      0 },
 
  210     { -14742,  -9848,  -6921,  -4648,  -2769,  -1065,    499,   2083,
 
  211         3633,   5219,   6857,   8580,  10410,  12672,  15561,  20101,
 
  212            0,      0,      0,      0,      0,      0,      0,      0,
 
  213            0,      0,      0,      0,      0,      0,      0,      0 },
 
  215     { -11099,  -7014,  -3855,  -1025,   1680,   4544,   7807,  11932,
 
  216            0,      0,      0,      0,      0,      0,      0,      0,
 
  217            0,      0,      0,      0,      0,      0,      0,      0,
 
  218            0,      0,      0,      0,      0,      0,      0,      0 },
 
  220     {  -9060,  -4570,  -1381,   1419,   4034,   6728,   9865,  14149,
 
  221            0,      0,      0,      0,      0,      0,      0,      0,
 
  222            0,      0,      0,      0,      0,      0,      0,      0,
 
  223            0,      0,      0,      0,      0,      0,      0,      0 },
 
  225     { -12450,  -7985,  -4596,  -1734,    961,   3629,   6865,  11142,
 
  226            0,      0,      0,      0,      0,      0,      0,      0,
 
  227            0,      0,      0,      0,      0,      0,      0,      0,
 
  228            0,      0,      0,      0,      0,      0,      0,      0 },
 
  230     { -11831,  -7404,  -4010,  -1096,   1606,   4291,   7386,  11482,
 
  231            0,      0,      0,      0,      0,      0,      0,      0,
 
  232            0,      0,      0,      0,      0,      0,      0,      0,
 
  233            0,      0,      0,      0,      0,      0,      0,      0 },
 
  235     { -13404,  -9250,  -5995,  -3312,   -890,   1594,   4464,   8198,
 
  236            0,      0,      0,      0,      0,      0,      0,      0,
 
  237            0,      0,      0,      0,      0,      0,      0,      0,
 
  238            0,      0,      0,      0,      0,      0,      0,      0 },
 
  240     { -11239,  -7220,  -4040,  -1406,    971,   3321,   6006,   9697,
 
  241            0,      0,      0,      0,      0,      0,      0,      0,
 
  242            0,      0,      0,      0,      0,      0,      0,      0,
 
  243            0,      0,      0,      0,      0,      0,      0,      0 },
 
  247        0,    4,    8,   13,   17,   22,   26,   31,
 
  248       35,   40,   44,   48,   53,   58,   63,   69,
 
  249       76,   83,   91,   99,  109,  119,  130,  142,
 
  250      155,  170,  185,  203,  222,  242,  265,  290,
 
  251      317,  346,  378,  414,  452,  494,  540,  591,
 
  252      646,  706,  771,  843,  922, 1007, 1101, 1204,
 
  253     1316, 1438, 1572, 1719, 1879, 2053, 2244, 2453,
 
  254     2682, 2931, 3204, 3502, 3828, 4184, 4574, 5000,
 
  258     -31182, -22273, -13364, -4455, 4455, 13364, 22273, 31182
 
  262     32767, 16384, 8192, 4096, 2048, 1024, 512, 256,
 
  263     128, 64, 32, 16, 8, 4, 2,
 
  267     32767, 26214, 20972, 16777, 13422, 10737, 8590, 6872,
 
  268     5498, 4398, 3518, 2815, 2252, 1801, 1441,
 
  272      102,  231,  360,  488,  617,  746,  875, 1004,
 
  273     1133, 1261, 1390, 1519, 1648, 1777, 1905, 2034,
 
  274     2163, 2292, 2421, 2550, 2678, 2807, 2936, 3065,
 
  275     3194, 3323, 3451, 3580, 3709, 3838, 3967, 4096,
 
  279       262,   293,   323,   348,   356,   336,   269,   139,
 
  280       -67,  -358,  -733, -1178, -1668, -2162, -2607, -2940,
 
  281     -3090, -2986, -2562, -1760,  -541,  1110,  3187,  5651,
 
  282      8435, 11446, 14568, 17670, 20611, 23251, 25460, 27125,
 
  284     27125, 25460, 23251, 20611, 17670, 14568, 11446,  8435,
 
  285      5651,  3187,  1110,  -541, -1760, -2562, -2986, -3090,
 
  286     -2940, -2607, -2162, -1668, -1178,  -733,  -358,   -67,
 
  287       139,   269,   336,   356,   348,   323,   293,   262,
 
  311     uint32_t combined_pitch;
 
  316         p->
bits[i]     = src[i + 1];
 
  317         p->
bits[i + 1] = src[i];
 
  322     for (i = 0; i < 2; i++)
 
  329     for (subframe_idx = 0; subframe_idx < 4; subframe_idx++) {
 
  336         for (i = 0; i < 7; i++)
 
  340     for (subframe_idx = 0; subframe_idx < 4; subframe_idx++) {
 
  341         unsigned int C72_binomials[
PULSE_MAX] = {
 
  342             72, 2556, 59640, 1028790, 13991544, 156238908, 1473109704,
 
  345         unsigned int combined_pulse_pos =
 
  349         if (combined_pulse_pos < C72_binomials[
PULSE_MAX - 1]) {
 
  351                 int pulse, pulse_idx;
 
  361                 for (i = 0; i < 7; i++) {
 
  367                     combined_pulse_pos -=
 
  368                         dss_sp_combinatorial_table[pulse][pulse_idx];
 
  379             for (i = 71; i >= 0; i--) {
 
  380                 if (C72_binomials[index] <= combined_pulse_pos) {
 
  381                     combined_pulse_pos -= C72_binomials[
index];
 
  392                     for (a = 0; a < 
index; a++)
 
  393                         C72_binomials[a + 1] -= C72_binomials[a];
 
  401     fparam->
pitch_lag[0] = (combined_pitch % 151) + 36;
 
  403     combined_pitch /= 151;
 
  406         fparam->
pitch_lag[i] = combined_pitch % 48;
 
  407         combined_pitch      /= 48;
 
  409     if (combined_pitch > 47) {
 
  417         if (pitch_lag > 162) {
 
  420             tmp = pitch_lag - 23;
 
  433     for (i = 0; i < 14; i++)
 
  442     for (a = 0; a < 14; a++) {
 
  444         coeffs[a_plus] = lpc_filter[
a] >> 2;
 
  445         if (a_plus / 2 >= 1) {
 
  446             for (i = 1; i <= a_plus / 2; i++) {
 
  447                 int coeff_1, coeff_2, tmp;
 
  450                 coeff_2 = coeffs[a_plus - i];
 
  453                 coeffs[i] = av_clip_int16(tmp);
 
  456                 coeffs[a_plus - i] = av_clip_int16(tmp);
 
  467     for (i = 0; i < 7; i++)
 
  474                            int pitch_lag, 
int gain)
 
  481         for (i = 0; i < 72; i++)
 
  482             vector[i] = prev_exc[pitch_lag - i % pitch_lag];
 
  484         for (i = 0; i < 72; i++)
 
  485             vector[i] = prev_exc[pitch_lag - i];
 
  487     for (i = 0; i < 72; i++) {
 
  488         int tmp = gain * vector[i] >> 11;
 
  489         vector[i] = av_clip_int16(tmp);
 
  498         for (i = 0; i < 
size; i++)
 
  499             vec[i] = vec[i] >> -bits;
 
  501         for (i = 0; i < 
size; i++)
 
  502             vec[i] = vec[i] << bits;
 
  509     for (i = 114; i > 0; i--)
 
  510         vector[i + 72] = vector[i];
 
  512     for (i = 0; i < 72; i++)
 
  513         vector[72 - i] = hist[i];
 
  521     for (a = 0; a < 72; a++) {
 
  524         tmp = dst[
a] * filter_buf[0];
 
  526         for (i = 14; i > 0; i--)
 
  527             tmp -= error_buf[i] * filter_buf[i];
 
  529         for (i = 14; i > 0; i--)
 
  530             error_buf[i] = error_buf[i - 1];
 
  532         tmp = (tmp + 4096) >> 13;
 
  536         dst[
a] = av_clip_int16(tmp);
 
  545     for (a = 0; a < 72; a++) {
 
  548         audio_buf[0] = dst[
a];
 
  550         for (i = 14; i >= 0; i--)
 
  551             tmp += audio_buf[i] * filter_buf[i];
 
  553         for (i = 14; i > 0; i--)
 
  554             audio_buf[i] = audio_buf[i - 1];
 
  556         tmp = (tmp + 4096) >> 13;
 
  558         dst[
a] = av_clip_int16(tmp);
 
  569     for (i = 1; i < 15; i++)
 
  570         dst[i] = (src[i] * mult[i] + 0x4000) >> 15;
 
  580     for (i = 0; i < 
size; i++)
 
  581         val |= 
FFABS(vector_buf[i]);
 
  583     for (max_val = 0; val <= 0x4000; ++max_val)
 
  591     for (i = 0; i < 
size; i++)
 
  607         if (vsum_1 > 0xFFFFF)
 
  626     lpc_filter = lpc_filter >> 1;
 
  631         for (i = size - 1; i > 0; i--) {
 
  649         tmp = (vsum_1 << 11) / vsum_2;
 
  653     bias     = 409 * tmp >> 15 << 15;
 
  655     noise[0] = av_clip_int16(tmp);
 
  657     for (i = 1; i < 
size; i++) {
 
  658         tmp      = (bias + 32358 * noise[i - 1]) >> 15;
 
  659         noise[i] = av_clip_int16(tmp);
 
  663     for (i = 0; i < 
size; i++) {
 
  665         dst[i] = av_clip_int16(tmp);
 
  671     int i, 
offset = 6, counter = 0, 
a = 0;
 
  673     for (i = 0; i < 6; i++)
 
  682         for (i = 0; i < 6; i++)
 
  688         dst[counter] = av_clip_int16(tmp);
 
  702     for (i = 0; i < 
size; i++)
 
  703         dst[i] = av_clip_int16(src[i]);
 
  707                                    int16_t *abuf_dst, 
const uint8_t *abuf_src)
 
  726         for (i = 0; i < 72; i++)
 
  744                                int *got_frame_ptr, 
AVPacket *avpkt)
 
  749     int buf_size       = avpkt->
size;
 
  757                    "Expected %d bytes, got %d - skipping packet.\n",
 
  769     out = (int16_t *)frame->
data[0];
 
const char const char void * val
#define AVERROR_INVALIDDATA
Invalid data found when processing input. 
This structure describes decoded (raw) audio or video data. 
ptrdiff_t const GLvoid * data
AVCodec ff_dss_sp_decoder
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits. 
#define AV_LOG_WARNING
Something somehow does not look correct. 
memory handling functions 
static av_cold int init(AVCodecContext *avctx)
static const uint16_t dss_sp_adaptive_gain[]
static int normalize_bits(int num, int width)
Calculate the number of left-shifts required for normalizing the input. 
#define DECLARE_ALIGNED(n, t, v)
static void dss_sp_32to16bit(int16_t *dst, int32_t *src, int size)
static void dss_sp_gen_exc(int32_t *vector, int32_t *prev_exc, int pitch_lag, int gain)
static const uint32_t dss_sp_combinatorial_table[PULSE_MAX][72]
#define FF_ARRAY_ELEMS(a)
int32_t combined_pulse_pos
static void dss_sp_unpack_filter(DssSpContext *p)
#define DSS_SP_FRAME_SIZE
enum AVSampleFormat sample_fmt
audio sample format 
static void dss_sp_shift_sq_add(const int32_t *filter_buf, int32_t *audio_buf, int32_t *dst)
static void dss_sp_convert_coeffs(int32_t *lpc_filter, int32_t *coeffs)
#define CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators. 
static void dss_sp_update_buf(int32_t *hist, int32_t *vector)
bitstream reader API header. 
int32_t excitation[288+6]
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
static int dss_sp_vector_sum(DssSpContext *p, int size)
static void dss_sp_add_pulses(int32_t *vector_buf, const struct DssSpSubframe *sf)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
const char * name
Name of the codec implementation. 
static int dss_sp_get_normalize_bits(int32_t *vector_buf, int16_t size)
static const int16_t dss_sp_filter_cb[14][32]
static const uint8_t offset[127][2]
Libavcodec external API header. 
#define DSS_SP_SAMPLE_COUNT
static av_cold int dss_sp_decode_init(AVCodecContext *avctx)
uint64_t channel_layout
Audio channel layout. 
#define FF_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding...
audio channel layout utility functions 
#define DSS_SP_FORMULA(a, b, c)
struct DssSpSubframe sf[SUBFRAMES]
static const int32_t dss_sp_sinc[67]
static void dss_sp_update_state(DssSpContext *p, int32_t *dst)
static int noise(AVBitStreamFilterContext *bsfc, AVCodecContext *avctx, const char *args, uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size, int keyframe)
static const uint16_t dss_sp_unc_decreasing_array[]
int sample_rate
samples per second 
main external API structure. 
static void dss_sp_vec_mult(const int32_t *src, int32_t *dst, const int16_t *mult)
int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
Get a buffer for a frame. 
static int16_t mult(Float11 *f1, Float11 *f2)
static int init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size)
Initialize GetBitContext. 
static void dss_sp_unpack_coeffs(DssSpContext *p, const uint8_t *src)
static void dss_sp_sf_synthesis(DssSpContext *p, int32_t lpc_filter, int32_t *dst, int size)
static unsigned int get_bits_long(GetBitContext *s, int n)
Read 0-32 bits. 
int16_t sf_adaptive_gain[SUBFRAMES]
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes. 
static void dss_sp_scale_vector(int32_t *vec, int bits, int size)
static int decode(AVCodecContext *avctx, void *data, int *got_sub, AVPacket *avpkt)
static int dss_sp_decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
uint8_t bits[DSS_SP_FRAME_SIZE+FF_INPUT_BUFFER_PADDING_SIZE]
common internal api header. 
common internal and external API header 
int32_t working_buffer[SUBFRAMES][72]
int channels
number of audio channels 
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(constint16_t *) pi >>8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(constint32_t *) pi >>24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(constfloat *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(constfloat *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(constfloat *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(constdouble *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(constdouble *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(constdouble *) pi *(1U<< 31))))#defineSET_CONV_FUNC_GROUP(ofmt, ifmt) staticvoidset_generic_function(AudioConvert *ac){}voidff_audio_convert_free(AudioConvert **ac){if(!*ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);}AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enumAVSampleFormatout_fmt, enumAVSampleFormatin_fmt, intchannels, intsample_rate, intapply_map){AudioConvert *ac;intin_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) returnNULL;ac->avr=avr;ac->out_fmt=out_fmt;ac->in_fmt=in_fmt;ac->channels=channels;ac->apply_map=apply_map;if(avr->dither_method!=AV_RESAMPLE_DITHER_NONE &&av_get_packed_sample_fmt(out_fmt)==AV_SAMPLE_FMT_S16 &&av_get_bytes_per_sample(in_fmt)>2){ac->dc=ff_dither_alloc(avr, out_fmt, in_fmt, channels, sample_rate, apply_map);if(!ac->dc){av_free(ac);returnNULL;}returnac;}in_planar=ff_sample_fmt_is_planar(in_fmt, channels);out_planar=ff_sample_fmt_is_planar(out_fmt, channels);if(in_planar==out_planar){ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar?ac->channels:1;}elseif(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;elseac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_AARCH64) ff_audio_convert_init_aarch64(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);returnac;}intff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in){intuse_generic=1;intlen=in->nb_samples;intp;if(ac->dc){av_log(ac->avr, AV_LOG_TRACE,"%dsamples-audio_convert:%sto%s(dithered)\n", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));returnff_convert_dither(ac-> out
int16_t pitch_lag[SUBFRAMES]
static void dss_sp_shift_sq_sub(const int32_t *filter_buf, int32_t *error_buf, int32_t *dst)
static int dss_sp_decode_one_frame(DssSpContext *p, int16_t *abuf_dst, const uint8_t *abuf_src)
static const uint16_t dss_sp_fixed_cb_gain[64]
#define AV_CH_LAYOUT_MONO
static const int16_t dss_sp_pulse_val[8]
This structure stores compressed data. 
static const uint16_t binary_decreasing_array[]
int nb_samples
number of audio samples (per channel) described by this frame