FFmpeg  4.0
Data Structures | Macros | Functions
opus_silk.c File Reference

Opus SILK decoder. More...

#include <stdint.h>
#include "opus.h"
#include "opustab.h"

Go to the source code of this file.

Data Structures

struct  SilkFrame
 
struct  SilkContext
 

Macros

#define SILK_MAX_LAG   (288 + LTP_ORDER / 2)
 Maximum residual history according to 4.2.7.6.1. More...
 
#define LTP_ORDER   5
 Order of the LTP filter. More...
 

Functions

static void silk_stabilize_lsf (int16_t nlsf[16], int order, const uint16_t min_delta[17])
 
static int silk_is_lpc_stable (const int16_t lpc[16], int order)
 
static void silk_lsp2poly (const int32_t lsp[16], int32_t pol[16], int half_order)
 
static void silk_lsf2lpc (const int16_t nlsf[16], float lpcf[16], int order)
 
static void silk_decode_lpc (SilkContext *s, SilkFrame *frame, OpusRangeCoder *rc, float lpc_leadin[16], float lpc[16], int *lpc_order, int *has_lpc_leadin, int voiced)
 
static void silk_count_children (OpusRangeCoder *rc, int model, int32_t total, int32_t child[2])
 
static void silk_decode_excitation (SilkContext *s, OpusRangeCoder *rc, float *excitationf, int qoffset_high, int active, int voiced)
 
static void silk_decode_frame (SilkContext *s, OpusRangeCoder *rc, int frame_num, int channel, int coded_channels, int active, int active1)
 
static void silk_unmix_ms (SilkContext *s, float *l, float *r)
 
static void silk_flush_frame (SilkFrame *frame)
 
int ff_silk_decode_superframe (SilkContext *s, OpusRangeCoder *rc, float *output[2], enum OpusBandwidth bandwidth, int coded_channels, int duration_ms)
 Decode the LP layer of one Opus frame (which may correspond to several SILK frames). More...
 
void ff_silk_free (SilkContext **ps)
 
void ff_silk_flush (SilkContext *s)
 
int ff_silk_init (AVCodecContext *avctx, SilkContext **ps, int output_channels)
 

Detailed Description

Opus SILK decoder.

Definition in file opus_silk.c.

Macro Definition Documentation

◆ SILK_MAX_LAG

#define SILK_MAX_LAG   (288 + LTP_ORDER / 2)

Maximum residual history according to 4.2.7.6.1.

Definition at line 501 of file opus_silk.c.

Referenced by silk_decode_frame().

◆ LTP_ORDER

#define LTP_ORDER   5

Order of the LTP filter.

Definition at line 504 of file opus_silk.c.

Referenced by silk_decode_frame().

Function Documentation

◆ silk_stabilize_lsf()

static void silk_stabilize_lsf ( int16_t  nlsf[16],
int  order,
const uint16_t  min_delta[17] 
)
inlinestatic

Definition at line 65 of file opus_silk.c.

Referenced by silk_decode_lpc().

◆ silk_is_lpc_stable()

static int silk_is_lpc_stable ( const int16_t  lpc[16],
int  order 
)
inlinestatic

Definition at line 143 of file opus_silk.c.

Referenced by silk_lsf2lpc().

◆ silk_lsp2poly()

static void silk_lsp2poly ( const int32_t  lsp[16],
int32_t  pol[16],
int  half_order 
)
static

Definition at line 201 of file opus_silk.c.

Referenced by silk_lsf2lpc().

◆ silk_lsf2lpc()

static void silk_lsf2lpc ( const int16_t  nlsf[16],
float  lpcf[16],
int  order 
)
static

Definition at line 217 of file opus_silk.c.

Referenced by silk_decode_lpc().

◆ silk_decode_lpc()

static void silk_decode_lpc ( SilkContext s,
SilkFrame frame,
OpusRangeCoder rc,
float  lpc_leadin[16],
float  lpc[16],
int lpc_order,
int has_lpc_leadin,
int  voiced 
)
inlinestatic

Definition at line 302 of file opus_silk.c.

Referenced by silk_decode_frame().

◆ silk_count_children()

static void silk_count_children ( OpusRangeCoder rc,
int  model,
int32_t  total,
int32_t  child[2] 
)
inlinestatic

Definition at line 399 of file opus_silk.c.

Referenced by silk_decode_excitation().

◆ silk_decode_excitation()

static void silk_decode_excitation ( SilkContext s,
OpusRangeCoder rc,
float *  excitationf,
int  qoffset_high,
int  active,
int  voiced 
)
inlinestatic

Definition at line 412 of file opus_silk.c.

Referenced by silk_decode_frame().

◆ silk_decode_frame()

static void silk_decode_frame ( SilkContext s,
OpusRangeCoder rc,
int  frame_num,
int  channel,
int  coded_channels,
int  active,
int  active1 
)
static

Definition at line 506 of file opus_silk.c.

Referenced by ff_silk_decode_superframe().

◆ silk_unmix_ms()

static void silk_unmix_ms ( SilkContext s,
float *  l,
float *  r 
)
static

Definition at line 733 of file opus_silk.c.

Referenced by ff_silk_decode_superframe().

◆ silk_flush_frame()

static void silk_flush_frame ( SilkFrame frame)
static

Definition at line 763 of file opus_silk.c.

Referenced by ff_silk_decode_superframe(), and ff_silk_flush().

◆ ff_silk_decode_superframe()

int ff_silk_decode_superframe ( SilkContext s,
OpusRangeCoder rc,
float *  output[2],
enum OpusBandwidth  bandwidth,
int  coded_channels,
int  duration_ms 
)

Decode the LP layer of one Opus frame (which may correspond to several SILK frames).

Definition at line 781 of file opus_silk.c.

Referenced by opus_decode_frame().

◆ ff_silk_free()

void ff_silk_free ( SilkContext **  ps)

Definition at line 845 of file opus_silk.c.

Referenced by opus_decode_close().

◆ ff_silk_flush()

void ff_silk_flush ( SilkContext s)

Definition at line 850 of file opus_silk.c.

Referenced by ff_silk_init(), opus_decode_flush(), and opus_decode_frame().

◆ ff_silk_init()

int ff_silk_init ( AVCodecContext avctx,
SilkContext **  ps,
int  output_channels 
)

Definition at line 858 of file opus_silk.c.

Referenced by opus_decode_init().