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
131 for (i = 0; i < 128; i++) {
170 int *got_frame_ptr,
AVPacket *avpkt)
172 int buf_size = avpkt->
size;
179 int16_t *output_samples, *samples_end;
182 if (stereo && (buf_size & 1))
192 out = buf_size - 6 - avctx->
channels;
195 out = buf_size - 2 * avctx->
channels;
218 output_samples = (int16_t *)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];
330 #define DPCM_DECODER(id_, name_, long_name_) \
331 AVCodec ff_ ## name_ ## _decoder = { \
333 .type = AVMEDIA_TYPE_AUDIO, \
335 .priv_data_size = sizeof(DPCMContext), \
336 .init = dpcm_decode_init, \
337 .decode = dpcm_decode_frame, \
338 .capabilities = CODEC_CAP_DR1, \
339 .long_name = NULL_IF_CONFIG_SMALL(long_name_), \