aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/libx264.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-05-18 15:39:40 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-05-18 17:17:47 +0200
commitd1f9621d39b80add240d09daf1328ceae613bcd4 (patch)
treeef8cde868bb0a31e003c44e2ea132cbe9caa4b45 /libavcodec/libx264.c
parente89403216cc15563a7f701a9e6547abf2b8ad7a9 (diff)
downloadffmpeg-d1f9621d39b80add240d09daf1328ceae613bcd4.tar.gz
libx264: support passing arbitrary parameters.
Idea taken from mencoder. This should fix conflicts with presets as long as the new system is used. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/libx264.c')
-rw-r--r--libavcodec/libx264.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c
index eae21fe2bb..519dc511ec 100644
--- a/libavcodec/libx264.c
+++ b/libavcodec/libx264.c
@@ -42,6 +42,7 @@ typedef struct X264Context {
int fastfirstpass;
char *stats;
char *weightp;
+ char *x264opts;
} X264Context;
static void X264_log(void *p, int level, const char *fmt, va_list args)
@@ -344,6 +345,17 @@ static av_cold int X264_init(AVCodecContext *avctx)
OPT_STR("level", x4->level);
+ if(x4->x264opts){
+ const char *p= x4->x264opts;
+ while(p){
+ char param[256]={0}, val[256]={0};
+ sscanf(p, "%255[^:=]=%255[^:]", param, val);
+ OPT_STR(param, val);
+ p= strchr(p, ':');
+ p+=!!p;
+ }
+ }
+
if (x4->fastfirstpass)
x264_param_apply_fastfirstpass(&x4->params);
@@ -416,6 +428,7 @@ static const AVOption options[] = {
{"level", "Specify level (as defined by Annex A)", OFFSET(level), FF_OPT_TYPE_STRING, 0, 0, 0, VE},
{"passlogfile", "Filename for 2 pass stats", OFFSET(stats), FF_OPT_TYPE_STRING, 0, 0, 0, VE},
{"wpredp", "Weighted prediction for P-frames", OFFSET(weightp), FF_OPT_TYPE_STRING, 0, 0, 0, VE},
+ {"x264opts", "x264 options", OFFSET(x264opts), FF_OPT_TYPE_STRING, 0, 0, 0, VE},
{ NULL },
};