54 0, 1, 2, 3, 4, 5, 6, 7,
55 8, 9, 10, 11, 12, 13, 14, 16,
56 17, 19, 21, 23, 25, 28, 31, 34,
57 37, 41, 45, 50, 55, 60, 66, 73,
58 80, 88, 97, 107, 118, 130, 143, 157,
59 173, 190, 209, 230, 253, 279, 307, 337,
60 371, 408, 449, 494, 544, 598, 658, 724,
61 796, 876, 963, 1060, 1166, 1282, 1411, 1552,
62 1707, 1878, 2066, 2272, 2499, 2749, 3024, 3327,
63 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132,
64 7845, 8630, 9493, 10442, 11487, 12635, 13899, 15289,
65 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767,
69 0, 1, 2, 3, 4, 5, 6, 7,
70 8, 9, 10, 11, 12, 13, 14, 15,
71 16, 17, 18, 19, 20, 21, 22, 23,
72 24, 25, 26, 27, 28, 29, 30, 31,
73 32, 33, 34, 35, 36, 37, 38, 39,
74 40, 41, 42, 43, 47, 51, 56, 61,
75 66, 72, 79, 86, 94, 102, 112, 122,
76 133, 145, 158, 173, 189, 206, 225, 245,
77 267, 292, 318, 348, 379, 414, 452, 493,
78 538, 587, 640, 699, 763, 832, 908, 991,
79 1081, 1180, 1288, 1405, 1534, 1673, 1826, 1993,
80 2175, 2373, 2590, 2826, 3084, 3365, 3672, 4008,
81 4373, 4772, 5208, 5683, 6202, 6767, 7385, 8059,
82 8794, 9597, 10472, 11428, 12471, 13609, 14851, 16206,
83 17685, 19298, 21060, 22981, 25078, 27367, 29864, 32589,
84 -29973, -26728, -23186, -19322, -15105, -10503, -5481, -1,
85 1, 1, 5481, 10503, 15105, 19322, 23186, 26728,
86 29973, -32589, -29864, -27367, -25078, -22981, -21060, -19298,
87 -17685, -16206, -14851, -13609, -12471, -11428, -10472, -9597,
88 -8794, -8059, -7385, -6767, -6202, -5683, -5208, -4772,
89 -4373, -4008, -3672, -3365, -3084, -2826, -2590, -2373,
90 -2175, -1993, -1826, -1673, -1534, -1405, -1288, -1180,
91 -1081, -991, -908, -832, -763, -699, -640, -587,
92 -538, -493, -452, -414, -379, -348, -318, -292,
93 -267, -245, -225, -206, -189, -173, -158, -145,
94 -133, -122, -112, -102, -94, -86, -79, -72,
95 -66, -61, -56, -51, -47, -43, -42, -41,
96 -40, -39, -38, -37, -36, -35, -34, -33,
97 -32, -31, -30, -29, -28, -27, -26, -25,
98 -24, -23, -22, -21, -20, -19, -18, -17,
99 -16, -15, -14, -13, -12, -11, -10, -9,
100 -8, -7, -6, -5, -4, -3, -2, -1
105 0x0, 0x1, 0x2, 0x3, 0x6, 0xA, 0xF, 0x15,
106 -0x15, -0xF, -0xA, -0x6, -0x3, -0x2, -0x1, 0x0
110 0x0, 0x1, 0x2, 0x3, 0x6, 0xA, 0xF, 0x15,
111 0x0, -0x1, -0x2, -0x3, -0x6, -0xA, -0xF, -0x15
115 0x000, 0x008, 0x010, 0x020, 0x030, 0x040, 0x050, 0x060, 0x070, 0x080,
116 0x090, 0x0A0, 0x0B0, 0x0C0, 0x0D0, 0x0E0, 0x0F0, 0x100, 0x110, 0x120,
117 0x130, 0x140, 0x150, 0x160, 0x170, 0x180, 0x190, 0x1A0, 0x1B0, 0x1C0,
118 0x1D0, 0x1E0, 0x1F0, 0x200, 0x208, 0x210, 0x218, 0x220, 0x228, 0x230,
119 0x238, 0x240, 0x248, 0x250, 0x258, 0x260, 0x268, 0x270, 0x278, 0x280,
120 0x288, 0x290, 0x298, 0x2A0, 0x2A8, 0x2B0, 0x2B8, 0x2C0, 0x2C8, 0x2D0,
121 0x2D8, 0x2E0, 0x2E8, 0x2F0, 0x2F8, 0x300, 0x308, 0x310, 0x318, 0x320,
122 0x328, 0x330, 0x338, 0x340, 0x348, 0x350, 0x358, 0x360, 0x368, 0x370,
123 0x378, 0x380, 0x388, 0x390, 0x398, 0x3A0, 0x3A8, 0x3B0, 0x3B8, 0x3C0,
124 0x3C8, 0x3D0, 0x3D8, 0x3E0, 0x3E8, 0x3F0, 0x3F8, 0x400, 0x440, 0x480,
125 0x4C0, 0x500, 0x540, 0x580, 0x5C0, 0x600, 0x640, 0x680, 0x6C0, 0x700,
126 0x740, 0x780, 0x7C0, 0x800, 0x900, 0xA00, 0xB00, 0xC00, 0xD00, 0xE00,
127 0xF00, 0x1000, 0x1400, 0x1800, 0x1C00, 0x2000, 0x3000, 0x4000
131 0, 2, 4, 6, 8, 10, 12, 15,
132 18, 21, 24, 28, 32, 36, 40, 44,
133 49, 54, 59, 64, 70, 76, 82, 88,
134 95, 102, 109, 116, 124, 132, 140, 148,
135 160, 170, 180, 190, 200, 210, 220, 230,
136 240, 255, 270, 285, 300, 320, 340, 360,
137 380, 400, 425, 450, 475, 500, 525, 550,
138 580, 610, 650, 700, 750, 800, 900, 1000,
139 -0, -2, -4, -6, -8, -10, -12, -15,
140 -18, -21, -24, -28, -32, -36, -40, -44,
141 -49, -54, -59, -64, -70, -76, -82, -88,
142 -95, -102,-109,-116,-124,-132,-140,-148,
143 -160,-170,-180,-190,-200,-210,-220,-230,
144 -240,-255,-270,-285,-300,-320,-340,-360,
145 -380,-400,-425,-450,-475,-500,-525,-550,
146 -580,-610,-650,-700,-750,-800,-900,-1000,
159 s->sample[0] =
s->sample[1] = 0;
165 for (
i = 0;
i < 128;
i++) {
176 s->sample[0] =
s->sample[1] = 0x80;
180 s->sample[0] =
s->sample[1] = 0x80;
191 for (
i = -128;
i < 128;
i++) {
198 for (
i = -128;
i < 128;
i++) {
199 int16_t cube = (
i *
i *
i) / 64;
200 s->array[
i+128] = cube;
210 for (
i = 0;
i < 127;
i++) {
240 int *got_frame_ptr,
AVPacket *avpkt)
242 int buf_size = avpkt->
size;
248 int16_t *output_samples, *samples_end;
251 if (stereo && (buf_size & 1))
292 output_samples = (int16_t *)
frame->data[0];
293 samples_end = output_samples +
out;
308 while (output_samples < samples_end) {
309 predictor[ch] +=
s->array[bytestream2_get_byteu(&gb)];
327 while (output_samples < samples_end) {
339 int shift[2] = { 4, 4 };
345 while (output_samples < samples_end) {
346 int diff = bytestream2_get_byteu(&gb);
352 shift[ch] -= (2 * n);
371 uint8_t *output_samples_u8 =
frame->data[0],
372 *samples_end_u8 = output_samples_u8 +
out;
373 while (output_samples_u8 < samples_end_u8) {
374 int n = bytestream2_get_byteu(&gb);
376 s->sample[0] +=
s->sol_table[n >> 4];
378 *output_samples_u8++ =
s->sample[0];
380 s->sample[stereo] +=
s->sol_table[n & 0x0F];
382 *output_samples_u8++ =
s->sample[stereo];
385 while (output_samples < samples_end) {
386 int n = bytestream2_get_byteu(&gb);
390 *output_samples++ =
s->sample[ch];
399 while (output_samples < samples_end) {
400 int8_t n = bytestream2_get_byteu(&gb);
404 s->sample[ch] +=
s->array[n + 128];
406 *output_samples++ =
s->sample[ch];
414 while (output_samples < samples_end) {
415 uint8_t n = bytestream2_get_byteu(&gb);
417 *output_samples++ =
s->sample[idx] += (unsigned)
s->array[n];
426 while (output_samples < samples_end) {
427 uint8_t n = bytestream2_get_byteu(&gb);
432 *output_samples++ =
s->sample[idx];
441 while (output_samples < samples_end) {
442 const uint8_t n = bytestream2_get_byteu(&gb);
447 s->sample[idx] +=
s->scale * (unsigned)
wady_table[n & 0x7f];
464 s->sample[0] =
s->sample[1] = 0;
467 #define DPCM_DECODER(id_, name_, long_name_) \
468 const FFCodec ff_ ## name_ ## _decoder = { \
470 CODEC_LONG_NAME(long_name_), \
471 .p.type = AVMEDIA_TYPE_AUDIO, \
473 .p.capabilities = AV_CODEC_CAP_DR1, \
474 .priv_data_size = sizeof(DPCMContext), \
475 .init = dpcm_decode_init, \
476 .flush = dpcm_flush, \
477 FF_CODEC_DECODE_CB(dpcm_decode_frame), \