FFmpeg
Loading...
Searching...
No Matches
rc.h File Reference
#include <stdint.h>
#include "libavcodec/get_bits.h"
#include "opus.h"

Go to the source code of this file.

Data Structures

struct  RawBitsContext
 
struct  OpusRangeCoder
 

Macros

#define opus_ilog(i)
 
#define OPUS_RC_CHECKPOINT_UPDATE(rc)
 
#define OPUS_RC_CHECKPOINT_SPAWN(rc)
 
#define OPUS_RC_CHECKPOINT_BITS(rc)
 
#define OPUS_RC_CHECKPOINT_ROLLBACK(rc)
 

Functions

static av_always_inline uint32_t opus_rc_tell (const OpusRangeCoder *rc)
 CELT: estimate bits of entropy that have thus far been consumed for the current CELT frame, to integer and fractional (1/8th bit) precision.
 
static av_always_inline uint32_t opus_rc_tell_frac (const OpusRangeCoder *rc)
 
uint32_t ff_opus_rc_dec_cdf (OpusRangeCoder *rc, const uint16_t *cdf)
 
void ff_opus_rc_enc_cdf (OpusRangeCoder *rc, int val, const uint16_t *cdf)
 
uint32_t ff_opus_rc_dec_log (OpusRangeCoder *rc, uint32_t bits)
 
void ff_opus_rc_enc_log (OpusRangeCoder *rc, int val, uint32_t bits)
 
uint32_t ff_opus_rc_dec_uint_step (OpusRangeCoder *rc, int k0)
 
void ff_opus_rc_enc_uint_step (OpusRangeCoder *rc, uint32_t val, int k0)
 
uint32_t ff_opus_rc_dec_uint_tri (OpusRangeCoder *rc, int qn)
 
void ff_opus_rc_enc_uint_tri (OpusRangeCoder *rc, uint32_t k, int qn)
 
uint32_t ff_opus_rc_dec_uint (OpusRangeCoder *rc, uint32_t size)
 CELT: read a uniform distribution.
 
void ff_opus_rc_enc_uint (OpusRangeCoder *rc, uint32_t val, uint32_t size)
 CELT: write a uniformly distributed integer.
 
uint32_t ff_opus_rc_get_raw (OpusRangeCoder *rc, uint32_t count)
 CELT: read 1-25 raw bits at the end of the frame, backwards byte-wise.
 
void ff_opus_rc_put_raw (OpusRangeCoder *rc, uint32_t val, uint32_t count)
 CELT: write 0 - 31 bits to the rawbits buffer.
 
int ff_opus_rc_dec_laplace (OpusRangeCoder *rc, uint32_t symbol, int decay)
 
void ff_opus_rc_enc_laplace (OpusRangeCoder *rc, int *value, uint32_t symbol, int decay)
 
int ff_opus_rc_dec_init (OpusRangeCoder *rc, const uint8_t *data, int size)
 
void ff_opus_rc_dec_raw_init (OpusRangeCoder *rc, const uint8_t *rightend, uint32_t bytes)
 
void ff_opus_rc_enc_end (OpusRangeCoder *rc, uint8_t *dst, int size)
 
void ff_opus_rc_enc_init (OpusRangeCoder *rc)
 

Macro Definition Documentation

◆ opus_ilog

#define opus_ilog ( i)
Value:
(av_log2(i) + !!(i))
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
#define av_log2
Definition intmath.h:84

Definition at line 32 of file rc.h.

Referenced by celt_log2tan(), ff_opus_rc_dec_uint(), ff_opus_rc_enc_end(), ff_opus_rc_enc_uint(), and silk_is_lpc_stable().

◆ OPUS_RC_CHECKPOINT_UPDATE

#define OPUS_RC_CHECKPOINT_UPDATE ( rc)
Value:
rc_rollback_bits = opus_rc_tell_frac(rc); \
rc_rollback_ctx = *rc
static av_always_inline uint32_t opus_rc_tell_frac(const OpusRangeCoder *rc)
Definition rc.h:67

Definition at line 113 of file rc.h.

◆ OPUS_RC_CHECKPOINT_SPAWN

#define OPUS_RC_CHECKPOINT_SPAWN ( rc)
Value:
uint32_t rc_rollback_bits = opus_rc_tell_frac(rc); \
OpusRangeCoder rc_rollback_ctx = *rc \

Definition at line 117 of file rc.h.

Referenced by celt_quant_coarse(), and pvq_band_cost().

◆ OPUS_RC_CHECKPOINT_BITS

#define OPUS_RC_CHECKPOINT_BITS ( rc)
Value:
(opus_rc_tell_frac(rc) - rc_rollback_bits)

Definition at line 121 of file rc.h.

Referenced by celt_quant_coarse(), and pvq_band_cost().

◆ OPUS_RC_CHECKPOINT_ROLLBACK

#define OPUS_RC_CHECKPOINT_ROLLBACK ( rc)
Value:
memcpy(rc, &rc_rollback_ctx, sizeof(OpusRangeCoder)); \

Definition at line 124 of file rc.h.

Referenced by celt_quant_coarse(), and pvq_band_cost().

Function Documentation

◆ opus_rc_tell()

static av_always_inline uint32_t opus_rc_tell ( const OpusRangeCoder * rc)
static

CELT: estimate bits of entropy that have thus far been consumed for the current CELT frame, to integer and fractional (1/8th bit) precision.

Definition at line 62 of file rc.h.

Referenced by celt_decode_coarse_energy(), celt_decode_final_energy(), celt_decode_tf_changes(), celt_enc_quant_pfilter(), celt_enc_tf(), celt_encode_frame(), celt_quant_final(), exp_quant_coarse(), ff_celt_bitalloc(), ff_celt_decode_frame(), opus_decode_frame(), and parse_postfilter().

◆ opus_rc_tell_frac()

static av_always_inline uint32_t opus_rc_tell_frac ( const OpusRangeCoder * rc)
static

Definition at line 67 of file rc.h.

Referenced by ff_celt_bitalloc(), ff_celt_quant_bands(), pvq_band_cost(), and quant_band_template().

◆ ff_opus_rc_dec_cdf()

◆ ff_opus_rc_enc_cdf()

void ff_opus_rc_enc_cdf ( OpusRangeCoder * rc,
int val,
const uint16_t * cdf )

Definition at line 109 of file rc.c.

Referenced by celt_enc_quant_pfilter(), exp_quant_coarse(), and ff_celt_bitalloc().

◆ ff_opus_rc_dec_log()

◆ ff_opus_rc_enc_log()

void ff_opus_rc_enc_log ( OpusRangeCoder * rc,
int val,
uint32_t bits )

◆ ff_opus_rc_dec_uint_step()

uint32_t ff_opus_rc_dec_uint_step ( OpusRangeCoder * rc,
int k0 )

Definition at line 211 of file rc.c.

Referenced by quant_band_template().

◆ ff_opus_rc_enc_uint_step()

void ff_opus_rc_enc_uint_step ( OpusRangeCoder * rc,
uint32_t val,
int k0 )

Definition at line 226 of file rc.c.

Referenced by quant_band_template().

◆ ff_opus_rc_dec_uint_tri()

uint32_t ff_opus_rc_dec_uint_tri ( OpusRangeCoder * rc,
int qn )

Definition at line 234 of file rc.c.

Referenced by quant_band_template().

◆ ff_opus_rc_enc_uint_tri()

void ff_opus_rc_enc_uint_tri ( OpusRangeCoder * rc,
uint32_t k,
int qn )

Definition at line 258 of file rc.c.

Referenced by quant_band_template().

◆ ff_opus_rc_dec_uint()

uint32_t ff_opus_rc_dec_uint ( OpusRangeCoder * rc,
uint32_t size )

CELT: read a uniform distribution.

Definition at line 182 of file rc.c.

Referenced by celt_decode_pulses(), opus_decode_frame(), parse_postfilter(), and quant_band_template().

◆ ff_opus_rc_enc_uint()

void ff_opus_rc_enc_uint ( OpusRangeCoder * rc,
uint32_t val,
uint32_t size )

CELT: write a uniformly distributed integer.

Definition at line 204 of file rc.c.

Referenced by celt_enc_quant_pfilter(), celt_encode_pulses(), and quant_band_template().

◆ ff_opus_rc_get_raw()

uint32_t ff_opus_rc_get_raw ( OpusRangeCoder * rc,
uint32_t count )

CELT: read 1-25 raw bits at the end of the frame, backwards byte-wise.

Definition at line 140 of file rc.c.

Referenced by celt_decode_final_energy(), celt_decode_fine_energy(), ff_celt_decode_frame(), ff_opus_rc_dec_uint(), parse_postfilter(), and quant_band_template().

◆ ff_opus_rc_put_raw()

void ff_opus_rc_put_raw ( OpusRangeCoder * rc,
uint32_t val,
uint32_t count )

CELT: write 0 - 31 bits to the rawbits buffer.

Definition at line 161 of file rc.c.

Referenced by celt_enc_quant_pfilter(), celt_encode_frame(), celt_quant_final(), celt_quant_fine(), ff_opus_rc_enc_end(), ff_opus_rc_enc_uint(), and quant_band_template().

◆ ff_opus_rc_dec_laplace()

int ff_opus_rc_dec_laplace ( OpusRangeCoder * rc,
uint32_t symbol,
int decay )

Definition at line 275 of file rc.c.

Referenced by celt_decode_coarse_energy().

◆ ff_opus_rc_enc_laplace()

void ff_opus_rc_enc_laplace ( OpusRangeCoder * rc,
int * value,
uint32_t symbol,
int decay )

Definition at line 314 of file rc.c.

Referenced by exp_quant_coarse().

◆ ff_opus_rc_dec_init()

int ff_opus_rc_dec_init ( OpusRangeCoder * rc,
const uint8_t * data,
int size )

Definition at line 338 of file rc.c.

Referenced by opus_decode_frame(), and opus_decode_redundancy().

◆ ff_opus_rc_dec_raw_init()

void ff_opus_rc_dec_raw_init ( OpusRangeCoder * rc,
const uint8_t * rightend,
uint32_t bytes )

Definition at line 352 of file rc.c.

Referenced by ff_opus_rc_enc_init(), opus_decode_frame(), and opus_decode_redundancy().

◆ ff_opus_rc_enc_end()

void ff_opus_rc_enc_end ( OpusRangeCoder * rc,
uint8_t * dst,
int size )

Definition at line 360 of file rc.c.

Referenced by opus_packet_assembler().

◆ ff_opus_rc_enc_init()

void ff_opus_rc_enc_init ( OpusRangeCoder * rc)

Definition at line 402 of file rc.c.

Referenced by bands_dist(), and celt_encode_frame().