54 0, 1, 2, 3, 4, 5, 6, 7,
55 8, 9, 10, 11, 12, 13, 14, 15,
56 16, 17, 18, 19, 20, 21, 22, 23,
57 24, 25, 26, 27, 28, 29, 30, 31,
58 32, 33, 34, 35, 36, 37, 38, 39,
59 40, 41, 42, 43, 47, 51, 56, 61,
60 66, 72, 79, 86, 94, 102, 112, 122,
61 133, 145, 158, 173, 189, 206, 225, 245,
62 267, 292, 318, 348, 379, 414, 452, 493,
63 538, 587, 640, 699, 763, 832, 908, 991,
64 1081, 1180, 1288, 1405, 1534, 1673, 1826, 1993,
65 2175, 2373, 2590, 2826, 3084, 3365, 3672, 4008,
66 4373, 4772, 5208, 5683, 6202, 6767, 7385, 8059,
67 8794, 9597, 10472, 11428, 12471, 13609, 14851, 16206,
68 17685, 19298, 21060, 22981, 25078, 27367, 29864, 32589,
69 -29973, -26728, -23186, -19322, -15105, -10503, -5481, -1,
70 1, 1, 5481, 10503, 15105, 19322, 23186, 26728,
71 29973, -32589, -29864, -27367, -25078, -22981, -21060, -19298,
72 -17685, -16206, -14851, -13609, -12471, -11428, -10472, -9597,
73 -8794, -8059, -7385, -6767, -6202, -5683, -5208, -4772,
74 -4373, -4008, -3672, -3365, -3084, -2826, -2590, -2373,
75 -2175, -1993, -1826, -1673, -1534, -1405, -1288, -1180,
76 -1081, -991, -908, -832, -763, -699, -640, -587,
77 -538, -493, -452, -414, -379, -348, -318, -292,
78 -267, -245, -225, -206, -189, -173, -158, -145,
79 -133, -122, -112, -102, -94, -86, -79, -72,
80 -66, -61, -56, -51, -47, -43, -42, -41,
81 -40, -39, -38, -37, -36, -35, -34, -33,
82 -32, -31, -30, -29, -28, -27, -26, -25,
83 -24, -23, -22, -21, -20, -19, -18, -17,
84 -16, -15, -14, -13, -12, -11, -10, -9,
85 -8, -7, -6, -5, -4, -3, -2, -1
90 0x0, 0x1, 0x2, 0x3, 0x6, 0xA, 0xF, 0x15,
91 -0x15, -0xF, -0xA, -0x6, -0x3, -0x2, -0x1, 0x0
95 0x0, 0x1, 0x2, 0x3, 0x6, 0xA, 0xF, 0x15,
96 0x0, -0x1, -0x2, -0x3, -0x6, -0xA, -0xF, -0x15
100 0x000, 0x008, 0x010, 0x020, 0x030, 0x040, 0x050, 0x060, 0x070, 0x080,
101 0x090, 0x0A0, 0x0B0, 0x0C0, 0x0D0, 0x0E0, 0x0F0, 0x100, 0x110, 0x120,
102 0x130, 0x140, 0x150, 0x160, 0x170, 0x180, 0x190, 0x1A0, 0x1B0, 0x1C0,
103 0x1D0, 0x1E0, 0x1F0, 0x200, 0x208, 0x210, 0x218, 0x220, 0x228, 0x230,
104 0x238, 0x240, 0x248, 0x250, 0x258, 0x260, 0x268, 0x270, 0x278, 0x280,
105 0x288, 0x290, 0x298, 0x2A0, 0x2A8, 0x2B0, 0x2B8, 0x2C0, 0x2C8, 0x2D0,
106 0x2D8, 0x2E0, 0x2E8, 0x2F0, 0x2F8, 0x300, 0x308, 0x310, 0x318, 0x320,
107 0x328, 0x330, 0x338, 0x340, 0x348, 0x350, 0x358, 0x360, 0x368, 0x370,
108 0x378, 0x380, 0x388, 0x390, 0x398, 0x3A0, 0x3A8, 0x3B0, 0x3B8, 0x3C0,
109 0x3C8, 0x3D0, 0x3D8, 0x3E0, 0x3E8, 0x3F0, 0x3F8, 0x400, 0x440, 0x480,
110 0x4C0, 0x500, 0x540, 0x580, 0x5C0, 0x600, 0x640, 0x680, 0x6C0, 0x700,
111 0x740, 0x780, 0x7C0, 0x800, 0x900, 0xA00, 0xB00, 0xC00, 0xD00, 0xE00,
112 0xF00, 0x1000, 0x1400, 0x1800, 0x1C00, 0x2000, 0x3000, 0x4000
132 for (i = 0; i < 128; i++) {
174 int *got_frame_ptr,
AVPacket *avpkt)
176 int buf_size = avpkt->
size;
182 int16_t *output_samples, *samples_end;
185 if (stereo && (buf_size & 1))
195 out = buf_size - 6 - avctx->
channels;
198 out = buf_size - 2 * avctx->
channels;
218 output_samples = (int16_t *)s->
frame.
data[0];
219 samples_end = output_samples + out;
227 predictor[1] =
sign_extend(bytestream2_get_byteu(&gb) << 8, 16);
228 predictor[0] =
sign_extend(bytestream2_get_byteu(&gb) << 8, 16);
230 predictor[0] =
sign_extend(bytestream2_get_le16u(&gb), 16);
234 while (output_samples < samples_end) {
236 predictor[ch] = av_clip_int16(predictor[ch]);
237 *output_samples++ = predictor[ch];
247 for (ch = 0; ch < avctx->
channels; ch++) {
248 predictor[ch] =
sign_extend(bytestream2_get_le16u(&gb), 16);
249 *output_samples++ = predictor[ch];
253 while (output_samples < samples_end) {
255 predictor[ch] = av_clip_int16(predictor[ch]);
256 *output_samples++ = predictor[ch];
265 int shift[2] = { 4, 4 };
267 for (ch = 0; ch < avctx->
channels; ch++)
268 predictor[ch] =
sign_extend(bytestream2_get_le16u(&gb), 16);
271 while (output_samples < samples_end) {
272 int diff = bytestream2_get_byteu(&gb);
278 shift[ch] -= (2 * n);
286 predictor[ch] += diff;
288 predictor[ch] = av_clip_int16(predictor[ch]);
289 *output_samples++ = predictor[ch];
299 *samples_end_u8 = output_samples_u8 + out;
300 while (output_samples_u8 < samples_end_u8) {
301 int n = bytestream2_get_byteu(&gb);
305 *output_samples_u8++ = s->
sample[0];
309 *output_samples_u8++ = s->
sample[stereo];
312 while (output_samples < samples_end) {
313 int n = bytestream2_get_byteu(&gb);
317 *output_samples++ = s->
sample[ch];
331 #define DPCM_DECODER(id_, name_, long_name_) \
332 AVCodec ff_ ## name_ ## _decoder = { \
334 .type = AVMEDIA_TYPE_AUDIO, \
336 .priv_data_size = sizeof(DPCMContext), \
337 .init = dpcm_decode_init, \
338 .decode = dpcm_decode_frame, \
339 .capabilities = CODEC_CAP_DR1, \
340 .long_name = NULL_IF_CONFIG_SMALL(long_name_), \