diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index d8a7baf91d3830b96c09fd27d79ecde68c6d289a..560782df7da8605e62f017089d30bcef4a99d770 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -3033,6 +3033,9 @@ static int alloc_tables(H264Context *h){
 
     s->obmc_scratchpad = NULL;
 
+    if(!h->dequant4_coeff[0])
+        init_dequant_tables(h);
+
     return 0;
 fail:
     free_tables(h);
@@ -3051,6 +3054,9 @@ static void common_init(H264Context *h){
     h->dequant_coeff_pps= -1;
     s->unrestricted_mv=1;
     s->decode=1; //FIXME
+
+    memset(h->pps.scaling_matrix4, 16, 6*16*sizeof(uint8_t));
+    memset(h->pps.scaling_matrix8, 16, 2*64*sizeof(uint8_t));
 }
 
 static int decode_init(AVCodecContext *avctx){