/*****************************************************************************
* Preamble
*****************************************************************************/
-#include <vlc/vlc.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc_common.h>
+#include <vlc_plugin.h>
#include <errno.h>
#include <sys/types.h>
static void Close( vlc_object_t *p_this );
vlc_module_begin();
- set_description( _("Vobsub subtitles parser") );
+ set_description( N_("Vobsub subtitles parser") );
set_category( CAT_INPUT );
set_subcategory( SUBCAT_INPUT_DEMUX );
- set_capability( "demux2", 1 );
+ set_capability( "demux", 1 );
set_callbacks( Open, Close );
int i_original_frame_width;
int i_original_frame_height;
- vlc_bool_t b_palette;
+ bool b_palette;
uint32_t palette[16];
};
p_sys->track = (vobsub_track_t *)malloc( sizeof( vobsub_track_t ) );
p_sys->i_original_frame_width = -1;
p_sys->i_original_frame_height = -1;
- p_sys->b_palette = VLC_FALSE;
+ p_sys->b_palette = false;
memset( p_sys->palette, 0, 16 * sizeof( uint32_t ) );
/* Load the whole file */
}
}
- asprintf( &psz_vobname, "%s://%s", p_demux->psz_access, p_demux->psz_path );
+ if( asprintf( &psz_vobname, "%s://%s", p_demux->psz_access, p_demux->psz_path ) == -1 )
+ {
+ free( p_sys );
+ return VLC_EGENERIC;
+ }
i_len = strlen( psz_vobname );
if( i_len >= 4 ) memcpy( psz_vobname + i_len - 4, ".sub", 4 );
/* Clean all subs from all tracks */
for( i = 0; i < p_sys->i_tracks; i++ )
- {
- if( p_sys->track[i].p_subtitles ) free( p_sys->track[i].p_subtitles );
- }
- if( p_sys->track ) free( p_sys->track );
+ free( p_sys->track[i].p_subtitles );
+
+ free( p_sys->track );
if( p_sys->p_vobsub_stream )
stream_Delete( p_sys->p_vobsub_stream );
pi64 = (int64_t*)va_arg( args, int64_t * );
for( i = 0; i < p_sys->i_tracks; i++ )
{
- vlc_bool_t b_selected;
+ bool b_selected;
/* Check the ES is selected */
es_out_Control( p_demux->out, ES_OUT_GET_ES_STATE,
p_sys->track[i].p_es, &b_selected );
pf = (double*)va_arg( args, double * );
for( i = 0; i < p_sys->i_tracks; i++ )
{
- vlc_bool_t b_selected;
+ bool b_selected;
/* Check the ES is selected */
es_out_Control( p_demux->out, ES_OUT_GET_ES_STATE,
p_sys->track[i].p_es, &b_selected );
{
demux_sys_t *p_sys = p_demux->p_sys;
int64_t i_maxdate;
- int i;
+ int i, i_read;
for( i = 0; i < p_sys->i_tracks; i++ )
{
}
/* read data */
- p_block->i_buffer = stream_Read( p_sys->p_vobsub_stream, p_block->p_buffer, i_size );
- if( p_block->i_buffer <= 6 )
+ i_read = stream_Read( p_sys->p_vobsub_stream, p_block->p_buffer, i_size );
+ if( i_read <= 6 )
{
block_Release( p_block );
tk.i_current_subtitle++;
continue;
}
+ p_block->i_buffer = i_read;
/* pts */
p_block->i_pts = tk.p_subtitles[tk.i_current_subtitle].i_start;
if( txt->i_line_count <= 0 )
{
- if( txt->line ) free( txt->line );
+ free( txt->line );
return VLC_EGENERIC;
}
int i;
for( i = 0; i < txt->i_line_count; i++ )
- {
- if( txt->line[i] ) free( txt->line[i] );
- }
- if( txt->line ) free( txt->line );
+ free( txt->line[i] );
+
+ free( txt->line );
txt->i_line = 0;
txt->i_line_count = 0;
}
/* msg_Dbg( p_demux, "palette %d: y=%x, u=%x, v=%x", i, y, u, v ); */
}
- p_sys->b_palette = VLC_TRUE;
+ p_sys->b_palette = true;
msg_Dbg( p_demux, "vobsub palette read" );
}
else
ms ) * 1000;
current_tk->i_delay = current_tk->i_delay + (i_gap * i_sign);
- msg_Dbg( p_demux, "sign: %+d gap: %+lld global delay: %+lld", i_sign, i_gap, current_tk->i_delay );
+ msg_Dbg( p_demux, "sign: %+d gap: %+lld global delay: %+lld",
+ i_sign, (long long)i_gap,
+ (long long)current_tk->i_delay );
}
}
}