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;
216 output_samples = (int16_t *)frame->
data[0];
217 samples_end = output_samples + out;
225 predictor[1] =
sign_extend(bytestream2_get_byteu(&gb) << 8, 16);
226 predictor[0] =
sign_extend(bytestream2_get_byteu(&gb) << 8, 16);
228 predictor[0] =
sign_extend(bytestream2_get_le16u(&gb), 16);
232 while (output_samples < samples_end) {
234 predictor[ch] = av_clip_int16(predictor[ch]);
235 *output_samples++ = predictor[ch];
245 for (ch = 0; ch < avctx->
channels; ch++) {
246 predictor[ch] =
sign_extend(bytestream2_get_le16u(&gb), 16);
247 *output_samples++ = predictor[ch];
251 while (output_samples < samples_end) {
253 predictor[ch] = av_clip_int16(predictor[ch]);
254 *output_samples++ = predictor[ch];
263 int shift[2] = { 4, 4 };
265 for (ch = 0; ch < avctx->
channels; ch++)
266 predictor[ch] =
sign_extend(bytestream2_get_le16u(&gb), 16);
269 while (output_samples < samples_end) {
270 int diff = bytestream2_get_byteu(&gb);
276 shift[ch] -= (2 *
n);
284 predictor[ch] += diff;
286 predictor[ch] = av_clip_int16(predictor[ch]);
287 *output_samples++ = predictor[ch];
297 *samples_end_u8 = output_samples_u8 +
out;
298 while (output_samples_u8 < samples_end_u8) {
299 int n = bytestream2_get_byteu(&gb);
303 *output_samples_u8++ = s->
sample[0];
307 *output_samples_u8++ = s->
sample[stereo];
310 while (output_samples < samples_end) {
311 int n = bytestream2_get_byteu(&gb);
315 *output_samples++ = s->
sample[ch];
328 #define DPCM_DECODER(id_, name_, long_name_) \
329 AVCodec ff_ ## name_ ## _decoder = { \
331 .long_name = NULL_IF_CONFIG_SMALL(long_name_), \
332 .type = AVMEDIA_TYPE_AUDIO, \
334 .priv_data_size = sizeof(DPCMContext), \
335 .init = dpcm_decode_init, \
336 .decode = dpcm_decode_frame, \
337 .capabilities = CODEC_CAP_DR1, \