[FFmpeg-soc] [soc]: r676 - in eac3/ac3: ac3.h ac3dec.h
bwolowiec
subversion at mplayerhq.hu
Fri Aug 10 22:48:36 CEST 2007
Author: bwolowiec
Date: Fri Aug 10 22:48:36 2007
New Revision: 676
Log:
seperate ac3.h and ac3dec.h
Added:
eac3/ac3/ac3dec.h
- copied, changed from r675, /eac3/ac3/ac3.h
Modified:
eac3/ac3/ac3.h
Modified: eac3/ac3/ac3.h
==============================================================================
--- eac3/ac3/ac3.h (original)
+++ eac3/ac3/ac3.h Fri Aug 10 22:48:36 2007
@@ -175,53 +175,4 @@ void ac3_parametric_bit_allocation(AC3Bi
int snroffset, int fgain, int is_lfe,
int deltbae,int deltnseg,
uint8_t *deltoffst, uint8_t *deltlen, uint8_t *deltba);
-
-void ff_ac3_window_init(float *window);
-void ff_ac3_tables_init(void);
-
-/** tables for ungrouping mantissas */
-extern float ff_ac3_b1_mantissas[32][3];
-extern float ff_ac3_b2_mantissas[128][3];
-extern float ff_ac3_b3_mantissas[8];
-extern float ff_ac3_b4_mantissas[128][2];
-extern float ff_ac3_b5_mantissas[16];
-
-/** dynamic range table. converts codes to scale factors. */
-extern float ff_ac3_dynrng_tbl[256];
-
-/** dialogue normalization table */
-extern float ff_ac3_dialnorm_tbl[32];
-
-/**
- * table for exponent to scale_factor mapping
- * ff_ac3_scale_factors[i] = 2 ^ -i
- */
-extern float ff_ac3_scale_factors[25];
-
-/** table for grouping exponents */
-extern uint8_t ff_ac3_exp_ungroup_tbl[128][3];
-
-/**
- * Decode the grouped exponents according to exponent strategy.
- * reference: Section 7.1.3 Exponent Decoding
- */
-void ff_ac3_decode_exponents(GetBitContext *gb, int expstr, int ngrps,
- uint8_t absexp, int8_t *dexps);
-
-/**
- * Grouped mantissas for 3-level 5-level and 11-level quantization
- */
-typedef struct {
- float b1_mant[3];
- float b2_mant[3];
- float b4_mant[2];
- int b1ptr;
- int b2ptr;
- int b4ptr;
-} mant_groups;
-
-int ff_ac3_get_transform_coeffs_ch(mant_groups *m, GetBitContext *gb, uint8_t *exps,
- uint8_t *bap, float *coeffs, int start, int end, AVRandomState *dith_state);
-
-
#endif /* AC3_H */
Copied: eac3/ac3/ac3dec.h (from r675, /eac3/ac3/ac3.h)
==============================================================================
--- /eac3/ac3/ac3.h (original)
+++ eac3/ac3/ac3dec.h Fri Aug 10 22:48:36 2007
@@ -24,158 +24,13 @@
* Common code between AC3 encoder and decoder.
*/
-#ifndef AC3_H
-#define AC3_H
+#ifndef AC3DEC_H
+#define AC3DEC_H
#include "ac3tab.h"
#include "bitstream.h"
#include "random.h"
-#define CPL_CH 0
-
-#define AC3_MAX_CODED_FRAME_SIZE 3840 /* in bytes */
-#define AC3_MAX_CHANNELS 6 /* including LFE channel */
-
-#define NB_BLOCKS 6 /* number of PCM blocks inside an AC3 frame */
-#define AC3_FRAME_SIZE (NB_BLOCKS * 256)
-
-/* exponent encoding strategy */
-#define EXP_REUSE 0
-#define EXP_NEW 1
-
-#define EXP_D15 1
-#define EXP_D25 2
-#define EXP_D45 3
-
-/** Delta bit allocation strategy */
-typedef enum {
- DBA_REUSE = 0,
- DBA_NEW,
- DBA_NONE,
- DBA_RESERVED
-} AC3DeltaStrategy;
-
-/** Channel mode (audio coding mode) */
-typedef enum {
- AC3_ACMOD_DUALMONO = 0,
- AC3_ACMOD_MONO,
- AC3_ACMOD_STEREO,
- AC3_ACMOD_3F,
- AC3_ACMOD_2F1R,
- AC3_ACMOD_3F1R,
- AC3_ACMOD_2F2R,
- AC3_ACMOD_3F2R
-} AC3ChannelMode;
-
-typedef struct AC3BitAllocParameters {
- int fscod; /* frequency */
- int halfratecod;
- int sgain, sdecay, fdecay, dbknee, floor;
- int cplfleak, cplsleak;
-} AC3BitAllocParameters;
-
-/**
- * @struct AC3HeaderInfo
- * Coded AC-3 header values up to the lfeon element, plus derived values.
- */
-typedef struct {
- /** @defgroup coded Coded elements
- * @{
- */
- uint16_t sync_word;
- uint16_t crc1;
- uint8_t fscod;
- uint8_t frmsizecod;
- uint8_t bsid;
- uint8_t bsmod;
- uint8_t acmod;
- uint8_t cmixlev;
- uint8_t surmixlev;
- uint8_t dsurmod;
- uint8_t lfeon;
- /** @} */
-
- /** @defgroup derived Derived values
- * @{
- */
- uint8_t halfratecod;
- uint16_t sample_rate;
- uint32_t bit_rate;
- uint8_t channels;
- uint16_t frame_size;
- /** @} */
-} AC3HeaderInfo;
-
-
-void ac3_common_init(void);
-
-/**
- * Calculates 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.
- *
- * @param[in] exp frequency coefficient exponents
- * @param[in] start starting bin location
- * @param[in] end ending bin location
- * @param[out] psd signal power for each frequency bin
- * @param[out] bndpsd signal power for each critical band
- */
-void ff_ac3_bit_alloc_calc_psd(int8_t *exp, int start, int end, int16_t *psd,
- int16_t *bndpsd);
-
-/**
- * Calculates the masking curve.
- * First, the excitation is calculated using parameters in \p 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.
- *
- * @param[in] s adjustable bit allocation parameters
- * @param[in] bndpsd signal power for each critical band
- * @param[in] start starting bin location
- * @param[in] end ending bin location
- * @param[in] fgain fast gain (estimated signal-to-mask ratio)
- * @param[in] is_lfe whether or not the channel being processed is the LFE
- * @param[in] deltbae delta bit allocation exists (none, reuse, or new)
- * @param[in] deltnseg number of delta segments
- * @param[in] deltoffst location offsets for each segment
- * @param[in] deltlen length of each segment
- * @param[in] deltba delta bit allocation for each segment
- * @param[out] mask calculated masking curve
- */
-void ff_ac3_bit_alloc_calc_mask(AC3BitAllocParameters *s, int16_t *bndpsd,
- int start, int end, int fgain, int is_lfe,
- int deltbae, int deltnseg, uint8_t *deltoffst,
- uint8_t *deltlen, uint8_t *deltba,
- int16_t *mask);
-
-/**
- * Calculates bit allocation pointers.
- * The SNR is the difference between the masking curve and the signal. AC-3
- * uses this value for each frequency bin to allocate bits. The \p snroffset
- * parameter is a global adjustment to the SNR for all bins.
- *
- * @param[in] mask masking curve
- * @param[in] psd signal power for each frequency bin
- * @param[in] start starting bin location
- * @param[in] end ending bin location
- * @param[in] snroffset SNR adjustment
- * @param[in] floor noise floor
- * @param[out] bap bit allocation pointers
- */
-void ff_ac3_bit_alloc_calc_bap(int16_t *mask, int16_t *psd, int start, int end,
- int snroffset, int floor, uint8_t *bap);
-
-void ac3_parametric_bit_allocation(AC3BitAllocParameters *s, uint8_t *bap,
- int8_t *exp, int start, int end,
- int snroffset, int fgain, int is_lfe,
- int deltbae,int deltnseg,
- uint8_t *deltoffst, uint8_t *deltlen, uint8_t *deltba);
-
void ff_ac3_window_init(float *window);
void ff_ac3_tables_init(void);
@@ -224,4 +79,4 @@ int ff_ac3_get_transform_coeffs_ch(mant_
uint8_t *bap, float *coeffs, int start, int end, AVRandomState *dith_state);
-#endif /* AC3_H */
+#endif /* AC3DEC_H */
More information about the FFmpeg-soc
mailing list