packetizer: h264: fix reading prediction weight tables
authorFrançois Cartegnie <fcvlcdev@free.fr>
Tue, 2 Jul 2024 08:31:51 +0000 (10:31 +0200)
committerSebastian Ramacher <sramacher@debian.org>
Tue, 14 Jan 2025 22:09:47 +0000 (23:09 +0100)
(cherry picked from commit f878115e184a4d896e4df39bccbde32ea6d9357c)

Gbp-Pq: Name 0012-packetizer-h264-fix-reading-prediction-weight-tables.patch

modules/packetizer/h264_nal.c
modules/packetizer/h264_nal.h
modules/packetizer/h264_slice.c

index 10c267e4d95c57fa9bcbe1e78311e6eb64cbd8f0..2c7077141f6dcb95933fd88258b736a83cc768ad 100644 (file)
@@ -591,8 +591,8 @@ static bool h264_parse_picture_parameter_set_rbsp( bs_t *p_bs,
         }
     }
 
-    bs_read_ue( p_bs ); /* num_ref_idx_l0_default_active_minus1 */
-    bs_read_ue( p_bs ); /* num_ref_idx_l1_default_active_minus1 */
+    p_pps->num_ref_idx_l01_default_active_minus1[0] = bs_read_ue( p_bs );
+    p_pps->num_ref_idx_l01_default_active_minus1[1] = bs_read_ue( p_bs );
     p_pps->weighted_pred_flag = bs_read( p_bs, 1 );
     p_pps->weighted_bipred_idc = bs_read( p_bs, 2 );
     bs_read_se( p_bs ); /* pic_init_qp_minus26 */
index edb9c04f58cfbeb6d088fc8358e71e98ab1ae660..5f6d74a03fa39115ded57dd1fdf6a36a1b11a241 100644 (file)
@@ -150,6 +150,7 @@ struct h264_picture_parameter_set_t
     uint8_t i_redundant_pic_present_flag;
     uint8_t weighted_pred_flag;
     uint8_t weighted_bipred_idc;
+    uint32_t num_ref_idx_l01_default_active_minus1[2];
 };
 
 struct h264_sequence_parameter_set_extension_t
index d05256e93e8ce801f6221beb51f4f9c535bfd1a2..1c4d2a25bca2c6bbaf5575055f23a96e1ab32206 100644 (file)
@@ -101,7 +101,8 @@ bool h264_decode_slice( const uint8_t *p_buffer, size_t i_buffer,
     if( p_pps->i_redundant_pic_present_flag )
         bs_read_ue( &s ); /* redudant_pic_count */
 
-    unsigned num_ref_idx_l01_active_minus1[2] = {0 , 0};
+    uint32_t num_ref_idx_l01_active_minus1[2] = { p_pps->num_ref_idx_l01_default_active_minus1[0],
+                                                  p_pps->num_ref_idx_l01_default_active_minus1[1] };
 
     if( i_slice_type == 1 || i_slice_type == 6 ) /* B slices */
         bs_read1( &s ); /* direct_spatial_mv_pred_flag */