Snap for 5533229 from 3ea8f1d536da8f09f3e663cf173fe4f1b0fe4130 to qt-release

Change-Id: I48c58ca636958a8670b5662d82be8088c189fb88
diff --git a/common/impeg2_buf_mgr.c b/common/impeg2_buf_mgr.c
index c4aca4a..498259f 100644
--- a/common/impeg2_buf_mgr.c
+++ b/common/impeg2_buf_mgr.c
@@ -88,6 +88,39 @@
     }
 }
 
+/**
+*******************************************************************************
+*
+* @brief
+*      Buffer manager reset function.
+*
+* @par Description:
+*    Resets the buffer manager structure
+*
+* @param[in] ps_buf_mgr
+*  Pointer to the buffer manager
+*
+* @returns
+*
+* @remarks
+*  None
+*
+*******************************************************************************
+*/
+
+void impeg2_buf_mgr_reset(
+                buf_mgr_t *ps_buf_mgr)
+{
+    WORD32 id;
+
+    ps_buf_mgr->u4_max_buf_cnt = BUF_MGR_MAX_CNT;
+    ps_buf_mgr->u4_active_buf_cnt = 0;
+
+    for(id = 0; id < BUF_MGR_MAX_CNT; id++)
+    {
+        ps_buf_mgr->au4_status[id] = 0;
+    }
+}
 
 /**
 *******************************************************************************
diff --git a/common/impeg2_buf_mgr.h b/common/impeg2_buf_mgr.h
index 6b1cbef..aed157a 100644
--- a/common/impeg2_buf_mgr.h
+++ b/common/impeg2_buf_mgr.h
@@ -69,6 +69,10 @@
 void impeg2_buf_mgr_init(
                 buf_mgr_t *ps_buf_mgr);
 
+// resets the buffer API structure
+void impeg2_buf_mgr_reset(
+                buf_mgr_t *ps_buf_mgr);
+
 // Add buffer to buffer manager. 0: success, -1: fail (u4_active_buf_cnt has reached u4_max_buf_cnt)
 WORD32 impeg2_buf_mgr_add(
                 buf_mgr_t *ps_buf_mgr,
diff --git a/decoder/impeg2d_api_main.c b/decoder/impeg2d_api_main.c
index d9bc644..33a7281 100644
--- a/decoder/impeg2d_api_main.c
+++ b/decoder/impeg2d_api_main.c
@@ -992,26 +992,11 @@
 
     if(ps_dec_state_multi_core != NULL)
     {
-        if(ps_dec_state->aps_ref_pics[1] != NULL)
-            impeg2_buf_mgr_release(ps_dec_state->pv_pic_buf_mg, ps_dec_state->aps_ref_pics[1]->i4_buf_id, BUF_MGR_REF);
-        if(ps_dec_state->aps_ref_pics[0] != NULL)
-            impeg2_buf_mgr_release(ps_dec_state->pv_pic_buf_mg, ps_dec_state->aps_ref_pics[0]->i4_buf_id, BUF_MGR_REF);
-        while(1)
-        {
-            pic_buf_t *ps_disp_pic = impeg2_disp_mgr_get(&ps_dec_state->s_disp_mgr, &ps_dec_state->i4_disp_buf_id);
-            if(NULL == ps_disp_pic)
-                break;
-            if(0 == ps_dec_state->u4_share_disp_buf)
-                impeg2_buf_mgr_release(ps_dec_state->pv_pic_buf_mg, ps_disp_pic->i4_buf_id, BUF_MGR_DISP);
-
-        }
-
-        if((ps_dec_state->u4_deinterlace) && (NULL != ps_dec_state->ps_deint_pic))
-        {
-            impeg2_buf_mgr_release(ps_dec_state->pv_pic_buf_mg,
-                                   ps_dec_state->ps_deint_pic->i4_buf_id,
-                                   MPEG2_BUF_MGR_DEINT);
-        }
+        impeg2_buf_mgr_reset(ps_dec_state->pv_pic_buf_mg);
+        /* Display buffer manager init behaves like a reset
+         * as it doesn't need to preserve picture buffer addresses
+         * like buffer manager */
+        impeg2_disp_mgr_init(&ps_dec_state->s_disp_mgr);
 
         for(i4_num_threads = 0; i4_num_threads < MAX_THREADS; i4_num_threads++)
         {
@@ -1102,18 +1087,7 @@
 
     if(ps_ctl_dec_ip->s_ivd_ctl_set_config_ip_t.u4_disp_wd != 0)
     {
-        if(ps_dec_state->u2_header_done == 1)
-        {
-            if (ps_ctl_dec_ip->s_ivd_ctl_set_config_ip_t.u4_disp_wd > ps_dec_state->u2_frame_width)
-            {
-                ps_dec_state->u4_frm_buf_stride = ps_ctl_dec_ip->s_ivd_ctl_set_config_ip_t.u4_disp_wd;
-            }
-        }
-        else
-        {
-            ps_dec_state->u4_frm_buf_stride = ps_ctl_dec_ip->s_ivd_ctl_set_config_ip_t.u4_disp_wd;
-        }
-
+        ps_dec_state->u4_frm_buf_stride = ps_ctl_dec_ip->s_ivd_ctl_set_config_ip_t.u4_disp_wd;
     }
     else
     {