diff options
author | Praveen Chavan <pchavan@codeaurora.org> | 2013-10-23 11:18:28 -0700 |
---|---|---|
committer | c_sridur <sridur@codeaurora.org> | 2013-10-30 19:24:00 +0530 |
commit | 404803f0253edf4c8fff5da3293f15067b43fcfa (patch) | |
tree | 955478b88d8cf680aba29f5ad7c2790dcec02dde /mm-video | |
parent | 4e5b6b629329cf9d4976a545090fd75e6778b5b4 (diff) | |
download | android_hardware_qcom_media-404803f0253edf4c8fff5da3293f15067b43fcfa.tar.gz android_hardware_qcom_media-404803f0253edf4c8fff5da3293f15067b43fcfa.tar.bz2 android_hardware_qcom_media-404803f0253edf4c8fff5da3293f15067b43fcfa.zip |
mm-video: vidc: set stride in gralloc-metadata for adaptive-playback
In Adaptive-playback mode, following resolution change, decoder
continues to decode on larger buffer. But the stride is changed
implicitly. Set the updated stride in gralloc-metadata in each
buffer, so HWC/GPU can read the stride to interpret the buffer's
geometry correctly.
Change-Id: If223e4bf230f8032b03b9d51d41b39576d0cf961
Diffstat (limited to 'mm-video')
-rw-r--r-- | mm-video/vidc/vdec/src/omx_vdec.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/mm-video/vidc/vdec/src/omx_vdec.cpp b/mm-video/vidc/vdec/src/omx_vdec.cpp index 5aeea2ce..4b2bab2c 100644 --- a/mm-video/vidc/vdec/src/omx_vdec.cpp +++ b/mm-video/vidc/vdec/src/omx_vdec.cpp @@ -7065,6 +7065,21 @@ OMX_ERRORTYPE omx_vdec::fill_buffer_done(OMX_HANDLETYPE hComp, return OMX_ErrorBadParameter; } + // update buffer stride so display can interpret the buffer correctly + if (m_use_smoothstreaming) { + OMX_U32 buf_index = buffer - m_out_mem_ptr; + private_handle_t * handle = NULL; + BufferDim_t dim; + dim.sliceWidth = m_port_def.format.video.nStride; + dim.sliceHeight = m_port_def.format.video.nSliceHeight; + handle = (private_handle_t *)native_buffer[buf_index].nativehandle; + if (handle) { + DEBUG_PRINT_LOW("NOTE: set metadata: update buffer geo with " + "stride %d slice %d", dim.sliceWidth, dim.sliceHeight); + setMetaData(handle, UPDATE_BUFFER_GEOMETRY, (void*)&dim); + } + } + return OMX_ErrorNone; } |