mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avcodec/mlp_parse: move TrueHD channel layout and sample rate related code to the header
It will be needed by the next commit. Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
45cefca1e7
commit
21d7eeafc1
@ -60,56 +60,6 @@ static const uint64_t mlp_layout[32] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
||||
static const uint8_t thd_chancount[13] = {
|
||||
// LR C LFE LRs LRvh LRc LRrs Cs Ts LRsd LRw Cvh LFE2
|
||||
2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 1, 1
|
||||
};
|
||||
|
||||
static const uint64_t thd_layout[13] = {
|
||||
AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT, // LR
|
||||
AV_CH_FRONT_CENTER, // C
|
||||
AV_CH_LOW_FREQUENCY, // LFE
|
||||
AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, // LRs
|
||||
AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT, // LRvh
|
||||
AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER, // LRc
|
||||
AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT, // LRrs
|
||||
AV_CH_BACK_CENTER, // Cs
|
||||
AV_CH_TOP_CENTER, // Ts
|
||||
AV_CH_SURROUND_DIRECT_LEFT|AV_CH_SURROUND_DIRECT_RIGHT, // LRsd
|
||||
AV_CH_WIDE_LEFT|AV_CH_WIDE_RIGHT, // LRw
|
||||
AV_CH_TOP_FRONT_CENTER, // Cvh
|
||||
AV_CH_LOW_FREQUENCY_2, // LFE2
|
||||
};
|
||||
|
||||
static int mlp_samplerate(int in)
|
||||
{
|
||||
if (in == 0xF)
|
||||
return 0;
|
||||
|
||||
return (in & 8 ? 44100 : 48000) << (in & 7) ;
|
||||
}
|
||||
|
||||
static int truehd_channels(int chanmap)
|
||||
{
|
||||
int channels = 0, i;
|
||||
|
||||
for (i = 0; i < 13; i++)
|
||||
channels += thd_chancount[i] * ((chanmap >> i) & 1);
|
||||
|
||||
return channels;
|
||||
}
|
||||
|
||||
static uint64_t truehd_layout(int chanmap)
|
||||
{
|
||||
int i;
|
||||
uint64_t layout = 0;
|
||||
|
||||
for (i = 0; i < 13; i++)
|
||||
layout |= thd_layout[i] * ((chanmap >> i) & 1);
|
||||
|
||||
return layout;
|
||||
}
|
||||
|
||||
static int mlp_get_major_sync_size(const uint8_t * buf, int bufsize)
|
||||
{
|
||||
int has_extension, extensions = 0;
|
||||
|
@ -56,6 +56,55 @@ typedef struct MLPHeaderInfo
|
||||
int num_substreams; ///< Number of substreams within stream
|
||||
} MLPHeaderInfo;
|
||||
|
||||
static const uint8_t thd_chancount[13] = {
|
||||
// LR C LFE LRs LRvh LRc LRrs Cs Ts LRsd LRw Cvh LFE2
|
||||
2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 1, 1
|
||||
};
|
||||
|
||||
static const uint64_t thd_layout[13] = {
|
||||
AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT, // LR
|
||||
AV_CH_FRONT_CENTER, // C
|
||||
AV_CH_LOW_FREQUENCY, // LFE
|
||||
AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT, // LRs
|
||||
AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT, // LRvh
|
||||
AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER, // LRc
|
||||
AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT, // LRrs
|
||||
AV_CH_BACK_CENTER, // Cs
|
||||
AV_CH_TOP_CENTER, // Ts
|
||||
AV_CH_SURROUND_DIRECT_LEFT|AV_CH_SURROUND_DIRECT_RIGHT, // LRsd
|
||||
AV_CH_WIDE_LEFT|AV_CH_WIDE_RIGHT, // LRw
|
||||
AV_CH_TOP_FRONT_CENTER, // Cvh
|
||||
AV_CH_LOW_FREQUENCY_2, // LFE2
|
||||
};
|
||||
|
||||
static inline int mlp_samplerate(int in)
|
||||
{
|
||||
if (in == 0xF)
|
||||
return 0;
|
||||
|
||||
return (in & 8 ? 44100 : 48000) << (in & 7) ;
|
||||
}
|
||||
|
||||
static inline int truehd_channels(int chanmap)
|
||||
{
|
||||
int channels = 0, i;
|
||||
|
||||
for (i = 0; i < 13; i++)
|
||||
channels += thd_chancount[i] * ((chanmap >> i) & 1);
|
||||
|
||||
return channels;
|
||||
}
|
||||
|
||||
static inline uint64_t truehd_layout(int chanmap)
|
||||
{
|
||||
int i;
|
||||
uint64_t layout = 0;
|
||||
|
||||
for (i = 0; i < 13; i++)
|
||||
layout |= thd_layout[i] * ((chanmap >> i) & 1);
|
||||
|
||||
return layout;
|
||||
}
|
||||
|
||||
int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user