summaryrefslogtreecommitdiffstats
path: root/mm-video
diff options
context:
space:
mode:
authorPraveen Chavan <pchavan@codeaurora.org>2013-10-23 11:18:28 -0700
committerc_sridur <sridur@codeaurora.org>2013-10-30 19:24:00 +0530
commit404803f0253edf4c8fff5da3293f15067b43fcfa (patch)
tree955478b88d8cf680aba29f5ad7c2790dcec02dde /mm-video
parent4e5b6b629329cf9d4976a545090fd75e6778b5b4 (diff)
downloadandroid_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.cpp15
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;
}