summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorHarish Mahendrakar <harish.mahendrakar@ittiam.com>2019-03-19 20:30:36 -0700
committerRay Essick <essick@google.com>2019-05-01 13:25:30 -0700
commit4c747e2e9afa6a4852be37f97d17d9a19d8fea34 (patch)
tree574a3cf3b161d1e0498bcdd7be4bbc8a68d1d65d /common
parenta185bda936f580da194a6ae301beee9182be0dec (diff)
downloadplatform_external_libmpeg2-4c747e2e9afa6a4852be37f97d17d9a19d8fea34.tar.gz
platform_external_libmpeg2-4c747e2e9afa6a4852be37f97d17d9a19d8fea34.tar.bz2
platform_external_libmpeg2-4c747e2e9afa6a4852be37f97d17d9a19d8fea34.zip
Reset buffer managers during reset control call
In some cases, some picture buffer entries in buffer manager were not released during reset. Added a function to reset buffer manager entries and called that during reset control call. Without this in some call sequences Decoder would run out of picture buffers and not produce correct output. Bug: 124531341 Test: atest android.media.cts.DecoderTest Change-Id: I75e4422263b0a3e66807376567705b1f06e89cff
Diffstat (limited to 'common')
-rw-r--r--common/impeg2_buf_mgr.c33
-rw-r--r--common/impeg2_buf_mgr.h4
2 files changed, 37 insertions, 0 deletions
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 @@ void impeg2_buf_mgr_init(
}
}
+/**
+*******************************************************************************
+*
+* @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 @@ typedef struct
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,