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;
221 output_samples = (int16_t *)s->
frame.
data[0];
222 samples_end = output_samples + out;
230 predictor[1] =
sign_extend(bytestream2_get_byteu(&gb) << 8, 16);
231 predictor[0] =
sign_extend(bytestream2_get_byteu(&gb) << 8, 16);
233 predictor[0] =
sign_extend(bytestream2_get_le16u(&gb), 16);
237 while (output_samples < samples_end) {
239 predictor[ch] = av_clip_int16(predictor[ch]);
240 *output_samples++ = predictor[ch];
250 for (ch = 0; ch < avctx->
channels; ch++) {
251 predictor[ch] =
sign_extend(bytestream2_get_le16u(&gb), 16);
252 *output_samples++ = predictor[ch];
256 while (output_samples < samples_end) {
258 predictor[ch] = av_clip_int16(predictor[ch]);
259 *output_samples++ = predictor[ch];
268 int shift[2] = { 4, 4 };
270 for (ch = 0; ch < avctx->
channels; ch++)
271 predictor[ch] =
sign_extend(bytestream2_get_le16u(&gb), 16);
274 while (output_samples < samples_end) {
275 int diff = bytestream2_get_byteu(&gb);
281 shift[ch] -= (2 * n);
289 predictor[ch] +=
diff;
291 predictor[ch] = av_clip_int16(predictor[ch]);
292 *output_samples++ = predictor[ch];
302 *samples_end_u8 = output_samples_u8 + out;
303 while (output_samples_u8 < samples_end_u8) {
304 int n = bytestream2_get_byteu(&gb);
308 *output_samples_u8++ = s->
sample[0];
312 *output_samples_u8++ = s->
sample[stereo];
315 while (output_samples < samples_end) {
316 int n = bytestream2_get_byteu(&gb);
320 *output_samples++ = s->
sample[ch];
334 #define DPCM_DECODER(id_, name_, long_name_) \
335 AVCodec ff_ ## name_ ## _decoder = { \
337 .type = AVMEDIA_TYPE_AUDIO, \
339 .priv_data_size = sizeof(DPCMContext), \
340 .init = dpcm_decode_init, \
341 .decode = dpcm_decode_frame, \
342 .capabilities = CODEC_CAP_DR1, \
343 .long_name = NULL_IF_CONFIG_SMALL(long_name_), \