[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