FFmpeg
|
#include <stdint.h>
Go to the source code of this file.
Data Structures | |
struct | FilterParams |
filter data More... | |
struct | ChannelParams |
sample data coding information More... | |
struct | ChannelInformation |
Macros | |
#define | SYNC_MLP 0xbb |
#define | SYNC_TRUEHD 0xba |
#define | MAX_MATRIX_CHANNEL_MLP 5 |
Last possible matrix channel for each codec. More... | |
#define | MAX_MATRIX_CHANNEL_TRUEHD 7 |
#define | MAX_CHANNELS 8 |
Maximum number of channels in a valid stream. More... | |
#define | MAX_MATRICES_MLP 6 |
Maximum number of matrices used in decoding; most streams have one matrix per output channel, but some rematrix a channel (usually 0) more than once. More... | |
#define | MAX_MATRICES_TRUEHD 8 |
#define | MAX_MATRICES 8 |
#define | MAX_SUBSTREAMS 4 |
Maximum number of substreams that can be decoded. More... | |
#define | MAX_RATEFACTOR 4 |
which multiple of 48000 the maximum sample rate is More... | |
#define | MAX_SAMPLERATE (MAX_RATEFACTOR * 48000) |
maximum sample frequency seen in files More... | |
#define | MAX_BLOCKSIZE (40 * MAX_RATEFACTOR) |
maximum number of audio samples within one access unit More... | |
#define | MAX_BLOCKSIZE_POW2 (64 * MAX_RATEFACTOR) |
next power of two greater than MAX_BLOCKSIZE More... | |
#define | NUM_FILTERS 2 |
number of allowed filters More... | |
#define | MAX_FIR_ORDER 8 |
The maximum number of taps in IIR and FIR filters. More... | |
#define | MAX_IIR_ORDER 4 |
#define | END_OF_STREAM 0xd234d234 |
Code that signals end of a stream. More... | |
#define | FIR 0 |
#define | IIR 1 |
Enumerations | |
enum | THDChannelModifier { THD_CH_MODIFIER_NOTINDICATED = 0x0, THD_CH_MODIFIER_STEREO = 0x0, THD_CH_MODIFIER_LTRT = 0x1, THD_CH_MODIFIER_LBINRBIN = 0x2, THD_CH_MODIFIER_MONO = 0x3, THD_CH_MODIFIER_NOTSURROUNDEX = 0x1, THD_CH_MODIFIER_SURROUNDEX = 0x2 } |
Functions | |
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 implementation terms, the table lookup and XOR are reversed). More... | |
uint16_t | ff_mlp_checksum16 (const uint8_t *buf, unsigned int buf_size) |
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, starting two bits into the first byte of buf. More... | |
uint8_t | ff_mlp_calculate_parity (const uint8_t *buf, unsigned int buf_size) |
XOR together all the bytes of a buffer. More... | |
void | ff_mlp_init_crc (void) |
static uint8_t | xor_32_to_8 (uint32_t value) |
XOR four bytes into one. More... | |
Variables | |
const uint8_t | ff_mlp_huffman_tables [3][18][2] |
Tables defining the Huffman codes. More... | |
const ChannelInformation | ff_mlp_ch_info [21] |
Tables defining channel information. More... | |
const uint64_t | ff_mlp_channel_layouts [12] |
#define MAX_MATRIX_CHANNEL_MLP 5 |
#define MAX_CHANNELS 8 |
#define MAX_MATRICES_MLP 6 |
#define MAX_SUBSTREAMS 4 |
#define MAX_RATEFACTOR 4 |
#define MAX_SAMPLERATE (MAX_RATEFACTOR * 48000) |
#define MAX_BLOCKSIZE (40 * MAX_RATEFACTOR) |
#define MAX_BLOCKSIZE_POW2 (64 * MAX_RATEFACTOR) |
#define MAX_FIR_ORDER 8 |
#define END_OF_STREAM 0xd234d234 |
enum THDChannelModifier |
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 implementation terms, the table lookup and XOR are reversed).
We can implement this behavior using a standard av_crc on all but the last element, then XOR that with the last element.
Definition at line 98 of file mlp.c.
Referenced by read_access_unit(), and write_substr().
uint16_t ff_mlp_checksum16 | ( | const uint8_t * | buf, |
unsigned int | buf_size | ||
) |
Definition at line 89 of file mlp.c.
Referenced by ff_mlp_read_major_sync(), truehd_core_filter(), and write_major_sync().
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, starting two bits into the first byte of buf.
Definition at line 105 of file mlp.c.
Referenced by read_restart_header(), and write_restart_header().
uint8_t ff_mlp_calculate_parity | ( | const uint8_t * | buf, |
unsigned int | buf_size | ||
) |
XOR together all the bytes of a buffer.
Does this belong in dspcontext?
Definition at line 124 of file mlp.c.
Referenced by read_access_unit(), and write_substr().
void ff_mlp_init_crc | ( | void | ) |
Definition at line 83 of file mlp.c.
Referenced by init_static(), mlp_encode_init_static(), and mlp_init().
|
inlinestatic |
XOR four bytes into one.
Definition at line 161 of file mlp.h.
Referenced by ff_mlp_calculate_parity(), read_restart_header(), and write_restart_header().
const uint8_t ff_mlp_huffman_tables[3][18][2] |
Tables defining the Huffman codes.
There are three entropy coding methods used in MLP (four if you count "none" as a method). These use the same sequences for codes starting with 00 or 01, but have different codes starting with 1.
Definition at line 30 of file mlp.c.
Referenced by codebook_bits_offset(), init_static(), and write_block_data().
const ChannelInformation ff_mlp_ch_info[21] |
Tables defining channel information.
Possible channel arrangements are:
(Group 1) C (Group 1) L, R (Group 1) Lf, Rf / (Group 2) S (Group 1) Lf, Rf / (Group 2) Ls, Rs (Group 1) Lf, Rf / (Group 2) LFE (Group 1) Lf, Rf / (Group 2) LFE, S (Group 1) Lf, Rf / (Group 2) LFE, Ls, Rs (Group 1) Lf, Rf / (Group 2) C (Group 1) Lf, Rf / (Group 2) C, S (Group 1) Lf, Rf / (Group 2) C, Ls, Rs (Group 1) Lf, Rf / (Group 2) C, LFE (Group 1) Lf, Rf / (Group 2) C, LFE, S (Group 1) Lf, Rf / (Group 2) C, LFE, Ls, Rs (Group 1) Lf, Rf C / (Group 2) S (Group 1) Lf, Rf C / (Group 2) Ls, Rs (Group 1) Lf, Rf C / (Group 2) LFE (Group 1) Lf, Rf C / (Group 2) LFE, S (Group 1) Lf, Rf C / (Group 2) LFE, Ls, Rs (Group 1) Lf, Rf Ls Rs / (Group 2) LFE (Group 1) Lf, Rf Ls Rs / (Group 2) C (Group 1) Lf, Rf, Ls, Rs / (Group 2) C, LFE
Definition at line 46 of file mlp.c.
Referenced by mlp_encode_init().