[vlc-commits] TS demux: IODFree / IODNew: simplify

Rafaël Carré git at videolan.org
Mon Mar 5 10:39:51 CET 2012


vlc | branch: master | Rafaël Carré <funman at videolan.org> | Wed Feb 15 23:10:41 2012 -0500| [711e4019aaec8af5ec1908edd2f6b5bc00c9cde1] | committer: Rafaël Carré

TS demux: IODFree / IODNew: simplify

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=711e4019aaec8af5ec1908edd2f6b5bc00c9cde1
---

 modules/demux/ts.c |   61 ++++++++++++---------------------------------------
 1 files changed, 15 insertions(+), 46 deletions(-)

diff --git a/modules/demux/ts.c b/modules/demux/ts.c
index 78a170d..c067e7c 100644
--- a/modules/demux/ts.c
+++ b/modules/demux/ts.c
@@ -368,7 +368,6 @@ static void GetLastPCR( demux_t *p_demux );
 static void CheckPCR( demux_t *p_demux );
 static void PCRHandle( demux_t *p_demux, ts_pid_t *, block_t * );
 
-static iod_descriptor_t *IODNew( int , uint8_t * );
 static void              IODFree( iod_descriptor_t * );
 
 #define TS_USER_PMT_NUMBER (0)
@@ -2297,11 +2296,8 @@ static uint32_t IODGetDWord( int *pi_data, uint8_t **pp_data )
 
 static char* IODGetURL( int *pi_data, uint8_t **pp_data )
 {
-    char *url;
-    int i_url_len;
-
-    i_url_len = IODGetByte( pi_data, pp_data );
-    url = malloc( i_url_len + 1 );
+    int i_url_len = IODGetByte( pi_data, pp_data );
+    char *url = malloc( i_url_len + 1 );
     if( !url ) return NULL;
     for( int i = 0; i < i_url_len; i++ )
     {
@@ -2313,24 +2309,14 @@ static char* IODGetURL( int *pi_data, uint8_t **pp_data )
 
 static iod_descriptor_t *IODNew( int i_data, uint8_t *p_data )
 {
-    iod_descriptor_t *p_iod;
-    int i_es_index;
-    uint8_t i_flags, i_iod_tag, byte1, byte2, byte3;
-    bool  b_url;
-    int   i_iod_length;
+    uint8_t i_iod_tag, byte1, byte2, byte3;
 
-    p_iod = malloc( sizeof( iod_descriptor_t ) );
-    if( !p_iod ) return NULL;
-    memset( p_iod, 0, sizeof( iod_descriptor_t ) );
+    iod_descriptor_t *p_iod = calloc( 1, sizeof( iod_descriptor_t ) );
+    if( !p_iod )
+        return NULL;
 
     ts_debug( "\n************ IOD ************" );
 
-    for( int i = 0; i < 255; i++ )
-    {
-        p_iod->es_descr[i].b_ok = 0;
-    }
-    i_es_index = 0;
-
     if( i_data < 3 )
     {
         return p_iod;
@@ -2362,7 +2348,7 @@ static iod_descriptor_t *IODNew( int i_data, uint8_t *p_data )
         return p_iod;
     }
 
-    i_iod_length = IODDescriptorLength( &i_data, &p_data );
+    int i_iod_length = IODDescriptorLength( &i_data, &p_data );
     ts_debug( "\n* length:%d", i_iod_length );
     if( i_iod_length > i_data )
     {
@@ -2370,13 +2356,11 @@ static iod_descriptor_t *IODNew( int i_data, uint8_t *p_data )
     }
 
     p_iod->i_od_id = ( IODGetByte( &i_data, &p_data ) << 2 );
-    i_flags = IODGetByte( &i_data, &p_data );
+    uint8_t i_flags = IODGetByte( &i_data, &p_data );
     p_iod->i_od_id |= i_flags >> 6;
-    b_url = ( i_flags >> 5  )&0x01;
     ts_debug( "\n* od_id:%d", p_iod->i_od_id );
-    ts_debug( "\n* url flag:%d", b_url );
     ts_debug( "\n* includeInlineProfileLevel flag:%d", ( i_flags >> 4 )&0x01 );
-    if( b_url )
+    if ((i_flags >> 5) & 0x01)
     {
         p_iod->psz_url = IODGetURL( &i_data, &p_data );
         ts_debug( "\n* url string:%s", p_iod->psz_url );
@@ -2399,17 +2383,13 @@ static iod_descriptor_t *IODNew( int i_data, uint8_t *p_data )
     ts_debug( "\n* visualProfileLevelIndication:%d", p_iod->i_visualProfileLevelIndication );
     ts_debug( "\n* graphicsProfileLevelIndication:%d", p_iod->i_graphicsProfileLevelIndication );
 
-    while( i_data > 0 && i_es_index < 255)
+    for (int i_es_index = 0; i_data > 0 && i_es_index < 255; i_es_index++)
     {
-        int i_tag, i_length;
-        int     i_data_sav;
-        uint8_t *p_data_sav;
+        int i_tag = IODGetByte( &i_data, &p_data );
+        int i_length = IODDescriptorLength( &i_data, &p_data );
 
-        i_tag = IODGetByte( &i_data, &p_data );
-        i_length = IODDescriptorLength( &i_data, &p_data );
-
-        i_data_sav = i_data;
-        p_data_sav = p_data;
+        int i_data_sav = i_data;
+        uint8_t *p_data_sav = p_data;
 
         i_data = i_length;
 
@@ -2425,7 +2405,6 @@ static iod_descriptor_t *IODNew( int i_data, uint8_t *p_data )
                 es_descr.i_es_id = IODGetWord( &i_data, &p_data );
                 i_flags = IODGetByte( &i_data, &p_data );
                 bool b_streamDependenceFlag = ( i_flags >> 7 )&0x01;
-                b_url = ( i_flags >> 6 )&0x01;
                 bool b_OCRStreamFlag = ( i_flags >> 5 )&0x01;
                 uint8_t i_streamPriority = i_flags & 0x1f;
                 ts_debug( "\n*   * streamDependenceFlag:%d", b_streamDependenceFlag );
@@ -2437,7 +2416,7 @@ static iod_descriptor_t *IODNew( int i_data, uint8_t *p_data )
                     ts_debug( "\n*   * dependOn_es_id:%d", i_dependOn_es_id );
                 }
 
-                if( b_url )
+                if( (i_flags >> 6) & 0x01 )
                 {
                     es_descr.psz_url = IODGetURL( &i_data, &p_data );
                     ts_debug( "\n* url string:%s", es_descr.psz_url );
@@ -2529,7 +2508,6 @@ static iod_descriptor_t *IODNew( int i_data, uint8_t *p_data )
 
         p_data = p_data_sav + i_length;
         i_data = i_data_sav - i_length;
-        i_es_index++;
     }
     ts_debug( "\n*****************************\n" );
     return p_iod;
@@ -2540,7 +2518,6 @@ static void IODFree( iod_descriptor_t *p_iod )
     if( p_iod->psz_url )
     {
         free( p_iod->psz_url );
-        p_iod->psz_url = NULL;
         free( p_iod );
         return;
     }
@@ -2551,18 +2528,10 @@ static void IODFree( iod_descriptor_t *p_iod )
         if( es_descr.b_ok )
         {
             if( es_descr.psz_url )
-            {
                 free( es_descr.psz_url );
-                es_descr.psz_url = NULL;
-            }
             else
-            {
                 free( es_descr.dec_descr.p_extra );
-                es_descr.dec_descr.p_extra = NULL;
-                es_descr.dec_descr.i_extra = 0;
-            }
         }
-        es_descr.b_ok = 0;
 #undef  es_descr
     }
     free( p_iod );



More information about the vlc-commits mailing list