53 const uint8_t *header)
55 static const uint8_t bits_per_samples[4] = { 0, 16, 20, 24 };
56 static const uint32_t channel_layouts[16] = {
61 static const uint8_t channels[16] = {
62 0, 1, 0, 2, 3, 3, 4, 4, 5, 6, 7, 8, 0, 0, 0, 0
64 uint8_t channel_layout = header[2] >> 4;
67 av_dlog(avctx,
"pcm_bluray_parse_header: header = %02x%02x%02x%02x\n",
68 header[0], header[1], header[2], header[3]);
80 switch (header[2] & 0x0f) {
104 avctx->
channels = channels[channel_layout];
116 "pcm_bluray_parse_header: %d channels, %d bits per sample, %d kHz, %d kbit\n",
137 int *got_frame_ptr,
AVPacket *avpkt)
139 const uint8_t *src = avpkt->
data;
140 int buf_size = avpkt->
size;
142 int num_source_channels, channel, retval;
160 samples = buf_size / sample_size;
177 samples *= num_source_channels;
180 memcpy(dst16, src, buf_size);
183 *dst16++ = bytestream_get_be16(&src);
188 *dst32++ = bytestream_get_be24(&src) << 8;
200 memcpy(dst16, src, avctx->
channels * 2);
206 *dst16++ = bytestream_get_be16(&src);
215 *dst32++ = bytestream_get_be24(&src) << 8;
225 dst16[0] = bytestream_get_be16(&src);
226 dst16[1] = bytestream_get_be16(&src);
227 dst16[2] = bytestream_get_be16(&src);
228 dst16[4] = bytestream_get_be16(&src);
229 dst16[5] = bytestream_get_be16(&src);
230 dst16[3] = bytestream_get_be16(&src);
235 dst32[0] = bytestream_get_be24(&src) << 8;
236 dst32[1] = bytestream_get_be24(&src) << 8;
237 dst32[2] = bytestream_get_be24(&src) << 8;
238 dst32[4] = bytestream_get_be24(&src) << 8;
239 dst32[5] = bytestream_get_be24(&src) << 8;
240 dst32[3] = bytestream_get_be24(&src) << 8;
249 dst16[0] = bytestream_get_be16(&src);
250 dst16[1] = bytestream_get_be16(&src);
251 dst16[2] = bytestream_get_be16(&src);
252 dst16[5] = bytestream_get_be16(&src);
253 dst16[3] = bytestream_get_be16(&src);
254 dst16[4] = bytestream_get_be16(&src);
255 dst16[6] = bytestream_get_be16(&src);
261 dst32[0] = bytestream_get_be24(&src) << 8;
262 dst32[1] = bytestream_get_be24(&src) << 8;
263 dst32[2] = bytestream_get_be24(&src) << 8;
264 dst32[5] = bytestream_get_be24(&src) << 8;
265 dst32[3] = bytestream_get_be24(&src) << 8;
266 dst32[4] = bytestream_get_be24(&src) << 8;
267 dst32[6] = bytestream_get_be24(&src) << 8;
277 dst16[0] = bytestream_get_be16(&src);
278 dst16[1] = bytestream_get_be16(&src);
279 dst16[2] = bytestream_get_be16(&src);
280 dst16[6] = bytestream_get_be16(&src);
281 dst16[4] = bytestream_get_be16(&src);
282 dst16[5] = bytestream_get_be16(&src);
283 dst16[7] = bytestream_get_be16(&src);
284 dst16[3] = bytestream_get_be16(&src);
289 dst32[0] = bytestream_get_be24(&src) << 8;
290 dst32[1] = bytestream_get_be24(&src) << 8;
291 dst32[2] = bytestream_get_be24(&src) << 8;
292 dst32[6] = bytestream_get_be24(&src) << 8;
293 dst32[4] = bytestream_get_be24(&src) << 8;
294 dst32[5] = bytestream_get_be24(&src) << 8;
295 dst32[7] = bytestream_get_be24(&src) << 8;
296 dst32[3] = bytestream_get_be24(&src) << 8;
307 retval = src - avpkt->
data;
309 av_dlog(avctx,
"pcm_bluray_decode_frame: decoded %d -> %d bytes\n",
315 .
name =
"pcm_bluray",