FFmpeg
Data Structures | Macros | Typedefs | Functions | Variables
speexdec.c File Reference
#include "libavutil/avassert.h"
#include "libavutil/float_dsp.h"
#include "avcodec.h"
#include "bytestream.h"
#include "get_bits.h"
#include "internal.h"
#include "speexdata.h"

Go to the source code of this file.

Data Structures

struct  LtpParams
 
struct  SplitCodebookParams
 
struct  SpeexSubmode
 
struct  SpeexMode
 
struct  DecoderState
 
struct  StereoState
 
struct  SpeexContext
 

Macros

#define SPEEX_NB_MODES   3
 
#define SPEEX_INBAND_STEREO   9
 
#define QMF_ORDER   64
 
#define NB_ORDER   10
 
#define NB_FRAME_SIZE   160
 
#define NB_SUBMODES   9
 
#define NB_SUBMODE_BITS   4
 
#define SB_SUBMODE_BITS   3
 
#define NB_SUBFRAME_SIZE   40
 
#define NB_NB_SUBFRAMES   4
 
#define NB_PITCH_START   17
 
#define NB_PITCH_END   144
 
#define NB_DEC_BUFFER   (NB_FRAME_SIZE + 2 * NB_PITCH_END + NB_SUBFRAME_SIZE + 12)
 
#define SPEEX_MEMSET(dst, c, n)   (memset((dst), (c), (n) * sizeof(*(dst))))
 
#define SPEEX_COPY(dst, src, n)   (memcpy((dst), (src), (n) * sizeof(*(dst))))
 
#define LSP_LINEAR(i)   (.25f * (i) + .25f)
 
#define LSP_LINEAR_HIGH(i)   (.3125f * (i) + .75f)
 
#define LSP_DIV_256(x)   (0.00390625f * (x))
 
#define LSP_DIV_512(x)   (0.001953125f * (x))
 
#define LSP_DIV_1024(x)   (0.0009765625f * (x))
 
#define SUBMODE(x)   st->submodes[st->submodeID]->x
 
#define gain_3tap_to_1tap(g)   (FFABS(g[1]) + (g[0] > 0.f ? g[0] : -.5f * g[0]) + (g[2] > 0.f ? g[2] : -.5f * g[2]))
 
#define median3(a, b, c)
 

Typedefs

typedef void(* lsp_quant_func) (float *, float *, int, GetBitContext *)
 Quantizes LSPs. More...
 
typedef void(* lsp_unquant_func) (float *, int, GetBitContext *)
 Decodes quantized LSPs. More...
 
typedef int(* ltp_quant_func) (float *, float *, float *, float *, float *, float *, const void *, int, int, float, int, int, GetBitContext *, char *, float *, float *, int, int, int, float *)
 Long-term predictor quantization. More...
 
typedef void(* ltp_unquant_func) (float *, float *, int, int, float, const void *, int, int *, float *, GetBitContext *, int, int, float, int)
 Long-term un-quantize. More...
 
typedef void(* innovation_quant_func) (float *, float *, float *, float *, const void *, int, int, float *, float *, GetBitContext *, char *, int, int)
 Innovation quantization function. More...
 
typedef void(* innovation_unquant_func) (float *, const void *, int, GetBitContext *, uint32_t *)
 Innovation unquantization function. More...
 

Functions

static int speex_default_user_handler (GetBitContext *gb, void *state, void *data)
 
static void lsp_unquant_lbr (float *lsp, int order, GetBitContext *gb)
 
static void forced_pitch_unquant (float *exc, float *exc_out, int start, int end, float pitch_coef, const void *par, int nsf, int *pitch_val, float *gain_val, GetBitContext *gb, int count_lost, int subframe_offset, float last_pitch_gain, int cdbk_offset)
 
static float speex_rand (float std, uint32_t *seed)
 
static void noise_codebook_unquant (float *exc, const void *par, int nsf, GetBitContext *gb, uint32_t *seed)
 
static void split_cb_shape_sign_unquant (float *exc, const void *par, int nsf, GetBitContext *gb, uint32_t *seed)
 
static void pitch_unquant_3tap (float *exc, float *exc_out, int start, int end, float pitch_coef, const void *par, int nsf, int *pitch_val, float *gain_val, GetBitContext *gb, int count_lost, int subframe_offset, float last_pitch_gain, int cdbk_offset)
 
static void lsp_unquant_nb (float *lsp, int order, GetBitContext *gb)
 
static void lsp_unquant_high (float *lsp, int order, GetBitContext *gb)
 
static int nb_decode (AVCodecContext *, void *, GetBitContext *, float *)
 
static int sb_decode (AVCodecContext *, void *, GetBitContext *, float *)
 
static float compute_rms (const float *x, int len)
 
static void bw_lpc (float gamma, const float *lpc_in, float *lpc_out, int order)
 
static void iir_mem (const float *x, const float *den, float *y, int N, int ord, float *mem)
 
static void highpass (const float *x, float *y, int len, float *mem, int wide)
 
static int speex_std_stereo (GetBitContext *gb, void *state, void *data)
 
static int speex_inband_handler (GetBitContext *gb, void *state, StereoState *stereo)
 
static void sanitize_values (float *vec, float min_val, float max_val, int len)
 
static void signal_mul (const float *x, float *y, float scale, int len)
 
static float inner_prod (const float *x, const float *y, int len)
 
static int interp_pitch (const float *exc, float *interp, int pitch, int len)
 
static void multicomb (const float *exc, float *new_exc, float *ak, int p, int nsf, int pitch, int max_pitch, float comb_gain)
 
static void lsp_interpolate (const float *old_lsp, const float *new_lsp, float *lsp, int len, int subframe, int nb_subframes, float margin)
 
static void lsp_to_lpc (const float *freq, float *ak, int lpcrdr)
 
static void qmf_synth (const float *x1, const float *x2, const float *a, float *y, int N, int M, float *mem1, float *mem2)
 
static int decoder_init (SpeexContext *s, DecoderState *st, const SpeexMode *mode)
 
static int parse_speex_extradata (AVCodecContext *avctx, const uint8_t *extradata, int extradata_size)
 
static av_cold int speex_decode_init (AVCodecContext *avctx)
 
static void speex_decode_stereo (float *data, int frame_size, StereoState *stereo)
 
static int speex_decode_frame (AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
 
static av_cold int speex_decode_close (AVCodecContext *avctx)
 

Variables

static const LtpParam ltp_params_vlbr = { gain_cdbk_lbr, 5, 0 }
 
static const LtpParam ltp_params_lbr = { gain_cdbk_lbr, 5, 7 }
 
static const LtpParam ltp_params_med = { gain_cdbk_lbr, 5, 7 }
 
static const LtpParam ltp_params_nb = { gain_cdbk_nb, 7, 7 }
 
static const SplitCodebookParams split_cb_nb_ulbr = { 20, 2, exc_20_32_table, 5, 0 }
 
static const SplitCodebookParams split_cb_nb_vlbr = { 10, 4, exc_10_16_table, 4, 0 }
 
static const SplitCodebookParams split_cb_nb_lbr = { 10, 4, exc_10_32_table, 5, 0 }
 
static const SplitCodebookParams split_cb_nb_med = { 8, 5, exc_8_128_table, 7, 0 }
 
static const SplitCodebookParams split_cb_nb = { 5, 8, exc_5_64_table, 6, 0 }
 
static const SplitCodebookParams split_cb_sb = { 5, 8, exc_5_256_table, 8, 0 }
 
static const SplitCodebookParams split_cb_high = { 8, 5, hexc_table, 7, 1 }
 
static const SplitCodebookParams split_cb_high_lbr = { 10, 4, hexc_10_32_table,5, 0 }
 
static const SpeexSubmode nb_submode1
 
static const SpeexSubmode nb_submode2
 
static const SpeexSubmode nb_submode3
 
static const SpeexSubmode nb_submode4
 
static const SpeexSubmode nb_submode5
 
static const SpeexSubmode nb_submode6
 
static const SpeexSubmode nb_submode7
 
static const SpeexSubmode nb_submode8
 
static const SpeexSubmode wb_submode1
 
static const SpeexSubmode wb_submode2
 
static const SpeexSubmode wb_submode3
 
static const SpeexSubmode wb_submode4
 
static const SpeexMode speex_modes [SPEEX_NB_MODES]
 
const AVCodec ff_speex_decoder
 

Macro Definition Documentation

◆ SPEEX_NB_MODES

#define SPEEX_NB_MODES   3

Definition at line 62 of file speexdec.c.

◆ SPEEX_INBAND_STEREO

#define SPEEX_INBAND_STEREO   9

Definition at line 63 of file speexdec.c.

◆ QMF_ORDER

#define QMF_ORDER   64

Definition at line 65 of file speexdec.c.

◆ NB_ORDER

#define NB_ORDER   10

Definition at line 66 of file speexdec.c.

◆ NB_FRAME_SIZE

#define NB_FRAME_SIZE   160

Definition at line 67 of file speexdec.c.

◆ NB_SUBMODES

#define NB_SUBMODES   9

Definition at line 68 of file speexdec.c.

◆ NB_SUBMODE_BITS

#define NB_SUBMODE_BITS   4

Definition at line 69 of file speexdec.c.

◆ SB_SUBMODE_BITS

#define SB_SUBMODE_BITS   3

Definition at line 70 of file speexdec.c.

◆ NB_SUBFRAME_SIZE

#define NB_SUBFRAME_SIZE   40

Definition at line 72 of file speexdec.c.

◆ NB_NB_SUBFRAMES

#define NB_NB_SUBFRAMES   4

Definition at line 73 of file speexdec.c.

◆ NB_PITCH_START

#define NB_PITCH_START   17

Definition at line 74 of file speexdec.c.

◆ NB_PITCH_END

#define NB_PITCH_END   144

Definition at line 75 of file speexdec.c.

◆ NB_DEC_BUFFER

#define NB_DEC_BUFFER   (NB_FRAME_SIZE + 2 * NB_PITCH_END + NB_SUBFRAME_SIZE + 12)

Definition at line 77 of file speexdec.c.

◆ SPEEX_MEMSET

#define SPEEX_MEMSET (   dst,
  c,
 
)    (memset((dst), (c), (n) * sizeof(*(dst))))

Definition at line 79 of file speexdec.c.

◆ SPEEX_COPY

#define SPEEX_COPY (   dst,
  src,
 
)    (memcpy((dst), (src), (n) * sizeof(*(dst))))

Definition at line 80 of file speexdec.c.

◆ LSP_LINEAR

#define LSP_LINEAR (   i)    (.25f * (i) + .25f)

Definition at line 82 of file speexdec.c.

◆ LSP_LINEAR_HIGH

#define LSP_LINEAR_HIGH (   i)    (.3125f * (i) + .75f)

Definition at line 83 of file speexdec.c.

◆ LSP_DIV_256

#define LSP_DIV_256 (   x)    (0.00390625f * (x))

Definition at line 84 of file speexdec.c.

◆ LSP_DIV_512

#define LSP_DIV_512 (   x)    (0.001953125f * (x))

Definition at line 85 of file speexdec.c.

◆ LSP_DIV_1024

#define LSP_DIV_1024 (   x)    (0.0009765625f * (x))

Definition at line 86 of file speexdec.c.

◆ SUBMODE

#define SUBMODE (   x)    st->submodes[st->submodeID]->x

Definition at line 347 of file speexdec.c.

◆ gain_3tap_to_1tap

#define gain_3tap_to_1tap (   g)    (FFABS(g[1]) + (g[0] > 0.f ? g[0] : -.5f * g[0]) + (g[2] > 0.f ? g[2] : -.5f * g[2]))

Definition at line 349 of file speexdec.c.

◆ median3

#define median3 (   a,
  b,
  c 
)
Value:
((a) < (b) ? ((b) < (c) ? (b) : ((a) < (c) ? (c) : (a))) \
: ((c) < (b) ? (b) : ((c) < (a) ? (c) : (a))))

Definition at line 613 of file speexdec.c.

Typedef Documentation

◆ lsp_quant_func

typedef void(* lsp_quant_func) (float *, float *, int, GetBitContext *)

Quantizes LSPs.

Definition at line 117 of file speexdec.c.

◆ lsp_unquant_func

typedef void(* lsp_unquant_func) (float *, int, GetBitContext *)

Decodes quantized LSPs.

Definition at line 120 of file speexdec.c.

◆ ltp_quant_func

typedef int(* ltp_quant_func) (float *, float *, float *, float *, float *, float *, const void *, int, int, float, int, int, GetBitContext *, char *, float *, float *, int, int, int, float *)

Long-term predictor quantization.

Definition at line 123 of file speexdec.c.

◆ ltp_unquant_func

typedef void(* ltp_unquant_func) (float *, float *, int, int, float, const void *, int, int *, float *, GetBitContext *, int, int, float, int)

Long-term un-quantize.

Definition at line 130 of file speexdec.c.

◆ innovation_quant_func

typedef void(* innovation_quant_func) (float *, float *, float *, float *, const void *, int, int, float *, float *, GetBitContext *, char *, int, int)

Innovation quantization function.

Definition at line 136 of file speexdec.c.

◆ innovation_unquant_func

typedef void(* innovation_unquant_func) (float *, const void *, int, GetBitContext *, uint32_t *)

Innovation unquantization function.

Definition at line 142 of file speexdec.c.

Function Documentation

◆ speex_default_user_handler()

static int speex_default_user_handler ( GetBitContext gb,
void *  state,
void *  data 
)
static

Definition at line 223 of file speexdec.c.

Referenced by nb_decode().

◆ lsp_unquant_lbr()

static void lsp_unquant_lbr ( float *  lsp,
int  order,
GetBitContext gb 
)
static

Definition at line 260 of file speexdec.c.

◆ forced_pitch_unquant()

static void forced_pitch_unquant ( float *  exc,
float *  exc_out,
int  start,
int  end,
float  pitch_coef,
const void *  par,
int  nsf,
int pitch_val,
float *  gain_val,
GetBitContext gb,
int  count_lost,
int  subframe_offset,
float  last_pitch_gain,
int  cdbk_offset 
)
static

Definition at line 280 of file speexdec.c.

◆ speex_rand()

static float speex_rand ( float  std,
uint32_t *  seed 
)
inlinestatic

Definition at line 296 of file speexdec.c.

Referenced by nb_decode(), and noise_codebook_unquant().

◆ noise_codebook_unquant()

static void noise_codebook_unquant ( float *  exc,
const void *  par,
int  nsf,
GetBitContext gb,
uint32_t *  seed 
)
static

Definition at line 310 of file speexdec.c.

◆ split_cb_shape_sign_unquant()

static void split_cb_shape_sign_unquant ( float *  exc,
const void *  par,
int  nsf,
GetBitContext gb,
uint32_t *  seed 
)
static

Definition at line 317 of file speexdec.c.

◆ pitch_unquant_3tap()

static void pitch_unquant_3tap ( float *  exc,
float *  exc_out,
int  start,
int  end,
float  pitch_coef,
const void *  par,
int  nsf,
int pitch_val,
float *  gain_val,
GetBitContext gb,
int  count_lost,
int  subframe_offset,
float  last_pitch_gain,
int  cdbk_offset 
)
static

Definition at line 352 of file speexdec.c.

◆ lsp_unquant_nb()

static void lsp_unquant_nb ( float *  lsp,
int  order,
GetBitContext gb 
)
static

Definition at line 408 of file speexdec.c.

◆ lsp_unquant_high()

static void lsp_unquant_high ( float *  lsp,
int  order,
GetBitContext gb 
)
static

Definition at line 436 of file speexdec.c.

◆ nb_decode()

static int nb_decode ( AVCodecContext avctx,
void *  ptr_st,
GetBitContext gb,
float *  out 
)
static

Definition at line 865 of file speexdec.c.

◆ sb_decode()

static int sb_decode ( AVCodecContext avctx,
void *  ptr_st,
GetBitContext gb,
float *  out 
)
static

Definition at line 1216 of file speexdec.c.

◆ compute_rms()

static float compute_rms ( const float *  x,
int  len 
)
static

Definition at line 562 of file speexdec.c.

Referenced by multicomb(), nb_decode(), and sb_decode().

◆ bw_lpc()

static void bw_lpc ( float  gamma,
const float *  lpc_in,
float *  lpc_out,
int  order 
)
static

Definition at line 573 of file speexdec.c.

Referenced by nb_decode().

◆ iir_mem()

static void iir_mem ( const float *  x,
const float *  den,
float *  y,
int  N,
int  ord,
float *  mem 
)
static

Definition at line 584 of file speexdec.c.

Referenced by nb_decode(), postfilter(), and sb_decode().

◆ highpass()

static void highpass ( const float *  x,
float *  y,
int  len,
float *  mem,
int  wide 
)
static

Definition at line 597 of file speexdec.c.

Referenced by nb_decode().

◆ speex_std_stereo()

static int speex_std_stereo ( GetBitContext gb,
void *  state,
void *  data 
)
static

Definition at line 617 of file speexdec.c.

Referenced by speex_inband_handler().

◆ speex_inband_handler()

static int speex_inband_handler ( GetBitContext gb,
void *  state,
StereoState stereo 
)
static

Definition at line 628 of file speexdec.c.

Referenced by nb_decode().

◆ sanitize_values()

static void sanitize_values ( float *  vec,
float  min_val,
float  max_val,
int  len 
)
static

Definition at line 654 of file speexdec.c.

Referenced by nb_decode().

◆ signal_mul()

static void signal_mul ( const float *  x,
float *  y,
float  scale,
int  len 
)
static

Definition at line 664 of file speexdec.c.

Referenced by nb_decode(), and sb_decode().

◆ inner_prod()

static float inner_prod ( const float *  x,
const float *  y,
int  len 
)
static

Definition at line 670 of file speexdec.c.

Referenced by interp_pitch(), and multicomb().

◆ interp_pitch()

static int interp_pitch ( const float *  exc,
float *  interp,
int  pitch,
int  len 
)
static

Definition at line 690 of file speexdec.c.

Referenced by multicomb().

◆ multicomb()

static void multicomb ( const float *  exc,
float *  new_exc,
float *  ak,
int  p,
int  nsf,
int  pitch,
int  max_pitch,
float  comb_gain 
)
static

Definition at line 737 of file speexdec.c.

Referenced by nb_decode().

◆ lsp_interpolate()

static void lsp_interpolate ( const float *  old_lsp,
const float *  new_lsp,
float *  lsp,
int  len,
int  subframe,
int  nb_subframes,
float  margin 
)
static

Definition at line 804 of file speexdec.c.

Referenced by nb_decode(), and sb_decode().

◆ lsp_to_lpc()

static void lsp_to_lpc ( const float *  freq,
float *  ak,
int  lpcrdr 
)
static

Definition at line 821 of file speexdec.c.

Referenced by nb_decode(), and sb_decode().

◆ qmf_synth()

static void qmf_synth ( const float *  x1,
const float *  x2,
const float *  a,
float *  y,
int  N,
int  M,
float *  mem1,
float *  mem2 
)
static

Definition at line 1159 of file speexdec.c.

Referenced by sb_decode().

◆ decoder_init()

static int decoder_init ( SpeexContext s,
DecoderState st,
const SpeexMode mode 
)
static

Definition at line 1362 of file speexdec.c.

Referenced by speex_decode_init().

◆ parse_speex_extradata()

static int parse_speex_extradata ( AVCodecContext avctx,
const uint8_t *  extradata,
int  extradata_size 
)
static

Definition at line 1395 of file speexdec.c.

Referenced by speex_decode_init().

◆ speex_decode_init()

static av_cold int speex_decode_init ( AVCodecContext avctx)
static

Definition at line 1435 of file speexdec.c.

◆ speex_decode_stereo()

static void speex_decode_stereo ( float *  data,
int  frame_size,
StereoState stereo 
)
static

Definition at line 1513 of file speexdec.c.

Referenced by speex_decode_frame().

◆ speex_decode_frame()

static int speex_decode_frame ( AVCodecContext avctx,
void *  data,
int got_frame_ptr,
AVPacket avpkt 
)
static

Definition at line 1533 of file speexdec.c.

◆ speex_decode_close()

static av_cold int speex_decode_close ( AVCodecContext avctx)
static

Definition at line 1570 of file speexdec.c.

Variable Documentation

◆ ltp_params_vlbr

const LtpParam ltp_params_vlbr = { gain_cdbk_lbr, 5, 0 }
static

Definition at line 94 of file speexdec.c.

◆ ltp_params_lbr

const LtpParam ltp_params_lbr = { gain_cdbk_lbr, 5, 7 }
static

Definition at line 95 of file speexdec.c.

◆ ltp_params_med

const LtpParam ltp_params_med = { gain_cdbk_lbr, 5, 7 }
static

Definition at line 96 of file speexdec.c.

◆ ltp_params_nb

const LtpParam ltp_params_nb = { gain_cdbk_nb, 7, 7 }
static

Definition at line 97 of file speexdec.c.

◆ split_cb_nb_ulbr

const SplitCodebookParams split_cb_nb_ulbr = { 20, 2, exc_20_32_table, 5, 0 }
static

Definition at line 107 of file speexdec.c.

◆ split_cb_nb_vlbr

const SplitCodebookParams split_cb_nb_vlbr = { 10, 4, exc_10_16_table, 4, 0 }
static

Definition at line 108 of file speexdec.c.

◆ split_cb_nb_lbr

const SplitCodebookParams split_cb_nb_lbr = { 10, 4, exc_10_32_table, 5, 0 }
static

Definition at line 109 of file speexdec.c.

◆ split_cb_nb_med

const SplitCodebookParams split_cb_nb_med = { 8, 5, exc_8_128_table, 7, 0 }
static

Definition at line 110 of file speexdec.c.

◆ split_cb_nb

const SplitCodebookParams split_cb_nb = { 5, 8, exc_5_64_table, 6, 0 }
static

Definition at line 111 of file speexdec.c.

◆ split_cb_sb

const SplitCodebookParams split_cb_sb = { 5, 8, exc_5_256_table, 8, 0 }
static

Definition at line 112 of file speexdec.c.

◆ split_cb_high

const SplitCodebookParams split_cb_high = { 8, 5, hexc_table, 7, 1 }
static

Definition at line 113 of file speexdec.c.

◆ split_cb_high_lbr

const SplitCodebookParams split_cb_high_lbr = { 10, 4, hexc_10_32_table,5, 0 }
static

Definition at line 114 of file speexdec.c.

◆ nb_submode1

const SpeexSubmode nb_submode1
static
Initial value:

Definition at line 453 of file speexdec.c.

◆ nb_submode2

const SpeexSubmode nb_submode2
static
Initial value:

Definition at line 459 of file speexdec.c.

◆ nb_submode3

const SpeexSubmode nb_submode3
static
Initial value:

Definition at line 465 of file speexdec.c.

◆ nb_submode4

const SpeexSubmode nb_submode4
static
Initial value:

Definition at line 471 of file speexdec.c.

◆ nb_submode5

const SpeexSubmode nb_submode5
static
Initial value:

Definition at line 477 of file speexdec.c.

◆ nb_submode6

const SpeexSubmode nb_submode6
static
Initial value:

Definition at line 483 of file speexdec.c.

◆ nb_submode7

const SpeexSubmode nb_submode7
static
Initial value:

Definition at line 489 of file speexdec.c.

◆ nb_submode8

const SpeexSubmode nb_submode8
static
Initial value:

Definition at line 495 of file speexdec.c.

◆ wb_submode1

const SpeexSubmode wb_submode1
static
Initial value:
= {
0, 0, 1, 0, lsp_unquant_high, NULL, NULL,
NULL, NULL, -1.f
}

Definition at line 500 of file speexdec.c.

◆ wb_submode2

const SpeexSubmode wb_submode2
static
Initial value:

Definition at line 505 of file speexdec.c.

◆ wb_submode3

const SpeexSubmode wb_submode3
static
Initial value:

Definition at line 510 of file speexdec.c.

◆ wb_submode4

const SpeexSubmode wb_submode4
static
Initial value:

Definition at line 515 of file speexdec.c.

◆ speex_modes

const SpeexMode speex_modes[SPEEX_NB_MODES]
static

Definition at line 523 of file speexdec.c.

Referenced by sb_decode(), speex_decode_frame(), and speex_decode_init().

◆ ff_speex_decoder

const AVCodec ff_speex_decoder
Initial value:
= {
.name = "speex",
.long_name = NULL_IF_CONFIG_SMALL("Speex"),
.decode = speex_decode_frame,
.priv_data_size = sizeof(SpeexContext),
}

Definition at line 1577 of file speexdec.c.

split_cb_high
static const SplitCodebookParams split_cb_high
Definition: speexdec.c:113
FF_CODEC_CAP_INIT_THREADSAFE
#define FF_CODEC_CAP_INIT_THREADSAFE
The codec does not modify any global variables in the init function, allowing to call the init functi...
Definition: internal.h:42
b
#define b
Definition: input.c:40
AV_CODEC_ID_SPEEX
@ AV_CODEC_ID_SPEEX
Definition: codec_id.h:458
split_cb_nb_lbr
static const SplitCodebookParams split_cb_nb_lbr
Definition: speexdec.c:109
split_cb_nb_ulbr
static const SplitCodebookParams split_cb_nb_ulbr
Definition: speexdec.c:107
split_cb_sb
static const SplitCodebookParams split_cb_sb
Definition: speexdec.c:112
AVMEDIA_TYPE_AUDIO
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:202
NULL
#define NULL
Definition: coverity.c:32
split_cb_nb
static const SplitCodebookParams split_cb_nb
Definition: speexdec.c:111
speex_decode_frame
static int speex_decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
Definition: speexdec.c:1533
ltp_params_nb
static const LtpParam ltp_params_nb
Definition: speexdec.c:97
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
AV_CODEC_CAP_CHANNEL_CONF
#define AV_CODEC_CAP_CHANNEL_CONF
Codec should fill in channel configuration and samplerate instead of container.
Definition: codec.h:109
AV_CODEC_CAP_DR1
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
Definition: codec.h:52
NULL_IF_CONFIG_SMALL
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition: internal.h:117
lsp_unquant_nb
static void lsp_unquant_nb(float *lsp, int order, GetBitContext *gb)
Definition: speexdec.c:408
ltp_params_lbr
static const LtpParam ltp_params_lbr
Definition: speexdec.c:95
ltp_params_med
static const LtpParam ltp_params_med
Definition: speexdec.c:96
SpeexContext
Definition: speexdec.c:237
noise_codebook_unquant
static void noise_codebook_unquant(float *exc, const void *par, int nsf, GetBitContext *gb, uint32_t *seed)
Definition: speexdec.c:310
pitch_unquant_3tap
static void pitch_unquant_3tap(float *exc, float *exc_out, int start, int end, float pitch_coef, const void *par, int nsf, int *pitch_val, float *gain_val, GetBitContext *gb, int count_lost, int subframe_offset, float last_pitch_gain, int cdbk_offset)
Definition: speexdec.c:352
a
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
Definition: undefined.txt:41
lsp_unquant_lbr
static void lsp_unquant_lbr(float *lsp, int order, GetBitContext *gb)
Definition: speexdec.c:260
split_cb_nb_med
static const SplitCodebookParams split_cb_nb_med
Definition: speexdec.c:110
forced_pitch_unquant
static void forced_pitch_unquant(float *exc, float *exc_out, int start, int end, float pitch_coef, const void *par, int nsf, int *pitch_val, float *gain_val, GetBitContext *gb, int count_lost, int subframe_offset, float last_pitch_gain, int cdbk_offset)
Definition: speexdec.c:280
FF_CODEC_CAP_INIT_CLEANUP
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
Definition: internal.h:50
split_cb_nb_vlbr
static const SplitCodebookParams split_cb_nb_vlbr
Definition: speexdec.c:108
speex_decode_close
static av_cold int speex_decode_close(AVCodecContext *avctx)
Definition: speexdec.c:1570
ltp_params_vlbr
static const LtpParam ltp_params_vlbr
Definition: speexdec.c:94
speex_decode_init
static av_cold int speex_decode_init(AVCodecContext *avctx)
Definition: speexdec.c:1435
lsp_unquant_high
static void lsp_unquant_high(float *lsp, int order, GetBitContext *gb)
Definition: speexdec.c:436
split_cb_high_lbr
static const SplitCodebookParams split_cb_high_lbr
Definition: speexdec.c:114
split_cb_shape_sign_unquant
static void split_cb_shape_sign_unquant(float *exc, const void *par, int nsf, GetBitContext *gb, uint32_t *seed)
Definition: speexdec.c:317