| From 5d003fa5df276b62efe82329ef9ce2fd30a34f46 Mon Sep 17 00:00:00 2001 |
| From: Ilkka Ollakka <ileoo@videolan.org> |
| Date: Sat, 24 Mar 2018 11:23:33 +0200 |
| Subject: [PATCH] x264: drop <148 build support and fix 10bit support |
| |
| x264: drop <148 build support and fix 10bit support |
| |
| Drop old #if as 148 is not that recent anymore. |
| |
| fixes #19581 |
| |
| Rebased upstream commit |
| http://git.videolan.org/?p=vlc.git;a=commitdiff;h=a8953ba707cca1f2de372ca24513296bcfcdaaa8 |
| |
| Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> |
| --- |
| modules/codec/x264.c | 65 ++++++++-------------------------------------------- |
| 1 file changed, 10 insertions(+), 55 deletions(-) |
| |
| diff --git a/modules/codec/x264.c b/modules/codec/x264.c |
| index be5d0006de..96a4b08524 100644 |
| --- a/modules/codec/x264.c |
| +++ b/modules/codec/x264.c |
| @@ -83,13 +83,7 @@ static void x264_log( void *, int i_level, const char *psz, va_list ); |
| "I-frames, but do not start a new GOP." ) |
| |
| #define OPENGOP_TEXT N_("Use recovery points to close GOPs") |
| -#if X264_BUILD < 115 |
| -#define OPENGOP_LONGTEXT N_("none: use closed GOPs only\n"\ |
| - "normal: use standard open GOPs\n" \ |
| - "bluray: use Blu-ray compatible open GOPs" ) |
| -#else |
| #define OPENGOP_LONGTEXT N_("use open GOP, for bluray compatibility use also bluray-compat option") |
| -#endif |
| |
| #define BLURAY_TEXT N_("Enable compatibility hacks for Blu-ray support") |
| #define BLURAY_LONGTEXT N_("Enable hacks for Blu-ray support, this doesn't enforce every aspect of Blu-ray compatibility\n" \ |
| @@ -471,16 +465,10 @@ vlc_module_begin () |
| add_integer( SOUT_CFG_PREFIX "min-keyint", 25, MIN_KEYINT_TEXT, |
| MIN_KEYINT_LONGTEXT, true ) |
| |
| -#if X264_BUILD >= 102 && X264_BUILD <= 114 |
| - add_string( SOUT_CFG_PREFIX "opengop", "none", OPENGOP_TEXT, |
| - OPENGOP_LONGTEXT, true ) |
| - change_string_list( x264_open_gop_names, x264_open_gop_names ) |
| -#elif X264_BUILD > 114 |
| add_bool( SOUT_CFG_PREFIX "opengop", false, OPENGOP_TEXT, |
| OPENGOP_LONGTEXT, true ) |
| add_bool( SOUT_CFG_PREFIX "bluray-compat", false, BLURAY_TEXT, |
| BLURAY_LONGTEXT, true ) |
| -#endif |
| |
| add_integer( SOUT_CFG_PREFIX "scenecut", 40, SCENE_TEXT, |
| SCENE_LONGTEXT, true ) |
| @@ -500,13 +488,8 @@ vlc_module_begin () |
| B_BIAS_LONGTEXT, true ) |
| change_integer_range( -100, 100 ) |
| |
| -#if X264_BUILD >= 87 |
| add_string( SOUT_CFG_PREFIX "bpyramid", "normal", BPYRAMID_TEXT, |
| BPYRAMID_LONGTEXT, true ) |
| -#else |
| - add_string( SOUT_CFG_PREFIX "bpyramid", "none", BPYRAMID_TEXT, |
| - BPYRAMID_LONGTEXT, true ) |
| -#endif |
| change_string_list( bpyramid_list, bpyramid_list ) |
| |
| add_bool( SOUT_CFG_PREFIX "cabac", true, CABAC_TEXT, CABAC_LONGTEXT, |
| @@ -543,22 +526,18 @@ vlc_module_begin () |
| add_bool( SOUT_CFG_PREFIX "interlaced", false, INTERLACED_TEXT, INTERLACED_LONGTEXT, |
| true ) |
| |
| -#if X264_BUILD >= 111 |
| add_integer( SOUT_CFG_PREFIX "frame-packing", -1, FRAMEPACKING_TEXT, FRAMEPACKING_LONGTEXT, true ) |
| change_integer_list( framepacking_list, framepacking_list_text ) |
| change_integer_range( -1, 5) |
| -#endif |
| |
| add_integer( SOUT_CFG_PREFIX "slices", 0, SLICE_COUNT, SLICE_COUNT_LONGTEXT, true ) |
| add_integer( SOUT_CFG_PREFIX "slice-max-size", 0, SLICE_MAX_SIZE, SLICE_MAX_SIZE_LONGTEXT, true ) |
| add_integer( SOUT_CFG_PREFIX "slice-max-mbs", 0, SLICE_MAX_MBS, SLICE_MAX_MBS_LONGTEXT, true ) |
| |
| -#if X264_BUILD >= 89 |
| add_string( SOUT_CFG_PREFIX "hrd", "none", HRD_TEXT, HRD_TEXT, true ) |
| vlc_config_set (VLC_CONFIG_LIST, |
| (sizeof(x264_nal_hrd_names) / sizeof (char*)) - 1, |
| x264_nal_hrd_names, x264_nal_hrd_names); |
| -#endif |
| |
| |
| /* Ratecontrol */ |
| @@ -843,20 +822,14 @@ static int Open ( vlc_object_t *p_this ) |
| fullrange = var_GetBool( p_enc, SOUT_CFG_PREFIX "fullrange" ); |
| p_enc->fmt_in.i_codec = fullrange ? VLC_CODEC_J420 : VLC_CODEC_I420; |
| p_sys->i_colorspace = X264_CSP_I420; |
| -#if X264_BUILD >= 118 |
| char *psz_profile = var_GetString( p_enc, SOUT_CFG_PREFIX "profile" ); |
| - if( psz_profile ) |
| - { |
| - const int mask = x264_bit_depth > 8 ? X264_CSP_HIGH_DEPTH : 0; |
| - |
| - |
| # ifdef MODULE_NAME_IS_x26410b |
| - if( mask == 0) |
| - { |
| - msg_Err( p_enc, "Only high bith depth encoding supported, bit depth:%d", x264_bit_depth); |
| - return VLC_EGENERIC; |
| - } |
| + const int mask = X264_CSP_HIGH_DEPTH; |
| +# else |
| + const int mask = 0; |
| # endif |
| + if( psz_profile ) |
| + { |
| |
| if( !strcmp( psz_profile, "high10" ) ) |
| { |
| @@ -879,7 +852,6 @@ static int Open ( vlc_object_t *p_this ) |
| msg_Err( p_enc, "Only high-profiles and 10-bit are supported"); |
| return VLC_EGENERIC; |
| } |
| - |
| # endif |
| } |
| # ifdef MODULE_NAME_IS_x26410b |
| @@ -890,7 +862,6 @@ static int Open ( vlc_object_t *p_this ) |
| } |
| # endif |
| free( psz_profile ); |
| -#endif //X264_BUILD |
| |
| p_enc->pf_encode_video = Encode; |
| p_enc->pf_encode_audio = NULL; |
| @@ -913,6 +884,10 @@ static int Open ( vlc_object_t *p_this ) |
| #else |
| x264_param_default( &p_sys->param ); |
| x264_param_default_preset( &p_sys->param, psz_preset, psz_tune ); |
| +# if X264_BUILD > 152 |
| + if( mask ) |
| + p_sys->param.i_bitdepth = 10; |
| +# endif |
| #endif |
| free( psz_preset ); |
| free( psz_tune ); |
| @@ -1045,10 +1020,8 @@ static int Open ( vlc_object_t *p_this ) |
| if( fabs( var_GetFloat( p_enc, SOUT_CFG_PREFIX "aq-strength" ) - 1.0) > 0.005 ) |
| p_sys->param.rc.f_aq_strength = var_GetFloat( p_enc, SOUT_CFG_PREFIX "aq-strength" ); |
| |
| -#if X264_BUILD >= 111 |
| if( var_GetInteger( p_enc, SOUT_CFG_PREFIX "frame-packing" ) > -1 ) |
| p_sys->param.i_frame_packing = var_GetInteger( p_enc, SOUT_CFG_PREFIX "frame-packing" ); |
| -#endif |
| |
| if( var_GetBool( p_enc, SOUT_CFG_PREFIX "verbose" ) ) |
| p_sys->param.i_log_level = X264_LOG_DEBUG; |
| @@ -1064,26 +1037,14 @@ static int Open ( vlc_object_t *p_this ) |
| |
| i_val = var_GetInteger( p_enc, SOUT_CFG_PREFIX "keyint" ); |
| if( i_val > 0 && i_val != 250 ) p_sys->param.i_keyint_max = i_val; |
| -#if X264_BUILD >= 102 |
| if( i_val == -1 ) p_sys->param.i_keyint_max = X264_KEYINT_MAX_INFINITE; |
| -#endif |
| |
| i_val = var_GetInteger( p_enc, SOUT_CFG_PREFIX "min-keyint" ); |
| if( i_val > 0 && i_val != 25 ) p_sys->param.i_keyint_min = i_val; |
| |
| -#if X264_BUILD >= 102 && X264_BUILD <= 114 |
| - psz_val = var_GetString( p_enc, SOUT_CFG_PREFIX "opengop" ); |
| - if( !strcmp( psz_val, "none" ) ) |
| - p_sys->param.i_open_gop = X264_OPEN_GOP_NONE; |
| - else if( !strcmp( psz_val, "normal" ) ) |
| - p_sys->param.i_open_gop = X264_OPEN_GOP_NORMAL; |
| - else if( !strcmp( psz_val, "bluray" ) ) |
| - p_sys->param.i_open_gop = X264_OPEN_GOP_BLURAY; |
| - free( psz_val ); |
| -#elif X264_BUILD >= 115 |
| p_sys->param.b_open_gop = var_GetBool( p_enc, SOUT_CFG_PREFIX "opengop" ); |
| p_sys->param.b_bluray_compat = var_GetBool( p_enc, SOUT_CFG_PREFIX "bluray-compat" ); |
| -#endif |
| + |
| i_val = var_GetInteger( p_enc, SOUT_CFG_PREFIX "bframes" ); |
| if( i_val >= 0 && i_val <= 16 && i_val != 3 ) |
| p_sys->param.i_bframe = i_val; |
| @@ -1121,14 +1082,12 @@ static int Open ( vlc_object_t *p_this ) |
| if( i_val >= 1 && i_val != 7 ) |
| p_sys->param.analyse.i_subpel_refine = i_val; |
| |
| -#if X264_BUILD >= 89 |
| psz_val = var_GetString( p_enc, SOUT_CFG_PREFIX "hrd"); |
| if( !strcmp( psz_val, "vbr" ) ) |
| p_sys->param.i_nal_hrd = X264_NAL_HRD_VBR; |
| else if( !strcmp( psz_val, "cbr" ) ) |
| p_sys->param.i_nal_hrd = X264_NAL_HRD_CBR; |
| free( psz_val ); |
| -#endif |
| |
| //TODO: psz_val == NULL ? |
| psz_val = var_GetString( p_enc, SOUT_CFG_PREFIX "me" ); |
| @@ -1486,11 +1445,7 @@ static block_t *Encode( encoder_t *p_enc, picture_t *p_pict ) |
| int i_nal=0, i_out=0, i=0; |
| |
| /* init pic */ |
| -#if X264_BUILD >= 98 |
| x264_picture_init( &pic ); |
| -#else |
| - memset( &pic, 0, sizeof( x264_picture_t ) ); |
| -#endif |
| if( likely(p_pict) ) { |
| pic.i_pts = p_pict->date; |
| pic.img.i_csp = p_sys->i_colorspace; |
| -- |
| 2.14.3 |
| |