23 #define BITSTREAM_READER_LE
36 #define BLOCKS_PER_LOOP 4608
37 #define MAX_CHANNELS 2
38 #define MAX_BYTESPERSAMPLE 3
40 #define APE_FRAMECODE_MONO_SILENCE 1
41 #define APE_FRAMECODE_STEREO_SILENCE 3
42 #define APE_FRAMECODE_PSEUDO_STEREO 4
44 #define HISTORY_SIZE 512
45 #define PREDICTOR_ORDER 8
47 #define PREDICTOR_SIZE 50
49 #define YDELAYA (18 + PREDICTOR_ORDER*4)
50 #define YDELAYB (18 + PREDICTOR_ORDER*3)
51 #define XDELAYA (18 + PREDICTOR_ORDER*2)
52 #define XDELAYB (18 + PREDICTOR_ORDER)
54 #define YADAPTCOEFFSA 18
55 #define XADAPTCOEFFSA 14
56 #define YADAPTCOEFFSB 10
57 #define XADAPTCOEFFSB 5
72 #define APE_FILTER_LEVELS 3
235 #define TOP_VALUE ((unsigned int)1 << (CODE_BITS-1))
236 #define SHIFT_BITS (CODE_BITS - 9)
237 #define EXTRA_BITS ((CODE_BITS-2) % 8 + 1)
238 #define BOTTOM_VALUE (TOP_VALUE >> 8)
311 #define MODEL_ELEMENTS 64
317 0, 14824, 28224, 39348, 47855, 53994, 58171, 60926,
318 62682, 63786, 64463, 64878, 65126, 65276, 65365, 65419,
319 65450, 65469, 65480, 65487, 65491, 65493,
326 14824, 13400, 11124, 8507, 6139, 4177, 2755, 1756,
327 1104, 677, 415, 248, 150, 89, 54, 31,
335 0, 19578, 36160, 48417, 56323, 60899, 63265, 64435,
336 64971, 65232, 65351, 65416, 65447, 65466, 65476, 65482,
337 65485, 65488, 65490, 65491, 65492, 65493,
344 19578, 16582, 12257, 7906, 4576, 2366, 1170, 536,
345 261, 119, 65, 31, 19, 10, 6, 3,
356 const uint16_t counts[],
357 const uint16_t counts_diff[])
364 symbol= cf - 65535 + 63;
371 for (symbol = 0; counts[symbol + 1] <= cf; symbol++);
381 int lim = rice->
k ? (1 << (rice->
k + 4)) : 0;
382 rice->
ksum += ((x + 1) / 2) - ((rice->
ksum + 16) >> 5);
384 if (rice->
ksum < lim)
386 else if (rice->
ksum >= (1 << (rice->
k + 5)))
403 tmpk = (rice->
k < 1) ? 0 : rice->
k - 1;
407 else if (tmpk <= 32) {
414 x += overflow << tmpk;
418 pivot = rice->
ksum >> 5;
429 if (pivot < 0x10000) {
433 int base_hi = pivot, base_lo;
436 while (base_hi & ~0xFFFF) {
445 base = (base_hi << bbits) + base_lo;
448 x = base + overflow * pivot;
467 memset(decoded0, 0, blockstodecode *
sizeof(int32_t));
468 memset(decoded1, 0, blockstodecode *
sizeof(int32_t));
470 while (blockstodecode--) {
483 ctx->
CRC = bytestream_get_be32(&ctx->
ptr);
488 ctx->
CRC &= ~0x80000000;
533 return (x < 0) - (x > 0);
537 const int decoded,
const int filter,
538 const int delayA,
const int delayB,
539 const int adaptA,
const int adaptB)
541 int32_t predictionA, predictionB, sign;
545 p->
buf[delayA - 1] = p->
buf[delayA] - p->
buf[delayA - 1];
556 p->
buf[delayB - 1] = p->
buf[delayB] - p->
buf[delayB - 1];
566 p->
lastA[
filter] = decoded + ((predictionA + (predictionB >> 1)) >> 10);
613 int32_t predictionA, currentA,
A, sign;
615 currentA = p->
lastA[0];
628 currentA = A + (predictionA >> 10);
651 p->
lastA[0] = currentA;
662 memset(f->
coeffs, 0, order *
sizeof(int16_t));
673 int32_t *
data,
int count,
int order,
int fracbits)
683 res = (res + (1 << (fracbits - 1))) >> fracbits;
688 *f->
delay++ = av_clip_int16(res);
690 if (version < 3980) {
692 f->
adaptcoeffs[0] = (res == 0) ? 0 : ((res >> 28) & 8) - 4;
702 (25 + (absres <= f->
avg*3) + (absres <= f->
avg*4/3));
706 f->
avg += (absres - f->
avg) / 16;
718 (order * 2) *
sizeof(int16_t));
726 int32_t *data0, int32_t *data1,
727 int count,
int order,
int fracbits)
735 int32_t *decoded1,
int count)
784 memcpy(decoded1, decoded0, count *
sizeof(*decoded1));
808 left = *decoded1 - (*decoded0 / 2);
809 right = left + *decoded0;
811 *(decoded0++) = left;
812 *(decoded1++) = right;
817 int *got_frame_ptr,
AVPacket *avpkt)
819 const uint8_t *buf = avpkt->
data;
820 int buf_size = avpkt->
size;
831 uint32_t nblocks, offset;
851 nblocks = bytestream_get_be32(&s->
ptr);
852 offset = bytestream_get_be32(&s->
ptr);
864 if (!nblocks || nblocks > INT_MAX) {
910 for (i = 0; i < blockstodecode; i++) {
921 return (s->
samples == 0) ? buf_size : 0;