mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-04-01 14:39:30 +00: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
|
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)
|
static int mlp_get_major_sync_size(const uint8_t * buf, int bufsize)
|
||||||
{
|
{
|
||||||
int has_extension, extensions = 0;
|
int has_extension, extensions = 0;
|
||||||
|
@ -56,6 +56,55 @@ typedef struct MLPHeaderInfo
|
|||||||
int num_substreams; ///< Number of substreams within stream
|
int num_substreams; ///< Number of substreams within stream
|
||||||
} MLPHeaderInfo;
|
} 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);
|
int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user