|
FFmpeg
|
Common code between the AC-3 encoder and decoder. More...
Go to the source code of this file.
Classes | |
| struct | AC3BitAllocParameters |
| struct | AC3HeaderInfo |
| Coded AC-3 header values up to the lfeon element, plus derived values. More... | |
Macros | |
| #define | AC3_MAX_CODED_FRAME_SIZE 3840 /* in bytes */ |
| #define | EAC3_MAX_CHANNELS 16 |
| maximum number of channels in EAC3 | |
| #define | AC3_MAX_CHANNELS 7 |
| maximum number of channels, including coupling channel | |
| #define | CPL_CH 0 |
| coupling channel index | |
| #define | AC3_MAX_COEFS 256 |
| #define | AC3_BLOCK_SIZE 256 |
| #define | AC3_MAX_BLOCKS 6 |
| #define | AC3_FRAME_SIZE (AC3_MAX_BLOCKS * 256) |
| #define | AC3_WINDOW_SIZE (AC3_BLOCK_SIZE * 2) |
| #define | AC3_CRITICAL_BANDS 50 |
| #define | AC3_MAX_CPL_BANDS 18 |
| #define | EXP_REUSE 0 |
| #define | EXP_NEW 1 |
| #define | EXP_D15 1 |
| #define | EXP_D25 2 |
| #define | EXP_D45 3 |
| #define | FIXR(x) ((float)(x)) |
| #define | FIXR12(x) ((float)(x)) |
| #define | FIXR15(x) ((float)(x)) |
| #define | ROUND15(x) (x) |
| #define | AC3_RENAME(x) x |
| #define | AC3_NORM(norm) (1.0f/(norm)) |
| #define | AC3_MUL(a, b) ((a) * (b)) |
| #define | AC3_RANGE(x) (dynamic_range_tab[(x)]) |
| #define | AC3_HEAVY_RANGE(x) (ff_ac3_heavy_dynamic_range_tab[(x)]) |
| #define | AC3_DYNAMIC_RANGE(x) (powf(x, s->drc_scale)) |
| #define | AC3_SPX_BLEND(x) (x)* (1.0f/32) |
| #define | AC3_DYNAMIC_RANGE1 1.0f |
| #define | AC3_LEVEL(x) ROUND15((x) * FIXR15(M_SQRT1_2)) |
| #define | LEVEL_PLUS_3DB M_SQRT2 |
| #define | LEVEL_PLUS_1POINT5DB 1.1892071150027209 |
| #define | LEVEL_MINUS_1POINT5DB 0.8408964152537145 |
| #define | LEVEL_MINUS_3DB M_SQRT1_2 |
| #define | LEVEL_MINUS_4POINT5DB 0.5946035575013605 |
| #define | LEVEL_MINUS_6DB 0.5000000000000000 |
| #define | LEVEL_MINUS_9DB 0.3535533905932738 |
| #define | LEVEL_ZERO 0.0000000000000000 |
| #define | LEVEL_ONE 1.0000000000000000 |
Typedefs | |
| typedef float | INTFLOAT |
| typedef float | SHORTFLOAT |
| typedef enum AC3DolbySurroundMode | AC3DolbySurroundMode |
| Dolby Surround mode. | |
| typedef enum AC3DolbySurroundEXMode | AC3DolbySurroundEXMode |
| Dolby Surround EX mode. | |
| typedef enum AC3DolbyHeadphoneMode | AC3DolbyHeadphoneMode |
| Dolby Headphone mode. | |
| typedef enum AC3PreferredStereoDownmixMode | AC3PreferredStereoDownmixMode |
| Preferred Stereo Downmix mode. | |
| typedef struct AC3BitAllocParameters | AC3BitAllocParameters |
| typedef struct AC3HeaderInfo | AC3HeaderInfo |
Enumerations | |
| enum | AC3DeltaStrategy { DBA_REUSE = 0, DBA_NEW, DBA_NONE, DBA_RESERVED } |
| Delta bit allocation strategy. | |
| enum | AC3ChannelMode { AC3_CHMODE_DUALMONO = 0, AC3_CHMODE_MONO, AC3_CHMODE_STEREO, AC3_CHMODE_3F, AC3_CHMODE_2F1R, AC3_CHMODE_3F1R, AC3_CHMODE_2F2R, AC3_CHMODE_3F2R } |
| Channel mode (audio coding mode) | |
| enum | AC3DolbySurroundMode { AC3_DSURMOD_NOTINDICATED = 0, AC3_DSURMOD_OFF, AC3_DSURMOD_ON, AC3_DSURMOD_RESERVED } |
| Dolby Surround mode. | |
| enum | AC3DolbySurroundEXMode { AC3_DSUREXMOD_NOTINDICATED = 0, AC3_DSUREXMOD_OFF, AC3_DSUREXMOD_ON, AC3_DSUREXMOD_PLIIZ } |
| Dolby Surround EX mode. | |
| enum | AC3DolbyHeadphoneMode { AC3_DHEADPHONMOD_NOTINDICATED = 0, AC3_DHEADPHONMOD_OFF, AC3_DHEADPHONMOD_ON, AC3_DHEADPHONMOD_RESERVED } |
| Dolby Headphone mode. | |
| enum | AC3PreferredStereoDownmixMode { AC3_DMIXMOD_NOTINDICATED = 0, AC3_DMIXMOD_LTRT, AC3_DMIXMOD_LORO, AC3_DMIXMOD_DPLII } |
| Preferred Stereo Downmix mode. | |
| enum | EAC3FrameType { EAC3_FRAME_TYPE_INDEPENDENT = 0, EAC3_FRAME_TYPE_DEPENDENT, EAC3_FRAME_TYPE_AC3_CONVERT, EAC3_FRAME_TYPE_RESERVED } |
Functions | |
| void | ff_ac3_common_init (void) |
| void | ff_ac3_bit_alloc_calc_psd (int8_t *exp, int start, int end, int16_t *psd, int16_t *band_psd) |
| Calculate the log power-spectral density of the input signal. More... | |
| int | ff_ac3_bit_alloc_calc_mask (AC3BitAllocParameters *s, int16_t *band_psd, int start, int end, int fast_gain, int is_lfe, int dba_mode, int dba_nsegs, uint8_t *dba_offsets, uint8_t *dba_lengths, uint8_t *dba_values, int16_t *mask) |
| Calculate the masking curve. More... | |
Common code between the AC-3 encoder and decoder.
| int ff_ac3_bit_alloc_calc_mask | ( | AC3BitAllocParameters * | s, |
| int16_t * | band_psd, | ||
| int | start, | ||
| int | end, | ||
| int | fast_gain, | ||
| int | is_lfe, | ||
| int | dba_mode, | ||
| int | dba_nsegs, | ||
| uint8_t * | dba_offsets, | ||
| uint8_t * | dba_lengths, | ||
| uint8_t * | dba_values, | ||
| int16_t * | mask | ||
| ) |
Calculate the masking curve.
First, the excitation is calculated using parameters in s and the signal power in each critical band. The excitation is compared with a predefined hearing threshold table to produce the masking curve. If delta bit allocation information is provided, it is used for adjusting the masking curve, usually to give a closer match to a better psychoacoustic model.
| [in] | s | adjustable bit allocation parameters |
| [in] | band_psd | signal power for each critical band |
| [in] | start | starting bin location |
| [in] | end | ending bin location |
| [in] | fast_gain | fast gain (estimated signal-to-mask ratio) |
| [in] | is_lfe | whether or not the channel being processed is the LFE |
| [in] | dba_mode | delta bit allocation mode (none, reuse, or new) |
| [in] | dba_nsegs | number of delta segments |
| [in] | dba_offsets | location offsets for each segment |
| [in] | dba_lengths | length of each segment |
| [in] | dba_values | delta bit allocation for each segment |
| [out] | mask | calculated masking curve |
| void ff_ac3_bit_alloc_calc_psd | ( | int8_t * | exp, |
| int | start, | ||
| int | end, | ||
| int16_t * | psd, | ||
| int16_t * | band_psd | ||
| ) |
Calculate the log power-spectral density of the input signal.
This gives a rough estimate of signal power in the frequency domain by using the spectral envelope (exponents). The psd is also separately grouped into critical bands for use in the calculating the masking curve. 128 units in psd = -6 dB. The dbknee parameter in AC3BitAllocParameters determines the reference level.
| [in] | exp | frequency coefficient exponents |
| [in] | start | starting bin location |
| [in] | end | ending bin location |
| [out] | psd | signal power for each frequency bin |
| [out] | band_psd | signal power for each critical band |
1.8.12