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;
215 output_samples = (int16_t *)frame->
data[0];
216 samples_end = output_samples + out;
224 predictor[1] =
sign_extend(bytestream2_get_byteu(&gb) << 8, 16);
225 predictor[0] =
sign_extend(bytestream2_get_byteu(&gb) << 8, 16);
227 predictor[0] =
sign_extend(bytestream2_get_le16u(&gb), 16);
231 while (output_samples < samples_end) {
233 predictor[ch] = av_clip_int16(predictor[ch]);
234 *output_samples++ = predictor[ch];
244 for (ch = 0; ch < avctx->
channels; ch++) {
245 predictor[ch] =
sign_extend(bytestream2_get_le16u(&gb), 16);
246 *output_samples++ = predictor[ch];
250 while (output_samples < samples_end) {
252 predictor[ch] = av_clip_int16(predictor[ch]);
253 *output_samples++ = predictor[ch];
262 int shift[2] = { 4, 4 };
264 for (ch = 0; ch < avctx->
channels; ch++)
265 predictor[ch] =
sign_extend(bytestream2_get_le16u(&gb), 16);
268 while (output_samples < samples_end) {
269 int diff = bytestream2_get_byteu(&gb);
275 shift[ch] -= (2 * n);
283 predictor[ch] += diff;
285 predictor[ch] = av_clip_int16(predictor[ch]);
286 *output_samples++ = predictor[ch];
296 *samples_end_u8 = output_samples_u8 +
out;
297 while (output_samples_u8 < samples_end_u8) {
298 int n = bytestream2_get_byteu(&gb);
302 *output_samples_u8++ = s->
sample[0];
306 *output_samples_u8++ = s->
sample[stereo];
309 while (output_samples < samples_end) {
310 int n = bytestream2_get_byteu(&gb);
314 *output_samples++ = s->
sample[ch];
327 #define DPCM_DECODER(id_, name_, long_name_) \
328 AVCodec ff_ ## name_ ## _decoder = { \
330 .long_name = NULL_IF_CONFIG_SMALL(long_name_), \
331 .type = AVMEDIA_TYPE_AUDIO, \
333 .priv_data_size = sizeof(DPCMContext), \
334 .init = dpcm_decode_init, \
335 .decode = dpcm_decode_frame, \
336 .capabilities = CODEC_CAP_DR1, \