65     bytestream_put_byte  (&bs, 0x1);
 
   66     bytestream_put_byte  (&bs, avctx->
channels);
 
   69     bytestream_put_le16  (&bs, 0x0);
 
   70     bytestream_put_byte  (&bs, 0x0); 
 
   75     int i, 
tmp = 0x0, extended_toc = 0;
 
   79         { {  0,  0,  0,  0,  0 }, {  0,  0,  0,  0,  0 }, { 17,  0, 21, 25, 29 } }, 
 
   80         { {  0,  0,  0,  0,  0 }, {  0,  0,  0,  0,  0 }, { 18,  0, 22, 26, 30 } }, 
 
   81         { {  1,  5,  9,  0,  0 }, {  0,  0,  0, 13, 15 }, { 19,  0, 23, 27, 31 } }, 
 
   82         { {  2,  6, 10,  0,  0 }, {  0,  0,  0, 14, 16 }, { 20,  0, 24, 28, 32 } }, 
 
   83         { {  3,  7, 11,  0,  0 }, {  0,  0,  0,  0,  0 }, {  0,  0,  0,  0,  0 } }, 
 
   84         { {  4,  8, 12,  0,  0 }, {  0,  0,  0,  0,  0 }, {  0,  0,  0,  0,  0 } }, 
 
  102     tmp |= (cfg - 1)         << 3;                           
 
  107         tmp = (*fsize_needed) << 7;                                
 
  112     *size = 1 + extended_toc;
 
  125     for (ch = 0; ch < f->
channels; ch++) {
 
  134     for (sf = 0; sf < subframes; sf++) {
 
  135         if (sf != (subframes - 1))
 
  140         for (ch = 0; ch < f->
channels; ch++) {
 
  144             const size_t left = (subframesize - cur->
nb_samples)*bps;
 
  146             memcpy(&b->
samples[sf*subframesize], input, len);
 
  151         if (sf != (subframes - 1))
 
  164     for (ch = 0; ch < f->
channels; ch++) {
 
  176     for (sf = 0; sf < subframes; sf++) {
 
  177         for (ch = 0; ch < f->
channels; ch++) {
 
  180             for (i = 0; i < subframesize; i++) {
 
  182                 b->
samples[sf*subframesize + i] = sample - m;
 
  185             if (sf != (subframes - 1))
 
  198         for (ch = 0; ch < f->
channels; ch++) {
 
  201             for (t = 0; t < f->
blocks; t++) {
 
  213         memset(win, 0, wlen*
sizeof(
float));
 
  214         for (ch = 0; ch < f->
channels; ch++) {
 
  219             memcpy(win + lap_dst, 
temp, CELT_OVERLAP*
sizeof(
float));
 
  222             memcpy(&win[lap_dst + CELT_OVERLAP], b->
samples, rwin*
sizeof(
float));
 
  227             memcpy(win + lap_dst + blk_len, 
temp, CELT_OVERLAP*
sizeof(
float));
 
  233     for (ch = 0; ch < f->
channels; ch++) {
 
  241             for (j = 0; j < band_size; j++)
 
  242                 ener += coeffs[j]*coeffs[j];
 
  244             block->
lin_energy[i] = sqrtf(ener) + FLT_EPSILON;
 
  247             for (j = 0; j < band_size; j++)
 
  260     int i, tf_select = 0, 
diff = 0, tf_changed = 0, tf_select_needed;
 
  265     for (i = f->
start_band; i < f->end_band; i++) {
 
  287     int i, j, low, high, total, done, bandbits, remaining, tbits_8ths;
 
  290     int intensitystereo_bit = 0;
 
  291     int dualstereo_bit      = 0;
 
  316     for (i = f->
start_band; i < f->end_band; i++) {
 
  317         int quanta, b_dynalloc, boost_amount = f->
alloc_boost[i];
 
  322         quanta = 
FFMIN(quanta << 3, 
FFMAX(6 << 3, quanta));
 
  323         b_dynalloc = dynalloc;
 
  325         while (
opus_rc_tell_frac(rc) + (b_dynalloc << 3) < tbits_8ths && boost[i] < cap[i]) {
 
  326             int is_boost = boost_amount--;
 
  333             tbits_8ths -= quanta;
 
  339             dynalloc = 
FFMAX(2, dynalloc - 1);
 
  354     if (tbits_8ths >= 1 << 3)
 
  356     tbits_8ths -= skip_bit;
 
  361         if (intensitystereo_bit <= tbits_8ths) {
 
  362             tbits_8ths -= intensitystereo_bit;
 
  363             if (tbits_8ths >= 1 << 3) {
 
  364                 dualstereo_bit = 1 << 3;
 
  365                 tbits_8ths -= 1 << 3;
 
  368             intensitystereo_bit = 0;
 
  373     for (i = f->
start_band; i < f->end_band; i++) {
 
  377         int scale    = duration + f->
channels - 1;
 
  384         trim_offset[i] = trim * (band << scale) >> 6;
 
  393     while (low <= high) {
 
  394         int center = (low + high) >> 1;
 
  402                 bandbits = 
FFMAX(0, bandbits + trim_offset[i]);
 
  403             bandbits += boost[i];
 
  405             if (bandbits >= threshold[i] || done) {
 
  407                 total += 
FFMIN(bandbits, cap[i]);
 
  408             } 
else if (bandbits >= f->
channels << 3)
 
  412         if (total > tbits_8ths)
 
  420     for (i = f->
start_band; i < f->end_band; i++) {
 
  428             bits1[i] = 
FFMAX(0, bits1[i] + trim_offset[i]);
 
  430             bits2[i] = 
FFMAX(0, bits2[i] + trim_offset[i]);
 
  432             bits1[i] += boost[i];
 
  433         bits2[i] += boost[i];
 
  437         bits2[i] = 
FFMAX(0, bits2[i] - bits1[i]);
 
  444         int center = (low + high) >> 1;
 
  450             if (bandbits >= threshold[j] || done) {
 
  452                 total += 
FFMIN(bandbits, cap[j]);
 
  453             } 
else if (bandbits >= f->
channels << 3)
 
  456         if (total > tbits_8ths)
 
  467         if (bandbits >= threshold[i] || done)
 
  470             bandbits = (bandbits >= f->
channels << 3) ?
 
  473         bandbits     = 
FFMIN(bandbits, cap[i]);
 
  483         if (j == skip_startband) {
 
  485             tbits_8ths += skip_bit;
 
  490         remaining   = tbits_8ths - total;
 
  498         if (allocation >= 
FFMAX(threshold[j], (f->
channels + 1) << 3)) {
 
  505             allocation -= 1 << 3;
 
  510         if (intensitystereo_bit) {
 
  511             total -= intensitystereo_bit;
 
  513             total += intensitystereo_bit;
 
  520     if (intensitystereo_bit) {
 
  525         tbits_8ths += dualstereo_bit; 
 
  526     else if (dualstereo_bit)
 
  530     remaining = tbits_8ths - total;
 
  533     for (i = f->
start_band; i < f->coded_bands; i++) {
 
  541     for (i = f->
start_band; i < f->coded_bands; i++) {
 
  543         int prev_extra = extrabits;
 
  544         f->
pulses[i] += extrabits;
 
  552             int fine_bits, max_bits;
 
  555             f->
pulses[i] -= extrabits;
 
  565             if (f->
pulses[i] + offset < 2 * (dof << 3))
 
  567             else if (f->
pulses[i] + offset < 3 * (dof << 3))
 
  570             fine_bits = (f->
pulses[i] + offset + (dof << 2)) / (dof << 3);
 
  573             max_bits  = 
FFMAX(max_bits, 0);
 
  575             f->
fine_bits[i] = av_clip(fine_bits, 0, max_bits);
 
  586             f->
pulses[i] -= extrabits;
 
  599             extrabits -= fineextra;
 
  622     txval = 
FFMIN(octave, 6);
 
  626     txval = av_clip(period - (16 << octave) + 1, 0, (1 << (4 + octave)) - 1);
 
  628     period = txval + (16 << octave) - 1;
 
  630     txval = 
FFMIN(((
int)(gain / 0.09375f)) - 1, 7);
 
  632     gain   = 0.09375f * (txval + 1);
 
  639     for (i = 0; i < 2; i++) {
 
  644         block->
pf_gains_new[1] = gain * ff_celt_postfilter_taps[tapset][1];
 
  645         block->
pf_gains_new[2] = gain * ff_celt_postfilter_taps[tapset][2];
 
  653     float alpha, beta, prev[2] = { 0, 0 };
 
  664         beta  = 1.0f - (4915.0f/32768.0f);
 
  670     for (i = f->
start_band; i < f->end_band; i++) {
 
  671         for (ch = 0; ch < f->
channels; ch++) {
 
  674             const float last = 
FFMAX(-9.0f, last_energy[ch][i]);
 
  679             } 
else if (left >= 2) {
 
  680                 q_en = av_clip(q_en, -1, 1);
 
  682             } 
else if (left >= 1) {
 
  683                 q_en = av_clip(q_en, -1, 0);
 
  688             prev[
ch] += beta * q_en;
 
  696     uint32_t inter, intra;
 
  716     for (i = f->
start_band; i < f->end_band; i++) {
 
  719         for (ch = 0; ch < f->
channels; ch++) {
 
  723             quant = av_clip(floor(diff*lim), 0, lim - 1);
 
  725             offset = 0.5f - ((quant + 0.5f) * (1 << (14 - f->
fine_bits[i])) / 16384.0f);
 
  734     for (priority = 0; priority < 2; priority++) {
 
  738             for (ch = 0; ch < f->
channels; ch++) {
 
  741                 const float offset = 0.5f * (1 << (14 - f->
fine_bits[i] - 1)) / 16384.0f;
 
  742                 const int sign = 
FFABS(err + offset) < 
FFABS(err - offset);
 
  752     float lowband_scratch[8 * 22];
 
  753     float norm[2 * 8 * 100];
 
  757     int update_lowband = 1;
 
  758     int lowband_offset = 0;
 
  770         float *norm2 = norm + 8 * 100;
 
  771         int effective_lowband = -1;
 
  778         if (i <= f->coded_bands - 1) {
 
  784             (update_lowband || lowband_offset == 0))
 
  791             int foldstart, foldend;
 
  796             foldstart = lowband_offset;
 
  798             foldend = lowband_offset - 1;
 
  802             for (j = foldstart; j < foldend; j++) {
 
  812                 norm[j] = (norm[j] + norm2[j]) / 2;
 
  817                                         effective_lowband != -1 ? norm + (effective_lowband << f->
size) : 
NULL, f->
size,
 
  818                                         norm + band_offset, 0, 1.0f, lowband_scratch, cm[0]);
 
  821                                         effective_lowband != -1 ? norm2 + (effective_lowband << f->
size) : 
NULL, f->
size,
 
  822                                         norm2 + band_offset, 0, 1.0f, lowband_scratch, cm[1]);
 
  825                                         effective_lowband != -1 ? norm + (effective_lowband << f->
size) : 
NULL, f->
size,
 
  826                                         norm + band_offset, 0, 1.0f, lowband_scratch, cm[0] | cm[1]);
 
  835         update_lowband = (b > band_size << 3);
 
  853         for (ch = 0; ch < s->
channels; ch++)
 
  899     for (ch = 0; ch < f->
channels; ch++) {
 
  909     dst[1] = v - dst[0] >> 2;
 
  910     return 1 + (v >= 252);
 
  915     int i, 
offset, fsize_needed;
 
  988         for (i = 0; i < pad_empty; i++) {
 
 1022     *got_packet_ptr = 1;
 
 1049     int i, 
ch, ret, max_frames;
 
 1068         int64_t clipped_rate = av_clip(avctx->
bit_rate, 6000, 255000 * s->
channels);
 
 1069         av_log(avctx, 
AV_LOG_ERROR, 
"Unsupported bitrate %"PRId64
" kbps, clipping to %"PRId64
" kbps\n",
 
 1070                avctx->
bit_rate/1000, clipped_rate/1000);
 
 1095     for (ch = 0; ch < s->
channels; ch++)
 
 1115     for (i = 0; i < max_frames; i++) {
 
 1126 #define OPUSENC_FLAGS AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM 
 1128     { 
"opus_delay", 
"Maximum delay in milliseconds", offsetof(
OpusEncContext, 
options.max_delay_ms), 
AV_OPT_TYPE_FLOAT, { .dbl = 
OPUS_MAX_LOOKAHEAD }, 2.5f, 
OPUS_MAX_LOOKAHEAD, 
OPUSENC_FLAGS, 
"max_delay_ms" },
 
 1141     { 
"compression_level", 
"10" },
 
 1158     .supported_samplerates = (
const int []){ 48000, 0 },
 
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
static AVFrame * ff_bufqueue_get(struct FFBufQueue *queue)
Get the first buffer from the queue and remove it. 
void ff_opus_psy_celt_frame_init(OpusPsyContext *s, CeltFrame *f, int index)
void ff_af_queue_remove(AudioFrameQueue *afq, int nb_samples, int64_t *pts, int64_t *duration)
Remove frame(s) from the queue. 
static av_cold int opus_encode_init(AVCodecContext *avctx)
enum OpusBandwidth bandwidth
#define OPUS_RC_CHECKPOINT_SPAWN(rc)
static void celt_quant_bands(OpusRangeCoder *rc, CeltFrame *f)
static float alpha(float a)
This structure describes decoded (raw) audio or video data. 
static const AVCodecDefault opusenc_defaults[]
static const AVOption opusenc_options[]
const uint8_t ff_celt_coarse_energy_dist[4][2][42]
static AVFrame * spawn_empty_frame(OpusEncContext *s)
const uint8_t ff_celt_log_freq_range[]
void ff_opus_rc_enc_init(OpusRangeCoder *rc)
float coeffs[CELT_MAX_FRAME_SIZE]
int64_t bit_rate
the average bitrate 
#define LIBAVUTIL_VERSION_INT
static void opus_packet_assembler(OpusEncContext *s, AVPacket *avpkt)
static float win(SuperEqualizerContext *s, float n, int N)
static av_cold int init(AVCodecContext *avctx)
const uint8_t ff_celt_freq_bands[]
static void celt_quant_coarse(OpusRangeCoder *rc, CeltFrame *f, float last_energy[][CELT_MAX_BANDS])
static av_cold int opus_encode_end(AVCodecContext *avctx)
#define AV_CODEC_CAP_EXPERIMENTAL
Codec is experimental and is thus avoided in favor of non experimental encoders. 
void ff_opus_rc_enc_log(OpusRangeCoder *rc, int val, uint32_t bits)
void(* vector_fmul_reverse)(float *dst, const float *src0, const float *src1, int len)
Calculate the entry wise product of two vectors of floats, and store the result in a vector of floats...
const float ff_celt_postfilter_taps[3][3]
#define AV_CH_LAYOUT_STEREO
void ff_celt_enc_bitalloc(OpusRangeCoder *rc, CeltFrame *f)
void ff_opus_rc_enc_uint(OpusRangeCoder *rc, uint32_t val, uint32_t size)
CELT: write a uniformly distributed integer. 
Structure holding the queue. 
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
#define AV_CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
int fine_priority[CELT_MAX_BANDS]
static void exp_quant_coarse(OpusRangeCoder *rc, CeltFrame *f, float last_energy[][CELT_MAX_BANDS], int intra)
int ff_alloc_packet2(AVCodecContext *avctx, AVPacket *avpkt, int64_t size, int64_t min_size)
Check AVPacket size and/or allocate data. 
#define FF_CODEC_CAP_INIT_THREADSAFE
The codec does not modify any global variables in the init function, allowing to call the init functi...
enum AVSampleFormat sample_fmt
audio sample format 
AVFrame * av_frame_alloc(void)
Allocate an AVFrame and set its fields to default values. 
const float * ff_celt_window
av_cold void ff_af_queue_init(AVCodecContext *avctx, AudioFrameQueue *afq)
Initialize AudioFrameQueue. 
int64_t duration
Duration of this packet in AVStream->time_base units, 0 if unknown. 
uint8_t pi<< 24) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_U8,(uint64_t)((*(constuint8_t *) pi-0x80U))<< 56) CONV_FUNC(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8,(*(constuint8_t *) pi-0x80)*(1.0f/(1<< 7))) CONV_FUNC(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8,(*(constuint8_t *) pi-0x80)*(1.0/(1<< 7))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16,(*(constint16_t *) pi >>8)+0x80) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_S16,(uint64_t)(*(constint16_t *) pi)<< 48) CONV_FUNC(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16,*(constint16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16,*(constint16_t *) pi *(1.0/(1<< 15))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32,(*(constint32_t *) pi >>24)+0x80) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_S32,(uint64_t)(*(constint32_t *) pi)<< 32) CONV_FUNC(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32,*(constint32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32,*(constint32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S64,(*(constint64_t *) pi >>56)+0x80) CONV_FUNC(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S64,*(constint64_t *) pi *(1.0f/(INT64_C(1)<< 63))) CONV_FUNC(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S64,*(constint64_t *) pi *(1.0/(INT64_C(1)<< 63))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, av_clip_uint8(lrintf(*(constfloat *) pi *(1<< 7))+0x80)) CONV_FUNC(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, av_clip_int16(lrintf(*(constfloat *) pi *(1<< 15)))) CONV_FUNC(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, av_clipl_int32(llrintf(*(constfloat *) pi *(1U<< 31)))) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_FLT, llrintf(*(constfloat *) pi *(INT64_C(1)<< 63))) CONV_FUNC(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, av_clip_uint8(lrint(*(constdouble *) pi *(1<< 7))+0x80)) CONV_FUNC(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, av_clip_int16(lrint(*(constdouble *) pi *(1<< 15)))) CONV_FUNC(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, av_clipl_int32(llrint(*(constdouble *) pi *(1U<< 31)))) CONV_FUNC(AV_SAMPLE_FMT_S64, int64_t, AV_SAMPLE_FMT_DBL, llrint(*(constdouble *) pi *(INT64_C(1)<< 63)))#defineFMT_PAIR_FUNC(out, in) staticconv_func_type *constfmt_pair_to_conv_functions[AV_SAMPLE_FMT_NB *AV_SAMPLE_FMT_NB]={FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_U8), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_S16), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_S32), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_FLT), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_DBL), FMT_PAIR_FUNC(AV_SAMPLE_FMT_U8, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_S64), FMT_PAIR_FUNC(AV_SAMPLE_FMT_S64, AV_SAMPLE_FMT_S64),};staticvoidcpy1(uint8_t **dst, constuint8_t **src, intlen){memcpy(*dst,*src, len);}staticvoidcpy2(uint8_t **dst, constuint8_t **src, intlen){memcpy(*dst,*src, 2 *len);}staticvoidcpy4(uint8_t **dst, constuint8_t **src, intlen){memcpy(*dst,*src, 4 *len);}staticvoidcpy8(uint8_t **dst, constuint8_t **src, intlen){memcpy(*dst,*src, 8 *len);}AudioConvert *swri_audio_convert_alloc(enumAVSampleFormatout_fmt, enumAVSampleFormatin_fmt, intchannels, constint *ch_map, intflags){AudioConvert *ctx;conv_func_type *f=fmt_pair_to_conv_functions[av_get_packed_sample_fmt(out_fmt)+AV_SAMPLE_FMT_NB *av_get_packed_sample_fmt(in_fmt)];if(!f) returnNULL;ctx=av_mallocz(sizeof(*ctx));if(!ctx) returnNULL;if(channels==1){in_fmt=av_get_planar_sample_fmt(in_fmt);out_fmt=av_get_planar_sample_fmt(out_fmt);}ctx->channels=channels;ctx->conv_f=f;ctx->ch_map=ch_map;if(in_fmt==AV_SAMPLE_FMT_U8||in_fmt==AV_SAMPLE_FMT_U8P) memset(ctx->silence, 0x80, sizeof(ctx->silence));if(out_fmt==in_fmt &&!ch_map){switch(av_get_bytes_per_sample(in_fmt)){case1:ctx->simd_f=cpy1;break;case2:ctx->simd_f=cpy2;break;case4:ctx->simd_f=cpy4;break;case8:ctx->simd_f=cpy8;break;}}if(HAVE_X86ASM &&1) swri_audio_convert_init_x86(ctx, out_fmt, in_fmt, channels);if(ARCH_ARM) swri_audio_convert_init_arm(ctx, out_fmt, in_fmt, channels);if(ARCH_AARCH64) swri_audio_convert_init_aarch64(ctx, out_fmt, in_fmt, channels);returnctx;}voidswri_audio_convert_free(AudioConvert **ctx){av_freep(ctx);}intswri_audio_convert(AudioConvert *ctx, AudioData *out, AudioData *in, intlen){intch;intoff=0;constintos=(out->planar?1:out->ch_count)*out->bps;unsignedmisaligned=0;av_assert0(ctx->channels==out->ch_count);if(ctx->in_simd_align_mask){intplanes=in->planar?in->ch_count:1;unsignedm=0;for(ch=0;ch< planes;ch++) m|=(intptr_t) in->ch[ch];misaligned|=m &ctx->in_simd_align_mask;}if(ctx->out_simd_align_mask){intplanes=out->planar?out->ch_count:1;unsignedm=0;for(ch=0;ch< planes;ch++) m|=(intptr_t) out->ch[ch];misaligned|=m &ctx->out_simd_align_mask;}if(ctx->simd_f &&!ctx->ch_map &&!misaligned){off=len &~15;av_assert1(off >=0);av_assert1(off<=len);av_assert2(ctx->channels==SWR_CH_MAX||!in->ch[ctx->channels]);if(off >0){if(out->planar==in->planar){intplanes=out->planar?out->ch_count:1;for(ch=0;ch< planes;ch++){ctx->simd_f(out-> ch ch
#define OPUS_MAX_LOOKAHEAD
uint8_t * extradata
some codecs need / can use extradata like Huffman tables. 
int av_cold ff_celt_pvq_init(CeltPVQ **pvq)
int ff_opus_psy_process(OpusPsyContext *s, OpusPacketInfo *p)
av_cold int ff_mdct15_init(MDCT15Context **ps, int inverse, int N, double scale)
#define CELT_POSTFILTER_MINPERIOD
static void celt_enc_tf(OpusRangeCoder *rc, CeltFrame *f)
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory. 
static const uint8_t bits2[81]
int ff_opus_psy_celt_frame_process(OpusPsyContext *s, CeltFrame *f, int index)
float lin_energy[CELT_MAX_BANDS]
const OptionDef options[]
static int opus_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
float samples[FFALIGN(CELT_MAX_FRAME_SIZE, 16)]
const uint8_t ff_celt_log2_frac[]
int alloc_boost[CELT_MAX_BANDS]
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
av_cold AVFloatDSPContext * avpriv_float_dsp_alloc(int bit_exact)
Allocate a float DSP context. 
void(* vector_fmul)(float *dst, const float *src0, const float *src1, int len)
Calculate the entry wise product of two vectors of floats and store the result in a vector of floats...
#define OPUS_BLOCK_SIZE(x)
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g. 
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
int initial_padding
Audio only. 
#define OPUS_RC_CHECKPOINT_ROLLBACK(rc)
int flags
AV_CODEC_FLAG_*. 
av_cold int ff_opus_psy_init(OpusPsyContext *s, AVCodecContext *avctx, struct FFBufQueue *bufqueue, OpusEncOptions *options)
int tf_change[CELT_MAX_BANDS]
const char * name
Name of the codec implementation. 
int pulses[CELT_MAX_BANDS]
static int opus_gen_toc(OpusEncContext *s, uint8_t *toc, int *size, int *fsize_needed)
static const uint8_t offset[127][2]
int ff_af_queue_add(AudioFrameQueue *afq, const AVFrame *f)
Add a frame to the queue. 
static void celt_frame_mdct(OpusEncContext *s, CeltFrame *f)
int fine_bits[CELT_MAX_BANDS]
uint64_t channel_layout
Audio channel layout. 
uint64_t channel_layout
Channel layout of the audio data. 
const int8_t ff_celt_tf_select[4][2][2][2]
#define AV_CODEC_FLAG_BITEXACT
Use only bitexact stuff (except (I)DCT). 
#define AV_CODEC_CAP_SMALL_LAST_FRAME
Codec can be fed a final frame with a smaller size. 
#define OPUS_RC_CHECKPOINT_BITS(rc)
MDCT15Context * mdct[CELT_BLOCK_NB]
static void celt_frame_setup_input(OpusEncContext *s, CeltFrame *f)
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
float error_energy[CELT_MAX_BANDS]
static void ff_bufqueue_discard_all(struct FFBufQueue *queue)
Unref and remove all buffers from the queue. 
const uint8_t ff_celt_freq_range[]
AVFrame * av_frame_clone(const AVFrame *src)
Create a new frame that references the same data as src. 
const uint8_t ff_opus_default_coupled_streams[]
void ff_opus_rc_enc_cdf(OpusRangeCoder *rc, int val, const uint16_t *cdf)
int format
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames...
int frame_size
Number of samples per channel in an audio frame. 
const uint8_t ff_celt_static_caps[4][2][21]
struct FFBufQueue bufqueue
static void celt_encode_frame(OpusEncContext *s, OpusRangeCoder *rc, CeltFrame *f, int index)
AVSampleFormat
Audio sample formats. 
unsigned short available
number of available buffers 
int sample_rate
samples per second 
const uint16_t ff_celt_model_spread[]
main external API structure. 
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...
#define CELT_MAX_FINE_BITS
void ff_opus_rc_enc_laplace(OpusRangeCoder *rc, int *value, uint32_t symbol, int decay)
static int write_opuslacing(uint8_t *dst, int v)
Describe the class of an AVClass context structure. 
void ff_opus_psy_signal_eof(OpusPsyContext *s)
const uint8_t ff_celt_static_alloc[11][21]
#define CELT_ENERGY_SILENCE
static void opus_write_extradata(AVCodecContext *avctx)
Recommmends skipping the specified number of samples. 
av_cold int ff_opus_psy_end(OpusPsyContext *s)
void ff_opus_psy_postencode_update(OpusPsyContext *s, CeltFrame *f, OpusRangeCoder *rc)
const uint16_t ff_celt_model_energy_small[]
int av_frame_get_buffer(AVFrame *frame, int align)
Allocate new buffer(s) for audio or video data. 
#define OPUS_MAX_CHANNELS
const uint16_t ff_celt_model_alloc_trim[]
int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt)
Return number of bytes per sample. 
float energy[CELT_MAX_BANDS]
static const AVClass opusenc_class
static void celt_quant_final(OpusEncContext *s, OpusRangeCoder *rc, CeltFrame *f)
const float ff_celt_beta_coef[]
void ff_opus_rc_put_raw(OpusRangeCoder *rc, uint32_t val, uint32_t count)
CELT: write 0 - 31 bits to the rawbits buffer. 
common internal api header. 
static void celt_quant_fine(OpusRangeCoder *rc, CeltFrame *f)
void ff_opus_rc_enc_end(OpusRangeCoder *rc, uint8_t *dst, int size)
static av_always_inline void bytestream_put_buffer(uint8_t **b, const uint8_t *src, unsigned int size)
#define AV_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding...
av_cold void ff_mdct15_uninit(MDCT15Context **ps)
float last_quantized_energy[OPUS_MAX_CHANNELS][CELT_MAX_BANDS]
static av_always_inline int diff(const uint32_t a, const uint32_t b)
static const int16_t coeffs[]
int channels
number of audio channels 
const float ff_celt_alpha_coef[]
void ff_af_queue_close(AudioFrameQueue *afq)
Close AudioFrameQueue. 
const float ff_celt_mean_energy[]
static void celt_enc_quant_pfilter(OpusRangeCoder *rc, CeltFrame *f)
static void ff_bufqueue_add(void *log, struct FFBufQueue *queue, AVFrame *buf)
Add a buffer to the queue. 
uint8_t * av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, int size)
Allocate new information of a packet. 
uint8_t ** extended_data
pointers to the data planes/channels. 
#define AV_CH_LAYOUT_MONO
void(* mdct)(struct MDCT15Context *s, float *dst, const float *src, ptrdiff_t stride)
uint8_t collapse_masks[CELT_MAX_BANDS]
This structure stores compressed data. 
const uint16_t ff_celt_model_tapset[]
static void celt_apply_preemph_filter(OpusEncContext *s, CeltFrame *f)
int nb_samples
number of audio samples (per channel) described by this frame 
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...
float overlap[FFALIGN(CELT_OVERLAP, 16)]
void av_cold ff_celt_pvq_uninit(CeltPVQ **pvq)
static const uint8_t bits1[81]
static av_always_inline uint32_t opus_rc_tell_frac(const OpusRangeCoder *rc)
static AVFrame * ff_bufqueue_peek(struct FFBufQueue *queue, unsigned index)
Get a buffer from the queue without altering it.