|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef AVCODEC_AACDECTAB_H |
|
#define AVCODEC_AACDECTAB_H |
|
|
|
#include "libavutil/channel_layout.h" |
|
#include "aac.h" |
|
|
|
#include <stdint.h> |
|
|
|
static const int8_t tags_per_config[16] = { 0, 1, 1, 2, 3, 3, 4, 5, 0, 0, 0, 5, 5, 16, 5, 0 }; |
|
|
|
static const uint8_t aac_channel_layout_map[16][16][3] = { |
|
{ { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, }, |
|
{ { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, }, |
|
{ { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, }, |
|
{ { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_SCE, 1, AAC_CHANNEL_BACK }, }, |
|
{ { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, }, |
|
{ { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, }, |
|
{ { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_FRONT }, { TYPE_CPE, 2, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, }, |
|
{ { 0, } }, |
|
{ { 0, } }, |
|
{ { 0, } }, |
|
{ { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_SCE, 1, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, }, |
|
{ { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_CPE, 2, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, }, |
|
{ |
|
{ TYPE_SCE, 0, AAC_CHANNEL_FRONT }, |
|
{ TYPE_CPE, 0, AAC_CHANNEL_FRONT }, |
|
{ TYPE_CPE, 1, AAC_CHANNEL_FRONT }, |
|
{ TYPE_CPE, 2, AAC_CHANNEL_BACK }, |
|
{ TYPE_CPE, 3, AAC_CHANNEL_BACK }, |
|
{ TYPE_SCE, 1, AAC_CHANNEL_BACK }, |
|
{ TYPE_LFE, 0, AAC_CHANNEL_LFE }, |
|
{ TYPE_LFE, 1, AAC_CHANNEL_LFE }, |
|
{ TYPE_SCE, 2, AAC_CHANNEL_FRONT }, |
|
{ TYPE_CPE, 4, AAC_CHANNEL_FRONT }, |
|
{ TYPE_CPE, 5, AAC_CHANNEL_SIDE }, |
|
{ TYPE_SCE, 3, AAC_CHANNEL_SIDE }, |
|
{ TYPE_CPE, 6, AAC_CHANNEL_BACK }, |
|
{ TYPE_SCE, 4, AAC_CHANNEL_BACK }, |
|
{ TYPE_SCE, 5, AAC_CHANNEL_FRONT }, |
|
{ TYPE_CPE, 7, AAC_CHANNEL_FRONT }, |
|
}, |
|
{ { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, { TYPE_CPE, 2, AAC_CHANNEL_FRONT }, }, |
|
{ { 0, } }, |
|
}; |
|
|
|
static const int16_t aac_channel_map[3][4][6] = { |
|
{ |
|
{ AV_CHAN_FRONT_CENTER, AV_CHAN_FRONT_LEFT_OF_CENTER, AV_CHAN_FRONT_RIGHT_OF_CENTER, AV_CHAN_FRONT_LEFT, AV_CHAN_FRONT_RIGHT, AV_CHAN_NONE }, |
|
{ AV_CHAN_UNUSED, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, |
|
{ AV_CHAN_UNUSED, AV_CHAN_SIDE_LEFT, AV_CHAN_SIDE_RIGHT, AV_CHAN_BACK_LEFT, AV_CHAN_BACK_RIGHT, AV_CHAN_BACK_CENTER }, |
|
{ AV_CHAN_LOW_FREQUENCY, AV_CHAN_LOW_FREQUENCY_2, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, |
|
}, |
|
{ |
|
{ AV_CHAN_TOP_FRONT_CENTER, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_TOP_FRONT_LEFT, AV_CHAN_TOP_FRONT_RIGHT, AV_CHAN_NONE }, |
|
{ AV_CHAN_UNUSED, AV_CHAN_TOP_SIDE_LEFT, AV_CHAN_TOP_SIDE_RIGHT, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_TOP_CENTER}, |
|
{ AV_CHAN_UNUSED, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_TOP_BACK_LEFT, AV_CHAN_TOP_BACK_RIGHT, AV_CHAN_TOP_BACK_CENTER}, |
|
{ AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE}, |
|
}, |
|
{ |
|
{ AV_CHAN_BOTTOM_FRONT_CENTER, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_BOTTOM_FRONT_LEFT, AV_CHAN_BOTTOM_FRONT_RIGHT, AV_CHAN_NONE }, |
|
{ AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, |
|
{ AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, |
|
{ AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE, AV_CHAN_NONE }, |
|
}, |
|
}; |
|
|
|
#if FF_API_OLD_CHANNEL_LAYOUT |
|
static const uint64_t aac_channel_layout[] = { |
|
AV_CH_LAYOUT_MONO, |
|
AV_CH_LAYOUT_STEREO, |
|
AV_CH_LAYOUT_SURROUND, |
|
AV_CH_LAYOUT_4POINT0, |
|
AV_CH_LAYOUT_5POINT0_BACK, |
|
AV_CH_LAYOUT_5POINT1_BACK, |
|
AV_CH_LAYOUT_7POINT1_WIDE_BACK, |
|
AV_CH_LAYOUT_6POINT1_BACK, |
|
AV_CH_LAYOUT_7POINT1, |
|
AV_CH_LAYOUT_22POINT2, |
|
AV_CH_LAYOUT_7POINT1_TOP_BACK, |
|
0, |
|
}; |
|
#endif |
|
|
|
static const AVChannelLayout aac_ch_layout[] = { |
|
AV_CHANNEL_LAYOUT_MONO, |
|
AV_CHANNEL_LAYOUT_STEREO, |
|
AV_CHANNEL_LAYOUT_SURROUND, |
|
AV_CHANNEL_LAYOUT_4POINT0, |
|
AV_CHANNEL_LAYOUT_5POINT0_BACK, |
|
AV_CHANNEL_LAYOUT_5POINT1_BACK, |
|
AV_CHANNEL_LAYOUT_7POINT1_WIDE_BACK, |
|
AV_CHANNEL_LAYOUT_6POINT1_BACK, |
|
AV_CHANNEL_LAYOUT_7POINT1, |
|
AV_CHANNEL_LAYOUT_22POINT2, |
|
AV_CHANNEL_LAYOUT_7POINT1_TOP_BACK, |
|
{ 0 }, |
|
}; |
|
|
|
#endif |
|
|