mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-27 13:10:37 +00:00
lavc: deprecate FF_MAX_B_FRAMES
We should not arbitrarily decide the maximum B-frame number for all encoders supported by Libav, each encoder should be able to set its own limits.
This commit is contained in:
parent
b6094811f9
commit
aa24122989
@ -630,7 +630,12 @@ typedef struct RcOverride{
|
||||
float quality_factor;
|
||||
} RcOverride;
|
||||
|
||||
#if FF_API_MAX_BFRAMES
|
||||
/**
|
||||
* @deprecated there is no libavcodec-wide limit on the number of B-frames
|
||||
*/
|
||||
#define FF_MAX_B_FRAMES 16
|
||||
#endif
|
||||
|
||||
/* encoding support
|
||||
These flags can be passed in AVCodecContext.flags before initialization.
|
||||
|
@ -65,6 +65,8 @@ enum OutputFormat {
|
||||
|
||||
#define MAX_PICTURE_COUNT 32
|
||||
|
||||
#define MAX_B_FRAMES 16
|
||||
|
||||
#define ME_MAP_SIZE 64
|
||||
#define ME_MAP_SHIFT 3
|
||||
#define ME_MAP_MV_BITS 11
|
||||
|
@ -290,6 +290,10 @@ av_cold int ff_MPV_encode_init(AVCodecContext *avctx)
|
||||
s->avctx = avctx;
|
||||
s->flags = avctx->flags;
|
||||
s->flags2 = avctx->flags2;
|
||||
if (avctx->max_b_frames > MAX_B_FRAMES) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Too many B-frames requested, maximum "
|
||||
"is %d.\n", MAX_B_FRAMES);
|
||||
}
|
||||
s->max_b_frames = avctx->max_b_frames;
|
||||
s->codec_id = avctx->codec->id;
|
||||
s->strict_std_compliance = avctx->strict_std_compliance;
|
||||
@ -1021,7 +1025,7 @@ static int estimate_best_b_count(MpegEncContext *s)
|
||||
{
|
||||
AVCodec *codec = avcodec_find_encoder(s->avctx->codec_id);
|
||||
AVCodecContext *c = avcodec_alloc_context3(NULL);
|
||||
AVFrame input[FF_MAX_B_FRAMES + 2];
|
||||
AVFrame input[MAX_B_FRAMES + 2];
|
||||
const int scale = s->avctx->brd_scale;
|
||||
int i, j, out_size, p_lambda, b_lambda, lambda2;
|
||||
int64_t best_rd = INT64_MAX;
|
||||
|
@ -101,7 +101,7 @@ static const AVOption avcodec_options[] = {
|
||||
{"qmin", "minimum video quantizer scale (VBR)", OFFSET(qmin), AV_OPT_TYPE_INT, {.i64 = 2 }, -1, 69, V|E},
|
||||
{"qmax", "maximum video quantizer scale (VBR)", OFFSET(qmax), AV_OPT_TYPE_INT, {.i64 = 31 }, -1, 69, V|E},
|
||||
{"qdiff", "maximum difference between the quantizer scales (VBR)", OFFSET(max_qdiff), AV_OPT_TYPE_INT, {.i64 = 3 }, INT_MIN, INT_MAX, V|E},
|
||||
{"bf", "use 'frames' B frames", OFFSET(max_b_frames), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, -1, FF_MAX_B_FRAMES, V|E},
|
||||
{"bf", "use 'frames' B frames", OFFSET(max_b_frames), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, -1, INT_MAX, V|E},
|
||||
{"b_qfactor", "QP factor between P- and B-frames", OFFSET(b_quant_factor), AV_OPT_TYPE_FLOAT, {.dbl = 1.25 }, -FLT_MAX, FLT_MAX, V|E},
|
||||
{"rc_strategy", "ratecontrol method", OFFSET(rc_strategy), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E},
|
||||
{"b_strategy", "strategy to choose between I/P/B-frames", OFFSET(b_frame_strategy), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, V|E},
|
||||
|
@ -109,5 +109,8 @@
|
||||
#ifndef FF_API_MB_TYPE
|
||||
#define FF_API_MB_TYPE (LIBAVCODEC_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
#ifndef FF_API_MAX_BFRAMES
|
||||
#define FF_API_MAX_BFRAMES (LIBAVCODEC_VERSION_MAJOR < 56)
|
||||
#endif
|
||||
|
||||
#endif /* AVCODEC_VERSION_H */
|
||||
|
Loading…
Reference in New Issue
Block a user