FFmpeg
Data Structures | Macros | Typedefs | Functions | Variables
speexdec.c File Reference
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/float_dsp.h"
#include "libavutil/mem.h"
#include "avcodec.h"
#include "bytestream.h"
#include "codec_internal.h"
#include "decode.h"
#include "get_bits.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, AVFrame *frame, 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 FFCodec ff_speex_decoder
 

Macro Definition Documentation

◆ SPEEX_NB_MODES

#define SPEEX_NB_MODES   3

Definition at line 65 of file speexdec.c.

◆ SPEEX_INBAND_STEREO

#define SPEEX_INBAND_STEREO   9

Definition at line 66 of file speexdec.c.

◆ QMF_ORDER

#define QMF_ORDER   64

Definition at line 68 of file speexdec.c.

◆ NB_ORDER

#define NB_ORDER   10

Definition at line 69 of file speexdec.c.

◆ NB_FRAME_SIZE

#define NB_FRAME_SIZE   160

Definition at line 70 of file speexdec.c.

◆ NB_SUBMODES

#define NB_SUBMODES   9

Definition at line 71 of file speexdec.c.

◆ NB_SUBMODE_BITS

#define NB_SUBMODE_BITS   4

Definition at line 72 of file speexdec.c.

◆ SB_SUBMODE_BITS

#define SB_SUBMODE_BITS   3

Definition at line 73 of file speexdec.c.

◆ NB_SUBFRAME_SIZE

#define NB_SUBFRAME_SIZE   40

Definition at line 75 of file speexdec.c.

◆ NB_NB_SUBFRAMES

#define NB_NB_SUBFRAMES   4

Definition at line 76 of file speexdec.c.

◆ NB_PITCH_START

#define NB_PITCH_START   17

Definition at line 77 of file speexdec.c.

◆ NB_PITCH_END

#define NB_PITCH_END   144

Definition at line 78 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 80 of file speexdec.c.

◆ SPEEX_MEMSET

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

Definition at line 82 of file speexdec.c.

◆ SPEEX_COPY

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

Definition at line 83 of file speexdec.c.

◆ LSP_LINEAR

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

Definition at line 85 of file speexdec.c.

◆ LSP_LINEAR_HIGH

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

Definition at line 86 of file speexdec.c.

◆ LSP_DIV_256

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

Definition at line 87 of file speexdec.c.

◆ LSP_DIV_512

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

Definition at line 88 of file speexdec.c.

◆ LSP_DIV_1024

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

Definition at line 89 of file speexdec.c.

◆ SUBMODE

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

Definition at line 350 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 352 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 616 of file speexdec.c.

Typedef Documentation

◆ lsp_quant_func

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

Quantizes LSPs.

Definition at line 120 of file speexdec.c.

◆ lsp_unquant_func

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

Decodes quantized LSPs.

Definition at line 123 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 126 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 133 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 139 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 145 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 226 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 263 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 283 of file speexdec.c.

◆ speex_rand()

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

Definition at line 299 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 313 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 320 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 355 of file speexdec.c.

◆ lsp_unquant_nb()

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

Definition at line 411 of file speexdec.c.

◆ lsp_unquant_high()

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

Definition at line 439 of file speexdec.c.

◆ nb_decode()

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

Definition at line 868 of file speexdec.c.

◆ sb_decode()

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

Definition at line 1219 of file speexdec.c.

◆ compute_rms()

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

Definition at line 565 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 576 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 587 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 600 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 620 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 631 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 657 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 667 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 673 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 693 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 740 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 807 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 824 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 1162 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 1365 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 1398 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 1440 of file speexdec.c.

◆ speex_decode_stereo()

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

Definition at line 1520 of file speexdec.c.

Referenced by speex_decode_frame().

◆ speex_decode_frame()

static int speex_decode_frame ( AVCodecContext avctx,
AVFrame frame,
int *  got_frame_ptr,
AVPacket avpkt 
)
static

Definition at line 1540 of file speexdec.c.

◆ speex_decode_close()

static av_cold int speex_decode_close ( AVCodecContext avctx)
static

Definition at line 1582 of file speexdec.c.

Variable Documentation

◆ ltp_params_vlbr

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

Definition at line 97 of file speexdec.c.

◆ ltp_params_lbr

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

Definition at line 98 of file speexdec.c.

◆ ltp_params_med

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

Definition at line 99 of file speexdec.c.

◆ ltp_params_nb

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

Definition at line 100 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 110 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 111 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 112 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 113 of file speexdec.c.

◆ split_cb_nb

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

Definition at line 114 of file speexdec.c.

◆ split_cb_sb

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

Definition at line 115 of file speexdec.c.

◆ split_cb_high

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

Definition at line 116 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 117 of file speexdec.c.

◆ nb_submode1

const SpeexSubmode nb_submode1
static
Initial value:

Definition at line 456 of file speexdec.c.

◆ nb_submode2

const SpeexSubmode nb_submode2
static
Initial value:

Definition at line 462 of file speexdec.c.

◆ nb_submode3

const SpeexSubmode nb_submode3
static
Initial value:

Definition at line 468 of file speexdec.c.

◆ nb_submode4

const SpeexSubmode nb_submode4
static
Initial value:

Definition at line 474 of file speexdec.c.

◆ nb_submode5

const SpeexSubmode nb_submode5
static
Initial value:

Definition at line 480 of file speexdec.c.

◆ nb_submode6

const SpeexSubmode nb_submode6
static
Initial value:

Definition at line 486 of file speexdec.c.

◆ nb_submode7

const SpeexSubmode nb_submode7
static
Initial value:

Definition at line 492 of file speexdec.c.

◆ nb_submode8

const SpeexSubmode nb_submode8
static
Initial value:

Definition at line 498 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 503 of file speexdec.c.

◆ wb_submode2

const SpeexSubmode wb_submode2
static
Initial value:

Definition at line 508 of file speexdec.c.

◆ wb_submode3

const SpeexSubmode wb_submode3
static
Initial value:

Definition at line 513 of file speexdec.c.

◆ wb_submode4

const SpeexSubmode wb_submode4
static
Initial value:

Definition at line 518 of file speexdec.c.

◆ speex_modes

const SpeexMode speex_modes[SPEEX_NB_MODES]
static

Definition at line 526 of file speexdec.c.

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

◆ ff_speex_decoder

const FFCodec ff_speex_decoder
Initial value:
= {
.p.name = "speex",
CODEC_LONG_NAME("Speex"),
.p.type = AVMEDIA_TYPE_AUDIO,
.priv_data_size = sizeof(SpeexContext),
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
}

Definition at line 1589 of file speexdec.c.

split_cb_high
static const SplitCodebookParams split_cb_high
Definition: speexdec.c:116
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: codec_internal.h:43
b
#define b
Definition: input.c:41
AV_CODEC_ID_SPEEX
@ AV_CODEC_ID_SPEEX
Definition: codec_id.h:482
split_cb_nb_lbr
static const SplitCodebookParams split_cb_nb_lbr
Definition: speexdec.c:112
split_cb_nb_ulbr
static const SplitCodebookParams split_cb_nb_ulbr
Definition: speexdec.c:110
FF_CODEC_DECODE_CB
#define FF_CODEC_DECODE_CB(func)
Definition: codec_internal.h:311
split_cb_sb
static const SplitCodebookParams split_cb_sb
Definition: speexdec.c:115
AVMEDIA_TYPE_AUDIO
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:202
CODEC_LONG_NAME
#define CODEC_LONG_NAME(str)
Definition: codec_internal.h:296
speex_decode_frame
static int speex_decode_frame(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, AVPacket *avpkt)
Definition: speexdec.c:1540
NULL
#define NULL
Definition: coverity.c:32
split_cb_nb
static const SplitCodebookParams split_cb_nb
Definition: speexdec.c:114
ltp_params_nb
static const LtpParam ltp_params_nb
Definition: speexdec.c:100
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:106
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
lsp_unquant_nb
static void lsp_unquant_nb(float *lsp, int order, GetBitContext *gb)
Definition: speexdec.c:411
ltp_params_lbr
static const LtpParam ltp_params_lbr
Definition: speexdec.c:98
ltp_params_med
static const LtpParam ltp_params_med
Definition: speexdec.c:99
SpeexContext
Definition: speexdec.c:240
noise_codebook_unquant
static void noise_codebook_unquant(float *exc, const void *par, int nsf, GetBitContext *gb, uint32_t *seed)
Definition: speexdec.c:313
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:355
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:263
split_cb_nb_med
static const SplitCodebookParams split_cb_nb_med
Definition: speexdec.c:113
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:283
split_cb_nb_vlbr
static const SplitCodebookParams split_cb_nb_vlbr
Definition: speexdec.c:111
speex_decode_close
static av_cold int speex_decode_close(AVCodecContext *avctx)
Definition: speexdec.c:1582
ltp_params_vlbr
static const LtpParam ltp_params_vlbr
Definition: speexdec.c:97
speex_decode_init
static av_cold int speex_decode_init(AVCodecContext *avctx)
Definition: speexdec.c:1440
lsp_unquant_high
static void lsp_unquant_high(float *lsp, int order, GetBitContext *gb)
Definition: speexdec.c:439
split_cb_high_lbr
static const SplitCodebookParams split_cb_high_lbr
Definition: speexdec.c:117
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:320