53 0, 1, 2, 3, 4, 5, 6, 7,
54 8, 9, 10, 11, 12, 13, 14, 15,
55 16, 17, 18, 19, 20, 21, 22, 23,
56 24, 25, 26, 27, 28, 29, 30, 31,
57 32, 33, 34, 35, 36, 37, 38, 39,
58 40, 41, 42, 43, 47, 51, 56, 61,
59 66, 72, 79, 86, 94, 102, 112, 122,
60 133, 145, 158, 173, 189, 206, 225, 245,
61 267, 292, 318, 348, 379, 414, 452, 493,
62 538, 587, 640, 699, 763, 832, 908, 991,
63 1081, 1180, 1288, 1405, 1534, 1673, 1826, 1993,
64 2175, 2373, 2590, 2826, 3084, 3365, 3672, 4008,
65 4373, 4772, 5208, 5683, 6202, 6767, 7385, 8059,
66 8794, 9597, 10472, 11428, 12471, 13609, 14851, 16206,
67 17685, 19298, 21060, 22981, 25078, 27367, 29864, 32589,
68 -29973, -26728, -23186, -19322, -15105, -10503, -5481, -1,
69 1, 1, 5481, 10503, 15105, 19322, 23186, 26728,
70 29973, -32589, -29864, -27367, -25078, -22981, -21060, -19298,
71 -17685, -16206, -14851, -13609, -12471, -11428, -10472, -9597,
72 -8794, -8059, -7385, -6767, -6202, -5683, -5208, -4772,
73 -4373, -4008, -3672, -3365, -3084, -2826, -2590, -2373,
74 -2175, -1993, -1826, -1673, -1534, -1405, -1288, -1180,
75 -1081, -991, -908, -832, -763, -699, -640, -587,
76 -538, -493, -452, -414, -379, -348, -318, -292,
77 -267, -245, -225, -206, -189, -173, -158, -145,
78 -133, -122, -112, -102, -94, -86, -79, -72,
79 -66, -61, -56, -51, -47, -43, -42, -41,
80 -40, -39, -38, -37, -36, -35, -34, -33,
81 -32, -31, -30, -29, -28, -27, -26, -25,
82 -24, -23, -22, -21, -20, -19, -18, -17,
83 -16, -15, -14, -13, -12, -11, -10, -9,
84 -8, -7, -6, -5, -4, -3, -2, -1
89 0x0, 0x1, 0x2, 0x3, 0x6, 0xA, 0xF, 0x15,
90 -0x15, -0xF, -0xA, -0x6, -0x3, -0x2, -0x1, 0x0
94 0x0, 0x1, 0x2, 0x3, 0x6, 0xA, 0xF, 0x15,
95 0x0, -0x1, -0x2, -0x3, -0x6, -0xA, -0xF, -0x15
99 0x000, 0x008, 0x010, 0x020, 0x030, 0x040, 0x050, 0x060, 0x070, 0x080,
100 0x090, 0x0A0, 0x0B0, 0x0C0, 0x0D0, 0x0E0, 0x0F0, 0x100, 0x110, 0x120,
101 0x130, 0x140, 0x150, 0x160, 0x170, 0x180, 0x190, 0x1A0, 0x1B0, 0x1C0,
102 0x1D0, 0x1E0, 0x1F0, 0x200, 0x208, 0x210, 0x218, 0x220, 0x228, 0x230,
103 0x238, 0x240, 0x248, 0x250, 0x258, 0x260, 0x268, 0x270, 0x278, 0x280,
104 0x288, 0x290, 0x298, 0x2A0, 0x2A8, 0x2B0, 0x2B8, 0x2C0, 0x2C8, 0x2D0,
105 0x2D8, 0x2E0, 0x2E8, 0x2F0, 0x2F8, 0x300, 0x308, 0x310, 0x318, 0x320,
106 0x328, 0x330, 0x338, 0x340, 0x348, 0x350, 0x358, 0x360, 0x368, 0x370,
107 0x378, 0x380, 0x388, 0x390, 0x398, 0x3A0, 0x3A8, 0x3B0, 0x3B8, 0x3C0,
108 0x3C8, 0x3D0, 0x3D8, 0x3E0, 0x3E8, 0x3F0, 0x3F8, 0x400, 0x440, 0x480,
109 0x4C0, 0x500, 0x540, 0x580, 0x5C0, 0x600, 0x640, 0x680, 0x6C0, 0x700,
110 0x740, 0x780, 0x7C0, 0x800, 0x900, 0xA00, 0xB00, 0xC00, 0xD00, 0xE00,
111 0xF00, 0x1000, 0x1400, 0x1800, 0x1C00, 0x2000, 0x3000, 0x4000
125 s->sample[0] =
s->sample[1] = 0;
131 for (
i = 0;
i < 128;
i++) {
142 s->sample[0] =
s->sample[1] = 0x80;
146 s->sample[0] =
s->sample[1] = 0x80;
157 for (
i = -128;
i < 128;
i++) {
169 for (
i = 0;
i < 127;
i++) {
195 int *got_frame_ptr,
AVPacket *avpkt)
197 int buf_size = avpkt->
size;
204 int16_t *output_samples, *samples_end;
207 if (stereo && (buf_size & 1))
245 output_samples = (int16_t *)
frame->data[0];
246 samples_end = output_samples +
out;
254 predictor[1] =
sign_extend(bytestream2_get_byteu(&gb) << 8, 16);
255 predictor[0] =
sign_extend(bytestream2_get_byteu(&gb) << 8, 16);
257 predictor[0] =
sign_extend(bytestream2_get_le16u(&gb), 16);
261 while (output_samples < samples_end) {
262 predictor[
ch] +=
s->array[bytestream2_get_byteu(&gb)];
263 predictor[
ch] = av_clip_int16(predictor[
ch]);
264 *output_samples++ = predictor[
ch];
276 *output_samples++ = predictor[
ch];
280 while (output_samples < samples_end) {
282 predictor[
ch] = av_clip_int16(predictor[
ch]);
283 *output_samples++ = predictor[
ch];
292 int shift[2] = { 4, 4 };
298 while (output_samples < samples_end) {
299 int diff = bytestream2_get_byteu(&gb);
314 predictor[
ch] = av_clip_int16(predictor[
ch]);
315 *output_samples++ = predictor[
ch];
325 *samples_end_u8 = output_samples_u8 +
out;
326 while (output_samples_u8 < samples_end_u8) {
327 int n = bytestream2_get_byteu(&gb);
329 s->sample[0] +=
s->sol_table[
n >> 4];
330 s->sample[0] = av_clip_uint8(
s->sample[0]);
331 *output_samples_u8++ =
s->sample[0];
333 s->sample[stereo] +=
s->sol_table[
n & 0x0F];
334 s->sample[stereo] = av_clip_uint8(
s->sample[stereo]);
335 *output_samples_u8++ =
s->sample[stereo];
338 while (output_samples < samples_end) {
339 int n = bytestream2_get_byteu(&gb);
342 s->sample[
ch] = av_clip_int16(
s->sample[
ch]);
343 *output_samples++ =
s->sample[
ch];
351 while (output_samples < samples_end) {
352 int8_t
n = bytestream2_get_byteu(&gb);
356 s->sample[
ch] +=
s->array[
n + 128];
357 s->sample[
ch] = av_clip_int16(
s->sample[
ch]);
358 *output_samples++ =
s->sample[
ch];
366 while (output_samples < samples_end) {
367 uint8_t n = bytestream2_get_byteu(&gb);
369 *output_samples++ =
s->sample[idx] += (unsigned)
s->array[
n];
381 #define DPCM_DECODER(id_, name_, long_name_) \
382 AVCodec ff_ ## name_ ## _decoder = { \
384 .long_name = NULL_IF_CONFIG_SMALL(long_name_), \
385 .type = AVMEDIA_TYPE_AUDIO, \
387 .priv_data_size = sizeof(DPCMContext), \
388 .init = dpcm_decode_init, \
389 .decode = dpcm_decode_frame, \
390 .capabilities = AV_CODEC_CAP_DR1, \