summaryrefslogtreecommitdiff
path: root/libavcodec/atrac3plusdec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-01-31 14:52:57 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-01-31 14:53:06 +0100
commitdd4237f87d84ad2ea9749dc9b2e724acaa04d16d (patch)
tree7bc0d12e3a1282f58b8be2fd0a53392b299532c9 /libavcodec/atrac3plusdec.c
parent8eaa66212c319c38394caaf7f232cf14c53c00c8 (diff)
parent5312818524484a995433b986a2a7a6602572d4db (diff)
downloadffmpeg-dd4237f87d84ad2ea9749dc9b2e724acaa04d16d.tar.gz
Merge commit '5312818524484a995433b986a2a7a6602572d4db'
* commit '5312818524484a995433b986a2a7a6602572d4db': atrac3plus: Make initialization dependant on channel count rather than channel map Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/atrac3plusdec.c')
-rw-r--r--libavcodec/atrac3plusdec.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/libavcodec/atrac3plusdec.c b/libavcodec/atrac3plusdec.c
index 545dbecc5d..652bd7890d 100644
--- a/libavcodec/atrac3plusdec.c
+++ b/libavcodec/atrac3plusdec.c
@@ -77,35 +77,42 @@ static av_cold int set_channel_params(ATRAC3PContext *ctx,
{
memset(ctx->channel_blocks, 0, sizeof(ctx->channel_blocks));
- switch (avctx->channel_layout) {
- case AV_CH_FRONT_LEFT:
- case AV_CH_LAYOUT_MONO:
+ switch (avctx->channels) {
+ case 1:
+ if (avctx->channel_layout != AV_CH_FRONT_LEFT)
+ avctx->channel_layout = AV_CH_LAYOUT_MONO;
+
ctx->num_channel_blocks = 1;
ctx->channel_blocks[0] = CH_UNIT_MONO;
break;
- case AV_CH_LAYOUT_STEREO:
+ case 2:
+ avctx->channel_layout = AV_CH_LAYOUT_STEREO;
ctx->num_channel_blocks = 1;
ctx->channel_blocks[0] = CH_UNIT_STEREO;
break;
- case AV_CH_LAYOUT_SURROUND:
+ case 3:
+ avctx->channel_layout = AV_CH_LAYOUT_SURROUND;
ctx->num_channel_blocks = 2;
ctx->channel_blocks[0] = CH_UNIT_STEREO;
ctx->channel_blocks[1] = CH_UNIT_MONO;
break;
- case AV_CH_LAYOUT_4POINT0:
+ case 4:
+ avctx->channel_layout = AV_CH_LAYOUT_4POINT0;
ctx->num_channel_blocks = 3;
ctx->channel_blocks[0] = CH_UNIT_STEREO;
ctx->channel_blocks[1] = CH_UNIT_MONO;
ctx->channel_blocks[2] = CH_UNIT_MONO;
break;
- case AV_CH_LAYOUT_5POINT1_BACK:
+ case 6:
+ avctx->channel_layout = AV_CH_LAYOUT_5POINT1_BACK;
ctx->num_channel_blocks = 4;
ctx->channel_blocks[0] = CH_UNIT_STEREO;
ctx->channel_blocks[1] = CH_UNIT_MONO;
ctx->channel_blocks[2] = CH_UNIT_STEREO;
ctx->channel_blocks[3] = CH_UNIT_MONO;
break;
- case AV_CH_LAYOUT_6POINT1_BACK:
+ case 7:
+ avctx->channel_layout = AV_CH_LAYOUT_6POINT1_BACK;
ctx->num_channel_blocks = 5;
ctx->channel_blocks[0] = CH_UNIT_STEREO;
ctx->channel_blocks[1] = CH_UNIT_MONO;
@@ -113,7 +120,8 @@ static av_cold int set_channel_params(ATRAC3PContext *ctx,
ctx->channel_blocks[3] = CH_UNIT_MONO;
ctx->channel_blocks[4] = CH_UNIT_MONO;
break;
- case AV_CH_LAYOUT_7POINT1:
+ case 8:
+ avctx->channel_layout = AV_CH_LAYOUT_7POINT1;
ctx->num_channel_blocks = 5;
ctx->channel_blocks[0] = CH_UNIT_STEREO;
ctx->channel_blocks[1] = CH_UNIT_MONO;
@@ -123,7 +131,7 @@ static av_cold int set_channel_params(ATRAC3PContext *ctx,
break;
default:
av_log(avctx, AV_LOG_ERROR,
- "Unsupported channel layout: %"PRIx64"!\n", avctx->channel_layout);
+ "Unsupported channel count: %d!\n", avctx->channels);
return AVERROR_INVALIDDATA;
}