From 1d9cfa88e4505b442c8e4d361e9d83a45e37a7a4 Mon Sep 17 00:00:00 2001
From: Francois Cartegnie <fcvlcdev@free.fr>
Date: Wed, 23 Dec 2015 12:12:33 +0100
Subject: [PATCH] packetizer: h264: optmize sps/pps blocks chaining

---
 modules/packetizer/h264.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/modules/packetizer/h264.c b/modules/packetizer/h264.c
index 88e30d721e92..9c9a2eea981f 100644
--- a/modules/packetizer/h264.c
+++ b/modules/packetizer/h264.c
@@ -595,23 +595,22 @@ static block_t *OutputPicture( decoder_t *p_dec )
         }
 
         block_t *p_list = NULL;
+        block_t **pp_list_tail = &p_list;
         for( int i = 0; i < H264_SPS_MAX && (b_sps_pps_i || p_sys->b_frame_sps); i++ )
         {
             if( p_sys->pp_sps[i] )
-                block_ChainAppend( &p_list, block_Duplicate( p_sys->pp_sps[i] ) );
+                block_ChainLastAppend( &pp_list_tail, block_Duplicate( p_sys->pp_sps[i] ) );
         }
         for( int i = 0; i < H264_PPS_MAX && (b_sps_pps_i || p_sys->b_frame_pps); i++ )
         {
             if( p_sys->pp_pps[i] )
-                block_ChainAppend( &p_list, block_Duplicate( p_sys->pp_pps[i] ) );
+                block_ChainLastAppend( &pp_list_tail, block_Duplicate( p_sys->pp_pps[i] ) );
         }
         if( b_sps_pps_i && p_list )
             p_sys->b_header = true;
 
-        if( p_head )
-            p_head->p_next = p_list;
-        else
-            p_head = p_list;
+        if( p_list )
+            block_ChainAppend( &p_head, p_list );
 
         if( p_sys->p_frame )
             block_ChainAppend( &p_head, p_sys->p_frame );
-- 
GitLab