XenevaOS
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Enumerations | Functions | Variables
sbr.h File Reference
#include "aaccommon.h"
#include "bitstream.h"
Include dependency graph for sbr.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _HuffInfo
 
struct  _SBRHeader
 
struct  _SBRGrid
 
struct  _SBRFreq
 
struct  _SBRChan
 
struct  _PSInfoSBR
 

Macros

#define ASSERT(x)   /* do nothing */
 
#define MAX(a, b)   ((a) > (b) ? (a) : (b))
 
#define MIN(a, b)   ((a) < (b) ? (a) : (b))
 
#define NUM_TIME_SLOTS   16
 
#define SAMPLES_PER_SLOT   2 /* RATE in spec */
 
#define NUM_SAMPLE_RATES_SBR   9 /* downsampled (single-rate) mode unsupported, so only use Fs_sbr >= 16 kHz */
 
#define MAX_NUM_ENV   5
 
#define MAX_NUM_NOISE_FLOORS   2
 
#define MAX_NUM_NOISE_FLOOR_BANDS   5 /* max Nq, see 4.6.18.3.6 */
 
#define MAX_NUM_PATCHES   5
 
#define MAX_NUM_SMOOTH_COEFS   5
 
#define HF_GEN   8
 
#define HF_ADJ   2
 
#define MAX_QMF_BANDS   48 /* max QMF subbands covered by SBR (4.6.18.3.6) */
 
#define FBITS_IN_QMFA   14
 
#define FBITS_LOST_QMFA   (1 + 2 + 3 + 2 + 1) /* 1 from cTab, 2 in premul, 3 in FFT, 2 in postmul, 1 for implicit scaling by 2.0 */
 
#define FBITS_OUT_QMFA   (FBITS_IN_QMFA - FBITS_LOST_QMFA)
 
#define MIN_GBITS_IN_QMFS   2
 
#define FBITS_IN_QMFS   FBITS_OUT_QMFA
 
#define FBITS_LOST_DCT4_64   (2 + 3 + 2) /* 2 in premul, 3 in FFT, 2 in postmul */
 
#define FBITS_OUT_DQ_ENV   29 /* dequantized env scalefactors are Q(29 - envDataDequantScale) */
 
#define FBITS_OUT_DQ_NOISE   24 /* range of Q_orig = [2^-24, 2^6] */
 
#define NOISE_FLOOR_OFFSET   6
 
#define FBITS_GLIM_BOOST   24
 
#define FBITS_QLIM_BOOST   14
 
#define MAX_HUFF_BITS   20
 
#define NUM_QMF_DELAY_BUFS   10
 
#define DELAY_SAMPS_QMFA   (NUM_QMF_DELAY_BUFS * 32)
 
#define DELAY_SAMPS_QMFS   (NUM_QMF_DELAY_BUFS * 128)
 
#define FFT32C   STATNAME(FFT32C)
 
#define CalcFreqTables   STATNAME(CalcFreqTables)
 
#define AdjustHighFreq   STATNAME(AdjustHighFreq)
 
#define GenerateHighFreq   STATNAME(GenerateHighFreq)
 
#define DecodeSBREnvelope   STATNAME(DecodeSBREnvelope)
 
#define DecodeSBRNoise   STATNAME(DecodeSBRNoise)
 
#define UncoupleSBREnvelope   STATNAME(UncoupleSBREnvelope)
 
#define UncoupleSBRNoise   STATNAME(UncoupleSBRNoise)
 
#define InvRNormalized   STATNAME(InvRNormalized)
 
#define RatioPowInv   STATNAME(RatioPowInv)
 
#define SqrtFix   STATNAME(SqrtFix)
 
#define QMFAnalysis   STATNAME(QMFAnalysis)
 
#define QMFSynthesis   STATNAME(QMFSynthesis)
 
#define GetSampRateIdx   STATNAME(GetSampRateIdx)
 
#define UnpackSBRHeader   STATNAME(UnpackSBRHeader)
 
#define UnpackSBRSingleChannel   STATNAME(UnpackSBRSingleChannel)
 
#define UnpackSBRChannelPair   STATNAME(UnpackSBRChannelPair)
 
#define CVKernel1   STATNAME(CVKernel1)
 
#define CVKernel2   STATNAME(CVKernel2)
 
#define QMFAnalysisConv   STATNAME(QMFAnalysisConv)
 
#define QMFSynthesisConv   STATNAME(QMFSynthesisConv)
 
#define k0Tab   STATNAME(k0Tab)
 
#define k2Tab   STATNAME(k2Tab)
 
#define goalSBTab   STATNAME(goalSBTab)
 
#define huffTabSBR   STATNAME(huffTabSBR)
 
#define huffTabSBRInfo   STATNAME(huffTabSBRInfo)
 
#define log2Tab   STATNAME(log2Tab)
 
#define noiseTab   STATNAME(noiseTab)
 
#define cTabA   STATNAME(cTabA)
 
#define cTabS   STATNAME(cTabS)
 
#define CLIP_2N_SHIFT30(y, n)
 

Typedefs

typedef struct _HuffInfo HuffInfo
 
typedef struct _SBRHeader SBRHeader
 
typedef struct _SBRGrid SBRGrid
 
typedef struct _SBRFreq SBRFreq
 
typedef struct _SBRChan SBRChan
 
typedef struct _PSInfoSBR PSInfoSBR
 

Enumerations

enum  { SBR_GRID_FIXFIX = 0 , SBR_GRID_FIXVAR = 1 , SBR_GRID_VARFIX = 2 , SBR_GRID_VARVAR = 3 }
 
enum  {
  HuffTabSBR_tEnv15 = 0 , HuffTabSBR_fEnv15 = 1 , HuffTabSBR_tEnv15b = 2 , HuffTabSBR_fEnv15b = 3 ,
  HuffTabSBR_tEnv30 = 4 , HuffTabSBR_fEnv30 = 5 , HuffTabSBR_tEnv30b = 6 , HuffTabSBR_fEnv30b = 7 ,
  HuffTabSBR_tNoise30 = 8 , HuffTabSBR_fNoise30 = 5 , HuffTabSBR_tNoise30b = 9 , HuffTabSBR_fNoise30b = 7
}
 

Functions

void FFT32C (int *x)
 
int CalcFreqTables (SBRHeader *sbrHdr, SBRFreq *sbrFreq, int sampRateIdx)
 
void AdjustHighFreq (PSInfoSBR *psi, SBRHeader *sbrHdr, SBRGrid *sbrGrid, SBRFreq *sbrFreq, SBRChan *sbrChan, int ch)
 
void GenerateHighFreq (PSInfoSBR *psi, SBRGrid *sbrGrid, SBRFreq *sbrFreq, SBRChan *sbrChan, int ch)
 
void DecodeSBREnvelope (BitStreamInfo *bsi, PSInfoSBR *psi, SBRGrid *sbrGrid, SBRFreq *sbrFreq, SBRChan *sbrChan, int ch)
 
void DecodeSBRNoise (BitStreamInfo *bsi, PSInfoSBR *psi, SBRGrid *sbrGrid, SBRFreq *sbrFreq, SBRChan *sbrChan, int ch)
 
void UncoupleSBREnvelope (PSInfoSBR *psi, SBRGrid *sbrGrid, SBRFreq *sbrFreq, SBRChan *sbrChanR)
 
void UncoupleSBRNoise (PSInfoSBR *psi, SBRGrid *sbrGrid, SBRFreq *sbrFreq, SBRChan *sbrChanR)
 
int InvRNormalized (int r)
 
int RatioPowInv (int a, int b, int c)
 
int SqrtFix (int x, int fBitsIn, int *fBitsOut)
 
int QMFAnalysis (int *inbuf, int *delay, int *XBuf, int fBitsIn, int *delayIdx, int qmfaBands)
 
void QMFSynthesis (int *inbuf, int *delay, int *delayIdx, int qmfsBands, short *outbuf, int nChans)
 
int GetSampRateIdx (int sampRate)
 
int UnpackSBRHeader (BitStreamInfo *bsi, SBRHeader *sbrHdr)
 
void UnpackSBRSingleChannel (BitStreamInfo *bsi, PSInfoSBR *psi, int chOut)
 
void UnpackSBRChannelPair (BitStreamInfo *bsi, PSInfoSBR *psi, int chOut)
 

Variables

const unsigned char k0Tab [NUM_SAMPLE_RATES_SBR][16]
 
const unsigned char k2Tab [NUM_SAMPLE_RATES_SBR][14]
 
const unsigned char goalSBTab [NUM_SAMPLE_RATES_SBR]
 
const HuffInfo huffTabSBRInfo [10]
 
const signed int huffTabSBR [604]
 
const int log2Tab [65]
 
const int noiseTab [512 *2]
 
const int cTabA [165]
 
const int cTabS [640]
 

Macro Definition Documentation

◆ AdjustHighFreq

#define AdjustHighFreq   STATNAME(AdjustHighFreq)

◆ ASSERT

#define ASSERT (   x)    /* do nothing */

◆ CalcFreqTables

#define CalcFreqTables   STATNAME(CalcFreqTables)

◆ CLIP_2N_SHIFT30

#define CLIP_2N_SHIFT30 (   y,
  n 
)
Value:
{ \
int sign = (y) >> 31; \
if (sign != (y) >> (30 - (n))) { \
(y) = sign ^ (0x3fffffff); \
} else { \
(y) = (y) << (n); \
} \
}
#define sign(x)
Definition draw.cpp:36
int y
Definition layout.c:118

◆ cTabA

const int cTabA   STATNAME(cTabA)

◆ cTabS

const int cTabS   STATNAME(cTabS)

◆ CVKernel1

#define CVKernel1   STATNAME(CVKernel1)

◆ CVKernel2

#define CVKernel2   STATNAME(CVKernel2)

◆ DecodeSBREnvelope

#define DecodeSBREnvelope   STATNAME(DecodeSBREnvelope)

◆ DecodeSBRNoise

#define DecodeSBRNoise   STATNAME(DecodeSBRNoise)

◆ DELAY_SAMPS_QMFA

#define DELAY_SAMPS_QMFA   (NUM_QMF_DELAY_BUFS * 32)

◆ DELAY_SAMPS_QMFS

#define DELAY_SAMPS_QMFS   (NUM_QMF_DELAY_BUFS * 128)

◆ FBITS_GLIM_BOOST

#define FBITS_GLIM_BOOST   24

◆ FBITS_IN_QMFA

#define FBITS_IN_QMFA   14

◆ FBITS_IN_QMFS

#define FBITS_IN_QMFS   FBITS_OUT_QMFA

◆ FBITS_LOST_DCT4_64

#define FBITS_LOST_DCT4_64   (2 + 3 + 2) /* 2 in premul, 3 in FFT, 2 in postmul */

◆ FBITS_LOST_QMFA

#define FBITS_LOST_QMFA   (1 + 2 + 3 + 2 + 1) /* 1 from cTab, 2 in premul, 3 in FFT, 2 in postmul, 1 for implicit scaling by 2.0 */

◆ FBITS_OUT_DQ_ENV

#define FBITS_OUT_DQ_ENV   29 /* dequantized env scalefactors are Q(29 - envDataDequantScale) */

◆ FBITS_OUT_DQ_NOISE

#define FBITS_OUT_DQ_NOISE   24 /* range of Q_orig = [2^-24, 2^6] */

◆ FBITS_OUT_QMFA

#define FBITS_OUT_QMFA   (FBITS_IN_QMFA - FBITS_LOST_QMFA)

◆ FBITS_QLIM_BOOST

#define FBITS_QLIM_BOOST   14

◆ FFT32C

#define FFT32C   STATNAME(FFT32C)

◆ GenerateHighFreq

#define GenerateHighFreq   STATNAME(GenerateHighFreq)

◆ GetSampRateIdx

#define GetSampRateIdx   STATNAME(GetSampRateIdx)

◆ goalSBTab

#define goalSBTab   STATNAME(goalSBTab)

◆ HF_ADJ

#define HF_ADJ   2

◆ HF_GEN

#define HF_GEN   8

◆ huffTabSBR

const signed int huffTabSBR   STATNAME(huffTabSBR)

◆ huffTabSBRInfo

#define huffTabSBRInfo   STATNAME(huffTabSBRInfo)

◆ InvRNormalized

#define InvRNormalized   STATNAME(InvRNormalized)

◆ k0Tab

#define k0Tab   STATNAME(k0Tab)

◆ k2Tab

#define k2Tab   STATNAME(k2Tab)

◆ log2Tab

const int log2Tab   STATNAME(log2Tab)

◆ MAX

#define MAX (   a,
  b 
)    ((a) > (b) ? (a) : (b))

◆ MAX_HUFF_BITS

#define MAX_HUFF_BITS   20

◆ MAX_NUM_ENV

#define MAX_NUM_ENV   5

◆ MAX_NUM_NOISE_FLOOR_BANDS

#define MAX_NUM_NOISE_FLOOR_BANDS   5 /* max Nq, see 4.6.18.3.6 */

◆ MAX_NUM_NOISE_FLOORS

#define MAX_NUM_NOISE_FLOORS   2

◆ MAX_NUM_PATCHES

#define MAX_NUM_PATCHES   5

◆ MAX_NUM_SMOOTH_COEFS

#define MAX_NUM_SMOOTH_COEFS   5

◆ MAX_QMF_BANDS

#define MAX_QMF_BANDS   48 /* max QMF subbands covered by SBR (4.6.18.3.6) */

◆ MIN

#define MIN (   a,
  b 
)    ((a) < (b) ? (a) : (b))

◆ MIN_GBITS_IN_QMFS

#define MIN_GBITS_IN_QMFS   2

◆ NOISE_FLOOR_OFFSET

#define NOISE_FLOOR_OFFSET   6

◆ noiseTab

const int noiseTab   STATNAME(noiseTab)

◆ NUM_QMF_DELAY_BUFS

#define NUM_QMF_DELAY_BUFS   10

◆ NUM_SAMPLE_RATES_SBR

#define NUM_SAMPLE_RATES_SBR   9 /* downsampled (single-rate) mode unsupported, so only use Fs_sbr >= 16 kHz */

◆ NUM_TIME_SLOTS

#define NUM_TIME_SLOTS   16

◆ QMFAnalysis

#define QMFAnalysis   STATNAME(QMFAnalysis)

◆ QMFAnalysisConv

#define QMFAnalysisConv   STATNAME(QMFAnalysisConv)

◆ QMFSynthesis

#define QMFSynthesis   STATNAME(QMFSynthesis)

◆ QMFSynthesisConv

#define QMFSynthesisConv   STATNAME(QMFSynthesisConv)

◆ RatioPowInv

#define RatioPowInv   STATNAME(RatioPowInv)

◆ SAMPLES_PER_SLOT

#define SAMPLES_PER_SLOT   2 /* RATE in spec */

◆ SqrtFix

#define SqrtFix   STATNAME(SqrtFix)

◆ UncoupleSBREnvelope

#define UncoupleSBREnvelope   STATNAME(UncoupleSBREnvelope)

◆ UncoupleSBRNoise

#define UncoupleSBRNoise   STATNAME(UncoupleSBRNoise)

◆ UnpackSBRChannelPair

#define UnpackSBRChannelPair   STATNAME(UnpackSBRChannelPair)

◆ UnpackSBRHeader

#define UnpackSBRHeader   STATNAME(UnpackSBRHeader)

◆ UnpackSBRSingleChannel

#define UnpackSBRSingleChannel   STATNAME(UnpackSBRSingleChannel)

Typedef Documentation

◆ HuffInfo

typedef struct _HuffInfo HuffInfo

◆ PSInfoSBR

typedef struct _PSInfoSBR PSInfoSBR

◆ SBRChan

typedef struct _SBRChan SBRChan

◆ SBRFreq

typedef struct _SBRFreq SBRFreq

◆ SBRGrid

typedef struct _SBRGrid SBRGrid

◆ SBRHeader

typedef struct _SBRHeader SBRHeader

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
SBR_GRID_FIXFIX 
SBR_GRID_FIXVAR 
SBR_GRID_VARFIX 
SBR_GRID_VARVAR 

◆ anonymous enum

anonymous enum
Enumerator
HuffTabSBR_tEnv15 
HuffTabSBR_fEnv15 
HuffTabSBR_tEnv15b 
HuffTabSBR_fEnv15b 
HuffTabSBR_tEnv30 
HuffTabSBR_fEnv30 
HuffTabSBR_tEnv30b 
HuffTabSBR_fEnv30b 
HuffTabSBR_tNoise30 
HuffTabSBR_fNoise30 
HuffTabSBR_tNoise30b 
HuffTabSBR_fNoise30b 

Function Documentation

◆ AdjustHighFreq()

void AdjustHighFreq ( PSInfoSBR *  psi,
SBRHeader *  sbrHdr,
SBRGrid *  sbrGrid,
SBRFreq *  sbrFreq,
SBRChan *  sbrChan,
int  ch 
)

◆ CalcFreqTables()

int CalcFreqTables ( SBRHeader *  sbrHdr,
SBRFreq *  sbrFreq,
int  sampRateIdx 
)

◆ DecodeSBREnvelope()

void DecodeSBREnvelope ( BitStreamInfo *  bsi,
PSInfoSBR *  psi,
SBRGrid *  sbrGrid,
SBRFreq *  sbrFreq,
SBRChan *  sbrChan,
int  ch 
)

◆ DecodeSBRNoise()

void DecodeSBRNoise ( BitStreamInfo *  bsi,
PSInfoSBR *  psi,
SBRGrid *  sbrGrid,
SBRFreq *  sbrFreq,
SBRChan *  sbrChan,
int  ch 
)

◆ FFT32C()

void FFT32C ( int *  x)

◆ GenerateHighFreq()

void GenerateHighFreq ( PSInfoSBR *  psi,
SBRGrid *  sbrGrid,
SBRFreq *  sbrFreq,
SBRChan *  sbrChan,
int  ch 
)

◆ GetSampRateIdx()

int GetSampRateIdx ( int  sampRate)

◆ InvRNormalized()

int InvRNormalized ( int  r)

◆ QMFAnalysis()

int QMFAnalysis ( int *  inbuf,
int *  delay,
int *  XBuf,
int  fBitsIn,
int *  delayIdx,
int  qmfaBands 
)

◆ QMFSynthesis()

void QMFSynthesis ( int *  inbuf,
int *  delay,
int *  delayIdx,
int  qmfsBands,
short *  outbuf,
int  nChans 
)

◆ RatioPowInv()

int RatioPowInv ( int  a,
int  b,
int  c 
)

◆ SqrtFix()

int SqrtFix ( int  x,
int  fBitsIn,
int *  fBitsOut 
)

◆ UncoupleSBREnvelope()

void UncoupleSBREnvelope ( PSInfoSBR *  psi,
SBRGrid *  sbrGrid,
SBRFreq *  sbrFreq,
SBRChan *  sbrChanR 
)

◆ UncoupleSBRNoise()

void UncoupleSBRNoise ( PSInfoSBR *  psi,
SBRGrid *  sbrGrid,
SBRFreq *  sbrFreq,
SBRChan *  sbrChanR 
)

◆ UnpackSBRChannelPair()

void UnpackSBRChannelPair ( BitStreamInfo *  bsi,
PSInfoSBR *  psi,
int  chOut 
)

◆ UnpackSBRHeader()

int UnpackSBRHeader ( BitStreamInfo *  bsi,
SBRHeader *  sbrHdr 
)

◆ UnpackSBRSingleChannel()

void UnpackSBRSingleChannel ( BitStreamInfo *  bsi,
PSInfoSBR *  psi,
int  chOut 
)

Variable Documentation

◆ cTabA

const int cTabA[165]
extern

◆ cTabS

const int cTabS[640]
extern

◆ goalSBTab

const unsigned char goalSBTab[NUM_SAMPLE_RATES_SBR]
extern

◆ huffTabSBR

const signed int huffTabSBR[604]
extern

◆ huffTabSBRInfo

const HuffInfo huffTabSBRInfo[10]
extern

◆ k0Tab

const unsigned char k0Tab[NUM_SAMPLE_RATES_SBR][16]
extern

◆ k2Tab

const unsigned char k2Tab[NUM_SAMPLE_RATES_SBR][14]
extern

◆ log2Tab

const int log2Tab[65]
extern

◆ noiseTab

const int noiseTab[512 *2]
extern