aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/libx264.c
diff options
context:
space:
mode:
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>2011-05-10 16:40:21 -0700
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>2011-05-10 16:42:52 -0700
commit580fa76c5c8b4372247221a4602527a060e2d5b4 (patch)
tree5df96f5728cbc9fb2789374c40590bac887d34fd /libavcodec/libx264.c
parent3732c483040f0309505f1aa896fdefef5083ba34 (diff)
downloadffmpeg-580fa76c5c8b4372247221a4602527a060e2d5b4.tar.gz
Allocate per codec options, now that options are freed between inputs and outputs.
Diffstat (limited to 'libavcodec/libx264.c')
-rw-r--r--libavcodec/libx264.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
index 7d137a7070..838cb703e8 100644
--- a/libavcodec/libx264.c
+++ b/libavcodec/libx264.c
@@ -35,13 +35,13 @@ typedef struct X264Context {
uint8_t *sei;
int sei_size;
AVFrame out_pic;
- const char *preset;
- const char *tune;
- const char *profile;
- const char *level;
+ char *preset;
+ char *tune;
+ char *profile;
+ char *level;
int fastfirstpass;
- const char *stats;
- const char *weightp;
+ char *stats;
+ char *weightp;
} X264Context;
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)
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;
}
@@ -185,7 +192,7 @@ static void check_default_settings(AVCodecContext *avctx)
score += x4->params.analyse.inter == 0 && x4->params.analyse.i_subpel_refine == 8;
if (score >= 5) {
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)
avctx->crf = 23;
}