{
int64_t i_delay = var_GetTime( p_input, "spu-delay" );
- i_delay -= 10000; /* 10 ms */
+ i_delay -= 50000; /* 50 ms */
var_SetTime( p_input, "spu-delay", i_delay );
ClearChannels( p_intf, p_vout );
{
int64_t i_delay = var_GetTime( p_input, "spu-delay" );
- i_delay += 10000; /* 10 ms */
+ i_delay += 50000; /* 50 ms */
var_SetTime( p_input, "spu-delay", i_delay );
ClearChannels( p_intf, p_vout );
add_float( "sub-fps", 0.0, NULL,
N_("Frames per second"),
SUB_FPS_LONGTEXT, VLC_TRUE );
+ add_integer( "sub-delay", 0, NULL,
+ N_("Subtitles delay"),
+ SUB_DELAY_LONGTEXT, VLC_TRUE );
add_string( "sub-type", "auto", NULL, "Subtitles fileformat",
SUB_TYPE_LONGTEXT, VLC_TRUE );
change_string_list( ppsz_sub_type, 0, 0 );
int64_t i_next_demux_date;
int64_t i_microsecperframe;
+ mtime_t i_original_mspf;
char *psz_header;
int i_subtitle;
int i_subtitles;
subtitle_t *subtitle;
- mtime_t i_original_mspf;
int64_t i_length;
};
p_sys->i_subtitle = 0;
p_sys->i_subtitles= 0;
p_sys->subtitle = NULL;
- p_sys->i_original_mspf = 0;
/* Get the FPS */
p_sys->i_microsecperframe = (mtime_t)( (float)1000000 / f_fps );
}
+ f_fps = var_CreateGetFloat( p_demux, "sub-original-fps" );
+ if( f_fps >= 1.0 )
+ {
+ p_sys->i_original_mspf = (mtime_t)( (float)1000000 / f_fps );
+ }
+ else
+ {
+ p_sys->i_original_mspf = 0;
+ }
+
/* Get or probe the type */
p_sys->i_type = SUB_TYPE_UNKNOWN;
psz_type = var_CreateGetString( p_demux, "sub-type" );
p_sys->i_original_mspf != 0)
{
p_subtitle->i_start = (mtime_t)i_start *
- p_sys->i_original_mspf /
- p_sys->i_microsecperframe;
+ p_sys->i_microsecperframe/
+ p_sys->i_original_mspf;
p_subtitle->i_stop = (mtime_t)i_stop *
- p_sys->i_original_mspf /
- p_sys->i_microsecperframe;
+ p_sys->i_microsecperframe /
+ p_sys->i_original_mspf;
}
return 0;
}
vlc_value_t val;
double f_fps;
vlc_meta_t *p_meta, *p_meta_user;
- int i;
+ int i, i_delay;
/* Initialize optional stream output. (before access/demuxer) */
psz = var_GetString( p_input, "sout" );
f_fps > 1.0 )
{
vlc_value_t fps;
+ float f_requested_fps;
+
+ var_Create( p_input, "sub-original-fps", VLC_VAR_FLOAT );
+ var_SetFloat( p_input, "sub-original-fps", f_fps );
- if( var_Get( p_input, "sub-fps", &fps ) )
+ f_requested_fps = var_CreateGetFloat( p_input, "sub-fps" );
+ if( f_requested_fps != f_fps )
{
var_Create( p_input, "sub-fps", VLC_VAR_FLOAT| VLC_VAR_DOINHERIT );
- var_SetFloat( p_input, "sub-fps", f_fps );
+ var_SetFloat( p_input, "sub-fps", f_requested_fps );
}
}
+ i_delay = var_CreateGetInteger( p_input, "sub-delay" );
+
+ if( i_delay != 0 )
+ {
+ var_SetTime( p_input, "spu-delay", (mtime_t)i_delay * 100000 );
+ }
+
+
/* Look for and add subtitle files */
psz_subtitle = var_GetString( p_input, "sub-file" );
if( *psz_subtitle )