Go to the documentation of this file.
30 #define SYNC_TRUEHD 0xba
33 #define MAX_MATRIX_CHANNEL_MLP 5
34 #define MAX_MATRIX_CHANNEL_TRUEHD 7
39 #define MAX_CHANNELS 8
44 #define MAX_MATRICES_MLP 6
45 #define MAX_MATRICES_TRUEHD 8
46 #define MAX_MATRICES 8
51 #define MAX_SUBSTREAMS 4
54 #define MAX_RATEFACTOR 4
56 #define MAX_SAMPLERATE (MAX_RATEFACTOR * 48000)
59 #define MAX_BLOCKSIZE (40 * MAX_RATEFACTOR)
61 #define MAX_BLOCKSIZE_POW2 (64 * MAX_RATEFACTOR)
67 #define MAX_FIR_ORDER 8
68 #define MAX_IIR_ORDER 4
71 #define END_OF_STREAM 0xd234d234
73 #define PARAM_BLOCKSIZE (1 << 7)
74 #define PARAM_MATRIX (1 << 6)
75 #define PARAM_OUTSHIFT (1 << 5)
76 #define PARAM_QUANTSTEP (1 << 4)
77 #define PARAM_FIR (1 << 3)
78 #define PARAM_IIR (1 << 2)
79 #define PARAM_HUFFOFFSET (1 << 1)
80 #define PARAM_PRESENCE (1 << 0)
149 #if FF_API_OLD_CHANNEL_LAYOUT
150 extern const uint64_t ff_mlp_channel_layouts[12];
@ THD_CH_MODIFIER_NOTINDICATED
const uint8_t ff_mlp_huffman_tables[3][18][2]
Tables defining the Huffman codes.
uint8_t codebook
Which VLC codebook to use to read residuals.
static uint8_t xor_32_to_8(uint32_t value)
XOR four bytes into one.
@ THD_CH_MODIFIER_SURROUNDEX
uint8_t ff_mlp_checksum8(const uint8_t *buf, unsigned int buf_size)
MLP uses checksums that seem to be based on the standard CRC algorithm, but are not (in implementatio...
const ChannelInformation ff_mlp_ch_info[21]
Tables defining channel information.
FilterParams filter_params[NUM_FILTERS]
uint8_t huff_lsbs
Size of residual suffix not encoded using VLC.
uint16_t ff_mlp_checksum16(const uint8_t *buf, unsigned int buf_size)
const AVChannelLayout ff_mlp_ch_layouts[12]
void ff_mlp_init_crc(void)
int32_t coeff[NUM_FILTERS][MAX_FIR_ORDER]
@ THD_CH_MODIFIER_LBINRBIN
An AVChannelLayout holds information about the channel layout of audio data.
#define NUM_FILTERS
number of allowed filters
uint8_t order
number of taps in filter
int16_t huff_offset
Offset to apply to residual values.
#define MAX_FIR_ORDER
The maximum number of taps in IIR and FIR filters.
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default value
sample data coding information
int32_t sign_huff_offset
sign/rounding-corrected version of huff_offset
int32_t state[MAX_FIR_ORDER]
@ THD_CH_MODIFIER_NOTSURROUNDEX
uint8_t ff_mlp_calculate_parity(const uint8_t *buf, unsigned int buf_size)
XOR together all the bytes of a buffer.
uint8_t shift
Right shift to apply to output of filter.
uint8_t ff_mlp_restart_checksum(const uint8_t *buf, unsigned int bit_size)
Calculate an 8-bit checksum over a restart header – a non-multiple-of-8 number of bits,...