66 static const uint32_t frequencies[4] = { 48000, 96000, 44100, 32000 };
68 int header_int = (header[0] & 0xe0) | (header[1] << 8) | (header[2] << 16);
75 av_dlog(avctx,
"pcm_dvd_parse_header: header = %02x%02x%02x\n",
76 header[0], header[1], header[2]);
90 "PCM DVD unsupported sample depth %i\n",
99 avctx->
sample_rate = frequencies[header[1] >> 4 & 3];
102 avctx->
channels = 1 + (header[1] & 7);
142 "pcm_dvd_parse_header: %d channels, %d bits per sample, %d Hz, %d bit/s\n",
152 void *dst,
int blocks)
155 int16_t *dst16 = dst;
171 *dst16++ = bytestream2_get_be16u(&gb);
178 for (i = 2; i; i--) {
179 dst32[0] = bytestream2_get_be16u(&gb) << 16;
180 dst32[1] = bytestream2_get_be16u(&gb) << 16;
181 t = bytestream2_get_byteu(&gb);
182 *dst32++ += (t & 0xf0) << 8;
183 *dst32++ += (t & 0x0f) << 12;
189 dst32[0] = bytestream2_get_be16u(&gb) << 16;
190 dst32[1] = bytestream2_get_be16u(&gb) << 16;
191 dst32[2] = bytestream2_get_be16u(&gb) << 16;
192 dst32[3] = bytestream2_get_be16u(&gb) << 16;
193 t = bytestream2_get_byteu(&gb);
194 *dst32++ += (t & 0xf0) << 8;
195 *dst32++ += (t & 0x0f) << 12;
196 t = bytestream2_get_byteu(&gb);
197 *dst32++ += (t & 0xf0) << 8;
198 *dst32++ += (t & 0x0f) << 12;
206 for (i = 2; i; i--) {
207 dst32[0] = bytestream2_get_be16u(&gb) << 16;
208 dst32[1] = bytestream2_get_be16u(&gb) << 16;
209 *dst32++ += bytestream2_get_byteu(&gb) << 8;
210 *dst32++ += bytestream2_get_byteu(&gb) << 8;
216 dst32[0] = bytestream2_get_be16u(&gb) << 16;
217 dst32[1] = bytestream2_get_be16u(&gb) << 16;
218 dst32[2] = bytestream2_get_be16u(&gb) << 16;
219 dst32[3] = bytestream2_get_be16u(&gb) << 16;
220 *dst32++ += bytestream2_get_byteu(&gb) << 8;
221 *dst32++ += bytestream2_get_byteu(&gb) << 8;
222 *dst32++ += bytestream2_get_byteu(&gb) << 8;
223 *dst32++ += bytestream2_get_byteu(&gb) << 8;
234 int *got_frame_ptr,
AVPacket *avpkt)
238 int buf_size = avpkt->
size;
265 dst = frame->
data[0];
270 if (buf_size >= missing_samples) {
274 src += missing_samples;
275 buf_size -= missing_samples;