Browse Source

Set channel layout for True Audio files.

This is not documented (and possibly not originally intended),
but it's what the current reference decoder does.
tags/n0.8
Carl Eugen Hoyos 14 years ago
parent
commit
d804784db5
1 changed files with 12 additions and 0 deletions
  1. +12
    -0
      libavcodec/tta.c

+ 12
- 0
libavcodec/tta.c View File

@@ -205,6 +205,16 @@ static int tta_get_unary(GetBitContext *gb)
return ret;
}

static const int64_t tta_channel_layouts[7] = {
AV_CH_LAYOUT_STEREO,
AV_CH_LAYOUT_STEREO|AV_CH_LOW_FREQUENCY,
AV_CH_LAYOUT_QUAD,
0,
AV_CH_LAYOUT_5POINT1_BACK,
AV_CH_LAYOUT_5POINT1_BACK|AV_CH_BACK_CENTER,
AV_CH_LAYOUT_7POINT1_WIDE
};

static av_cold int tta_decode_init(AVCodecContext * avctx)
{
TTAContext *s = avctx->priv_data;
@@ -234,6 +244,8 @@ static av_cold int tta_decode_init(AVCodecContext * avctx)
}
s->is_float = (s->flags == FORMAT_FLOAT);
avctx->channels = s->channels = get_bits(&s->gb, 16);
if (s->channels > 1 && s->channels < 9)
avctx->channel_layout = tta_channel_layouts[s->channels-2];
avctx->bits_per_coded_sample = get_bits(&s->gb, 16);
s->bps = (avctx->bits_per_coded_sample + 7) / 8;
avctx->sample_rate = get_bits_long(&s->gb, 32);


Loading…
Cancel
Save