45 #define FILTER_TAPS 16 
  101       -9948,    9948,   29860,   49808,   69822,   89926,  110144,  130502,
 
  102      151026,  171738,  192666,  213832,  235264,  256982,  279014,  301384,
 
  103      324118,  347244,  370790,  394782,  419250,  444226,  469742,  495832,
 
  104      522536,  549890,  577936,  606720,  636290,  666700,  698006,  730270,
 
  105      763562,  797958,  833538,  870398,  908640,  948376,  989740, 1032874,
 
  106     1077948, 1125150, 1174700, 1226850, 1281900, 1340196, 1402156, 1468282,
 
  107     1539182, 1615610, 1698514, 1789098, 1888944, 2000168, 2125700, 2269750,
 
  108     2438670, 2642660, 2899462, 3243240, 3746078, 4535138, 5664098, 7102424,
 
  112        9948,   9948,   9962,   9988,  10026,  10078,  10142,  10218,
 
  113       10306,  10408,  10520,  10646,  10784,  10934,  11098,  11274,
 
  114       11462,  11664,  11880,  12112,  12358,  12618,  12898,  13194,
 
  115       13510,  13844,  14202,  14582,  14988,  15422,  15884,  16380,
 
  116       16912,  17484,  18098,  18762,  19480,  20258,  21106,  22030,
 
  117       23044,  24158,  25390,  26760,  28290,  30008,  31954,  34172,
 
  118       36728,  39700,  43202,  47382,  52462,  58762,  66770,  77280,
 
  119       91642, 112348, 144452, 199326, 303512, 485546, 643414, 794914,
 
  123         0,     4,     7,    10,    13,    16,    19,    22,
 
  124        26,    28,    32,    35,    38,    41,    44,    47,
 
  125        51,    54,    58,    62,    65,    70,    74,    79,
 
  126        84,    90,    95,   102,   109,   116,   124,   133,
 
  127       143,   154,   166,   180,   195,   212,   231,   254,
 
  128       279,   308,   343,   383,   430,   487,   555,   639,
 
  129       743,   876,  1045,  1270,  1575,  2002,  2628,  3591,
 
  130      5177,  8026, 13719, 26047, 45509, 39467, 37875, 51303,
 
  134       0, -21, -19, -17, -15, -12, -10,  -8,
 
  135      -6,  -4,  -1,   1,   3,   6,   8,  10,
 
  136      13,  15,  18,  20,  23,  26,  29,  31,
 
  137      34,  37,  40,  43,  47,  50,  53,  57,
 
  138      60,  64,  68,  72,  76,  80,  85,  89,
 
  139      94,  99, 105, 110, 116, 123, 129, 136,
 
  140     144, 152, 161, 171, 182, 194, 207, 223,
 
  141     241, 263, 291, 328, 382, 467, 522, 522,
 
  147     -89806, 89806, 278502, 494338, 759442, 1113112, 1652322, 2720256, 5190186,
 
  150     89806, 89806, 98890, 116946, 148158, 205512, 333698, 734236, 1735696,
 
  153     0, 2271, 4514, 7803, 14339, 32047, 100135, 250365, 0,
 
  156     0, -14, 6, 29, 58, 96, 154, 270, 521,
 
  161     -194080, 194080, 890562,
 
  164     194080, 194080, 502402,
 
  175     -163006, 163006, 542708, 1120554, 2669238,
 
  178     163006, 163006, 216698, 361148, 1187538,
 
  181     0, 13423, 36113, 206598, 0,
 
  189       -2436,    2436,    7308,   12180,   17054,   21930,   26806,   31686,
 
  190       36566,   41450,   46338,   51230,   56124,   61024,   65928,   70836,
 
  191       75750,   80670,   85598,   90530,   95470,  100418,  105372,  110336,
 
  192      115308,  120288,  125278,  130276,  135286,  140304,  145334,  150374,
 
  193      155426,  160490,  165566,  170654,  175756,  180870,  185998,  191138,
 
  194      196294,  201466,  206650,  211850,  217068,  222300,  227548,  232814,
 
  195      238096,  243396,  248714,  254050,  259406,  264778,  270172,  275584,
 
  196      281018,  286470,  291944,  297440,  302956,  308496,  314056,  319640,
 
  197      325248,  330878,  336532,  342212,  347916,  353644,  359398,  365178,
 
  198      370986,  376820,  382680,  388568,  394486,  400430,  406404,  412408,
 
  199      418442,  424506,  430600,  436726,  442884,  449074,  455298,  461554,
 
  200      467844,  474168,  480528,  486922,  493354,  499820,  506324,  512866,
 
  201      519446,  526064,  532722,  539420,  546160,  552940,  559760,  566624,
 
  202      573532,  580482,  587478,  594520,  601606,  608740,  615920,  623148,
 
  203      630426,  637754,  645132,  652560,  660042,  667576,  675164,  682808,
 
  204      690506,  698262,  706074,  713946,  721876,  729868,  737920,  746036,
 
  205      754216,  762460,  770770,  779148,  787594,  796108,  804694,  813354,
 
  206      822086,  830892,  839774,  848736,  857776,  866896,  876100,  885386,
 
  207      894758,  904218,  913766,  923406,  933138,  942964,  952886,  962908,
 
  208      973030,  983254,  993582, 1004020, 1014566, 1025224, 1035996, 1046886,
 
  209     1057894, 1069026, 1080284, 1091670, 1103186, 1114838, 1126628, 1138558,
 
  210     1150634, 1162858, 1175236, 1187768, 1200462, 1213320, 1226346, 1239548,
 
  211     1252928, 1266490, 1280242, 1294188, 1308334, 1322688, 1337252, 1352034,
 
  212     1367044, 1382284, 1397766, 1413494, 1429478, 1445728, 1462252, 1479058,
 
  213     1496158, 1513562, 1531280, 1549326, 1567710, 1586446, 1605550, 1625034,
 
  214     1644914, 1665208, 1685932, 1707108, 1728754, 1750890, 1773542, 1796732,
 
  215     1820488, 1844840, 1869816, 1895452, 1921780, 1948842, 1976680, 2005338,
 
  216     2034868, 2065322, 2096766, 2129260, 2162880, 2197708, 2233832, 2271352,
 
  217     2310384, 2351050, 2393498, 2437886, 2484404, 2533262, 2584710, 2639036,
 
  218     2696578, 2757738, 2822998, 2892940, 2968278, 3049896, 3138912, 3236760,
 
  219     3345312, 3467068, 3605434, 3765154, 3952904, 4177962, 4452178, 4787134,
 
  220     5187290, 5647128, 6159120, 6720518, 7332904, 8000032, 8726664, 9518152,
 
  224       2436,   2436,   2436,   2436,   2438,   2438,   2438,   2440,
 
  225       2442,   2442,   2444,   2446,   2448,   2450,   2454,   2456,
 
  226       2458,   2462,   2464,   2468,   2472,   2476,   2480,   2484,
 
  227       2488,   2492,   2498,   2502,   2506,   2512,   2518,   2524,
 
  228       2528,   2534,   2540,   2548,   2554,   2560,   2568,   2574,
 
  229       2582,   2588,   2596,   2604,   2612,   2620,   2628,   2636,
 
  230       2646,   2654,   2664,   2672,   2682,   2692,   2702,   2712,
 
  231       2722,   2732,   2742,   2752,   2764,   2774,   2786,   2798,
 
  232       2810,   2822,   2834,   2846,   2858,   2870,   2884,   2896,
 
  233       2910,   2924,   2938,   2952,   2966,   2980,   2994,   3010,
 
  234       3024,   3040,   3056,   3070,   3086,   3104,   3120,   3136,
 
  235       3154,   3170,   3188,   3206,   3224,   3242,   3262,   3280,
 
  236       3300,   3320,   3338,   3360,   3380,   3400,   3422,   3442,
 
  237       3464,   3486,   3508,   3532,   3554,   3578,   3602,   3626,
 
  238       3652,   3676,   3702,   3728,   3754,   3780,   3808,   3836,
 
  239       3864,   3892,   3920,   3950,   3980,   4010,   4042,   4074,
 
  240       4106,   4138,   4172,   4206,   4240,   4276,   4312,   4348,
 
  241       4384,   4422,   4460,   4500,   4540,   4580,   4622,   4664,
 
  242       4708,   4752,   4796,   4842,   4890,   4938,   4986,   5036,
 
  243       5086,   5138,   5192,   5246,   5300,   5358,   5416,   5474,
 
  244       5534,   5596,   5660,   5726,   5792,   5860,   5930,   6002,
 
  245       6074,   6150,   6226,   6306,   6388,   6470,   6556,   6644,
 
  246       6736,   6828,   6924,   7022,   7124,   7228,   7336,   7448,
 
  247       7562,   7680,   7802,   7928,   8058,   8192,   8332,   8476,
 
  248       8624,   8780,   8940,   9106,   9278,   9458,   9644,   9840,
 
  249      10042,  10252,  10472,  10702,  10942,  11194,  11458,  11734,
 
  250      12024,  12328,  12648,  12986,  13342,  13720,  14118,  14540,
 
  251      14990,  15466,  15976,  16520,  17102,  17726,  18398,  19124,
 
  252      19908,  20760,  21688,  22702,  23816,  25044,  26404,  27922,
 
  253      29622,  31540,  33720,  36222,  39116,  42502,  46514,  51334,
 
  254      57218,  64536,  73830,  85890, 101860, 123198, 151020, 183936,
 
  255     216220, 243618, 268374, 293022, 319362, 347768, 378864, 412626, 449596,
 
  258        0,    0,    0,    1,    0,    0,    1,    1,
 
  259        0,    1,    1,    1,    1,    1,    1,    1,
 
  260        1,    1,    1,    1,    1,    1,    1,    1,
 
  261        1,    2,    1,    1,    2,    2,    2,    1,
 
  262        2,    2,    2,    2,    2,    2,    2,    2,
 
  263        2,    2,    2,    2,    2,    2,    2,    3,
 
  264        2,    3,    2,    3,    3,    3,    3,    3,
 
  265        3,    3,    3,    3,    3,    3,    3,    3,
 
  266        3,    3,    3,    3,    3,    4,    3,    4,
 
  267        4,    4,    4,    4,    4,    4,    4,    4,
 
  268        4,    4,    4,    4,    5,    4,    4,    5,
 
  269        4,    5,    5,    5,    5,    5,    5,    5,
 
  270        5,    5,    6,    5,    5,    6,    5,    6,
 
  271        6,    6,    6,    6,    6,    6,    6,    7,
 
  272        6,    7,    7,    7,    7,    7,    7,    7,
 
  273        7,    7,    8,    8,    8,    8,    8,    8,
 
  274        8,    9,    9,    9,    9,    9,    9,    9,
 
  275       10,   10,   10,   10,   10,   11,   11,   11,
 
  276       11,   11,   12,   12,   12,   12,   13,   13,
 
  277       13,   14,   14,   14,   15,   15,   15,   15,
 
  278       16,   16,   17,   17,   17,   18,   18,   18,
 
  279       19,   19,   20,   21,   21,   22,   22,   23,
 
  280       23,   24,   25,   26,   26,   27,   28,   29,
 
  281       30,   31,   32,   33,   34,   35,   36,   37,
 
  282       39,   40,   42,   43,   45,   47,   49,   51,
 
  283       53,   55,   58,   60,   63,   66,   69,   73,
 
  284       76,   80,   85,   89,   95,  100,  106,  113,
 
  285      119,  128,  136,  146,  156,  168,  182,  196,
 
  286      213,  232,  254,  279,  307,  340,  380,  425,
 
  287      480,  545,  626,  724,  847, 1003, 1205, 1471,
 
  288     1830, 2324, 3015, 3993, 5335, 6956, 8229, 8071,
 
  289     6850, 6189, 6162, 6585, 7102, 7774, 8441, 9243,
 
  292       0, -22, -21, -21, -20, -20, -19, -19,
 
  293     -18, -18, -17, -17, -16, -16, -15, -14,
 
  294     -14, -13, -13, -12, -12, -11, -11, -10,
 
  295     -10,  -9,  -9,  -8,  -7,  -7,  -6,  -6,
 
  296      -5,  -5,  -4,  -4,  -3,  -3,  -2,  -1,
 
  297      -1,   0,   0,   1,   1,   2,   2,   3,
 
  298       4,   4,   5,   5,   6,   6,   7,   8,
 
  299       8,   9,   9,  10,  11,  11,  12,  12,
 
  300      13,  14,  14,  15,  15,  16,  17,  17,
 
  301      18,  19,  19,  20,  20,  21,  22,  22,
 
  302      23,  24,  24,  25,  26,  26,  27,  28,
 
  303      28,  29,  30,  30,  31,  32,  33,  33,
 
  304      34,  35,  35,  36,  37,  38,  38,  39,
 
  305      40,  41,  41,  42,  43,  44,  44,  45,
 
  306      46,  47,  48,  48,  49,  50,  51,  52,
 
  307      52,  53,  54,  55,  56,  57,  58,  58,
 
  308      59,  60,  61,  62,  63,  64,  65,  66,
 
  309      67,  68,  69,  69,  70,  71,  72,  73,
 
  310      74,  75,  77,  78,  79,  80,  81,  82,
 
  311      83,  84,  85,  86,  87,  89,  90,  91,
 
  312      92,  93,  94,  96,  97,  98,  99, 101,
 
  313     102, 103, 105, 106, 107, 109, 110, 112,
 
  314     113, 115, 116, 118, 119, 121, 122, 124,
 
  315     125, 127, 129, 130, 132, 134, 136, 137,
 
  316     139, 141, 143, 145, 147, 149, 151, 153,
 
  317     155, 158, 160, 162, 164, 167, 169, 172,
 
  318     174, 177, 180, 182, 185, 188, 191, 194,
 
  319     197, 201, 204, 208, 211, 215, 219, 223,
 
  320     227, 232, 236, 241, 246, 251, 257, 263,
 
  321     269, 275, 283, 290, 298, 307, 317, 327,
 
  322     339, 352, 367, 384, 404, 429, 458, 494,
 
  323     522, 522, 522, 522, 522, 522, 522, 522, 522,
 
  328       -21236,   21236,   63830,  106798,  150386,  194832,  240376,  287258,
 
  329       335726,  386034,  438460,  493308,  550924,  611696,  676082,  744626,
 
  330       817986,  896968,  982580, 1076118, 1179278, 1294344, 1424504, 1574386,
 
  331      1751090, 1966260, 2240868, 2617662, 3196432, 4176450, 5658260, 7671068,
 
  335     21236,  21236,  21360,  21608,  21978,  22468,  23076,   23806,
 
  336     24660,  25648,  26778,  28070,  29544,  31228,  33158,   35386,
 
  337     37974,  41008,  44606,  48934,  54226,  60840,  69320,   80564,
 
  338     96140, 119032, 155576, 221218, 357552, 622468, 859344, 1153464, 1555840,
 
  341        0,   31,    62,    93,   123,   152,   183,    214,
 
  342      247,  283,   323,   369,   421,   483,   557,    647,
 
  343      759,  900,  1082,  1323,  1654,  2120,  2811,   3894,
 
  344     5723, 9136, 16411, 34084, 66229, 59219, 73530, 100594,
 
  347       0, -21, -16, -12,  -7,  -2,   3,   8,
 
  348      13,  19,  24,  30,  36,  43,  50,  57,
 
  349      65,  74,  83,  93, 104, 117, 131, 147,
 
  350     166, 189, 219, 259, 322, 427, 521, 521, 521,
 
  355     -95044, 95044, 295844, 528780, 821332, 1226438, 1890540, 3344850, 6450664,
 
  358     95044, 95044, 105754, 127180, 165372, 39736, 424366, 1029946, 2075866,
 
  361     0, 2678, 5357, 9548, -31409, 96158, 151395, 261480,
 
  364     0, -17, 5, 30, 62, 105, 177, 334, 518,
 
  369      -45754,   45754,  138496,  234896,  337336,  448310,  570738,  708380,
 
  370      866534, 1053262, 1281958, 1577438, 1993050, 2665984, 3900982, 5902844,
 
  374     45754,  45754,  46988,  49412,  53026,  57950,  64478,   73164,
 
  375     84988, 101740, 126958, 168522, 247092, 425842, 809154, 1192708, 1801910,
 
  378        0,  309,   606,   904,  1231,  1632,  2172,   2956,
 
  379     4188, 6305, 10391, 19643, 44688, 95828, 95889, 152301,
 
  382      0, -18,  -8,   2,  13,  25,  38,  53,
 
  383     70,  90, 115, 147, 192, 264, 398, 521, 521,
 
  386 typedef const struct {
 
  452     2048, 2093, 2139, 2186, 2233, 2282, 2332, 2383,
 
  453     2435, 2489, 2543, 2599, 2656, 2714, 2774, 2834,
 
  454     2896, 2960, 3025, 3091, 3158, 3228, 3298, 3371,
 
  455     3444, 3520, 3597, 3676, 3756, 3838, 3922, 4008,
 
  460 #define RSHIFT_SIZE(size)                                                     \ 
  462 static int##size##_t rshift##size(int##size##_t value, int shift)             \ 
  464     int##size##_t rounding = (int##size##_t)1 << (shift - 1);                 \ 
  465     int##size##_t mask = ((int##size##_t)1 << (shift + 1)) - 1;               \ 
  466     return ((value + rounding) >> shift) - ((value & mask) == rounding);      \ 
  469 static int##size##_t rshift##size##_clip24(int##size##_t value, int shift)    \ 
  471     return av_clip_intp2(rshift##size(value, shift), 23);                     \ 
  480     int32_t cw = ((channel->quantize[0].quantized_sample & 3) << 0) +
 
  481                  ((channel->quantize[1].quantized_sample & 2) << 1) +
 
  482                  ((channel->quantize[2].quantized_sample & 1) << 3);
 
  483     channel->codeword_history = (cw << 8) + (channel->codeword_history << 4);
 
  495     d = (m << 2) + (m >> 22);
 
  496     for (subband = 0; subband < 
NB_SUBBANDS; subband++)
 
  497         channel->
dither[subband] = d << (23 - 5*subband);
 
  507         730, -413, -9611, 43626, -121026, 269973, -585547, 2801966,
 
  508         697128, -160481, 27611, 8478, -10043, 3511, 688, -897,
 
  511         -897, 688, 3511, -10043, 8478, 27611, -160481, 697128,
 
  512         2801966, -585547, 269973, -121026, 43626, -9611, -413, 730,
 
  522        1033, -584, -13592, 61697, -171156, 381799, -828088, 3962579,
 
  523        985888, -226954, 39048, 11990, -14203, 4966, 973, -1268,
 
  526       -1268, 973, 4966, -14203, 11990, 39048, -226954, 985888,
 
  527       3962579, -828088, 381799, -171156, 61697, -13592, -584, 1033,
 
  558     return rshift64_clip24(e, shift);
 
  583     *low_subband_output  = av_clip_intp2(subbands[0] + subbands[1], 23);
 
  584     *high_subband_output = av_clip_intp2(subbands[0] - subbands[1], 23);
 
  597     int32_t intermediate_samples[4];
 
  601     for (i = 0; i < 2; i++)
 
  605                                     &intermediate_samples[0+i],
 
  606                                     &intermediate_samples[2+i]);
 
  609     for (i = 0; i < 2; i++)
 
  612                                     &intermediate_samples[2*i],
 
  613                                     &subband_samples[2*i+0],
 
  614                                     &subband_samples[2*i+1]);
 
  633     subbands[0] = low_subband_input + high_subband_input;
 
  634     subbands[1] = low_subband_input - high_subband_input;
 
  651     int32_t intermediate_samples[4];
 
  655     for (i = 0; i < 2; i++)
 
  658                                      subband_samples[2*i+0],
 
  659                                      subband_samples[2*i+1],
 
  660                                      &intermediate_samples[2*i]);
 
  663     for (i = 0; i < 2; i++)
 
  666                                      intermediate_samples[0+i],
 
  667                                      intermediate_samples[2+i],
 
  679     for (i = nb_intervals >> 1; i > 0; i >>= 1)
 
  680         if (
MUL64(factor, intervals[idx + i]) <= ((int64_t)value << 24))
 
  693     int32_t quantized_sample, dithered_sample, parity_change;
 
  694     int32_t d, mean, interval, inv, sample_difference_abs;
 
  697     sample_difference_abs = 
FFABS(sample_difference);
 
  698     sample_difference_abs = 
FFMIN(sample_difference_abs, (1 << 23) - 1);
 
  704     d = rshift32_clip24(
MULH(dither, dither), 7) - (1 << 23);
 
  707     intervals += quantized_sample;
 
  708     mean = (intervals[1] + intervals[0]) / 2;
 
  709     interval = (intervals[1] - intervals[0]) * (-(sample_difference < 0) | 1);
 
  711     dithered_sample = rshift64_clip24(
MUL64(dither, interval) + ((int64_t)av_clip_intp2(mean + d, 23) << 32), 32);
 
  712     error = ((int64_t)sample_difference_abs << 20) - 
MUL64(dithered_sample, quantization_factor);
 
  715     parity_change = quantized_sample;
 
  721     inv = -(sample_difference < 0);
 
  732     for (subband = 0; subband < 
NB_SUBBANDS; subband++) {
 
  737                                  &tables[hd][subband]);
 
  745     for (subband = 0; subband < 
NB_SUBBANDS; subband++)
 
  757     idx = (quantized_sample ^ -(quantized_sample < 0)) + 1;
 
  759     if (quantized_sample < 0)
 
  777                                                       int32_t reconstructed_difference,
 
  781     int p = prediction->
pos;
 
  784     prediction->
pos = p = (p + 1) % order;
 
  785     rd2[p] = reconstructed_difference;
 
  790                                       int32_t reconstructed_difference,
 
  793     int32_t reconstructed_sample, predictor, srd0;
 
  794     int32_t *reconstructed_differences;
 
  795     int64_t predicted_difference = 0;
 
  798     reconstructed_sample = av_clip_intp2(reconstructed_difference + prediction->
predicted_sample, 23);
 
  800                              + 
MUL64(prediction->
s_weight[1], reconstructed_sample)) >> 22, 23);
 
  804     srd0 = 
FFDIFFSIGN(reconstructed_difference, 0) << 23;
 
  805     for (i = 0; i < order; i++) {
 
  808         predicted_difference += 
MUL64(reconstructed_differences[-i], prediction->
d_weight[i]);
 
  826     same_sign[0] = sign * prediction->
prev_sign[0];
 
  827     same_sign[1] = sign * prediction->
prev_sign[1];
 
  832     sw1 = rshift32(-same_sign[1] * prediction->
s_weight[1], 1);
 
  833     sw1 = (av_clip(sw1, -range, range) & ~0xF) << 4;
 
  836     weight[0] = 254 * prediction->
s_weight[0] + 0x800000*same_sign[0] + sw1;
 
  837     prediction->
s_weight[0] = av_clip(rshift32(weight[0], 8), -range, range);
 
  839     range = 0x3C0000 - prediction->
s_weight[0];
 
  840     weight[1] = 255 * prediction->
s_weight[1] + 0xC00000*same_sign[1];
 
  841     prediction->
s_weight[1] = av_clip(rshift32(weight[1], 8), -range, range);
 
  851     for (subband = 0; subband < 
NB_SUBBANDS; subband++)
 
  856                              &tables[hd][subband]);
 
  864     for (subband = 0; subband < 
NB_SUBBANDS; subband++)
 
  877     int eighth = *idx == 7;
 
  878     *idx = (*idx + 1) & 7;
 
  880     return parity ^ eighth;
 
  888         static const int map[] = { 1, 2, 0, 3 };
 
  944     for (channel = 0; channel < 
NB_CHANNELS; channel++)
 
  949     for (channel = 0; channel < 
NB_CHANNELS; channel++) {
 
  966     for (channel = 0; channel < 
NB_CHANNELS; channel++) {
 
  980     for (channel = 0; channel < 
NB_CHANNELS; channel++)
 
 1000                "Frame size must be a multiple of %d samples\n", s->
block_size);
 
 1006         for (subband = 0; subband < 
NB_SUBBANDS; subband++) {
 
 1018                              int *got_frame_ptr, 
AVPacket *avpkt)
 
 1044         for (channel = 0; channel < 
NB_CHANNELS; channel++)
 
 1045             for (sample = 0; sample < 4; sample++)
 
 1047                          samples[channel][sample] << 8);
 
 1067     for (pos = 0, ipos = 0; pos < output_size; pos += s->
block_size, ipos += 4) {
 
 1070         for (channel = 0; channel < 
NB_CHANNELS; channel++)
 
 1071             for (sample = 0; sample < 4; sample++)
 
 1072                 samples[channel][sample] = (
int32_t)
AV_RN32A(&frame->
data[channel][4*(ipos+sample)]) >> 8;
 
 1078     *got_packet_ptr = 1;
 
 1090 #if CONFIG_APTX_DECODER 
 1108 #if CONFIG_APTX_HD_DECODER 
 1126 #if CONFIG_APTX_ENCODER 
 1141     .supported_samplerates = (
const int[]) {8000, 16000, 24000, 32000, 44100, 48000, 0},
 
 1145 #if CONFIG_APTX_HD_ENCODER 
 1160     .supported_samplerates = (
const int[]) {8000, 16000, 24000, 32000, 44100, 48000, 0},
 
Prediction prediction[NB_SUBBANDS]
static const int16_t hd_quantize_factor_select_offset_MLF[33]
void ff_af_queue_remove(AudioFrameQueue *afq, int nb_samples, int64_t *pts, int64_t *duration)
Remove frame(s) from the queue. 
static const int32_t quantize_dither_factors_MHF[3]
const struct AVCodec * codec
static void aptx_insert_sync(Channel channels[NB_CHANNELS], int32_t *idx)
#define AVERROR_INVALIDDATA
Invalid data found when processing input. 
static int shift(int a, int b)
This structure describes decoded (raw) audio or video data. 
ptrdiff_t const GLvoid * data
int32_t reconstructed_difference
static av_cold int init(AVCodecContext *avctx)
static av_always_inline int32_t aptx_bin_search(int32_t value, int32_t factor, const int32_t *intervals, int32_t nb_intervals)
static int aptx_check_parity(Channel channels[NB_CHANNELS], int32_t *idx)
static const int16_t quantize_factor_select_offset_LF[65]
static const int32_t aptx_qmf_inner_coeffs[NB_FILTERS][FILTER_TAPS]
static const int16_t quantize_factor_select_offset_HF[5]
#define AV_CH_LAYOUT_STEREO
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_WB32 unsigned int_TMPL AV_WB24 unsigned int_TMPL AV_RB16
static void decode(AVCodecContext *dec_ctx, AVPacket *pkt, AVFrame *frame, FILE *outfile)
static const int32_t quantize_dither_factors_HF[5]
const int32_t * quantize_dither_factors
static const int32_t hd_quantize_dither_factors_MHF[8]
static av_always_inline void aptx_qmf_polyphase_synthesis(FilterSignal signal[NB_FILTERS], const int32_t coeffs[NB_FILTERS][FILTER_TAPS], int shift, int32_t low_subband_input, int32_t high_subband_input, int32_t samples[NB_FILTERS])
int ff_alloc_packet2(AVCodecContext *avctx, AVPacket *avpkt, int64_t size, int64_t min_size)
Check AVPacket size and/or allocate data. 
static void aptx_invert_quantization(InvertQuantize *invert_quantize, int32_t quantized_sample, int32_t dither, ConstTables *tables)
static const int16_t hd_quantize_factor_select_offset_MHF[9]
static const int32_t hd_invert_quantize_dither_factors_MLF[33]
#define FF_CODEC_CAP_INIT_THREADSAFE
The codec does not modify any global variables in the init function, allowing to call the init functi...
const int16_t * quantize_factor_select_offset
av_cold void ff_af_queue_init(AVCodecContext *avctx, AudioFrameQueue *afq)
Initialize AudioFrameQueue. 
int64_t duration
Duration of this packet in AVStream->time_base units, 0 if unknown. 
static const int32_t invert_quantize_dither_factors_LF[65]
Quantize quantize[NB_SUBBANDS]
static uint16_t aptx_pack_codeword(Channel *channel)
static const int32_t hd_invert_quantize_dither_factors_MHF[9]
static const int16_t hd_quantize_factor_select_offset_LF[257]
static const int32_t quantize_dither_factors_MLF[9]
static const int32_t quantize_intervals_HF[5]
static const int32_t aptx_qmf_outer_coeffs[NB_FILTERS][FILTER_TAPS]
static const int32_t hd_quantize_intervals_MHF[9]
static const int16_t quantize_factor_select_offset_MLF[9]
static void aptx_unpack_codeword(Channel *channel, uint16_t codeword)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
static const int32_t hd_quantize_intervals_HF[17]
AVCodec ff_aptx_hd_decoder
static void aptx_process_subband(InvertQuantize *invert_quantize, Prediction *prediction, int32_t quantized_sample, int32_t dither, ConstTables *tables)
FilterSignal inner_filter_signal[NB_FILTERS][NB_FILTERS]
static const int32_t hd_quantize_dither_factors_MLF[32]
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static const int32_t hd_invert_quantize_dither_factors_LF[257]
static const uint8_t dither[8][8]
InvertQuantize invert_quantize[NB_SUBBANDS]
const char * name
Name of the codec implementation. 
static av_always_inline void aptx_qmf_filter_signal_push(FilterSignal *signal, int32_t sample)
int ff_af_queue_add(AudioFrameQueue *afq, const AVFrame *f)
Add a frame to the queue. 
int32_t reconstructed_differences[48]
#define FFDIFFSIGN(x, y)
Comparator. 
#define RSHIFT_SIZE(size)
static const int32_t quantize_dither_factors_LF[65]
int channels
number of audio channels, only used for audio. 
#define AV_CODEC_CAP_SMALL_LAST_FRAME
Codec can be fed a final frame with a smaller size. 
static void aptx_encode_channel(Channel *channel, int32_t samples[4], int hd)
static void aptx_encode_samples(AptXContext *ctx, int32_t samples[NB_CHANNELS][4], uint8_t *output)
static int aptx_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
int32_t quantized_sample_parity_change
int32_t quantization_factor
GLsizei GLboolean const GLfloat * value
static av_cold int aptx_init(AVCodecContext *avctx)
static void aptx_generate_dither(Channel *channel)
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
int32_t previous_reconstructed_sample
static int aptx_decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
static void aptx_quantize_difference(Quantize *quantize, int32_t sample_difference, int32_t dither, int32_t quantization_factor, ConstTables *tables)
static void error(const char *err)
#define FF_ARRAY_ELEMS(a)
AVCodec ff_aptx_hd_encoder
Channel channels[NB_CHANNELS]
static av_always_inline void aptx_qmf_polyphase_analysis(FilterSignal signal[NB_FILTERS], const int32_t coeffs[NB_FILTERS][FILTER_TAPS], int shift, int32_t samples[NB_FILTERS], int32_t *low_subband_output, int32_t *high_subband_output)
int format
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames...
static const int32_t hd_quantize_dither_factors_LF[256]
int frame_size
Number of samples per channel in an audio frame. 
static int32_t aptx_quantized_parity(Channel *channel)
static int32_t * aptx_reconstructed_differences_update(Prediction *prediction, int32_t reconstructed_difference, int order)
Libavcodec external API header. 
AVSampleFormat
Audio sample formats. 
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_WB32 unsigned int_TMPL AV_RB24
static void aptxhd_unpack_codeword(Channel *channel, uint32_t codeword)
const int32_t * invert_quantize_dither_factors
main external API structure. 
static const int32_t quantize_intervals_MLF[9]
int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
Get a buffer for a frame. 
static const int32_t hd_quantize_intervals_LF[257]
static int aptx_decode_samples(AptXContext *ctx, const uint8_t *input, int32_t samples[NB_CHANNELS][4])
static const uint16_t channel_layouts[7]
static void aptx_invert_quantize_and_prediction(Channel *channel, int hd)
static const int32_t hd_invert_quantize_dither_factors_HF[17]
static const int32_t invert_quantize_dither_factors_MHF[3]
static const int16_t hd_quantize_factor_select_offset_HF[17]
static const int factor[16]
const VDPAUPixFmtMap * map
static av_cold int aptx_close(AVCodecContext *avctx)
static int weight(int i, int blen, int offset)
static const int32_t invert_quantize_dither_factors_HF[5]
static av_const int sign_extend(int val, unsigned bits)
static const int32_t quantize_intervals_MHF[3]
static const int16_t quantization_factors[32]
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes. 
FilterSignal outer_filter_signal[NB_FILTERS]
common internal api header. 
int32_t dither[NB_SUBBANDS]
channel
Use these values when setting the channel map with ebur128_set_channel(). 
static const int16_t quantize_factor_select_offset_MHF[3]
const int32_t * quantize_intervals
static int quantize(CinepakEncContext *s, int h, uint8_t *data[4], int linesize[4], int v1mode, strip_info *info, mb_encoding encoding)
static av_always_inline int diff(const uint32_t a, const uint32_t b)
static const int16_t coeffs[]
static const int32_t hd_quantize_intervals_MLF[33]
void ff_af_queue_close(AudioFrameQueue *afq)
Close AudioFrameQueue. 
static ConstTables tables[2][NB_SUBBANDS]
static av_always_inline int32_t aptx_qmf_convolution(FilterSignal *signal, const int32_t coeffs[FILTER_TAPS], int shift)
static const int32_t invert_quantize_dither_factors_MLF[9]
static void aptx_prediction_filtering(Prediction *prediction, int32_t reconstructed_difference, int order)
static av_always_inline void aptx_update_codeword_history(Channel *channel)
static void aptx_qmf_tree_synthesis(QMFAnalysis *qmf, int32_t subband_samples[4], int32_t samples[4])
int32_t predicted_difference
This structure stores compressed data. 
static uint32_t aptxhd_pack_codeword(Channel *channel)
int nb_samples
number of audio samples (per channel) described by this frame 
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators. 
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...
int32_t buffer[2 *FILTER_TAPS]
static void aptx_qmf_tree_analysis(QMFAnalysis *qmf, int32_t samples[4], int32_t subband_samples[4])
static const int32_t hd_quantize_dither_factors_HF[16]
static const int32_t quantize_intervals_LF[65]
static void aptx_decode_channel(Channel *channel, int32_t samples[4])