wma.h File Reference
#include "libavutil/float_dsp.h"
#include "get_bits.h"
#include "put_bits.h"
#include "fft.h"
#include "fmtconvert.h"
Include dependency graph for wma.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  CoefVLCTable
 
struct  WMACodecContext
 

Macros

#define BLOCK_MIN_BITS   7
 
#define BLOCK_MAX_BITS   11
 
#define BLOCK_MAX_SIZE   (1 << BLOCK_MAX_BITS)
 
#define BLOCK_NB_SIZES   (BLOCK_MAX_BITS - BLOCK_MIN_BITS + 1)
 
#define HIGH_BAND_MAX_SIZE   16
 
#define NB_LSP_COEFS   10
 
#define MAX_CODED_SUPERFRAME_SIZE   16384
 
#define MAX_CHANNELS   2
 
#define NOISE_TAB_SIZE   8192
 
#define LSP_POW_BITS   7
 
#define VLCBITS   9
 
#define VLCMAX   ((22+VLCBITS-1)/VLCBITS)
 

Typedefs

typedef float WMACoef
 type for decoded coefficients, int16_t would be enough for wma 1/2 More...
 
typedef struct CoefVLCTable CoefVLCTable
 
typedef struct WMACodecContext WMACodecContext
 

Functions

int ff_wma_init (AVCodecContext *avctx, int flags2)
 
int ff_wma_total_gain_to_bits (int total_gain)
 
int ff_wma_end (AVCodecContext *avctx)
 
unsigned int ff_wma_get_large_val (GetBitContext *gb)
 Decode an uncompressed coefficient. More...
 
int ff_wma_run_level_decode (AVCodecContext *avctx, GetBitContext *gb, VLC *vlc, const float *level_table, const uint16_t *run_table, int version, WMACoef *ptr, int offset, int num_coefs, int block_len, int frame_len_bits, int coef_nb_bits)
 Decode run level compressed coefficients. More...
 

Variables

const uint16_t ff_wma_critical_freqs [25]
 
const uint16_t ff_wma_hgain_huffcodes [37]
 
const uint8_t ff_wma_hgain_huffbits [37]
 
const float ff_wma_lsp_codebook [NB_LSP_COEFS][16]
 
const uint32_t ff_aac_scalefactor_code [121]
 
const uint8_t ff_aac_scalefactor_bits [121]
 

Macro Definition Documentation

#define BLOCK_MAX_BITS   11

Definition at line 33 of file wma.h.

#define BLOCK_MAX_SIZE   (1 << BLOCK_MAX_BITS)

Definition at line 34 of file wma.h.

#define BLOCK_MIN_BITS   7

Definition at line 32 of file wma.h.

Referenced by ff_wma_init().

#define BLOCK_NB_SIZES   (BLOCK_MAX_BITS - BLOCK_MIN_BITS + 1)

Definition at line 36 of file wma.h.

#define HIGH_BAND_MAX_SIZE   16

Definition at line 39 of file wma.h.

Referenced by wma_decode_block().

#define LSP_POW_BITS   7

Definition at line 50 of file wma.h.

Referenced by pow_m1_4(), and wma_lsp_to_curve_init().

#define MAX_CHANNELS   2

Definition at line 46 of file wma.h.

#define MAX_CODED_SUPERFRAME_SIZE   16384

Definition at line 44 of file wma.h.

Referenced by encode_init(), encode_superframe(), and wma_decode_superframe().

#define NB_LSP_COEFS   10

Definition at line 41 of file wma.h.

Referenced by decode_exp_lsp(), and wma_lsp_to_curve().

#define NOISE_TAB_SIZE   8192

Definition at line 48 of file wma.h.

Referenced by ff_wma_init(), and wma_decode_block().

#define VLCBITS   9

Definition at line 53 of file wma.h.

Referenced by ff_wma_run_level_decode(), and init_coef_vlc().

#define VLCMAX   ((22+VLCBITS-1)/VLCBITS)

Definition at line 54 of file wma.h.

Referenced by ff_wma_run_level_decode().

Typedef Documentation

typedef struct CoefVLCTable CoefVLCTable
typedef float WMACoef

type for decoded coefficients, int16_t would be enough for wma 1/2

Definition at line 56 of file wma.h.

Function Documentation

int ff_wma_end ( AVCodecContext avctx)

Definition at line 372 of file wma.c.

Referenced by encode_superframe(), and flush().

unsigned int ff_wma_get_large_val ( GetBitContext gb)

Decode an uncompressed coefficient.

Parameters
gbGetBitContext
Returns
the decoded coefficient

consumes up to 34 bits

decode length

Definition at line 401 of file wma.c.

Referenced by decode_coeffs(), and ff_wma_run_level_decode().

int ff_wma_init ( AVCodecContext avctx,
int  flags2 
)

Definition at line 71 of file wma.c.

Referenced by encode_init(), and wma_decode_init().

int ff_wma_run_level_decode ( AVCodecContext avctx,
GetBitContext gb,
VLC vlc,
const float *  level_table,
const uint16_t *  run_table,
int  version,
WMACoef ptr,
int  offset,
int  num_coefs,
int  block_len,
int  frame_len_bits,
int  coef_nb_bits 
)

Decode run level compressed coefficients.

Parameters
avctxcodec context
gbbitstream reader context
vlcvlc table for get_vlc2
level_tablelevel codes
run_tablerun codes
version0 for wma1,2 1 for wmapro
ptroutput buffer
offsetoffset in the output buffer
num_coefsnumber of input coefficents
block_leninput buffer length (2^n)
frame_len_bitsnumber of bits for escaped run codes
coef_nb_bitsnumber of bits for escaped level codes
Returns
0 on success, -1 otherwise

normal code

EOB

escape

NOTE: this is rather suboptimal. reading block_len_bits would be better

escape decode

NOTE: EOB can be omitted

Definition at line 434 of file wma.c.

Referenced by decode_coeffs(), and wma_decode_block().

int ff_wma_total_gain_to_bits ( int  total_gain)

Definition at line 363 of file wma.c.

Referenced by encode_block(), and wma_decode_block().

Variable Documentation

const uint32_t ff_aac_scalefactor_code[121]

Definition at line 51 of file aactab.c.

Referenced by aac_decode_init(), encode_exp_vlc(), encode_scale_factors(), and wma_decode_init().

const uint16_t ff_wma_critical_freqs[25]

Definition at line 33 of file wmadata.h.

const uint8_t ff_wma_hgain_huffbits[37]

Definition at line 67 of file wmadata.h.

Referenced by wma_decode_init().

const uint16_t ff_wma_hgain_huffcodes[37]

Definition at line 59 of file wmadata.h.

Referenced by wma_decode_init().

const float ff_wma_lsp_codebook[NB_LSP_COEFS][16]

Definition at line 75 of file wmadata.h.

Referenced by decode_exp_lsp().