mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
libmp3lame: add ABR support
This commit is contained in:
parent
292dbe5e8a
commit
09fda6bb50
@ -49,6 +49,7 @@ typedef struct LAMEContext {
|
||||
int buffer_size;
|
||||
int reservoir;
|
||||
int joint_stereo;
|
||||
int abr;
|
||||
float *samples_flt[2];
|
||||
AudioFrameQueue afq;
|
||||
AVFloatDSPContext fdsp;
|
||||
@ -114,8 +115,13 @@ static av_cold int mp3lame_encode_init(AVCodecContext *avctx)
|
||||
lame_set_VBR(s->gfp, vbr_default);
|
||||
lame_set_VBR_quality(s->gfp, avctx->global_quality / (float)FF_QP2LAMBDA);
|
||||
} else {
|
||||
if (avctx->bit_rate) // CBR
|
||||
lame_set_brate(s->gfp, avctx->bit_rate / 1000);
|
||||
if (avctx->bit_rate) {
|
||||
if (s->abr) { // ABR
|
||||
lame_set_VBR(s->gfp, vbr_abr);
|
||||
lame_set_VBR_mean_bitrate_kbps(s->gfp, avctx->bit_rate / 1000);
|
||||
} else // CBR
|
||||
lame_set_brate(s->gfp, avctx->bit_rate / 1000);
|
||||
}
|
||||
}
|
||||
|
||||
/* do not get a Xing VBR header frame from LAME */
|
||||
@ -262,6 +268,7 @@ static int mp3lame_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
|
||||
static const AVOption options[] = {
|
||||
{ "reservoir", "Use bit reservoir.", OFFSET(reservoir), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, AE },
|
||||
{ "joint_stereo", "Use joint stereo.", OFFSET(joint_stereo), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, AE },
|
||||
{ "abr", "Use ABR", OFFSET(abr), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, AE },
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
|
@ -30,7 +30,7 @@
|
||||
|
||||
#define LIBAVCODEC_VERSION_MAJOR 55
|
||||
#define LIBAVCODEC_VERSION_MINOR 41
|
||||
#define LIBAVCODEC_VERSION_MICRO 1
|
||||
#define LIBAVCODEC_VERSION_MICRO 2
|
||||
|
||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||
LIBAVCODEC_VERSION_MINOR, \
|
||||
|
Loading…
Reference in New Issue
Block a user