2018-05-01 22:33:59 +02:00
|
|
|
From 5d003fa5df276b62efe82329ef9ce2fd30a34f46 Mon Sep 17 00:00:00 2001
|
2018-05-01 08:23:45 +02:00
|
|
|
From: Ilkka Ollakka <ileoo@videolan.org>
|
2018-05-01 22:33:59 +02:00
|
|
|
Date: Sat, 24 Mar 2018 11:23:33 +0200
|
|
|
|
Subject: [PATCH] x264: drop <148 build support and fix 10bit support
|
2018-05-01 08:23:45 +02:00
|
|
|
|
|
|
|
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>
|
|
|
|
---
|
2018-05-01 22:33:59 +02:00
|
|
|
modules/codec/x264.c | 65 ++++++++--------------------------------------------
|
|
|
|
1 file changed, 10 insertions(+), 55 deletions(-)
|
2018-05-01 08:23:45 +02:00
|
|
|
|
|
|
|
diff --git a/modules/codec/x264.c b/modules/codec/x264.c
|
2018-05-01 22:33:59 +02:00
|
|
|
index be5d0006de..96a4b08524 100644
|
2018-05-01 08:23:45 +02:00
|
|
|
--- a/modules/codec/x264.c
|
|
|
|
+++ b/modules/codec/x264.c
|
2018-05-01 22:33:59 +02:00
|
|
|
@@ -83,13 +83,7 @@ static void x264_log( void *, int i_level, const char *psz, va_list );
|
2018-05-01 08:23:45 +02:00
|
|
|
"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" \
|
2018-05-01 22:33:59 +02:00
|
|
|
@@ -471,16 +465,10 @@ vlc_module_begin ()
|
2018-05-01 08:23:45 +02:00
|
|
|
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 )
|
2018-05-01 22:33:59 +02:00
|
|
|
@@ -500,13 +488,8 @@ vlc_module_begin ()
|
2018-05-01 08:23:45 +02:00
|
|
|
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,
|
2018-05-01 22:33:59 +02:00
|
|
|
@@ -543,22 +526,18 @@ vlc_module_begin ()
|
2018-05-01 08:23:45 +02:00
|
|
|
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 */
|
2018-05-01 22:33:59 +02:00
|
|
|
@@ -843,20 +822,14 @@ static int Open ( vlc_object_t *p_this )
|
2018-05-01 08:23:45 +02:00
|
|
|
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" ) )
|
|
|
|
{
|
2018-05-01 22:33:59 +02:00
|
|
|
@@ -879,7 +852,6 @@ static int Open ( vlc_object_t *p_this )
|
2018-05-01 08:23:45 +02:00
|
|
|
msg_Err( p_enc, "Only high-profiles and 10-bit are supported");
|
|
|
|
return VLC_EGENERIC;
|
|
|
|
}
|
|
|
|
-
|
|
|
|
# endif
|
|
|
|
}
|
|
|
|
# ifdef MODULE_NAME_IS_x26410b
|
2018-05-01 22:33:59 +02:00
|
|
|
@@ -890,7 +862,6 @@ static int Open ( vlc_object_t *p_this )
|
2018-05-01 08:23:45 +02:00
|
|
|
}
|
|
|
|
# endif
|
|
|
|
free( psz_profile );
|
|
|
|
-#endif //X264_BUILD
|
|
|
|
|
|
|
|
p_enc->pf_encode_video = Encode;
|
|
|
|
p_enc->pf_encode_audio = NULL;
|
2018-05-01 22:33:59 +02:00
|
|
|
@@ -913,6 +884,10 @@ static int Open ( vlc_object_t *p_this )
|
2018-05-01 08:23:45 +02:00
|
|
|
#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 );
|
2018-05-01 22:33:59 +02:00
|
|
|
@@ -1045,10 +1020,8 @@ static int Open ( vlc_object_t *p_this )
|
2018-05-01 08:23:45 +02:00
|
|
|
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;
|
2018-05-01 22:33:59 +02:00
|
|
|
@@ -1064,26 +1037,14 @@ static int Open ( vlc_object_t *p_this )
|
2018-05-01 08:23:45 +02:00
|
|
|
|
|
|
|
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;
|
2018-05-01 22:33:59 +02:00
|
|
|
@@ -1121,14 +1082,12 @@ static int Open ( vlc_object_t *p_this )
|
2018-05-01 08:23:45 +02:00
|
|
|
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" );
|
2018-05-01 22:33:59 +02:00
|
|
|
@@ -1486,11 +1445,7 @@ static block_t *Encode( encoder_t *p_enc, picture_t *p_pict )
|
2018-05-01 08:23:45 +02:00
|
|
|
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;
|
2018-05-01 22:33:59 +02:00
|
|
|
--
|
|
|
|
2.14.3
|
|
|
|
|