Merge cherrypicks of [2688425, 2689040, 2689041, 2689042, 2688662, 2688663, 2688664, 2688426, 2688427, 2688428, 2688665, 2688666, 2688667, 2688668, 2688669, 2688670, 2688671, 2688429, 2688672, 2689043, 2688673, 2688674, 2688675, 2688676, 2688677, 2688678, 2688679, 2688430, 2688431] into oc-release
Change-Id: I3cce4227167df1e58caf5ea4992e36f11d004e96
diff --git a/decoder/ih264d_parse_bslice.c b/decoder/ih264d_parse_bslice.c
index 772964a..db64ce9 100644
--- a/decoder/ih264d_parse_bslice.c
+++ b/decoder/ih264d_parse_bslice.c
@@ -1531,10 +1531,7 @@
}
num_entries = ((2 * num_entries) + 1);
- if(BASE_PROFILE_IDC != ps_dec->ps_cur_sps->u1_profile_idc)
- {
- num_entries *= 2;
- }
+ num_entries *= 2;
size = num_entries * sizeof(void *);
size += PAD_MAP_IDX_POC * sizeof(void *);
diff --git a/decoder/ih264d_parse_pslice.c b/decoder/ih264d_parse_pslice.c
index bcfbe05..d6b0f23 100644
--- a/decoder/ih264d_parse_pslice.c
+++ b/decoder/ih264d_parse_pslice.c
@@ -1696,10 +1696,8 @@
num_entries = 1;
}
num_entries = ((2 * num_entries) + 1);
- if(BASE_PROFILE_IDC != ps_dec->ps_cur_sps->u1_profile_idc)
- {
- num_entries *= 2;
- }
+ num_entries *= 2;
+
size = num_entries * sizeof(void *);
size += PAD_MAP_IDX_POC * sizeof(void *);
@@ -2063,10 +2061,7 @@
num_entries = 1;
}
num_entries = ((2 * num_entries) + 1);
- if(BASE_PROFILE_IDC != ps_dec->ps_cur_sps->u1_profile_idc)
- {
- num_entries *= 2;
- }
+ num_entries *= 2;
size = num_entries * sizeof(void *);
size += PAD_MAP_IDX_POC * sizeof(void *);
diff --git a/decoder/ih264d_parse_slice.c b/decoder/ih264d_parse_slice.c
index ab9f3f6..bdfccb6 100644
--- a/decoder/ih264d_parse_slice.c
+++ b/decoder/ih264d_parse_slice.c
@@ -441,11 +441,23 @@
ps_dec->au1_pic_buf_ref_flag[cur_pic_buf_id] = 0;
{
- /*make first entry of list0 point to cur pic,so that if first Islice is in error, ref pic struct will have valid entries*/
+ /*make first entry of list0 and list1 point to cur pic,
+ *so that if first slice is in error, ref pic struct will have valid entries*/
ps_dec->ps_ref_pic_buf_lx[0] = ps_dec->ps_dpb_mgr->ps_init_dpb[0];
+ ps_dec->ps_ref_pic_buf_lx[1] = ps_dec->ps_dpb_mgr->ps_init_dpb[1];
*(ps_dec->ps_dpb_mgr->ps_init_dpb[0][0]) = *ps_cur_pic;
/* Initialize for field reference as well */
*(ps_dec->ps_dpb_mgr->ps_init_dpb[0][MAX_REF_BUFS]) = *ps_cur_pic;
+
+ *(ps_dec->ps_dpb_mgr->ps_mod_dpb[0][0]) = *ps_cur_pic;
+ /* Initialize for field reference as well */
+ *(ps_dec->ps_dpb_mgr->ps_mod_dpb[0][MAX_REF_BUFS]) = *ps_cur_pic;
+ *(ps_dec->ps_dpb_mgr->ps_init_dpb[1][0]) = *ps_cur_pic;
+ /* Initialize for field reference as well */
+ *(ps_dec->ps_dpb_mgr->ps_init_dpb[1][MAX_REF_BUFS]) = *ps_cur_pic;
+ *(ps_dec->ps_dpb_mgr->ps_mod_dpb[1][0]) = *ps_cur_pic;
+ /* Initialize for field reference as well */
+ *(ps_dec->ps_dpb_mgr->ps_mod_dpb[1][MAX_REF_BUFS]) = *ps_cur_pic;
}
if(!ps_dec->ps_cur_pic)
@@ -1790,10 +1802,8 @@
num_entries = 1;
}
num_entries = ((2 * num_entries) + 1);
- if(BASE_PROFILE_IDC != ps_dec->ps_cur_sps->u1_profile_idc)
- {
- num_entries *= 2;
- }
+ num_entries *= 2;
+
size = num_entries * sizeof(void *);
size += PAD_MAP_IDX_POC * sizeof(void *);
diff --git a/decoder/ih264d_process_bslice.c b/decoder/ih264d_process_bslice.c
index 7784110..42fad03 100644
--- a/decoder/ih264d_process_bslice.c
+++ b/decoder/ih264d_process_bslice.c
@@ -1212,7 +1212,8 @@
struct dpb_info_t *ps_next_dpb;
WORD32 i_cur_poc, i_max_st_poc, i_min_st_poc, i_ref_poc, i_temp_poc;
WORD8 i;
- UWORD8 u1_max_lt_index, u1_min_lt_index, u1_lt_index;
+ UWORD8 u1_max_lt_index, u1_min_lt_index;
+ UWORD32 u4_lt_index;
UWORD8 u1_field_pic_flag;
dec_slice_params_t *ps_cur_slice;
UWORD8 u1_L0, u1_L1;
@@ -1264,9 +1265,9 @@
}
for(i = 0; i < ps_dpb_mgr->u1_num_lt_ref_bufs; i++)
{
- u1_lt_index = ps_next_dpb->u1_lt_idx;
- u1_max_lt_index = (UWORD8)(MAX(u1_max_lt_index, u1_lt_index));
- u1_min_lt_index = (UWORD8)(MIN(u1_min_lt_index, u1_lt_index));
+ u4_lt_index = ps_next_dpb->u1_lt_idx;
+ u1_max_lt_index = (UWORD8)(MAX(u1_max_lt_index, u4_lt_index));
+ u1_min_lt_index = (UWORD8)(MIN(u1_min_lt_index, u4_lt_index));
/* Chase the next link */
ps_next_dpb = ps_next_dpb->ps_prev_long;
@@ -1333,12 +1334,12 @@
/* Start from ST head */
u1_num_short_term_bufs = u1_L0;
- for(u1_lt_index = u1_min_lt_index; u1_lt_index <= u1_max_lt_index; u1_lt_index++)
+ for(u4_lt_index = u1_min_lt_index; u4_lt_index <= u1_max_lt_index; u4_lt_index++)
{
ps_next_dpb = ps_dpb_mgr->ps_dpb_ht_head;
for(i = 0; i < ps_dpb_mgr->u1_num_lt_ref_bufs; i++)
{
- if(ps_next_dpb->u1_lt_idx == u1_lt_index)
+ if(ps_next_dpb->u1_lt_idx == u4_lt_index)
{
ih264d_insert_pic_in_ref_pic_listx(ps_ref_pic_buf_lx,
ps_next_dpb->ps_pic_buf);
@@ -1466,13 +1467,13 @@
/* Start from ST head */
u1_num_short_term_bufs = u1_L1;
- for(u1_lt_index = u1_min_lt_index; u1_lt_index <= u1_max_lt_index;
- u1_lt_index++)
+ for(u4_lt_index = u1_min_lt_index; u4_lt_index <= u1_max_lt_index;
+ u4_lt_index++)
{
ps_next_dpb = ps_dpb_mgr->ps_dpb_ht_head;
for(i = 0; i < ps_dpb_mgr->u1_num_lt_ref_bufs; i++)
{
- if(ps_next_dpb->u1_lt_idx == u1_lt_index)
+ if(ps_next_dpb->u1_lt_idx == u4_lt_index)
{
ih264d_insert_pic_in_ref_pic_listx(ps_ref_pic_buf_lx,
ps_next_dpb->ps_pic_buf);
diff --git a/decoder/ih264d_process_pslice.c b/decoder/ih264d_process_pslice.c
index 95ac557..efda5cf 100644
--- a/decoder/ih264d_process_pslice.c
+++ b/decoder/ih264d_process_pslice.c
@@ -971,7 +971,8 @@
dpb_manager_t *ps_dpb_mgr;
struct dpb_info_t *ps_next_dpb;
WORD8 i;
- UWORD8 u1_max_lt_index, u1_min_lt_index, u1_lt_index;
+ UWORD8 u1_max_lt_index, u1_min_lt_index;
+ UWORD32 u4_lt_index;
UWORD8 u1_field_pic_flag;
dec_slice_params_t *ps_cur_slice;
UWORD8 u1_L0;
@@ -1018,9 +1019,9 @@
for(i = 0; i < ps_dpb_mgr->u1_num_lt_ref_bufs; i++)
{
- u1_lt_index = ps_next_dpb->u1_lt_idx;
- u1_max_lt_index = (UWORD8)(MAX(u1_max_lt_index, u1_lt_index));
- u1_min_lt_index = (UWORD8)(MIN(u1_min_lt_index, u1_lt_index));
+ u4_lt_index = ps_next_dpb->u1_lt_idx;
+ u1_max_lt_index = (UWORD8)(MAX(u1_max_lt_index, u4_lt_index));
+ u1_min_lt_index = (UWORD8)(MIN(u1_min_lt_index, u4_lt_index));
/* Chase the next link */
ps_next_dpb = ps_next_dpb->ps_prev_long;
@@ -1065,13 +1066,13 @@
/* Arrange all Long term buffers in ascending order, in LongtermIndex */
/* Start from LT head */
u1_num_short_term_bufs = u1_L0;
- for(u1_lt_index = u1_min_lt_index; u1_lt_index <= u1_max_lt_index;
- u1_lt_index++)
+ for(u4_lt_index = u1_min_lt_index; u4_lt_index <= u1_max_lt_index;
+ u4_lt_index++)
{
ps_next_dpb = ps_dpb_mgr->ps_dpb_ht_head;
for(i = 0; i < ps_dpb_mgr->u1_num_lt_ref_bufs; i++)
{
- if(ps_next_dpb->u1_lt_idx == u1_lt_index)
+ if(ps_next_dpb->u1_lt_idx == u4_lt_index)
{
ih264d_insert_pic_in_ref_pic_listx(ps_ref_pic_buf_lx,
ps_next_dpb->ps_pic_buf);
diff --git a/decoder/ih264d_utils.c b/decoder/ih264d_utils.c
index 4437832..63a279d 100644
--- a/decoder/ih264d_utils.c
+++ b/decoder/ih264d_utils.c
@@ -1983,10 +1983,7 @@
num_entries = 1;
}
num_entries = ((2 * num_entries) + 1);
- if(BASE_PROFILE_IDC != ps_dec->ps_cur_sps->u1_profile_idc)
- {
- num_entries *= 2;
- }
+ num_entries *= 2;
size = num_entries * sizeof(void *);
size += PAD_MAP_IDX_POC * sizeof(void *);