[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