23 #define BITSTREAM_READER_LE
37 #define BLOCKS_PER_LOOP 4608
38 #define MAX_CHANNELS 2
39 #define MAX_BYTESPERSAMPLE 3
41 #define APE_FRAMECODE_MONO_SILENCE 1
42 #define APE_FRAMECODE_STEREO_SILENCE 3
43 #define APE_FRAMECODE_PSEUDO_STEREO 4
45 #define HISTORY_SIZE 512
46 #define PREDICTOR_ORDER 8
48 #define PREDICTOR_SIZE 50
50 #define YDELAYA (18 + PREDICTOR_ORDER*4)
51 #define YDELAYB (18 + PREDICTOR_ORDER*3)
52 #define XDELAYA (18 + PREDICTOR_ORDER*2)
53 #define XDELAYB (18 + PREDICTOR_ORDER)
55 #define YADAPTCOEFFSA 18
56 #define XADAPTCOEFFSA 14
57 #define YADAPTCOEFFSB 10
58 #define XADAPTCOEFFSB 5
73 #define APE_FILTER_LEVELS 3
236 #define TOP_VALUE ((unsigned int)1 << (CODE_BITS-1))
237 #define SHIFT_BITS (CODE_BITS - 9)
238 #define EXTRA_BITS ((CODE_BITS-2) % 8 + 1)
239 #define BOTTOM_VALUE (TOP_VALUE >> 8)
312 #define MODEL_ELEMENTS 64
318 0, 14824, 28224, 39348, 47855, 53994, 58171, 60926,
319 62682, 63786, 64463, 64878, 65126, 65276, 65365, 65419,
320 65450, 65469, 65480, 65487, 65491, 65493,
327 14824, 13400, 11124, 8507, 6139, 4177, 2755, 1756,
328 1104, 677, 415, 248, 150, 89, 54, 31,
336 0, 19578, 36160, 48417, 56323, 60899, 63265, 64435,
337 64971, 65232, 65351, 65416, 65447, 65466, 65476, 65482,
338 65485, 65488, 65490, 65491, 65492, 65493,
345 19578, 16582, 12257, 7906, 4576, 2366, 1170, 536,
346 261, 119, 65, 31, 19, 10, 6, 3,
357 const uint16_t counts[],
358 const uint16_t counts_diff[])
365 symbol= cf - 65535 + 63;
372 for (symbol = 0; counts[symbol + 1] <= cf; symbol++);
382 int lim = rice->
k ? (1 << (rice->
k + 4)) : 0;
383 rice->
ksum += ((x + 1) / 2) - ((rice->
ksum + 16) >> 5);
385 if (rice->
ksum < lim)
387 else if (rice->
ksum >= (1 << (rice->
k + 5)))
404 tmpk = (rice->
k < 1) ? 0 : rice->
k - 1;
408 else if (tmpk <= 32) {
415 x += overflow << tmpk;
419 pivot = rice->
ksum >> 5;
430 if (pivot < 0x10000) {
434 int base_hi = pivot, base_lo;
437 while (base_hi & ~0xFFFF) {
446 base = (base_hi << bbits) + base_lo;
449 x = base + overflow * pivot;
468 memset(decoded0, 0, blockstodecode *
sizeof(int32_t));
469 memset(decoded1, 0, blockstodecode *
sizeof(int32_t));
471 while (blockstodecode--) {
484 ctx->
CRC = bytestream_get_be32(&ctx->
ptr);
489 ctx->
CRC &= ~0x80000000;
534 return (x < 0) - (x > 0);
538 const int decoded,
const int filter,
539 const int delayA,
const int delayB,
540 const int adaptA,
const int adaptB)
542 int32_t predictionA, predictionB, sign;
546 p->
buf[delayA - 1] = p->
buf[delayA] - p->
buf[delayA - 1];
557 p->
buf[delayB - 1] = p->
buf[delayB] - p->
buf[delayB - 1];
567 p->
lastA[
filter] = decoded + ((predictionA + (predictionB >> 1)) >> 10);
614 int32_t predictionA, currentA,
A, sign;
616 currentA = p->
lastA[0];
629 currentA = A + (predictionA >> 10);
652 p->
lastA[0] = currentA;
663 memset(f->
coeffs, 0, order *
sizeof(int16_t));
674 int32_t *
data,
int count,
int order,
int fracbits)
684 res = (res + (1 << (fracbits - 1))) >> fracbits;
689 *f->
delay++ = av_clip_int16(res);
691 if (version < 3980) {
693 f->
adaptcoeffs[0] = (res == 0) ? 0 : ((res >> 28) & 8) - 4;
703 (25 + (absres <= f->
avg*3) + (absres <= f->
avg*4/3));
707 f->
avg += (absres - f->
avg) / 16;
719 (order * 2) *
sizeof(int16_t));
727 int32_t *data0, int32_t *data1,
728 int count,
int order,
int fracbits)
736 int32_t *decoded1,
int count)
785 memcpy(decoded1, decoded0, count *
sizeof(*decoded1));
809 left = *decoded1 - (*decoded0 / 2);
810 right = left + *decoded0;
812 *(decoded0++) = left;
813 *(decoded1++) = right;
818 int *got_frame_ptr,
AVPacket *avpkt)
820 const uint8_t *buf = avpkt->
data;
821 int buf_size = avpkt->
size;
832 uint32_t nblocks, offset;
852 nblocks = bytestream_get_be32(&s->
ptr);
853 offset = bytestream_get_be32(&s->
ptr);
865 if (!nblocks || nblocks > INT_MAX) {
911 for (i = 0; i < blockstodecode; i++) {
922 return (s->
samples == 0) ? buf_size : 0;