FFmpeg
Data Structures | Macros | Functions | Variables
libmp3lame.c File Reference
#include <lame/lame.h>
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "libavutil/float_dsp.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/log.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "audio_frame_queue.h"
#include "internal.h"
#include "mpegaudio.h"
#include "mpegaudiodecheader.h"

Go to the source code of this file.

Data Structures

struct  LAMEContext
 

Macros

#define BUFFER_SIZE   (7200 + 2 * MPA_FRAME_SIZE + MPA_FRAME_SIZE / 4+1000)
 
#define ENCODE_BUFFER(func, buf_type, buf_name)
 
#define OFFSET(x)   offsetof(LAMEContext, x)
 
#define AE   AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
 

Functions

static int realloc_buffer (LAMEContext *s)
 
static av_cold int mp3lame_encode_close (AVCodecContext *avctx)
 
static av_cold int mp3lame_encode_init (AVCodecContext *avctx)
 
static int mp3lame_encode_frame (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
 

Variables

static const AVOption options []
 
static const AVClass libmp3lame_class
 
static const AVCodecDefault libmp3lame_defaults []
 
static const int libmp3lame_sample_rates []
 
const AVCodec ff_libmp3lame_encoder
 

Detailed Description

Interface to libmp3lame for mp3 encoding.

Definition in file libmp3lame.c.

Macro Definition Documentation

◆ BUFFER_SIZE

#define BUFFER_SIZE   (7200 + 2 * MPA_FRAME_SIZE + MPA_FRAME_SIZE / 4+1000)

Definition at line 41 of file libmp3lame.c.

◆ ENCODE_BUFFER

#define ENCODE_BUFFER (   func,
  buf_type,
  buf_name 
)
Value:
do { \
lame_result = func(s->gfp, \
(const buf_type *)buf_name[0], \
(const buf_type *)buf_name[1], frame->nb_samples, \
s->buffer + s->buffer_index, \
s->buffer_size - s->buffer_index); \
} while (0)

Definition at line 180 of file libmp3lame.c.

◆ OFFSET

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

Definition at line 305 of file libmp3lame.c.

◆ AE

Definition at line 306 of file libmp3lame.c.

Function Documentation

◆ realloc_buffer()

static int realloc_buffer ( LAMEContext s)
static

Definition at line 60 of file libmp3lame.c.

Referenced by mp3lame_encode_frame(), and mp3lame_encode_init().

◆ mp3lame_encode_close()

static av_cold int mp3lame_encode_close ( AVCodecContext avctx)
static

Definition at line 76 of file libmp3lame.c.

Referenced by mp3lame_encode_init().

◆ mp3lame_encode_init()

static av_cold int mp3lame_encode_init ( AVCodecContext avctx)
static

Definition at line 91 of file libmp3lame.c.

◆ mp3lame_encode_frame()

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

Definition at line 188 of file libmp3lame.c.

Variable Documentation

◆ options

const AVOption options[]
static
Initial value:
= {
{ "reservoir", "use bit reservoir", OFFSET(reservoir), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, AE },
{ "joint_stereo", "use joint stereo", OFFSET(joint_stereo), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, AE },
{ "abr", "use ABR", OFFSET(abr), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, AE },
{ NULL },
}

Definition at line 307 of file libmp3lame.c.

◆ libmp3lame_class

const AVClass libmp3lame_class
static
Initial value:
= {
.class_name = "libmp3lame encoder",
.item_name = av_default_item_name,
.option = options,
}

Definition at line 314 of file libmp3lame.c.

◆ libmp3lame_defaults

const AVCodecDefault libmp3lame_defaults[]
static
Initial value:
= {
{ "b", "0" },
{ NULL },
}

Definition at line 321 of file libmp3lame.c.

◆ libmp3lame_sample_rates

const int libmp3lame_sample_rates[]
static
Initial value:
= {
44100, 48000, 32000, 22050, 24000, 16000, 11025, 12000, 8000, 0
}

Definition at line 326 of file libmp3lame.c.

◆ ff_libmp3lame_encoder

const AVCodec ff_libmp3lame_encoder
Initial value:
= {
.name = "libmp3lame",
.long_name = NULL_IF_CONFIG_SMALL("libmp3lame MP3 (MPEG audio layer 3)"),
.priv_data_size = sizeof(LAMEContext),
.supported_samplerates = libmp3lame_sample_rates,
.channel_layouts = (const uint64_t[]) { AV_CH_LAYOUT_MONO,
0 },
.priv_class = &libmp3lame_class,
.defaults = libmp3lame_defaults,
.wrapper_name = "libmp3lame",
}

Definition at line 330 of file libmp3lame.c.

func
int(* func)(AVBPrint *dst, const char *in, const char *arg)
Definition: jacosubdec.c:68
AV_SAMPLE_FMT_FLTP
@ AV_SAMPLE_FMT_FLTP
float, planar
Definition: samplefmt.h:69
init
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:31
sample_fmts
static enum AVSampleFormat sample_fmts[]
Definition: adpcmenc.c:953
AV_CH_LAYOUT_MONO
#define AV_CH_LAYOUT_MONO
Definition: channel_layout.h:90
LAMEContext
Definition: libmp3lame.c:43
AV_SAMPLE_FMT_S32P
@ AV_SAMPLE_FMT_S32P
signed 32 bits, planar
Definition: samplefmt.h:68
AV_CODEC_ID_MP3
@ AV_CODEC_ID_MP3
preferred ID for decoding MPEG audio layer 1, 2 or 3
Definition: codec_id.h:422
AV_CH_LAYOUT_STEREO
#define AV_CH_LAYOUT_STEREO
Definition: channel_layout.h:91
AE
#define AE
Definition: libmp3lame.c:306
mp3lame_encode_init
static av_cold int mp3lame_encode_init(AVCodecContext *avctx)
Definition: libmp3lame.c:91
s
#define s(width, name)
Definition: cbs_vp9.c:257
AVMEDIA_TYPE_AUDIO
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:202
libmp3lame_defaults
static const AVCodecDefault libmp3lame_defaults[]
Definition: libmp3lame.c:321
LIBAVUTIL_VERSION_INT
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
NULL
#define NULL
Definition: coverity.c:32
OFFSET
#define OFFSET(x)
Definition: libmp3lame.c:305
av_default_item_name
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:235
libmp3lame_class
static const AVClass libmp3lame_class
Definition: libmp3lame.c:314
NULL_IF_CONFIG_SMALL
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition: internal.h:117
AV_SAMPLE_FMT_NONE
@ AV_SAMPLE_FMT_NONE
Definition: samplefmt.h:59
AV_SAMPLE_FMT_S16P
@ AV_SAMPLE_FMT_S16P
signed 16 bits, planar
Definition: samplefmt.h:67
mp3lame_encode_frame
static int mp3lame_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Definition: libmp3lame.c:188
AVSampleFormat
AVSampleFormat
Audio sample formats.
Definition: samplefmt.h:58
frame
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
Definition: filter_design.txt:264
options
static const AVOption options[]
Definition: libmp3lame.c:307
libmp3lame_sample_rates
static const int libmp3lame_sample_rates[]
Definition: libmp3lame.c:326
AV_CODEC_CAP_DELAY
#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: codec.h:77
mp3lame_encode_close
static av_cold int mp3lame_encode_close(AVCodecContext *avctx)
Definition: libmp3lame.c:76
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Definition: opt.h:242
AV_CODEC_CAP_SMALL_LAST_FRAME
#define AV_CODEC_CAP_SMALL_LAST_FRAME
Codec can be fed a final frame with a smaller size.
Definition: codec.h:82