libavcodec/libspeexenc.c File Reference

libspeex Speex audio encoder More...

#include <speex/speex.h>
#include <speex/speex_header.h>
#include <speex/speex_stereo.h>
#include "libavutil/audioconvert.h"
#include "libavutil/common.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "internal.h"
#include "audio_frame_queue.h"

Go to the source code of this file.

Data Structures

struct  LibSpeexEncContext


#define OFFSET(x)   offsetof(LibSpeexEncContext, x)


static av_cold void print_enc_params (AVCodecContext *avctx, LibSpeexEncContext *s)
static av_cold int encode_init (AVCodecContext *avctx)
static int encode_frame (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
static av_cold int encode_close (AVCodecContext *avctx)


static const AVOption options []
class {
      class_name = "libspeex"
      item_name = av_default_item_name
      option = options
static const AVCodecDefault defaults []
AVCodec ff_libspeex_encoder

Detailed Description

libspeex Speex audio encoder

Usage Guide This explains the values that need to be set prior to initialization in order to control various encoding parameters.

Channels Speex only supports mono or stereo, so avctx->channels must be set to 1 or 2.

Sample Rate / Encoding Mode Speex has 3 modes, each of which uses a specific sample rate. narrowband : 8 kHz wideband : 16 kHz ultra-wideband : 32 kHz avctx->sample_rate must be set to one of these 3 values. This will be used to set the encoding mode.

Rate Control VBR mode is turned on by setting CODEC_FLAG_QSCALE in avctx->flags. avctx->global_quality is used to set the encoding quality. For CBR mode, avctx->bit_rate can be used to set the constant bitrate. Alternatively, the 'cbr_quality' option can be set from 0 to 10 to set a constant bitrate based on quality. For ABR mode, set avctx->bit_rate and set the 'abr' option to 1. Approx. Bitrate Range: narrowband : 2400 - 25600 bps wideband : 4000 - 43200 bps ultra-wideband : 4400 - 45200 bps

Complexity Encoding complexity is controlled by setting avctx->compression_level. The valid range is 0 to 10. A higher setting gives generally better quality at the expense of encoding speed. This does not affect the bit rate.

Frames-per-Packet The encoder defaults to using 1 frame-per-packet. However, it is sometimes desirable to use multiple frames-per-packet to reduce the amount of container overhead. This can be done by setting the 'frames_per_packet' option to a value 1 to 8.

Definition in file libspeexenc.c.

Define Documentation


Definition at line 306 of file libspeexenc.c.

#define OFFSET (  )     offsetof(LibSpeexEncContext, x)

Definition at line 305 of file libspeexenc.c.

Function Documentation

static av_cold int encode_close ( AVCodecContext avctx  )  [static]

Definition at line 289 of file libspeexenc.c.

Referenced by encode_init().

static int encode_frame ( AVCodecContext avctx,
AVPacket avpkt,
const AVFrame frame,
int got_packet_ptr 
) [static]

Definition at line 244 of file libspeexenc.c.

static av_cold int encode_init ( AVCodecContext avctx  )  [static]

Definition at line 123 of file libspeexenc.c.

static av_cold void print_enc_params ( AVCodecContext avctx,
LibSpeexEncContext s 
) [static]

Definition at line 91 of file libspeexenc.c.

Referenced by encode_init().

Variable Documentation

const { ... } [static]

class_name = "libspeex"

Definition at line 315 of file libspeexenc.c.

const AVCodecDefault defaults[] [static]

Initial value:

    { "b",                 "0" },
    { "compression_level", "3" },
    { NULL },

Definition at line 321 of file libspeexenc.c.

Initial value:

    .name           = "libspeex",
    .type           = AVMEDIA_TYPE_AUDIO,
    .id             = AV_CODEC_ID_SPEEX,
    .priv_data_size = sizeof(LibSpeexEncContext),
    .init           = encode_init,
    .encode2        = encode_frame,
    .close          = encode_close,
    .capabilities   = CODEC_CAP_DELAY,
    .sample_fmts    = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16,
                                                     AV_SAMPLE_FMT_NONE },
    .channel_layouts = (const uint64_t[]){ AV_CH_LAYOUT_MONO,
                                           0 },
    .supported_samplerates = (const int[]){ 8000, 16000, 32000, 0 },
    .long_name      = NULL_IF_CONFIG_SMALL("libspeex Speex"),
    .priv_class     = &class,
    .defaults       = defaults,

Definition at line 327 of file libspeexenc.c.

item_name = av_default_item_name

Definition at line 316 of file libspeexenc.c.

Definition at line 317 of file libspeexenc.c.

const AVOption options[] [static]

Initial value:

    { "abr",               "Use average bit rate",                      OFFSET(abr),               AV_OPT_TYPE_INT, { .i64 = 0 }, 0,   1, AE },
    { "cbr_quality",       "Set quality value (0 to 10) for CBR",       OFFSET(cbr_quality),       AV_OPT_TYPE_INT, { .i64 = 8 }, 0,  10, AE },
    { "frames_per_packet", "Number of frames to encode in each packet", OFFSET(frames_per_packet), AV_OPT_TYPE_INT, { .i64 = 1 }, 1,   8, AE },
    { NULL },

Definition at line 307 of file libspeexenc.c.

Definition at line 318 of file libspeexenc.c.

Generated on Fri Oct 26 02:50:06 2012 for FFmpeg by  doxygen 1.5.8