Commit 580fa76c authored by Baptiste Coudurier's avatar Baptiste Coudurier

Allocate per codec options, now that options are freed between inputs and outputs.

parent 3732c483
...@@ -435,7 +435,7 @@ void set_context_opts(void *ctx, void *opts_ctx, int flags, AVCodec *codec) ...@@ -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 { ...@@ -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) ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment