X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fmlp.h;h=b83881653c0d60f8daa9327be1e8c8549bf45b06;hb=32b3ab9b60f05c1c1e82022e9f57a21a0e3e1ec4;hp=433f95f6eb3a444463a22cb105ca15d484db823f;hpb=0c5670a0e571a3ba0e5e2fc45d5054041e049830;p=ffmpeg diff --git a/libavcodec/mlp.h b/libavcodec/mlp.h index 433f95f6eb3..b83881653c0 100644 --- a/libavcodec/mlp.h +++ b/libavcodec/mlp.h @@ -26,13 +26,21 @@ #include "avcodec.h" -/** Maximum number of channels that can be decoded. */ -#define MAX_CHANNELS 16 +/** Last possible matrix channel for each codec */ +#define MAX_MATRIX_CHANNEL_MLP 5 +#define MAX_MATRIX_CHANNEL_TRUEHD 7 +/** Maximum number of channels in a valid stream. + * MLP : 5.1 + 2 noise channels -> 8 channels + * TrueHD: 7.1 -> 8 channels + */ +#define MAX_CHANNELS 8 /** 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. */ -#define MAX_MATRICES 15 +#define MAX_MATRICES_MLP 6 +#define MAX_MATRICES_TRUEHD 8 +#define MAX_MATRICES 8 /** Maximum number of substreams that can be decoded. * MLP's limit is 2. TrueHD supports at least up to 3. @@ -65,13 +73,13 @@ typedef struct { uint8_t order; ///< number of taps in filter uint8_t shift; ///< Right shift to apply to output of filter. - int32_t coeff[MAX_FIR_ORDER]; int32_t state[MAX_FIR_ORDER]; } FilterParams; /** sample data coding information */ typedef struct { FilterParams filter_params[NUM_FILTERS]; + int32_t coeff[NUM_FILTERS][MAX_FIR_ORDER]; int16_t huff_offset; ///< Offset to apply to residual values. int32_t sign_huff_offset; ///< sign/rounding-corrected version of huff_offset