wma.h File Reference
#include "get_bits.h"
#include "put_bits.h"
#include "dsputil.h"
#include "fft.h"
#include "fmtconvert.h"

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
typedef struct CoefVLCTable CoefVLCTable
typedef struct WMACodecContext WMACodecContext

Functions

int av_cold ff_wma_get_frame_len_bits (int sample_rate, int version, unsigned int decode_flags)
 Get the samples per frame for this stream.
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.
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.

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 411 of file wma.c.

int av_cold ff_wma_get_frame_len_bits ( int  sample_rate,
int  version,
unsigned int  decode_flags 
)

Get the samples per frame for this stream.

Parameters
sample_rateoutput sample_rate
versionwma version
decode_flagscodec compression features
Returns
log2 of the number of output samples per frame

Definition at line 77 of file wma.c.

Referenced by decode_init(), and ff_wma_init().

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 440 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 110 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 473 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 402 of file wma.c.

Referenced by encode_block(), and wma_decode_block().

Variable Documentation

const uint8_t ff_aac_scalefactor_bits[121]
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().