FFmpeg  4.0
Data Structures | Macros | Typedefs | Functions | Variables
wma.h File Reference
#include "libavutil/float_dsp.h"
#include "avcodec.h"
#include "fft.h"
#include "get_bits.h"
#include "put_bits.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   32768
 
#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...
 

Functions

av_warn_unused_result 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_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

◆ BLOCK_MIN_BITS

#define BLOCK_MIN_BITS   7

Definition at line 33 of file wma.h.

Referenced by ff_wma_init().

◆ BLOCK_MAX_BITS

#define BLOCK_MAX_BITS   11

Definition at line 34 of file wma.h.

◆ BLOCK_MAX_SIZE

#define BLOCK_MAX_SIZE   (1 << BLOCK_MAX_BITS)

Definition at line 35 of file wma.h.

◆ BLOCK_NB_SIZES

#define BLOCK_NB_SIZES   (BLOCK_MAX_BITS - BLOCK_MIN_BITS + 1)

Definition at line 37 of file wma.h.

◆ HIGH_BAND_MAX_SIZE

#define HIGH_BAND_MAX_SIZE   16

Definition at line 40 of file wma.h.

Referenced by wma_decode_block().

◆ NB_LSP_COEFS

#define NB_LSP_COEFS   10

Definition at line 42 of file wma.h.

Referenced by decode_exp_lsp(), and wma_lsp_to_curve().

◆ MAX_CODED_SUPERFRAME_SIZE

#define MAX_CODED_SUPERFRAME_SIZE   32768

Definition at line 45 of file wma.h.

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

◆ MAX_CHANNELS

#define MAX_CHANNELS   2

Definition at line 47 of file wma.h.

◆ NOISE_TAB_SIZE

#define NOISE_TAB_SIZE   8192

Definition at line 49 of file wma.h.

Referenced by ff_wma_init(), and wma_decode_block().

◆ LSP_POW_BITS

#define LSP_POW_BITS   7

Definition at line 51 of file wma.h.

Referenced by pow_m1_4(), and wma_lsp_to_curve_init().

◆ VLCBITS

#define VLCBITS   9

Definition at line 54 of file wma.h.

Referenced by ff_wma_run_level_decode(), and init_coef_vlc().

◆ VLCMAX

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

Definition at line 55 of file wma.h.

Referenced by ff_wma_run_level_decode().

Typedef Documentation

◆ WMACoef

typedef float WMACoef

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

Definition at line 57 of file wma.h.

Function Documentation

◆ ff_wma_init()

av_warn_unused_result int ff_wma_init ( AVCodecContext avctx,
int  flags2 
)

Definition at line 81 of file wma.c.

Referenced by encode_init(), and wma_decode_init().

◆ ff_wma_total_gain_to_bits()

int ff_wma_total_gain_to_bits ( int  total_gain)

Definition at line 354 of file wma.c.

Referenced by encode_block(), and wma_decode_block().

◆ ff_wma_end()

int ff_wma_end ( AVCodecContext avctx)

Definition at line 368 of file wma.c.

Referenced by encode_superframe(), and flush().

◆ ff_wma_get_large_val()

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

Referenced by decode_coeffs(), and ff_wma_run_level_decode().

◆ ff_wma_run_level_decode()

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

Referenced by decode_coeffs(), and wma_decode_block().

Variable Documentation

◆ ff_wma_hgain_huffcodes

const uint16_t ff_wma_hgain_huffcodes[37]

Definition at line 54 of file wmadata.h.

Referenced by wma_decode_init().

◆ ff_wma_hgain_huffbits

const uint8_t ff_wma_hgain_huffbits[37]

Definition at line 62 of file wmadata.h.

Referenced by wma_decode_init().

◆ ff_wma_lsp_codebook

const float ff_wma_lsp_codebook[NB_LSP_COEFS][16]

Definition at line 68 of file wmadata.h.

Referenced by decode_exp_lsp().

◆ ff_aac_scalefactor_code

const uint32_t ff_aac_scalefactor_code[121]

◆ ff_aac_scalefactor_bits

const uint8_t ff_aac_scalefactor_bits[121]