56 static const uint8_t bits_per_samples[4] = { 0, 16, 20, 24 };
57 static const uint32_t channel_layouts[16] = {
63 static const uint8_t channels[16] = {
64 0, 1, 0, 2, 3, 3, 4, 4, 5, 6, 7, 8, 0, 0, 0, 0
66 uint8_t channel_layout = header[2] >> 4;
69 av_dlog(avctx,
"pcm_bluray_parse_header: header = %02x%02x%02x%02x\n",
70 header[0], header[1], header[2], header[3]);
84 switch (header[2] & 0x0f) {
108 avctx->
channels = channels[channel_layout];
120 "pcm_bluray_parse_header: %d channels, %d bits per sample, %d Hz, %d bit/s\n",
127 int *got_frame_ptr,
AVPacket *avpkt)
131 int buf_size = avpkt->
size;
133 int num_source_channels, channel, retval;
134 int sample_size, samples;
152 sample_size = (num_source_channels *
154 samples = buf_size / sample_size;
160 dst16 = (int16_t *)frame->
data[0];
169 samples *= num_source_channels;
175 *dst16++ = bytestream2_get_be16u(&gb);
180 *dst32++ = bytestream2_get_be24u(&gb) << 8;
197 *dst16++ = bytestream2_get_be16u(&gb);
206 *dst32++ = bytestream2_get_be24u(&gb) << 8;
216 dst16[0] = bytestream2_get_be16u(&gb);
217 dst16[1] = bytestream2_get_be16u(&gb);
218 dst16[2] = bytestream2_get_be16u(&gb);
219 dst16[4] = bytestream2_get_be16u(&gb);
220 dst16[5] = bytestream2_get_be16u(&gb);
221 dst16[3] = bytestream2_get_be16u(&gb);
226 dst32[0] = bytestream2_get_be24u(&gb) << 8;
227 dst32[1] = bytestream2_get_be24u(&gb) << 8;
228 dst32[2] = bytestream2_get_be24u(&gb) << 8;
229 dst32[4] = bytestream2_get_be24u(&gb) << 8;
230 dst32[5] = bytestream2_get_be24u(&gb) << 8;
231 dst32[3] = bytestream2_get_be24u(&gb) << 8;
240 dst16[0] = bytestream2_get_be16u(&gb);
241 dst16[1] = bytestream2_get_be16u(&gb);
242 dst16[2] = bytestream2_get_be16u(&gb);
243 dst16[5] = bytestream2_get_be16u(&gb);
244 dst16[3] = bytestream2_get_be16u(&gb);
245 dst16[4] = bytestream2_get_be16u(&gb);
246 dst16[6] = bytestream2_get_be16u(&gb);
252 dst32[0] = bytestream2_get_be24u(&gb) << 8;
253 dst32[1] = bytestream2_get_be24u(&gb) << 8;
254 dst32[2] = bytestream2_get_be24u(&gb) << 8;
255 dst32[5] = bytestream2_get_be24u(&gb) << 8;
256 dst32[3] = bytestream2_get_be24u(&gb) << 8;
257 dst32[4] = bytestream2_get_be24u(&gb) << 8;
258 dst32[6] = bytestream2_get_be24u(&gb) << 8;
268 dst16[0] = bytestream2_get_be16u(&gb);
269 dst16[1] = bytestream2_get_be16u(&gb);
270 dst16[2] = bytestream2_get_be16u(&gb);
271 dst16[6] = bytestream2_get_be16u(&gb);
272 dst16[4] = bytestream2_get_be16u(&gb);
273 dst16[5] = bytestream2_get_be16u(&gb);
274 dst16[7] = bytestream2_get_be16u(&gb);
275 dst16[3] = bytestream2_get_be16u(&gb);
280 dst32[0] = bytestream2_get_be24u(&gb) << 8;
281 dst32[1] = bytestream2_get_be24u(&gb) << 8;
282 dst32[2] = bytestream2_get_be24u(&gb) << 8;
283 dst32[6] = bytestream2_get_be24u(&gb) << 8;
284 dst32[4] = bytestream2_get_be24u(&gb) << 8;
285 dst32[5] = bytestream2_get_be24u(&gb) << 8;
286 dst32[7] = bytestream2_get_be24u(&gb) << 8;
287 dst32[3] = bytestream2_get_be24u(&gb) << 8;
299 av_dlog(avctx,
"pcm_bluray_decode_frame: decoded %d -> %d bytes\n",
305 .
name =
"pcm_bluray",