56 static const uint8_t bits_per_samples[4] = { 0, 16, 20, 24 };
57 static const uint32_t channel_layouts[16] = {
62 static const uint8_t channels[16] = {
63 0, 1, 0, 2, 3, 3, 4, 4, 5, 6, 7, 8, 0, 0, 0, 0
65 uint8_t channel_layout = header[2] >> 4;
68 av_dlog(avctx,
"pcm_bluray_parse_header: header = %02x%02x%02x%02x\n",
69 header[0], header[1], header[2], header[3]);
83 switch (header[2] & 0x0f) {
107 avctx->
channels = channels[channel_layout];
119 "pcm_bluray_parse_header: %d channels, %d bits per sample, %d Hz, %d bit/s\n",
140 int *got_frame_ptr,
AVPacket *avpkt)
143 int buf_size = avpkt->
size;
146 int num_source_channels, channel, retval;
166 samples = buf_size / sample_size;
183 samples *= num_source_channels;
189 *dst16++ = bytestream2_get_be16u(&gb);
194 *dst32++ = bytestream2_get_be24u(&gb) << 8;
211 *dst16++ = bytestream2_get_be16u(&gb);
220 *dst32++ = bytestream2_get_be24u(&gb) << 8;
230 dst16[0] = bytestream2_get_be16u(&gb);
231 dst16[1] = bytestream2_get_be16u(&gb);
232 dst16[2] = bytestream2_get_be16u(&gb);
233 dst16[4] = bytestream2_get_be16u(&gb);
234 dst16[5] = bytestream2_get_be16u(&gb);
235 dst16[3] = bytestream2_get_be16u(&gb);
240 dst32[0] = bytestream2_get_be24u(&gb) << 8;
241 dst32[1] = bytestream2_get_be24u(&gb) << 8;
242 dst32[2] = bytestream2_get_be24u(&gb) << 8;
243 dst32[4] = bytestream2_get_be24u(&gb) << 8;
244 dst32[5] = bytestream2_get_be24u(&gb) << 8;
245 dst32[3] = bytestream2_get_be24u(&gb) << 8;
254 dst16[0] = bytestream2_get_be16u(&gb);
255 dst16[1] = bytestream2_get_be16u(&gb);
256 dst16[2] = bytestream2_get_be16u(&gb);
257 dst16[5] = bytestream2_get_be16u(&gb);
258 dst16[3] = bytestream2_get_be16u(&gb);
259 dst16[4] = bytestream2_get_be16u(&gb);
260 dst16[6] = bytestream2_get_be16u(&gb);
266 dst32[0] = bytestream2_get_be24u(&gb) << 8;
267 dst32[1] = bytestream2_get_be24u(&gb) << 8;
268 dst32[2] = bytestream2_get_be24u(&gb) << 8;
269 dst32[5] = bytestream2_get_be24u(&gb) << 8;
270 dst32[3] = bytestream2_get_be24u(&gb) << 8;
271 dst32[4] = bytestream2_get_be24u(&gb) << 8;
272 dst32[6] = bytestream2_get_be24u(&gb) << 8;
282 dst16[0] = bytestream2_get_be16u(&gb);
283 dst16[1] = bytestream2_get_be16u(&gb);
284 dst16[2] = bytestream2_get_be16u(&gb);
285 dst16[6] = bytestream2_get_be16u(&gb);
286 dst16[4] = bytestream2_get_be16u(&gb);
287 dst16[5] = bytestream2_get_be16u(&gb);
288 dst16[7] = bytestream2_get_be16u(&gb);
289 dst16[3] = bytestream2_get_be16u(&gb);
294 dst32[0] = bytestream2_get_be24u(&gb) << 8;
295 dst32[1] = bytestream2_get_be24u(&gb) << 8;
296 dst32[2] = bytestream2_get_be24u(&gb) << 8;
297 dst32[6] = bytestream2_get_be24u(&gb) << 8;
298 dst32[4] = bytestream2_get_be24u(&gb) << 8;
299 dst32[5] = bytestream2_get_be24u(&gb) << 8;
300 dst32[7] = bytestream2_get_be24u(&gb) << 8;
301 dst32[3] = bytestream2_get_be24u(&gb) << 8;
314 av_dlog(avctx,
"pcm_bluray_decode_frame: decoded %d -> %d bytes\n",
320 .
name =
"pcm_bluray",