[FFmpeg-soc] AACSBR Review: struct SpectralBandReplication
Alex Converse
alex.converse at gmail.com
Mon Nov 16 22:55:30 CET 2009
>/**
> * Spectral Band Replication
> */
>typedef struct {
> // SBR header bitstream variables
> uint8_t bs_amp_res;
> SpectrumParameters spectrum_params[2];
> // if (bs_header_extra_2)
> uint8_t bs_limiter_bands;
> uint8_t bs_limiter_gains;
> uint8_t bs_interpol_freq;
> uint8_t bs_smoothing_mode;
> // SBR data bitstream variables
> uint8_t bs_coupling;
> SBRData data[2];
> // SBR tool variables
> uint8_t reset;
> uint8_t k[4]; // k0, k1, k2 and kx respectively
We need a kx'
Also, there is a typo in the spec, kx' should initialize to 32 not 0,
confirmed by CT
> uint8_t m;
> uint8_t n_master;
> uint8_t n[2]; // n_low and n_high respectively
> uint8_t n_q;
> uint8_t n_lim;
> uint16_t f_master[49];
> uint16_t f_tablelow[25];
> uint16_t f_tablehigh[49];
> uint16_t f_tablenoise[6];
> uint16_t f_tablelim[29];
> uint8_t num_patches;
> uint8_t patch_num_subbands[5];
> uint8_t patch_start_subband[5];
> uint8_t t_env[2][8];
> uint8_t t_q[2][3];
> float env_facs[2][7][48];
> float noise_facs[2][2][5];
> float W[32][32][2];
We need a W'
i.e. float W[2][32][32][2];
We need a Y/Y'
e.g. float Y[2][64][40][2];
> float bw_array[2][5];
> float e_origmapped[7][48];
> float q_mapped[7][48];
> float s_indexmapped[8][48];
> float s_mapped[7][48];
> float e_curr[7][48];
> float q_m[7][48];
> float s_m[7][48];
> float gain[7][48];
> float gain_max[7][48];
> float gain_lim[7][48];
> float gain_boost[7][48];
> float gain_limboost[7][48];
> float q_m_lim[7][48];
> float q_m_limboost[7][48];
> float s_m_boost[7][48];
> uint8_t f_indexnoise[42][48][2];
> uint8_t f_indexsine[42][2];
>} SpectralBandReplication;
For purposes of minimizing holes, should this be sorted differently?
' indicates from the previous frame.
More information about the FFmpeg-soc
mailing list