mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-12 10:15:22 +00:00
Merge remote-tracking branch 'qatar/master'
* qatar/master: xsub: feed init_get_bits the whole buffer libfdk-aac: Allow setting VBR modes via a private option libfdk-aac: Warn the user that the VBR modes are unsupported Revert "cbrt_tablegen: Include libm.h" Conflicts: libavcodec/xsubdec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
ae0449314c
@ -21,7 +21,6 @@
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "libavutil/libm.h"
|
||||
#define CONFIG_HARDCODED_TABLES 0
|
||||
#include "cbrt_tablegen.h"
|
||||
#include "tableprint.h"
|
||||
|
@ -36,6 +36,7 @@ typedef struct AACContext {
|
||||
int signaling;
|
||||
int latm;
|
||||
int header_period;
|
||||
int vbr;
|
||||
|
||||
AudioFrameQueue afq;
|
||||
} AACContext;
|
||||
@ -50,6 +51,7 @@ static const AVOption aac_enc_options[] = {
|
||||
{ "explicit_hierarchical", "Explicit hierarchical signaling", 0, AV_OPT_TYPE_CONST, { .i64 = 2 }, 0, 0, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM, "signaling" },
|
||||
{ "latm", "Output LATM/LOAS encapsulated data", offsetof(AACContext, latm), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM },
|
||||
{ "header_period", "StreamMuxConfig and PCE repetition period (in frames)", offsetof(AACContext, header_period), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 0xffff, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM },
|
||||
{ "vbr", "VBR mode (1-5)", offsetof(AACContext, vbr), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 5, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_ENCODING_PARAM },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
@ -173,13 +175,16 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (avctx->flags & CODEC_FLAG_QSCALE) {
|
||||
int mode = avctx->global_quality;
|
||||
if (avctx->flags & CODEC_FLAG_QSCALE || s->vbr) {
|
||||
int mode = s->vbr ? s->vbr : avctx->global_quality;
|
||||
if (mode < 1 || mode > 5) {
|
||||
av_log(avctx, AV_LOG_WARNING,
|
||||
"VBR quality %d out of range, should be 1-5\n", mode);
|
||||
mode = av_clip(mode, 1, 5);
|
||||
}
|
||||
av_log(avctx, AV_LOG_WARNING,
|
||||
"Note, the VBR setting is unsupported and only works with "
|
||||
"some parameter combinations\n");
|
||||
if ((err = aacEncoder_SetParam(s->handle, AACENC_BITRATEMODE,
|
||||
mode)) != AACENC_OK) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Unable to set the VBR bitrate mode %d: %s\n",
|
||||
|
@ -87,7 +87,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
|
||||
bytestream_get_le16(&buf);
|
||||
// The following value is supposed to indicate the start offset
|
||||
// (relative to the palette) of the data for the second field,
|
||||
// however there are files where it has a bogus value and thus
|
||||
// however there are files in which it has a bogus value and thus
|
||||
// we just ignore it
|
||||
bytestream_get_le16(&buf);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user