diff options
-rw-r--r-- | contrib/x264/module.defs | 2 | ||||
-rw-r--r-- | libhb/encx264.c | 45 |
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( ¶m ); + /* 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; |