]> git.sesse.net Git - vlc/blobdiff - modules/demux/ps.c
Add missing shortnames.
[vlc] / modules / demux / ps.c
index bed63fea63ca9d20a766d6581bcb0ee1d658ce9c..8b3f99b86bf3fbda690356e7add210f6afde0ce2 100644 (file)
@@ -52,22 +52,23 @@ static int  OpenForce( vlc_object_t * );
 static int  Open   ( vlc_object_t * );
 static void Close  ( vlc_object_t * );
 
-vlc_module_begin();
-    set_description( N_("MPEG-PS demuxer") );
-    set_category( CAT_INPUT );
-    set_subcategory( SUBCAT_INPUT_DEMUX );
-    set_capability( "demux", 1 );
-    set_callbacks( OpenForce, Close );
-    add_shortcut( "ps" );
+vlc_module_begin ()
+    set_description( N_("MPEG-PS demuxer") )
+    set_shortname( N_("PS") )
+    set_category( CAT_INPUT )
+    set_subcategory( SUBCAT_INPUT_DEMUX )
+    set_capability( "demux", 1 )
+    set_callbacks( OpenForce, Close )
+    add_shortcut( "ps" )
 
     add_bool( "ps-trust-timestamps", true, NULL, TIME_TEXT,
                  TIME_LONGTEXT, true );
 
-    add_submodule();
-    set_description( N_("MPEG-PS demuxer") );
-    set_capability( "demux", 8 );
-    set_callbacks( Open, Close );
-vlc_module_end();
+    add_submodule ()
+    set_description( N_("MPEG-PS demuxer") )
+    set_capability( "demux", 8 )
+    set_callbacks( Open, Close )
+vlc_module_end ()
 
 /*****************************************************************************
  * Local prototypes
@@ -249,8 +250,9 @@ static void FindLength( demux_t *p_demux )
         i_size = stream_Size( p_demux->s );
         i_end = __MAX( 0, __MIN( 200000, i_size ) );
         stream_Seek( p_demux->s, i_size - i_end );
+        i = 0;
 
-        while( vlc_object_alive (p_demux) && Demux2( p_demux, true ) > 0 );
+        while( vlc_object_alive (p_demux) && i < 40 && Demux2( p_demux, true ) > 0 );
         if( i_current_pos >= 0 ) stream_Seek( p_demux->s, i_current_pos );
     }
 
@@ -448,7 +450,6 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
             f = (double) va_arg( args, double );
             i64 = stream_Size( p_demux->s );
             p_sys->i_current_pts = 0;
-            es_out_Control( p_demux->out, ES_OUT_RESET_PCR );
 
             return stream_Seek( p_demux->s, (int64_t)(i64 * f) );
 
@@ -493,7 +494,6 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
                 int64_t i_offset = i_pos / (i_now / 1000000) * ((i64 - i_now) / 1000000);
                 stream_Seek( p_demux->s, i_pos + i_offset);
 
-                es_out_Control( p_demux->out, ES_OUT_RESET_PCR );
                 return VLC_SUCCESS;
             }
             return VLC_EGENERIC;
@@ -559,10 +559,15 @@ static block_t *ps_pkt_read( stream_t *s, uint32_t i_code )
 {
     const uint8_t *p_peek;
     int      i_peek = stream_Peek( s, &p_peek, 14 );
-    int      i_size = ps_pkt_size( p_peek, i_peek );
+    int      i_size;
     VLC_UNUSED(i_code);
 
-    if( i_size <= 6 && p_peek[3] > 0xba )
+    /* Smallest valid packet */
+    if( i_peek < 6 ) return NULL;
+
+    i_size = ps_pkt_size( p_peek, i_peek );
+
+    if( i_size < 0 || ( i_size <= 6 && p_peek[3] > 0xba ) )
     {
         /* Special case, search the next start code */
         i_size = 6;