[vlc-devel] commit: Cosmetic (turned a big macro into a function). (Laurent Aimar )

git version control git at videolan.org
Fri Jul 25 23:32:04 CEST 2008


vlc | branch: master | Laurent Aimar <fenrir at videolan.org> | Fri Jul 25 22:26:53 2008 +0200| [1dcdb30fe3d764d3cd5e66253b5db9e9b62909ed]

Cosmetic (turned a big macro into a function).

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

 modules/packetizer/h264.c |   73 +++++++++++++++++++++++++-------------------
 1 files changed, 41 insertions(+), 32 deletions(-)

diff --git a/modules/packetizer/h264.c b/modules/packetizer/h264.c
index 79f5f53..eeb8d80 100644
--- a/modules/packetizer/h264.c
+++ b/modules/packetizer/h264.c
@@ -503,6 +503,7 @@ static block_t *nal_get_annexeb( decoder_t *p_dec, uint8_t *p, int i_size )
     /* Copy nalu */
     memcpy( &p_nal->p_buffer[4], p, i_size );
 
+    VLC_UNUSED(p_dec);
     return p_nal;
 }
 
@@ -555,6 +556,39 @@ static inline int bs_read_se( bs_t *s )
  * ParseNALBlock: parses annexB type NALs
  * All p_frag blocks are required to start with 0 0 0 1 4-byte startcode
  *****************************************************************************/
+static block_t *OutputPicture( decoder_t *p_dec )
+{
+    decoder_sys_t *p_sys = p_dec->p_sys;
+    block_t *p_pic;
+
+    if( !p_sys->b_header && p_sys->slice.i_frame_type != BLOCK_FLAG_TYPE_I)
+        return NULL;
+
+    if( p_sys->slice.i_frame_type == BLOCK_FLAG_TYPE_I && p_sys->p_sps && p_sys->p_pps )
+    {
+        block_t *p_sps = block_Duplicate( p_sys->p_sps );
+        block_t *p_pps = block_Duplicate( p_sys->p_pps );
+        p_sps->i_dts = p_sys->p_frame->i_dts;
+        p_sps->i_pts = p_sys->p_frame->i_pts;
+        block_ChainAppend( &p_sps, p_pps );
+        block_ChainAppend( &p_sps, p_sys->p_frame );
+        p_sys->b_header = true;
+        p_pic = block_ChainGather( p_sps );
+    }
+    else
+    {
+        p_pic = block_ChainGather( p_sys->p_frame );
+    }
+    p_pic->i_length = 0;    /* FIXME */
+    p_pic->i_flags |= p_sys->slice.i_frame_type;
+
+    p_sys->slice.i_frame_type = 0;
+    p_sys->p_frame = NULL;
+    p_sys->b_slice = false;
+
+    return p_pic;
+}
+
 static block_t *ParseNALBlock( decoder_t *p_dec, block_t *p_frag )
 {
     decoder_sys_t *p_sys = p_dec->p_sys;
@@ -563,32 +597,6 @@ static block_t *ParseNALBlock( decoder_t *p_dec, block_t *p_frag )
     const int i_nal_ref_idc = (p_frag->p_buffer[4] >> 5)&0x03;
     const int i_nal_type = p_frag->p_buffer[4]&0x1f;
 
-#define OUTPUT \
-    do {                                                      \
-        if( !p_sys->b_header && p_sys->slice.i_frame_type != BLOCK_FLAG_TYPE_I) \
-            break;                                            \
-                                                              \
-        if( p_sys->slice.i_frame_type == BLOCK_FLAG_TYPE_I && p_sys->p_sps && p_sys->p_pps ) \
-        { \
-            block_t *p_sps = block_Duplicate( p_sys->p_sps ); \
-            block_t *p_pps = block_Duplicate( p_sys->p_pps ); \
-            p_sps->i_dts = p_sys->p_frame->i_dts;           \
-            p_sps->i_pts = p_sys->p_frame->i_pts;           \
-            block_ChainAppend( &p_sps, p_pps );               \
-            block_ChainAppend( &p_sps, p_sys->p_frame );      \
-            p_sys->b_header = true;                       \
-            p_pic = block_ChainGather( p_sps );               \
-        } else { \
-            p_pic = block_ChainGather( p_sys->p_frame ); \
-        } \
-        p_pic->i_length = 0;    /* FIXME */                   \
-        p_pic->i_flags |= p_sys->slice.i_frame_type;          \
-            \
-        p_sys->slice.i_frame_type = 0;                        \
-        p_sys->p_frame = NULL;                                \
-        p_sys->b_slice = false;                           \
-    } while(0)
-
     if( p_sys->b_slice && ( !p_sys->b_sps || !p_sys->b_pps ) )
     {
         block_ChainRelease( p_sys->p_frame );
@@ -712,7 +720,7 @@ static block_t *ParseNALBlock( decoder_t *p_dec, block_t *p_frag )
         p_sys->slice = slice;
 
         if( b_pic && p_sys->b_slice )
-            OUTPUT;
+            p_pic = OutputPicture( p_dec );
 
         p_sys->b_slice = true;
 
@@ -839,7 +847,8 @@ static block_t *ParseNALBlock( decoder_t *p_dec, block_t *p_frag )
 
         free( dec );
 
-        if( p_sys->b_slice ) OUTPUT;
+        if( p_sys->b_slice )
+            p_pic = OutputPicture( p_dec );
 
         /* We have a new SPS */
         if( p_sys->p_sps ) block_Release( p_sys->p_sps );
@@ -863,7 +872,8 @@ static block_t *ParseNALBlock( decoder_t *p_dec, block_t *p_frag )
 
         /* TODO */
 
-        if( p_sys->b_slice ) OUTPUT;
+        if( p_sys->b_slice )
+            p_pic = OutputPicture( p_dec );
 
         /* We have a new PPS */
         if( p_sys->p_pps ) block_Release( p_sys->p_pps );
@@ -876,11 +886,10 @@ static block_t *ParseNALBlock( decoder_t *p_dec, block_t *p_frag )
              i_nal_type == NAL_SEI ||
              ( i_nal_type >= 13 && i_nal_type <= 18 ) )
     {
-        if( p_sys->b_slice ) OUTPUT;
+        if( p_sys->b_slice )
+            p_pic = OutputPicture( p_dec );
     }
 
-#undef OUTPUT
-
     /* Append the block */
     block_ChainAppend( &p_sys->p_frame, p_frag );
 




More information about the vlc-devel mailing list