# HG changeset patch # User cehoyos # Date 1388614621 0 # Node ID 4eb54147c48851ae4df8e5f5012b81f10f3c4ce0 # Parent 8f0fd63eca7ff09fc107be8c3a587428d6a03899 Set audio channel_layout from container when using FFmpeg decoder. This will be needed for the Atrac 3 Plus decoder. diff -r 8f0fd63eca7f -r 4eb54147c488 libmpcodecs/ad_ffmpeg.c --- a/libmpcodecs/ad_ffmpeg.c Wed Jan 01 22:13:47 2014 +0000 +++ b/libmpcodecs/ad_ffmpeg.c Wed Jan 01 22:17:01 2014 +0000 @@ -126,6 +126,7 @@ lavc_context->block_align = sh_audio->wf->nBlockAlign; lavc_context->bits_per_coded_sample = sh_audio->wf->wBitsPerSample; } + lavc_context->channel_layout = sh_audio->channel_layout; lavc_context->request_channels = audio_output_channels; lavc_context->codec_tag = sh_audio->format; //FOURCC lavc_context->codec_id = lavc_codec->id; // not sure if required, imho not --A'rpi diff -r 8f0fd63eca7f -r 4eb54147c488 libmpdemux/demux_audio.c --- a/libmpdemux/demux_audio.c Wed Jan 01 22:13:47 2014 +0000 +++ b/libmpdemux/demux_audio.c Wed Jan 01 22:17:01 2014 +0000 @@ -533,6 +533,8 @@ } stream_read(s,(char*)(w + 1),w->cbSize); l -= w->cbSize; + if (w->cbSize >= 22) + sh_audio->channel_layout = av_le2ne16(((WAVEFORMATEXTENSIBLE *)w)->dwChannelMask); if (w->wFormatTag == 0xfffe && w->cbSize >= 22) sh_audio->format = av_le2ne16(((WAVEFORMATEXTENSIBLE *)w)->SubFormat); } diff -r 8f0fd63eca7f -r 4eb54147c488 libmpdemux/demux_lavf.c --- a/libmpdemux/demux_lavf.c Wed Jan 01 22:13:47 2014 +0000 +++ b/libmpdemux/demux_lavf.c Wed Jan 01 22:17:01 2014 +0000 @@ -295,6 +295,7 @@ codec->codec_tag = mp_codec_id2tag(codec->codec_id, codec->codec_tag, 1); wf->wFormatTag= codec->codec_tag; wf->nChannels= codec->channels; + sh_audio->channel_layout = codec->channel_layout; wf->nSamplesPerSec= codec->sample_rate; wf->nAvgBytesPerSec= codec->bit_rate/8; wf->nBlockAlign= codec->block_align ? codec->block_align : 1; diff -r 8f0fd63eca7f -r 4eb54147c488 libmpdemux/stheader.h --- a/libmpdemux/stheader.h Wed Jan 01 22:13:47 2014 +0000 +++ b/libmpdemux/stheader.h Wed Jan 01 22:17:01 2014 +0000 @@ -55,6 +55,7 @@ int samplerate; int samplesize; int channels; + int channel_layout; int o_bps; // == samplerate*samplesize*channels (uncompr. bytes/sec) int i_bps; // == bitrate (compressed bytes/sec) // in buffers: