Commit dc0f2c1d authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Minor code factor

parent cc47d10c
...@@ -44,8 +44,8 @@ ...@@ -44,8 +44,8 @@
/***************************************************************************** /*****************************************************************************
* Module descriptor * Module descriptor
*****************************************************************************/ *****************************************************************************/
static int OpenForce( vlc_object_t * );
static int Open ( vlc_object_t * ); static int Open ( vlc_object_t * );
static int OpenAlt( vlc_object_t * );
static void Close ( vlc_object_t * ); static void Close ( vlc_object_t * );
vlc_module_begin(); vlc_module_begin();
...@@ -53,7 +53,7 @@ vlc_module_begin(); ...@@ -53,7 +53,7 @@ vlc_module_begin();
set_category( CAT_INPUT ); set_category( CAT_INPUT );
set_subcategory( SUBCAT_INPUT_DEMUX ); set_subcategory( SUBCAT_INPUT_DEMUX );
set_capability( "demux2", 1 ); set_capability( "demux2", 1 );
set_callbacks( Open, Close ); set_callbacks( OpenForce, Close );
add_shortcut( "ps" ); add_shortcut( "ps" );
add_bool( "ps-trust-timestamps", VLC_TRUE, NULL, TIME_TEXT, add_bool( "ps-trust-timestamps", VLC_TRUE, NULL, TIME_TEXT,
...@@ -62,7 +62,7 @@ vlc_module_begin(); ...@@ -62,7 +62,7 @@ vlc_module_begin();
add_submodule(); add_submodule();
set_description( _("MPEG-PS demuxer") ); set_description( _("MPEG-PS demuxer") );
set_capability( "demux2", 9 ); set_capability( "demux2", 9 );
set_callbacks( OpenAlt, Close ); set_callbacks( Open, Close );
vlc_module_end(); vlc_module_end();
/***************************************************************************** /*****************************************************************************
...@@ -94,7 +94,7 @@ static block_t *ps_pkt_read ( stream_t *, uint32_t i_code ); ...@@ -94,7 +94,7 @@ static block_t *ps_pkt_read ( stream_t *, uint32_t i_code );
/***************************************************************************** /*****************************************************************************
* Open * Open
*****************************************************************************/ *****************************************************************************/
static int Open( vlc_object_t *p_this ) static int OpenCommon( vlc_object_t *p_this, vlc_bool_t b_force )
{ {
demux_t *p_demux = (demux_t*)p_this; demux_t *p_demux = (demux_t*)p_this;
demux_sys_t *p_sys; demux_sys_t *p_sys;
...@@ -107,9 +107,11 @@ static int Open( vlc_object_t *p_this ) ...@@ -107,9 +107,11 @@ static int Open( vlc_object_t *p_this )
return VLC_EGENERIC; return VLC_EGENERIC;
} }
if( p_peek[0] != 0 || p_peek[1] != 0 || if( memcmp( p_peek, "\x00\x00\x01", 3 ) || ( p_peek[3] < 0xb9 ) )
p_peek[2] != 1 || p_peek[3] < 0xb9 )
{ {
if( !b_force )
return VLC_EGENERIC;
msg_Warn( p_demux, "this does not look like an MPEG PS stream, " msg_Warn( p_demux, "this does not look like an MPEG PS stream, "
"continuing anyway" ); "continuing anyway" );
} }
...@@ -125,7 +127,7 @@ static int Open( vlc_object_t *p_this ) ...@@ -125,7 +127,7 @@ static int Open( vlc_object_t *p_this )
p_sys->i_length = -1; p_sys->i_length = -1;
p_sys->i_current_pts = (mtime_t) 0; p_sys->i_current_pts = (mtime_t) 0;
p_sys->i_time_track = -1; p_sys->i_time_track = -1;
p_sys->b_lost_sync = VLC_FALSE; p_sys->b_lost_sync = VLC_FALSE;
p_sys->b_have_pack = VLC_FALSE; p_sys->b_have_pack = VLC_FALSE;
p_sys->b_seekable = VLC_FALSE; p_sys->b_seekable = VLC_FALSE;
...@@ -140,24 +142,14 @@ static int Open( vlc_object_t *p_this ) ...@@ -140,24 +142,14 @@ static int Open( vlc_object_t *p_this )
return VLC_SUCCESS; return VLC_SUCCESS;
} }
static int OpenAlt( vlc_object_t *p_this ) static int OpenForce( vlc_object_t *p_this )
{ {
demux_t *p_demux = (demux_t*)p_this; return OpenCommon( p_this, VLC_TRUE );
uint8_t *p_peek; }
if( stream_Peek( p_demux->s, &p_peek, 4 ) < 4 )
{
msg_Err( p_demux, "cannot peek" );
return VLC_EGENERIC;
}
if( p_peek[0] != 0 || p_peek[1] != 0 ||
p_peek[2] != 1 || p_peek[3] < 0xb9 )
{
if( !p_demux->b_force ) return VLC_EGENERIC;
}
return Open( p_this ); static int Open( vlc_object_t *p_this )
{
return OpenCommon( p_this, ((demux_t *)p_this)->b_force );
} }
/***************************************************************************** /*****************************************************************************
...@@ -252,7 +244,7 @@ static void FindLength( demux_t *p_demux ) ...@@ -252,7 +244,7 @@ static void FindLength( demux_t *p_demux )
i_size = stream_Size( p_demux->s ); i_size = stream_Size( p_demux->s );
i_end = __MAX( 0, __MIN( 200000, i_size ) ); i_end = __MAX( 0, __MIN( 200000, i_size ) );
stream_Seek( p_demux->s, i_size - i_end ); stream_Seek( p_demux->s, i_size - i_end );
while( !p_demux->b_die && Demux2( p_demux, VLC_TRUE ) > 0 ); while( !p_demux->b_die && Demux2( p_demux, VLC_TRUE ) > 0 );
if( i_current_pos >= 0 ) stream_Seek( p_demux->s, i_current_pos ); if( i_current_pos >= 0 ) stream_Seek( p_demux->s, i_current_pos );
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment