summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPraneeth Paladugu <ppaladug@codeaurora.org>2016-05-02 14:26:13 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-05-12 11:26:18 -0700
commit85372cdd0ee39e4359a0949240863268a77e7f95 (patch)
treec9eb60d18fd98e79adfc9656a4e491f879fa6c69
parentaccaaf8fe5dd64d510f50e82a15ad233974846f0 (diff)
downloadandroid_hardware_qcom_media-85372cdd0ee39e4359a0949240863268a77e7f95.tar.gz
android_hardware_qcom_media-85372cdd0ee39e4359a0949240863268a77e7f95.tar.bz2
android_hardware_qcom_media-85372cdd0ee39e4359a0949240863268a77e7f95.zip
mm-video-v4l2: vidc: vdec: Change DPB mode to combined for VP9
Disabling split mode for VP9 as DPB buffers in split mode are scratch buffers and RELEASE_REFERENCE event currently does not handle the circulation of scratch buffers.This affects VP9 Spatial Scalability clips as some of the DPB buffers might be held for reference even after the flush. CRs-fixed: 1004386 Change-Id: Icae40e7d9862d930715bdcb5d5b7e15576484d67
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
index 937ffdf8..9b282d01 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
@@ -996,8 +996,19 @@ OMX_ERRORTYPE omx_vdec::decide_dpb_buffer_mode(bool force_split_mode)
if (cpu_access) {
if (dpb_bit_depth == MSM_VIDC_BIT_DEPTH_8) {
- if ((m_force_compressed_for_dpb || m_progressive) &&
+ if ((m_force_compressed_for_dpb || (m_progressive && (eCompressionFormat != OMX_VIDEO_CodingVP9))) &&
!force_split_mode) {
+ /* Disabled split mode for VP9. In split mode the DPB buffers are part of the internal
+ * scratch buffers and the driver does not does the reference buffer management for
+ * scratch buffers. In case of VP9 with spatial scalability, when a sequence changed
+ * event is received with the new resolution, and when a flush is sent by the driver, it
+ * releases all the references of internal scratch buffers. However as per the VP9
+ * spatial scalability, even after the flush, the buffers which have not yet received
+ * release reference event should not be unmapped and freed. Currently in driver,
+ * reference buffer management of the internal scratch buffer is not implemented
+ * and hence the DPB buffers get unmapped. For other codecs it does not matter
+ * as with the new SPS/PPS, the DPB is flushed.
+ */
//split DPB-OPB
//DPB -> UBWC , OPB -> Linear
eRet = set_dpb(true, V4L2_MPEG_VIDC_VIDEO_DPB_COLOR_FMT_UBWC);