summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--contrib/x264/module.defs2
-rw-r--r--libhb/encx264.c45
2 files changed, 46 insertions, 1 deletions
diff --git a/contrib/x264/module.defs b/contrib/x264/module.defs
index 382bff46a..cd239f674 100644
--- a/contrib/x264/module.defs
+++ b/contrib/x264/module.defs
@@ -1,7 +1,7 @@
$(eval $(call import.MODULE.defs,X264,x264,PTHREADW32))
$(eval $(call import.CONTRIB.defs,X264))
-X264.FETCH.url = http://download.m0k.org/handbrake/contrib/x264-r1195-5d75a9b.tar.gz
+X264.FETCH.url = http://download.m0k.org/handbrake/contrib/x264-r1259-dd026f2.tar.gz
X264.EXTRACT.tarbase = x264
X264.CONFIGURE.deps =
diff --git a/libhb/encx264.c b/libhb/encx264.c
index 249d42c5a..a68bbd4a6 100644
--- a/libhb/encx264.c
+++ b/libhb/encx264.c
@@ -87,6 +87,51 @@ int encx264Init( hb_work_object_t * w, hb_job_t * job )
x264_param_default( &param );
+ /* Temporarily default mbtree to off for baseline,
+ overridable through x264 option strings. */
+ if( job->x264opts != NULL && *job->x264opts != '\0' )
+ {
+ char *x264opts, *x264opts_start;
+
+ x264opts = x264opts_start = strdup(job->x264opts);
+
+ while( x264opts_start && *x264opts )
+ {
+ char *name = x264opts;
+ char *value;
+ int ret;
+
+ x264opts += strcspn( x264opts, ":" );
+ if( *x264opts )
+ {
+ *x264opts = 0;
+ x264opts++;
+ }
+
+ value = strchr( name, '=' );
+ if( value )
+ {
+ *value = 0;
+ value++;
+ }
+
+ /*
+ When B-frames are enabled, the max frame count increments
+ by 1 (regardless of the number of B-frames). If you don't
+ change the duration of the video track when you mux, libmp4
+ barfs. So, check if the x264opts aren't using B-frames, and
+ when they aren't, set the boolean job->areBframes as false.
+ */
+ if( !( strcmp( name, "bframes" ) ) )
+ {
+ if( atoi( value ) == 0 )
+ {
+ param.rc.b_mb_tree = 0;
+ }
+ }
+ }
+ }
+
/* Enable metrics */
param.analyse.b_psnr = 1;
param.analyse.b_ssim = 1;