[vlc-commits] packetizer: mpegvideo: use enum for values

Francois Cartegnie git at videolan.org
Tue Aug 1 19:41:06 CEST 2017


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Tue Aug  1 16:10:36 2017 +0200| [a1f61d7de80c0780fe9acb8ab432a3f679d389ee] | committer: Francois Cartegnie

packetizer: mpegvideo: use enum for values

should clear things up

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

 modules/packetizer/mpegvideo.c | 62 ++++++++++++++++++++++++++++++++----------
 1 file changed, 48 insertions(+), 14 deletions(-)

diff --git a/modules/packetizer/mpegvideo.c b/modules/packetizer/mpegvideo.c
index de2968dbcf..a4d9657f1e 100644
--- a/modules/packetizer/mpegvideo.c
+++ b/modules/packetizer/mpegvideo.c
@@ -80,6 +80,36 @@ vlc_module_begin ()
               SYNC_INTRAFRAME_LONGTEXT, true )
 vlc_module_end ()
 
+enum mpeg_startcode_e
+{
+    PICTURE_STARTCODE          = 0x00,
+    SLICE_STARTCODE_FIRST      = 0x01,
+    SLICE_STARTCODE_LAST       = 0xAF,
+    USER_DATA_STARTCODE        = 0xB2,
+    SEQUENCE_HEADER_STARTCODE  = 0xB3,
+    SEQUENCE_ERROR_STARTCODE   = 0xB4,
+    EXTENSION_STARTCODE        = 0xB5,
+    SEQUENCE_END_STARTCODE     = 0xB7,
+    GROUP_STARTCODE            = 0xB8,
+    SYSTEM_STARTCODE_FIRST     = 0xB9,
+    SYSTEM_STARTCODE_LAST      = 0xFF,
+};
+
+enum extension_start_code_identifier_e
+{
+    SEQUENCE_EXTENSION_ID                   = 0x01,
+    SEQUENCE_DISPLAY_EXTENSION_ID           = 0x02,
+    QUANT_MATRIX_EXTENSION_ID               = 0x03,
+    COPYRIGHT_EXTENSION_ID                  = 0x04,
+    SEQUENCE_SCALABLE_EXTENSION_ID          = 0x05,
+    PICTURE_DISPLAY_EXTENSION_ID            = 0x07,
+    PICTURE_CODING_EXTENSION_ID             = 0x08,
+    PICTURE_SPATIAL_SCALABLE_EXTENSION_ID   = 0x09,
+    PICTURE_TEMPORAL_SCALABLE_EXTENSION_ID  = 0x0A,
+    CAMERA_PARAMETERS_EXTENSION_ID          = 0x0B,
+    ITU_T_EXTENSION_ID                      = 0x0C,
+};
+
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
@@ -339,7 +369,7 @@ static block_t *PacketizeParse( void *p_private, bool *pb_ts_used, block_t *p_bl
     decoder_sys_t *p_sys = p_dec->p_sys;
 
     /* Check if we have a picture start code */
-    *pb_ts_used = p_block->p_buffer[3] == 0x00;
+    *pb_ts_used = p_block->p_buffer[3] == PICTURE_STARTCODE;
 
     p_block = ParseMPEGBlock( p_dec, p_block );
     if( p_block )
@@ -391,11 +421,12 @@ static block_t *ParseMPEGBlock( decoder_t *p_dec, block_t *p_frag )
     decoder_sys_t *p_sys = p_dec->p_sys;
     block_t *p_pic = NULL;
 
+    const enum mpeg_startcode_e startcode = p_frag->p_buffer[3];
     /*
      * Check if previous picture is finished
      */
     if( ( p_sys->b_frame_slice &&
-          (p_frag->p_buffer[3] == 0x00 || p_frag->p_buffer[3] > 0xaf) ) &&
+          (startcode == PICTURE_STARTCODE || startcode >  SLICE_STARTCODE_LAST ) ) &&
           p_sys->p_seq == NULL )
     {
         /* We have a picture but without a sequence header we can't
@@ -408,9 +439,10 @@ static block_t *ParseMPEGBlock( decoder_t *p_dec, block_t *p_frag )
 
     }
     else if( p_sys->b_frame_slice &&
-             (p_frag->p_buffer[3] == 0x00 || (p_frag->p_buffer[3] > 0xaf && p_frag->p_buffer[3] != 0xb5) ) )
+             (startcode == PICTURE_STARTCODE ||
+             (startcode >  SLICE_STARTCODE_LAST && startcode != EXTENSION_STARTCODE )) )
     {
-        const bool b_eos = p_frag->p_buffer[3] == 0xb7;
+        const bool b_eos = startcode == SEQUENCE_END_STARTCODE;
 
         if( b_eos )
         {
@@ -625,7 +657,7 @@ static block_t *ParseMPEGBlock( decoder_t *p_dec, block_t *p_frag )
     /*
      * Check info of current fragment
      */
-    if( p_frag->p_buffer[3] == 0xb8 )
+    if( startcode == GROUP_STARTCODE )
     {
         /* Group start code */
         if( p_sys->p_seq &&
@@ -641,7 +673,7 @@ static block_t *ParseMPEGBlock( decoder_t *p_dec, block_t *p_frag )
             p_sys->i_seq_old = 0;
         }
     }
-    else if( p_frag->p_buffer[3] == 0xb3 && p_frag->i_buffer >= 8 )
+    else if( startcode == SEQUENCE_HEADER_STARTCODE && p_frag->i_buffer >= 8 )
     {
         /* Sequence header code */
         static const int code_to_frame_rate[16][2] =
@@ -703,12 +735,13 @@ static block_t *ParseMPEGBlock( decoder_t *p_dec, block_t *p_frag )
             p_sys->b_inited = 1;
         }
     }
-    else if( p_frag->p_buffer[3] == 0xb5 )
+    else if( startcode == EXTENSION_STARTCODE && p_frag->i_buffer > 4 )
     {
-        int i_type = p_frag->p_buffer[4] >> 4;
+        /* extension_start_code_identifier */
+        const enum extension_start_code_identifier_e extid = p_frag->p_buffer[4] >> 4;
 
         /* Extension start code */
-        if( i_type == 0x01 )
+        if( extid == SEQUENCE_EXTENSION_ID )
         {
 #if 0
             static const int mpeg2_aspect[16][2] =
@@ -747,7 +780,7 @@ static block_t *ParseMPEGBlock( decoder_t *p_dec, block_t *p_frag )
 #endif
 
         }
-        else if( i_type == 0x08 && p_frag->i_buffer > 8 )
+        else if( extid == PICTURE_CODING_EXTENSION_ID && p_frag->i_buffer > 8 )
         {
             /* picture extension */
             p_sys->i_picture_structure = p_frag->p_buffer[6]&0x03;
@@ -755,7 +788,7 @@ static block_t *ParseMPEGBlock( decoder_t *p_dec, block_t *p_frag )
             p_sys->i_repeat_first_field= (p_frag->p_buffer[7]>>1)&0x01;
             p_sys->i_progressive_frame = p_frag->p_buffer[8] >> 7;
         }
-        else if( i_type == 0x02 && p_frag->i_buffer > 8 )
+        else if( extid == SEQUENCE_DISPLAY_EXTENSION_ID && p_frag->i_buffer > 8 )
         {
             /* Sequence display extension */
             bool contains_color_description = (p_frag->p_buffer[4] & 0x01);
@@ -817,7 +850,7 @@ static block_t *ParseMPEGBlock( decoder_t *p_dec, block_t *p_frag )
 
         }
     }
-    else if( p_frag->p_buffer[3] == 0xb2 && p_frag->i_buffer > 8 )
+    else if( startcode == USER_DATA_STARTCODE && p_frag->i_buffer > 8 )
     {
         /* Frame Packing extension identifier as H262 2012 Amd4 Annex L */
         if( !memcmp( &p_frag->p_buffer[4], "JP3D", 4 ) &&
@@ -841,7 +874,7 @@ static block_t *ParseMPEGBlock( decoder_t *p_dec, block_t *p_frag )
         cc_ProbeAndExtract( &p_sys->cc, p_sys->i_top_field_first,
                     &p_frag->p_buffer[4], p_frag->i_buffer - 4 );
     }
-    else if( p_frag->p_buffer[3] == 0x00 )
+    else if( startcode == PICTURE_STARTCODE )
     {
         /* Picture start code */
         p_sys->i_seq_old++;
@@ -856,7 +889,8 @@ static block_t *ParseMPEGBlock( decoder_t *p_dec, block_t *p_frag )
         p_sys->i_dts = p_frag->i_dts;
         p_sys->i_pts = p_frag->i_pts;
     }
-    else if( p_frag->p_buffer[3] >= 0x01 && p_frag->p_buffer[3] <= 0xaf )
+    else if( startcode >= SLICE_STARTCODE_FIRST &&
+             startcode <= SLICE_STARTCODE_LAST )
     {
         /* Slice start code */
         p_sys->b_frame_slice = true;



More information about the vlc-commits mailing list