changeset 7892:59e42f624d4d libavcodec

Make pps/sps scaling_matrix initialization closer to the spec. This does not affect any of the conformance streams.
author michael
date Thu, 18 Sep 2008 16:36:19 +0000
parents 13ee9bb85721
children 463362e06206
files h264.c
diffstat 1 files changed, 6 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/h264.c	Thu Sep 18 16:02:51 2008 +0000
+++ b/h264.c	Thu Sep 18 16:36:19 2008 +0000
@@ -6963,9 +6963,6 @@
             decode_scaling_list(h,scaling_matrix8[0],64,default_scaling8[0],fallback[2]);  // Intra, Y
             decode_scaling_list(h,scaling_matrix8[1],64,default_scaling8[1],fallback[3]);  // Inter, Y
         }
-    } else if(fallback_sps) {
-        memcpy(scaling_matrix4, sps->scaling_matrix4, 6*16*sizeof(uint8_t));
-        memcpy(scaling_matrix8, sps->scaling_matrix8, 2*64*sizeof(uint8_t));
     }
 }
 
@@ -7012,6 +7009,10 @@
     sps->profile_idc= profile_idc;
     sps->level_idc= level_idc;
 
+    memset(sps->scaling_matrix4, 16, sizeof(sps->scaling_matrix4));
+    memset(sps->scaling_matrix8, 16, sizeof(sps->scaling_matrix8));
+    sps->scaling_matrix_present = 0;
+
     if(sps->profile_idc >= 100){ //high profile
         sps->chroma_format_idc= get_ue_golomb(&s->gb);
         if(sps->chroma_format_idc == 3)
@@ -7021,7 +7022,6 @@
         sps->transform_bypass = get_bits1(&s->gb);
         decode_scaling_matrices(h, sps, NULL, 1, sps->scaling_matrix4, sps->scaling_matrix8);
     }else{
-        sps->scaling_matrix_present = 0;
         sps->chroma_format_idc= 1;
     }
 
@@ -7204,8 +7204,8 @@
 
     pps->transform_8x8_mode= 0;
     h->dequant_coeff_pps= -1; //contents of sps/pps can change even if id doesn't, so reinit
-    memset(pps->scaling_matrix4, 16, 6*16*sizeof(uint8_t));
-    memset(pps->scaling_matrix8, 16, 2*64*sizeof(uint8_t));
+    memcpy(pps->scaling_matrix4, h->sps_buffers[pps->sps_id]->scaling_matrix4, sizeof(pps->scaling_matrix4));
+    memcpy(pps->scaling_matrix8, h->sps_buffers[pps->sps_id]->scaling_matrix8, sizeof(pps->scaling_matrix8));
 
     if(get_bits_count(&s->gb) < bit_length){
         pps->transform_8x8_mode= get_bits1(&s->gb);