mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-29 18:53:02 +00:00
Allocate per codec options, now that options are freed between inputs and outputs.
This commit is contained in:
parent
3732c48304
commit
580fa76c5c
@ -435,7 +435,7 @@ void set_context_opts(void *ctx, void *opts_ctx, int flags, AVCodec *codec)
|
|||||||
const char *str;
|
const char *str;
|
||||||
if (priv_ctx) {
|
if (priv_ctx) {
|
||||||
if (av_find_opt(priv_ctx, opt_names[i], NULL, flags, flags)) {
|
if (av_find_opt(priv_ctx, opt_names[i], NULL, flags, flags)) {
|
||||||
if (av_set_string3(priv_ctx, opt_names[i], opt_values[i], 0, NULL) < 0) {
|
if (av_set_string3(priv_ctx, opt_names[i], opt_values[i], 1, NULL) < 0) {
|
||||||
fprintf(stderr, "Invalid value '%s' for option '%s'\n",
|
fprintf(stderr, "Invalid value '%s' for option '%s'\n",
|
||||||
opt_names[i], opt_values[i]);
|
opt_names[i], opt_values[i]);
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -35,13 +35,13 @@ typedef struct X264Context {
|
|||||||
uint8_t *sei;
|
uint8_t *sei;
|
||||||
int sei_size;
|
int sei_size;
|
||||||
AVFrame out_pic;
|
AVFrame out_pic;
|
||||||
const char *preset;
|
char *preset;
|
||||||
const char *tune;
|
char *tune;
|
||||||
const char *profile;
|
char *profile;
|
||||||
const char *level;
|
char *level;
|
||||||
int fastfirstpass;
|
int fastfirstpass;
|
||||||
const char *stats;
|
char *stats;
|
||||||
const char *weightp;
|
char *weightp;
|
||||||
} X264Context;
|
} X264Context;
|
||||||
|
|
||||||
static void X264_log(void *p, int level, const char *fmt, va_list args)
|
static void X264_log(void *p, int level, const char *fmt, va_list args)
|
||||||
@ -163,6 +163,13 @@ static av_cold int X264_close(AVCodecContext *avctx)
|
|||||||
if (x4->enc)
|
if (x4->enc)
|
||||||
x264_encoder_close(x4->enc);
|
x264_encoder_close(x4->enc);
|
||||||
|
|
||||||
|
av_free(x4->preset);
|
||||||
|
av_free(x4->tune);
|
||||||
|
av_free(x4->profile);
|
||||||
|
av_free(x4->level);
|
||||||
|
av_free(x4->stats);
|
||||||
|
av_free(x4->weightp);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,7 +192,7 @@ static void check_default_settings(AVCodecContext *avctx)
|
|||||||
score += x4->params.analyse.inter == 0 && x4->params.analyse.i_subpel_refine == 8;
|
score += x4->params.analyse.inter == 0 && x4->params.analyse.i_subpel_refine == 8;
|
||||||
if (score >= 5) {
|
if (score >= 5) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "Default settings detected, using medium profile\n");
|
av_log(avctx, AV_LOG_ERROR, "Default settings detected, using medium profile\n");
|
||||||
x4->preset = "medium";
|
x4->preset = av_strdup("medium");
|
||||||
if (avctx->bit_rate == 200*100)
|
if (avctx->bit_rate == 200*100)
|
||||||
avctx->crf = 23;
|
avctx->crf = 23;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user