Add METADATA to libavc: Apache2=NOTICE am: 67c86e8bb8 am: aace37ab1b

Change-Id: Id438a6783d840cfd5b97768f0a08177e136b475b
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
new file mode 100644
index 0000000..86b6de3
--- /dev/null
+++ b/PREUPLOAD.cfg
@@ -0,0 +1,2 @@
+[Hook Scripts]
+mainline_hook = ${REPO_ROOT}/frameworks/av/tools/mainline_hook.sh
diff --git a/common/ih264_defs.h b/common/ih264_defs.h
index 16d8627..9c84be9 100644
--- a/common/ih264_defs.h
+++ b/common/ih264_defs.h
@@ -611,6 +611,16 @@
 #define MAX_H264_QP 51
 
 /**
+ * @brief  Minimum delta scale supported in H264 spec
+ */
+#define MIN_H264_DELTA_SCALE (-128)
+
+/**
+ * @brief  Maximum delta scale supported in H264 spec
+ */
+#define MAX_H264_DELTA_SCALE 127
+
+/**
  * @breif  Total number of transform sizes
  * used for sizeID while getting scale matrix
  */
diff --git a/decoder/ih264d_parse_headers.c b/decoder/ih264d_parse_headers.c
index 674f4c3..f286e29 100644
--- a/decoder/ih264d_parse_headers.c
+++ b/decoder/ih264d_parse_headers.c
@@ -425,9 +425,10 @@
 
                 if(ps_pps->u1_pic_scaling_list_present_flag[i4_i])
                 {
+                    WORD32 ret;
                     if(i4_i < 6)
                     {
-                        ih264d_scaling_list(
+                        ret = ih264d_scaling_list(
                                         ps_pps->i2_pic_scalinglist4x4[i4_i],
                                         16,
                                         &ps_pps->u1_pic_use_default_scaling_matrix_flag[i4_i],
@@ -435,12 +436,17 @@
                     }
                     else
                     {
-                        ih264d_scaling_list(
+                        ret = ih264d_scaling_list(
                                         ps_pps->i2_pic_scalinglist8x8[i4_i - 6],
                                         64,
                                         &ps_pps->u1_pic_use_default_scaling_matrix_flag[i4_i],
                                         ps_bitstrm);
                     }
+
+                    if(ret != OK)
+                    {
+                        return ret;
+                    }
                 }
             }
         }
@@ -740,7 +746,7 @@
                 {
                     if(i4_i < 6)
                     {
-                        ih264d_scaling_list(
+                        ret = ih264d_scaling_list(
                                         ps_seq->i2_scalinglist4x4[i4_i],
                                         16,
                                         &ps_seq->u1_use_default_scaling_matrix_flag[i4_i],
@@ -748,12 +754,16 @@
                     }
                     else
                     {
-                        ih264d_scaling_list(
+                        ret = ih264d_scaling_list(
                                         ps_seq->i2_scalinglist8x8[i4_i - 6],
                                         64,
                                         &ps_seq->u1_use_default_scaling_matrix_flag[i4_i],
                                         ps_bitstrm);
                     }
+                    if(ret != OK)
+                    {
+                        return ret;
+                    }
                 }
             }
         }
diff --git a/decoder/ih264d_process_bslice.c b/decoder/ih264d_process_bslice.c
index f2adcf6..5dfba33 100644
--- a/decoder/ih264d_process_bslice.c
+++ b/decoder/ih264d_process_bslice.c
@@ -1387,17 +1387,17 @@
         /* reference list to handle of errors        */
         {
             UWORD8 u1_i;
-            pic_buffer_t *ps_ref_pic;
+            pic_buffer_t ref_pic;
 
-            ps_ref_pic = ps_dpb_mgr->ps_init_dpb[0][0] + MAX_REF_BUFS;
+            ref_pic = *(ps_dpb_mgr->ps_init_dpb[0][0] + MAX_REF_BUFS);
 
-            if(NULL == ps_ref_pic->pu1_buf1)
+            if(NULL == ref_pic.pu1_buf1)
             {
-                ps_ref_pic = ps_dec->ps_cur_pic;
+                ref_pic = *ps_dec->ps_cur_pic;
             }
             for(u1_i = u1_L0; u1_i < u1_max_ref_idx_l0; u1_i++)
             {
-                *ps_ref_pic_buf_lx = *ps_ref_pic;
+                *ps_ref_pic_buf_lx = ref_pic;
                 ps_ref_pic_buf_lx++;
             }
         }
@@ -1414,17 +1414,17 @@
     /* reference list to handle of errors        */
     {
         UWORD8 u1_i;
-        pic_buffer_t *ps_ref_pic;
+        pic_buffer_t ref_pic;
 
-        ps_ref_pic = ps_dpb_mgr->ps_init_dpb[0][0];
+        ref_pic = *(ps_dpb_mgr->ps_init_dpb[0][0]);
 
-        if(NULL == ps_ref_pic->pu1_buf1)
+        if(NULL == ref_pic.pu1_buf1)
         {
-            ps_ref_pic = ps_dec->ps_cur_pic;
+            ref_pic = *ps_dec->ps_cur_pic;
         }
         for(u1_i = u1_L0; u1_i < u1_max_ref_idx_l0; u1_i++)
         {
-            *ps_ref_pic_buf_lx = *ps_ref_pic;
+            *ps_ref_pic_buf_lx = ref_pic;
             ps_ref_pic_buf_lx++;
         }
     }
@@ -1498,17 +1498,17 @@
             /* reference list to handle of errors        */
             {
                 UWORD8 u1_i;
-                pic_buffer_t *ps_ref_pic;
+                pic_buffer_t ref_pic;
 
-                ps_ref_pic = ps_dpb_mgr->ps_init_dpb[0][0] + MAX_REF_BUFS;
+                ref_pic = *(ps_dpb_mgr->ps_init_dpb[0][0] + MAX_REF_BUFS);
 
-                if(NULL == ps_ref_pic->pu1_buf1)
+                if(NULL == ref_pic.pu1_buf1)
                 {
-                    ps_ref_pic = ps_dec->ps_cur_pic;
+                    ref_pic = *ps_dec->ps_cur_pic;
                 }
                 for(u1_i = u1_L1; u1_i < u1_max_ref_idx_l1; u1_i++)
                 {
-                    *ps_ref_pic_buf_lx = *ps_ref_pic;
+                    *ps_ref_pic_buf_lx = ref_pic;
                     ps_ref_pic_buf_lx++;
                 }
             }
@@ -1525,17 +1525,17 @@
         /* reference list to handle of errors        */
         {
             UWORD8 u1_i;
-            pic_buffer_t *ps_ref_pic;
+            pic_buffer_t ref_pic;
 
-            ps_ref_pic = ps_dpb_mgr->ps_init_dpb[0][0];
+            ref_pic = *(ps_dpb_mgr->ps_init_dpb[0][0]);
 
-            if(NULL == ps_ref_pic->pu1_buf1)
+            if(NULL == ref_pic.pu1_buf1)
             {
-                ps_ref_pic = ps_dec->ps_cur_pic;
+                ref_pic = *ps_dec->ps_cur_pic;
             }
             for(u1_i = u1_L1; u1_i < u1_max_ref_idx_l1; u1_i++)
             {
-                *ps_ref_pic_buf_lx = *ps_ref_pic;
+                *ps_ref_pic_buf_lx = ref_pic;
                 ps_ref_pic_buf_lx++;
             }
         }
diff --git a/decoder/ih264d_process_pslice.c b/decoder/ih264d_process_pslice.c
index ed4cbbe..7c24383 100644
--- a/decoder/ih264d_process_pslice.c
+++ b/decoder/ih264d_process_pslice.c
@@ -1112,17 +1112,17 @@
         /* reference list to handle of errors        */
         {
             UWORD8 u1_i;
-            pic_buffer_t *ps_ref_pic;
+            pic_buffer_t ref_pic;
 
-            ps_ref_pic = ps_dpb_mgr->ps_init_dpb[0][0] + MAX_REF_BUFS;
+            ref_pic = *(ps_dpb_mgr->ps_init_dpb[0][0] + MAX_REF_BUFS);
 
-            if(NULL == ps_ref_pic->pu1_buf1)
+            if(NULL == ref_pic.pu1_buf1)
             {
-                ps_ref_pic = ps_dec->ps_cur_pic;
+                ref_pic = *ps_dec->ps_cur_pic;
             }
             for(u1_i = u1_L0; u1_i < u1_max_ref_idx_l0; u1_i++)
             {
-                *ps_ref_pic_buf_lx = *ps_ref_pic;
+                *ps_ref_pic_buf_lx = ref_pic;
                 ps_ref_pic_buf_lx++;
             }
         }
@@ -1138,17 +1138,17 @@
     /* reference list to handle of errors        */
     {
         UWORD8 u1_i;
-        pic_buffer_t *ps_ref_pic;
+        pic_buffer_t ref_pic;
 
-        ps_ref_pic = ps_dpb_mgr->ps_init_dpb[0][0];
+        ref_pic = *(ps_dpb_mgr->ps_init_dpb[0][0]);
 
-        if(NULL == ps_ref_pic->pu1_buf1)
+        if(NULL == ref_pic.pu1_buf1)
         {
-            ps_ref_pic = ps_dec->ps_cur_pic;
+            ref_pic = *ps_dec->ps_cur_pic;
         }
         for(u1_i = u1_L0; u1_i < u1_max_ref_idx_l0; u1_i++)
         {
-            *ps_ref_pic_buf_lx = *ps_ref_pic;
+            *ps_ref_pic_buf_lx = ref_pic;
             ps_ref_pic_buf_lx++;
         }
     }
diff --git a/decoder/ih264d_quant_scaling.c b/decoder/ih264d_quant_scaling.c
index 1d48907..4e5c58d 100644
--- a/decoder/ih264d_quant_scaling.c
+++ b/decoder/ih264d_quant_scaling.c
@@ -20,6 +20,7 @@
 #include "ih264_typedefs.h"
 #include "ih264_macros.h"
 #include "ih264_platform_macros.h"
+#include "ih264_defs.h"
 #include "ih264d_bitstrm.h"
 #include "ih264d_structs.h"
 #include "ih264d_parse_cavlc.h"
@@ -44,7 +45,7 @@
 
 #define IDCT_BLOCK_WIDTH8X8  8
 
-void ih264d_scaling_list(WORD16 *pi2_scaling_list,
+WORD32 ih264d_scaling_list(WORD16 *pi2_scaling_list,
                          WORD32 i4_size_of_scalinglist,
                          UWORD8 *pu1_use_default_scaling_matrix_flag,
                          dec_bit_stream_t *ps_bitstrm)
@@ -62,6 +63,11 @@
             i4_delta_scale = ih264d_sev(pu4_bitstrm_ofst,
                                         pu4_bitstrm_buf);
 
+            if(i4_delta_scale < MIN_H264_DELTA_SCALE ||
+                        i4_delta_scale > MAX_H264_DELTA_SCALE)
+            {
+                return ERROR_INV_RANGE_QP_T;
+            }
             i4_nextScale = ((i4_lastScale + i4_delta_scale + 256) & 0xff);
 
             *pu1_use_default_scaling_matrix_flag = ((i4_j == 0)
@@ -72,6 +78,7 @@
                         (i4_nextScale == 0) ? (i4_lastScale) : (i4_nextScale);
         i4_lastScale = pi2_scaling_list[i4_j];
     }
+    return OK;
 }
 
 WORD32 ih264d_form_default_scaling_matrix(dec_struct_t *ps_dec)
diff --git a/decoder/ih264d_quant_scaling.h b/decoder/ih264d_quant_scaling.h
index c714c34..1a9b7d1 100644
--- a/decoder/ih264d_quant_scaling.h
+++ b/decoder/ih264d_quant_scaling.h
@@ -19,7 +19,7 @@
 */
 #ifndef _IH264D_QUANT_SCALING_H_
 #define _IH264D_QUANT_SCALING_H_
-void ih264d_scaling_list(WORD16 *pi2_scaling_list,
+WORD32 ih264d_scaling_list(WORD16 *pi2_scaling_list,
                   WORD32 i4_size_of_scalinglist,
                   UWORD8 *pu1_use_default_scaling_matrix_flag,
                   dec_bit_stream_t *ps_bitstrm);
diff --git a/encoder/ih264e_process.c b/encoder/ih264e_process.c
index 5333046..490c6d8 100644
--- a/encoder/ih264e_process.c
+++ b/encoder/ih264e_process.c
@@ -584,8 +584,6 @@
                     }
                 }
             }
-            /* Dont execute any further instructions until store synchronization took place */
-            DATA_SYNC();
         }
 
         /* Ending bitstream offset for header in bits */
@@ -676,6 +674,9 @@
         DEBUG("entropy status %x", ps_entropy->i4_error_code);
     }
 
+    /* Dont execute any further instructions until store synchronization took place */
+    DATA_SYNC();
+
     /* allow threads to dequeue entropy jobs */
     ps_codec->au4_entropy_thread_active[ctxt_sel] = 0;