diff options
author | Praneeth Paladugu <ppaladug@codeaurora.org> | 2016-05-02 14:26:13 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-05-12 11:26:18 -0700 |
commit | 85372cdd0ee39e4359a0949240863268a77e7f95 (patch) | |
tree | c9eb60d18fd98e79adfc9656a4e491f879fa6c69 | |
parent | accaaf8fe5dd64d510f50e82a15ad233974846f0 (diff) | |
download | android_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.cpp | 13 |
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); |