#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_input.h>
-
-
-#include <errno.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#include <ctype.h>
+#include <vlc_memory.h>
#include <vlc_demux.h>
-#include <vlc_charset.h>
#include "asademux.h"
demux_t *p_demux = (demux_t*)p_this;
demux_sys_t *p_sys;
es_format_t fmt;
- input_thread_t *p_input;
float f_fps;
char *psz_type;
int64_t i_ssize;
p_sys->i_microsecperframe = 40000;
/* Get the FPS */
- p_input = (input_thread_t *)vlc_object_find( p_demux, VLC_OBJECT_INPUT, FIND_PARENT );
- if( p_input )
- {
- f_fps = var_GetFloat( p_input, "sub-original-fps" );
- if( f_fps >= 1.0 )
- p_sys->i_microsecperframe = (int64_t)( (float)1000000 / f_fps );
+ f_fps = var_CreateGetFloat( p_demux, "sub-original-fps" );
+ if( f_fps >= 1.0 )
+ p_sys->i_microsecperframe = (int64_t)( (float)1000000 / f_fps );
- msg_Dbg( p_demux, "Movie fps: %f", f_fps );
- vlc_object_release( p_input );
- }
+ msg_Dbg( p_demux, "Movie fps: %f", f_fps );
/* Check for override of the fps */
f_fps = var_CreateGetFloat( p_demux, "sub-fps" );
p_sys->i_length = p_sys->subtitle[p_sys->i_subtitles-1].i_stop;
/* +1 to avoid 0 */
if( p_sys->i_length <= 0 )
- p_sys->i_length = p_sys->subtitle[p_sys->i_subtitles-1].i_start+1;
+ p_sys->i_length = p_sys->subtitle[p_sys->i_subtitles-1].i_start + VLC_TS_0;
}
/* *** add subtitle ES *** */
if( p_sys->i_subtitles >= p_sys->i_subs_alloc )
{
p_sys->i_subs_alloc += 500;
- if( !( p_sys->subtitle = realloc( p_sys->subtitle, sizeof(subtitle_t)
- * p_sys->i_subs_alloc ) ) )
+ if( !( p_sys->subtitle = realloc_or_free( p_sys->subtitle,
+ sizeof(subtitle_t) * p_sys->i_subs_alloc ) ) )
{
return VLC_ENOMEM;
}
continue;
}
- p_block->i_pts = p_sys->subtitle[p_sys->i_subtitle].i_start;
- p_block->i_dts = p_block->i_pts;
- if( p_sys->subtitle[p_sys->i_subtitle].i_stop > 0 )
+ p_block->i_pts = VLC_TS_0 + p_sys->subtitle[p_sys->i_subtitle].i_start;
+ p_block->i_dts = VLC_TS_0 + p_block->i_pts;
+ if( p_sys->subtitle[p_sys->i_subtitle].i_stop >= 0 )
{
p_block->i_length =
p_sys->subtitle[p_sys->i_subtitle].i_stop - p_block->i_pts;
memcpy( p_block->p_buffer,
p_sys->subtitle[p_sys->i_subtitle].psz_text, i_len );
- if( p_block->i_pts > 0 )
+ if( p_block->i_pts > VLC_TS_INVALID )
{
es_out_Send( p_demux->out, p_sys->es, p_block );
}