FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
opusenc.c File Reference
#include "opusenc.h"
#include "opus_pvq.h"
#include "opusenc_psy.h"
#include "opustab.h"
#include "libavutil/float_dsp.h"
#include "libavutil/opt.h"
#include "internal.h"
#include "bytestream.h"
#include "audio_frame_queue.h"

Go to the source code of this file.

Data Structures

struct  OpusEncContext
 

Macros

#define OPUSENC_FLAGS   AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM
 

Functions

static void opus_write_extradata (AVCodecContext *avctx)
 
static int opus_gen_toc (OpusEncContext *s, uint8_t *toc, int *size, int *fsize_needed)
 
static void celt_frame_setup_input (OpusEncContext *s, CeltFrame *f)
 
static void celt_apply_preemph_filter (OpusEncContext *s, CeltFrame *f)
 
static void celt_frame_mdct (OpusEncContext *s, CeltFrame *f)
 
static void celt_enc_tf (CeltFrame *f, OpusRangeCoder *rc)
 
void ff_celt_enc_bitalloc (CeltFrame *f, OpusRangeCoder *rc)
 
static void celt_enc_quant_pfilter (OpusRangeCoder *rc, CeltFrame *f)
 
static void exp_quant_coarse (OpusRangeCoder *rc, CeltFrame *f, float last_energy[][CELT_MAX_BANDS], int intra)
 
static void celt_quant_coarse (CeltFrame *f, OpusRangeCoder *rc, float last_energy[][CELT_MAX_BANDS])
 
static void celt_quant_fine (CeltFrame *f, OpusRangeCoder *rc)
 
static void celt_quant_final (OpusEncContext *s, OpusRangeCoder *rc, CeltFrame *f)
 
static void celt_encode_frame (OpusEncContext *s, OpusRangeCoder *rc, CeltFrame *f, int index)
 
static int write_opuslacing (uint8_t *dst, int v)
 
static void opus_packet_assembler (OpusEncContext *s, AVPacket *avpkt)
 
static AVFramespawn_empty_frame (OpusEncContext *s)
 
static int opus_encode_frame (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
 
static av_cold int opus_encode_end (AVCodecContext *avctx)
 
static av_cold int opus_encode_init (AVCodecContext *avctx)
 

Variables

static const AVOption opusenc_options []
 
static const AVClass opusenc_class
 
static const AVCodecDefault opusenc_defaults []
 
AVCodec ff_opus_encoder
 

Macro Definition Documentation

Definition at line 1038 of file opusenc.c.

Function Documentation

static void opus_write_extradata ( AVCodecContext avctx)
static

Definition at line 60 of file opusenc.c.

Referenced by opus_encode_init().

static int opus_gen_toc ( OpusEncContext s,
uint8_t toc,
int size,
int fsize_needed 
)
static

Definition at line 73 of file opusenc.c.

Referenced by opus_packet_assembler().

static void celt_frame_setup_input ( OpusEncContext s,
CeltFrame f 
)
static

Definition at line 116 of file opusenc.c.

Referenced by celt_encode_frame().

static void celt_apply_preemph_filter ( OpusEncContext s,
CeltFrame f 
)
static

Definition at line 157 of file opusenc.c.

Referenced by celt_encode_frame().

static void celt_frame_mdct ( OpusEncContext s,
CeltFrame f 
)
static

Definition at line 192 of file opusenc.c.

Referenced by celt_encode_frame().

static void celt_enc_tf ( CeltFrame f,
OpusRangeCoder rc 
)
static

Definition at line 258 of file opusenc.c.

Referenced by celt_encode_frame().

void ff_celt_enc_bitalloc ( CeltFrame f,
OpusRangeCoder rc 
)

Definition at line 285 of file opusenc.c.

Referenced by bands_dist(), and celt_encode_frame().

static void celt_enc_quant_pfilter ( OpusRangeCoder rc,
CeltFrame f 
)
static

Definition at line 612 of file opusenc.c.

Referenced by celt_encode_frame().

static void exp_quant_coarse ( OpusRangeCoder rc,
CeltFrame f,
float  last_energy[][CELT_MAX_BANDS],
int  intra 
)
static

Definition at line 649 of file opusenc.c.

Referenced by celt_quant_coarse().

static void celt_quant_coarse ( CeltFrame f,
OpusRangeCoder rc,
float  last_energy[][CELT_MAX_BANDS] 
)
static

Definition at line 693 of file opusenc.c.

Referenced by celt_encode_frame().

static void celt_quant_fine ( CeltFrame f,
OpusRangeCoder rc 
)
static

Definition at line 713 of file opusenc.c.

Referenced by celt_encode_frame().

static void celt_quant_final ( OpusEncContext s,
OpusRangeCoder rc,
CeltFrame f 
)
static

Definition at line 731 of file opusenc.c.

Referenced by celt_encode_frame().

static void celt_encode_frame ( OpusEncContext s,
OpusRangeCoder rc,
CeltFrame f,
int  index 
)
static

Definition at line 750 of file opusenc.c.

Referenced by opus_encode_frame().

static int write_opuslacing ( uint8_t dst,
int  v 
)
inlinestatic

Definition at line 817 of file opusenc.c.

Referenced by opus_packet_assembler().

static void opus_packet_assembler ( OpusEncContext s,
AVPacket avpkt 
)
static

Definition at line 824 of file opusenc.c.

Referenced by opus_encode_frame().

static AVFrame* spawn_empty_frame ( OpusEncContext s)
static

Definition at line 850 of file opusenc.c.

Referenced by opus_encode_frame(), and opus_encode_init().

static int opus_encode_frame ( AVCodecContext avctx,
AVPacket avpkt,
const AVFrame frame,
int got_packet_ptr 
)
static

Definition at line 870 of file opusenc.c.

static av_cold int opus_encode_end ( AVCodecContext avctx)
static

Definition at line 938 of file opusenc.c.

static av_cold int opus_encode_init ( AVCodecContext avctx)
static

Definition at line 958 of file opusenc.c.

Variable Documentation

const AVOption opusenc_options[]
static
Initial value:
= {
{ "opus_delay", "Maximum delay in milliseconds", 0x42, AV_OPT_TYPE_FLOAT, { .dbl = OPUS_MAX_LOOKAHEAD }, 2.5f, OPUS_MAX_LOOKAHEAD, OPUSENC_FLAGS, "max_delay_ms" },
{ NULL },
}
#define NULL
Definition: coverity.c:32
#define OPUSENC_FLAGS
Definition: opusenc.c:1038
#define OPUS_MAX_LOOKAHEAD
Definition: opusenc.h:32

Definition at line 1039 of file opusenc.c.

const AVClass opusenc_class
static
Initial value:
= {
.class_name = "Opus encoder",
.item_name = av_default_item_name,
.option = opusenc_options,
}
static const AVOption opusenc_options[]
Definition: opusenc.c:1039
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:193

Definition at line 1044 of file opusenc.c.

const AVCodecDefault opusenc_defaults[]
static
Initial value:
= {
{ "b", "0" },
{ "compression_level", "10" },
{ NULL },
}
#define NULL
Definition: coverity.c:32

Definition at line 1051 of file opusenc.c.

AVCodec ff_opus_encoder
Initial value:
= {
.name = "opus",
.long_name = NULL_IF_CONFIG_SMALL("Opus"),
.defaults = opusenc_defaults,
.priv_class = &opusenc_class,
.priv_data_size = sizeof(OpusEncContext),
.encode2 = opus_encode_frame,
.close = opus_encode_end,
.supported_samplerates = (const int []){ 48000, 0 },
.channel_layouts = (const uint64_t []){ AV_CH_LAYOUT_MONO,
.sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_FLTP,
}
#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:48
float, planar
Definition: samplefmt.h:69
static av_cold int opus_encode_init(AVCodecContext *avctx)
Definition: opusenc.c:958
static const AVCodecDefault opusenc_defaults[]
Definition: opusenc.c:1051
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
static av_cold int opus_encode_end(AVCodecContext *avctx)
Definition: opusenc.c:938
#define AV_CODEC_CAP_EXPERIMENTAL
Codec is experimental and is thus avoided in favor of non experimental encoders.
Definition: avcodec.h:1004
#define AV_CH_LAYOUT_STEREO
#define AV_CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
Definition: avcodec.h:981
#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:40
static int opus_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Definition: opusenc.c:870
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
#define AV_CODEC_CAP_SMALL_LAST_FRAME
Codec can be fed a final frame with a smaller size.
Definition: avcodec.h:986
AVSampleFormat
Audio sample formats.
Definition: samplefmt.h:58
static const AVClass opusenc_class
Definition: opusenc.c:1044
#define AV_CH_LAYOUT_MONO

Definition at line 1057 of file opusenc.c.