#include <vlc_common.h>
#include <vlc_plugin.h>
-#include <vlc_vout.h>
#include <vlc_sout.h>
#include <vlc_codec.h>
"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." )
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,
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 */
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 */
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;
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;
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;
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
/* 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;
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;