]> git.sesse.net Git - vlc/blobdiff - modules/codec/x264.c
Qt4: forward and back were using key-pressed where they should be using key-action...
[vlc] / modules / codec / x264.c
index 378fb79cdd4be42a9d7fc08853281b2fd1633c57..4b4c1b13f9a8c82ca9260d7550f582c1e7e9a83f 100644 (file)
@@ -30,7 +30,6 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
-#include <vlc_vout.h>
 #include <vlc_sout.h>
 #include <vlc_codec.h>
 
@@ -75,7 +74,7 @@ static void Close( vlc_object_t * );
     "I-frames are inserted only every other keyint frames, which probably " \
     "leads to ugly encoding artifacts. Range 1 to 100." )
 
-#if X264_BUILD >= 55 /* r607 */
+#if X264_BUILD >= 55 /* r607 */ && X264_BUILD < 67 /* r1117 */
 #define PRESCENE_TEXT N_("Faster, less precise scenecut detection" )
 #define PRESCENE_LONGTEXT N_( "Faster, less precise scenecut detection. " \
     "Required and implied by multi-threading." )
@@ -435,8 +434,12 @@ vlc_module_begin ()
         change_integer_range( -1, 100 )
 
 #if X264_BUILD >= 55 /* r607 */
+#  if X264_BUILD < 67 /* r1117 */
     add_bool( SOUT_CFG_PREFIX "pre-scenecut", 0, NULL, PRESCENE_TEXT,
               PRESCENE_LONGTEXT, false )
+#  else
+    add_obsolete_bool( SOUT_CFG_PREFIX "pre-scenecut" )
+#  endif
 #endif
 
     add_integer( SOUT_CFG_PREFIX "bframes", 0, NULL, BFRAMES_TEXT,
@@ -606,9 +609,13 @@ vlc_module_begin ()
         change_integer_range( 1, SUBME_MAX )
         add_deprecated_alias( SOUT_CFG_PREFIX "subpel" ) /* Deprecated since 0.8.5 */
 
-#if X264_BUILD >= 41 && X264_BUILD < 65 /* r368 */
+#if X264_BUILD >= 41
+# if X264_BUILD < 65 /* r368 */
     add_bool( SOUT_CFG_PREFIX "b-rdo", 0, NULL, B_RDO_TEXT,
               B_RDO_LONGTEXT, false )
+# else
+    add_obsolete_bool( SOUT_CFG_PREFIX "b-rdo" )
+# endif
 #endif
 
 #if X264_BUILD >= 36 /* r318 */
@@ -621,9 +628,13 @@ vlc_module_begin ()
               CHROMA_ME_LONGTEXT, false )
 #endif
 
-#if X264_BUILD >= 43 && X264_BUILD < 65 /* r390 */
+#if X264_BUILD >= 43
+# if X264_BUILD < 65 /* r390 */
     add_bool( SOUT_CFG_PREFIX "bime", 0, NULL, BIME_TEXT,
               BIME_LONGTEXT, false )
+# else
+    add_obsolete_bool( SOUT_CFG_PREFIX "bime" )
+# endif
 #endif
 
 #if X264_BUILD >= 30 /* r251 */
@@ -749,7 +760,7 @@ static int  Open ( vlc_object_t *p_this )
     x264_nal_t    *nal;
     int i, i_nal;
 
-    if( p_enc->fmt_out.i_codec != VLC_FOURCC( 'h', '2', '6', '4' ) &&
+    if( p_enc->fmt_out.i_codec != VLC_CODEC_H264 &&
         !p_enc->b_force )
     {
         return VLC_EGENERIC;
@@ -780,8 +791,9 @@ static int  Open ( vlc_object_t *p_this )
 
     config_ChainParse( p_enc, SOUT_CFG_PREFIX, ppsz_sout_options, p_enc->p_cfg );
 
-    p_enc->fmt_out.i_codec = VLC_FOURCC( 'h', '2', '6', '4' );
-    p_enc->fmt_in.i_codec = VLC_FOURCC('I','4','2','0');
+    p_enc->fmt_out.i_cat = VIDEO_ES;
+    p_enc->fmt_out.i_codec = VLC_CODEC_H264;
+    p_enc->fmt_in.i_codec = VLC_CODEC_I420;
 
     p_enc->pf_encode_video = Encode;
     p_enc->pf_encode_audio = NULL;
@@ -790,6 +802,7 @@ static int  Open ( vlc_object_t *p_this )
         return VLC_ENOMEM;
     p_sys->i_interpolated_dts = 0;
     p_sys->psz_stat_name = NULL;
+    p_sys->p_buffer = NULL;
 
     x264_param_default( &p_sys->param );
     p_sys->param.i_width  = p_enc->fmt_in.video.i_width;
@@ -969,9 +982,12 @@ static int  Open ( vlc_object_t *p_this )
         p_sys->param.i_scenecut_threshold = val.i_int;
 #endif
 
-#if X264_BUILD >= 55 /* r607 */
+#if X264_BUILD >= 55 /* r607 */ && X264_BUILD < 67 /* r1117 */
     var_Get( p_enc, SOUT_CFG_PREFIX "pre-scenecut", &val );
     p_sys->param.b_pre_scenecut = val.b_bool;
+#endif
+
+#if X264_BUILD >= 55 /* r607 */
     var_Get( p_enc, SOUT_CFG_PREFIX "non-deterministic", &val );
     p_sys->param.b_deterministic = val.b_bool;
 #endif
@@ -1288,6 +1304,13 @@ static int  Open ( vlc_object_t *p_this )
     /* Open the encoder */
     p_sys->h = x264_encoder_open( &p_sys->param );
 
+    if( p_sys->h == NULL )
+    {
+        msg_Err( p_enc, "cannot open x264 encoder" );
+        Close( VLC_OBJECT(p_enc) );
+        return VLC_EGENERIC;
+    }
+
     /* alloc mem */
     p_sys->i_buffer = 4 * p_enc->fmt_in.video.i_width *
         p_enc->fmt_in.video.i_height + 1000;
@@ -1424,7 +1447,8 @@ static void Close( vlc_object_t *p_this )
 
     free( p_sys->psz_stat_name );
 
-    x264_encoder_close( p_sys->h );
+    if( p_sys->h )
+        x264_encoder_close( p_sys->h );
 
 #ifdef PTW32_STATIC_LIB
     vlc_value_t lock, count;