FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
g723_1.h File Reference

G.723.1 types, functions and data tables. More...

#include <stdint.h>
#include "libavutil/log.h"

Go to the source code of this file.

Data Structures

struct  G723_1_Subframe
 G723.1 unpacked data subframe. More...
 
struct  PPFParam
 Pitch postfilter parameters. More...
 
struct  HFParam
 Harmonic filter parameters. More...
 
struct  FCBParam
 Optimized fixed codebook excitation parameters. More...
 
struct  G723_1_ChannelContext
 
struct  G723_1_Context
 

Macros

#define SUBFRAMES   4
 
#define SUBFRAME_LEN   60
 
#define FRAME_LEN   (SUBFRAME_LEN << 2)
 
#define HALF_FRAME_LEN   (FRAME_LEN / 2)
 
#define LPC_FRAME   (HALF_FRAME_LEN + SUBFRAME_LEN)
 
#define LPC_ORDER   10
 
#define LSP_BANDS   3
 
#define LSP_CB_SIZE   256
 
#define PITCH_MIN   18
 
#define PITCH_MAX   (PITCH_MIN + 127)
 
#define PITCH_ORDER   5
 
#define GRID_SIZE   2
 
#define PULSE_MAX   6
 
#define GAIN_LEVELS   24
 
#define COS_TBL_SIZE   512
 
#define MULL2(a, b)   ((((a) >> 16) * (b) * 2) + (((a) & 0xffff) * (b) >> 15))
 Bitexact implementation of 2ab scaled by 1/2^16. More...
 
#define G723_1_COS_TAB_FIRST_ELEMENT   16384
 

Enumerations

enum  FrameType {
  ACTIVE_FRAME, SID_FRAME, UNTRANSMITTED_FRAME, INTRA_FRAME = 0,
  INTER_FRAME, SKIP_FRAME, FIRST_FRAME, INNER_FRAME,
  FINAL_FRAME, LINEAR_MODE, FRAME_NB
}
 G723.1 frame types. More...
 
enum  Rate { RATE_6300, RATE_5300 }
 G723.1 rate values. More...
 

Functions

int ff_g723_1_scale_vector (int16_t *dst, const int16_t *vector, int length)
 Scale vector contents based on the largest of their absolutes. More...
 
int ff_g723_1_normalize_bits (int num, int width)
 Calculate the number of left-shifts required for normalizing the input. More...
 
int ff_g723_1_dot_product (const int16_t *a, const int16_t *b, int length)
 
void ff_g723_1_get_residual (int16_t *residual, int16_t *prev_excitation, int lag)
 Get delayed contribution from the previous excitation vector. More...
 
void ff_g723_1_gen_dirac_train (int16_t *buf, int pitch_lag)
 Generate a train of dirac functions with period as pitch lag. More...
 
void ff_g723_1_gen_acb_excitation (int16_t *vector, int16_t *prev_excitation, int pitch_lag, G723_1_Subframe *subfrm, enum Rate cur_rate)
 Generate adaptive codebook excitation. More...
 
void ff_g723_1_lsp_interpolate (int16_t *lpc, int16_t *cur_lsp, int16_t *prev_lsp)
 Quantize LSP frequencies by interpolation and convert them to the corresponding LPC coefficients. More...
 
void ff_g723_1_inverse_quant (int16_t *cur_lsp, int16_t *prev_lsp, uint8_t *lsp_index, int bad_frame)
 Perform inverse quantization of LSP frequencies. More...
 

Variables

static const uint8_t frame_size [4] = { 24, 20, 4, 1 }
 
static const int16_t dc_lsp [LPC_ORDER]
 LSP DC component. More...
 
const int16_t ff_g723_1_cos_tab [COS_TBL_SIZE+1]
 
const int16_t ff_g723_1_lsp_band0 [LSP_CB_SIZE][3]
 LSP VQ tables. More...
 
const int16_t ff_g723_1_lsp_band1 [LSP_CB_SIZE][3]
 
const int16_t ff_g723_1_lsp_band2 [LSP_CB_SIZE][4]
 
const int32_t ff_g723_1_combinatorial_table [PULSE_MAX][SUBFRAME_LEN/GRID_SIZE]
 Used for the coding/decoding of the pulses positions for the MP-MLQ codebook. More...
 
static const int8_t pulses [4] = {6, 5, 6, 5}
 Number of non-zero pulses in the MP-MLQ excitation. More...
 
const int16_t ff_g723_1_fixed_cb_gain [GAIN_LEVELS]
 
const int16_t ff_g723_1_adaptive_cb_gain85 [85 *20]
 
const int16_t ff_g723_1_adaptive_cb_gain170 [170 *20]
 

Detailed Description

G.723.1 types, functions and data tables.

Definition in file g723_1.h.

Macro Definition Documentation

#define SUBFRAMES   4

Definition at line 35 of file g723_1.h.

#define SUBFRAME_LEN   60
#define FRAME_LEN   (SUBFRAME_LEN << 2)
#define HALF_FRAME_LEN   (FRAME_LEN / 2)

Definition at line 38 of file g723_1.h.

Referenced by estimate_pitch(), and g723_1_encode_frame().

#define LPC_FRAME   (HALF_FRAME_LEN + SUBFRAME_LEN)

Definition at line 39 of file g723_1.h.

Referenced by comp_autocorr().

#define LPC_ORDER   10
#define LSP_BANDS   3

Definition at line 41 of file g723_1.h.

#define LSP_CB_SIZE   256

Definition at line 42 of file g723_1.h.

#define PITCH_MIN   18
#define PITCH_MAX   (PITCH_MIN + 127)
#define PITCH_ORDER   5
#define GRID_SIZE   2

Definition at line 46 of file g723_1.h.

Referenced by gen_fcb_excitation(), and get_fcb_param().

#define PULSE_MAX   6

Definition at line 47 of file g723_1.h.

#define GAIN_LEVELS   24

Definition at line 48 of file g723_1.h.

Referenced by get_fcb_param(), pack_bitstream(), and unpack_bitstream().

#define COS_TBL_SIZE   512

Definition at line 49 of file g723_1.h.

Referenced by lpc2lsp().

#define MULL2 (   a,
  b 
)    ((((a) >> 16) * (b) * 2) + (((a) & 0xffff) * (b) >> 15))

Bitexact implementation of 2ab scaled by 1/2^16.

Parameters
a32 bit multiplicand
b16 bit multiplier

Definition at line 57 of file g723_1.h.

Referenced by comp_autocorr(), highpass_filter(), levinson_durbin(), and lsp2lpc().

#define G723_1_COS_TAB_FIRST_ELEMENT   16384

Definition at line 242 of file g723_1.h.

Referenced by lpc2lsp().

Enumeration Type Documentation

enum FrameType

G723.1 frame types.

Enumerator
ACTIVE_FRAME 

Active speech.

SID_FRAME 

Silence Insertion Descriptor frame.

UNTRANSMITTED_FRAME 
INTRA_FRAME 
INTER_FRAME 
SKIP_FRAME 
FIRST_FRAME 
INNER_FRAME 
FINAL_FRAME 
LINEAR_MODE 
FRAME_NB 

Definition at line 63 of file g723_1.h.

enum Rate

G723.1 rate values.

Enumerator
RATE_6300 
RATE_5300 

Definition at line 72 of file g723_1.h.

Function Documentation

int ff_g723_1_scale_vector ( int16_t *  dst,
const int16_t *  vector,
int  length 
)

Scale vector contents based on the largest of their absolutes.

Definition at line 1103 of file g723_1.c.

Referenced by comp_autocorr(), comp_interp_index(), formant_postfilter(), and g723_1_encode_frame().

int ff_g723_1_normalize_bits ( int  num,
int  width 
)

Calculate the number of left-shifts required for normalizing the input.

Parameters
numinput number
widthwidth of the input, 16 bits(0) / 32 bits(1)

Definition at line 1120 of file g723_1.c.

Referenced by acb_search(), comp_autocorr(), comp_harmonic_coeff(), comp_ppf_coeff(), estimate_pitch(), gain_scale(), get_fcb_param(), lpc2lsp(), and lsp_quantize().

int ff_g723_1_dot_product ( const int16_t *  a,
const int16_t *  b,
int  length 
)
void ff_g723_1_get_residual ( int16_t *  residual,
int16_t *  prev_excitation,
int  lag 
)

Get delayed contribution from the previous excitation vector.

Definition at line 1131 of file g723_1.c.

Referenced by acb_search(), and ff_g723_1_gen_acb_excitation().

void ff_g723_1_gen_dirac_train ( int16_t *  buf,
int  pitch_lag 
)

Generate a train of dirac functions with period as pitch lag.

Definition at line 1145 of file g723_1.c.

Referenced by fcb_search(), gen_fcb_excitation(), and get_fcb_param().

void ff_g723_1_gen_acb_excitation ( int16_t *  vector,
int16_t *  prev_excitation,
int  pitch_lag,
G723_1_Subframe subfrm,
enum Rate  cur_rate 
)

Generate adaptive codebook excitation.

Definition at line 1157 of file g723_1.c.

Referenced by g723_1_decode_frame(), g723_1_encode_frame(), and generate_noise().

void ff_g723_1_lsp_interpolate ( int16_t *  lpc,
int16_t *  cur_lsp,
int16_t *  prev_lsp 
)

Quantize LSP frequencies by interpolation and convert them to the corresponding LPC coefficients.

Parameters
lpcbuffer for LPC coefficients
cur_lspthe current LSP vector
prev_lspthe previous LSP vector

Definition at line 1251 of file g723_1.c.

Referenced by g723_1_decode_frame(), and g723_1_encode_frame().

void ff_g723_1_inverse_quant ( int16_t *  cur_lsp,
int16_t *  prev_lsp,
uint8_t lsp_index,
int  bad_frame 
)

Perform inverse quantization of LSP frequencies.

Parameters
cur_lspthe current LSP vector
prev_lspthe previous LSP vector
lsp_indexVQ indices
bad_framebad frame flag

Definition at line 1272 of file g723_1.c.

Referenced by g723_1_decode_frame(), and g723_1_encode_frame().

Variable Documentation

const uint8_t frame_size[4] = { 24, 20, 4, 1 }
static

Definition at line 222 of file g723_1.h.

const int16_t dc_lsp[LPC_ORDER]
static
Initial value:
= {
0x0c3b,
0x1271,
0x1e0a,
0x2a36,
0x3630,
0x406f,
0x4d28,
0x56f4,
0x638c,
0x6c46
}

LSP DC component.

Definition at line 227 of file g723_1.h.

Referenced by ff_g723_1_inverse_quant(), g723_1_decode_init(), g723_1_encode_init(), and lsp_quantize().

const int16_t ff_g723_1_cos_tab[COS_TBL_SIZE+1]

Definition at line 32 of file g723_1.c.

Referenced by lpc2lsp(), and lsp2lpc().

const int16_t ff_g723_1_lsp_band0[LSP_CB_SIZE][3]

LSP VQ tables.

Definition at line 100 of file g723_1.c.

Referenced by ff_g723_1_inverse_quant().

const int16_t ff_g723_1_lsp_band1[LSP_CB_SIZE][3]

Definition at line 189 of file g723_1.c.

Referenced by ff_g723_1_inverse_quant().

const int16_t ff_g723_1_lsp_band2[LSP_CB_SIZE][4]

Definition at line 278 of file g723_1.c.

Referenced by ff_g723_1_inverse_quant().

const int32_t ff_g723_1_combinatorial_table[PULSE_MAX][SUBFRAME_LEN/GRID_SIZE]

Used for the coding/decoding of the pulses positions for the MP-MLQ codebook.

Definition at line 409 of file g723_1.c.

Referenced by gen_fcb_excitation(), and pack_fcb_param().

const int8_t pulses[4] = {6, 5, 6, 5}
static

Number of non-zero pulses in the MP-MLQ excitation.

Definition at line 260 of file g723_1.h.

Referenced by celt_pulses2bits(), fcb_search(), gen_fcb_excitation(), generate_noise(), and synth_block_fcb_acb().

const int16_t ff_g723_1_fixed_cb_gain[GAIN_LEVELS]

Definition at line 453 of file g723_1.c.

Referenced by g723_1_decode_frame(), gen_fcb_excitation(), and get_fcb_param().

const int16_t ff_g723_1_adaptive_cb_gain85[85 *20]

Definition at line 459 of file g723_1.c.

Referenced by acb_search(), and ff_g723_1_gen_acb_excitation().

const int16_t ff_g723_1_adaptive_cb_gain170[170 *20]

Definition at line 675 of file g723_1.c.

Referenced by acb_search(), and ff_g723_1_gen_acb_excitation().