]> git.sesse.net Git - vlc/blobdiff - modules/codec/x264.c
Protect XInitThreads() with a global lock
[vlc] / modules / codec / x264.c
index 96b5f2c2121d65cbb89864c93fe8da69756d3373..29ad78b5098b70f20804e84ed270a761e21d832c 100644 (file)
@@ -437,8 +437,13 @@ vlc_module_begin ()
                  B_BIAS_LONGTEXT, false )
         change_integer_range( -100, 100 )
 
+#if X264_BUILD >= 87
+    add_string( SOUT_CFG_PREFIX "bpyramid", "normal", NULL, BPYRAMID_TEXT,
+              BPYRAMID_LONGTEXT, false )
+#else
     add_string( SOUT_CFG_PREFIX "bpyramid", "none", NULL, BPYRAMID_TEXT,
               BPYRAMID_LONGTEXT, false )
+#endif
         change_string_list( bpyramid_list, bpyramid_list, 0 );
 
     add_bool( SOUT_CFG_PREFIX "cabac", true, NULL, CABAC_TEXT, CABAC_LONGTEXT,
@@ -595,7 +600,7 @@ vlc_module_begin ()
 
     add_obsolete_bool( SOUT_CFG_PREFIX "bime" )
 
-    add_bool( SOUT_CFG_PREFIX "8x8dct", false, NULL, TRANSFORM_8X8DCT_TEXT,
+    add_bool( SOUT_CFG_PREFIX "8x8dct", true, NULL, TRANSFORM_8X8DCT_TEXT,
               TRANSFORM_8X8DCT_LONGTEXT, false )
 
     add_integer( SOUT_CFG_PREFIX "trellis", 1, NULL, TRELLIS_TEXT,
@@ -660,12 +665,10 @@ vlc_module_begin ()
     add_string( SOUT_CFG_PREFIX "stats", "x264_2pass.log", NULL, STATS_TEXT,
                 STATS_LONGTEXT, false )
 
-#if X264_BUILD >= 93
     add_string( SOUT_CFG_PREFIX "preset", NULL , NULL, PRESET_TEXT , PRESET_TEXT, false )
         change_string_list( x264_preset_names, x264_preset_names, 0 );
     add_string( SOUT_CFG_PREFIX "tune", NULL , NULL, TUNE_TEXT, TUNE_TEXT, false )
         change_string_list( x264_tune_names, x264_tune_names, 0 );
-#endif
 
 vlc_module_end ()
 
@@ -742,7 +745,6 @@ static int  Open ( vlc_object_t *p_this )
     p_sys->psz_stat_name = NULL;
 
     x264_param_default( &p_sys->param );
-#if X264_BUILD >= 93
     char *psz_preset = var_GetString( p_enc, SOUT_CFG_PREFIX  "preset" );
     char *psz_tune = var_GetString( p_enc, SOUT_CFG_PREFIX  "tune" );
     if( *psz_preset == '\0' )
@@ -753,7 +755,6 @@ static int  Open ( vlc_object_t *p_this )
     x264_param_default_preset( &p_sys->param, psz_preset, psz_tune );
     free( psz_preset );
     free( psz_tune );
-#endif
     p_sys->param.i_width  = p_enc->fmt_in.video.i_width;
     p_sys->param.i_height = p_enc->fmt_in.video.i_height;
 
@@ -906,16 +907,19 @@ static int  Open ( vlc_object_t *p_this )
     p_sys->param.b_intra_refresh = var_GetBool( p_enc, SOUT_CFG_PREFIX "intra-refresh" );
 
     psz_val = var_GetString( p_enc, SOUT_CFG_PREFIX "bpyramid" );
-    if( strcmp( psz_val, "none" ) )
+    if( !strcmp( psz_val, "normal" ) )
     {
-       if ( !strcmp( psz_val, "strict" ) )
-       {
-          p_sys->param.i_bframe_pyramid = X264_B_PYRAMID_STRICT;
-       } else if ( !strcmp( psz_val, "normal" ) )
-       {
-          p_sys->param.i_bframe_pyramid = X264_B_PYRAMID_NORMAL;
-       }
+        p_sys->param.i_bframe_pyramid = X264_B_PYRAMID_NORMAL;
     }
+    else if ( !strcmp( psz_val, "strict" ) )
+    {
+        p_sys->param.i_bframe_pyramid = X264_B_PYRAMID_STRICT;
+    }
+    else if ( !strcmp( psz_val, "none" ) )
+    {
+        p_sys->param.i_bframe_pyramid = X264_B_PYRAMID_NONE;
+    }
+
     free( psz_val );
 
     i_val = var_GetInteger( p_enc, SOUT_CFG_PREFIX "ref" );
@@ -1081,7 +1085,7 @@ static int  Open ( vlc_object_t *p_this )
     }
     free( psz_val );
 
-    if( var_GetBool( p_enc, SOUT_CFG_PREFIX "8x8dct" ) )
+    if( !var_GetBool( p_enc, SOUT_CFG_PREFIX "8x8dct" ) )
        p_sys->param.analyse.b_transform_8x8 = var_GetBool( p_enc,
                                     SOUT_CFG_PREFIX "8x8dct" );
 
@@ -1141,6 +1145,7 @@ static int  Open ( vlc_object_t *p_this )
             p_sys->param.b_cabac = 0;
             p_sys->param.i_bframe = 0;
             p_sys->param.analyse.i_weighted_pred = X264_WEIGHTP_NONE;
+            p_sys->param.i_bframe_pyramid = X264_B_PYRAMID_NONE;
         }
         else if (!strcasecmp( psz_val, "main" ) )
         {
@@ -1264,7 +1269,11 @@ 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 = X264_CSP_I420;