summaryrefslogtreecommitdiffstats
path: root/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp
diff options
context:
space:
mode:
authorSteve Kondik <steve@cyngn.com>2015-02-02 23:23:50 -0800
committerSteve Kondik <steve@cyngn.com>2015-02-02 23:23:50 -0800
commitdf7cca649246eae27a464d835c64cfa3c017e1ae (patch)
tree858a1cf62ab3934ca0fc5ddbbb76b2d07fc51f33 /mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp
parentc8b6d5ceaf831f7b0ba551687eaa099b05cdb156 (diff)
parent8445212133cbf17621015a8befde24d02354e896 (diff)
downloadandroid_hardware_qcom_media-stable/cm-12.0-caf-8916-YNG1T.tar.gz
android_hardware_qcom_media-stable/cm-12.0-caf-8916-YNG1T.tar.bz2
android_hardware_qcom_media-stable/cm-12.0-caf-8916-YNG1T.zip
Merge branch 'LA.BR.1.2.1_rb2.12' of git://codeaurora.org/platform/hardware/qcom/media into cm-12.0stable/cm-12.0-caf-8916-YNG4Nstable/cm-12.0-caf-8916-YNG3Cstable/cm-12.0-caf-8916-YNG1TAstable/cm-12.0-caf-8916-YNG1Tcm-12.0-caf-8916
Diffstat (limited to 'mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp')
-rw-r--r--mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp57
1 files changed, 48 insertions, 9 deletions
diff --git a/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp b/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp
index e1082978..e2e52e1f 100644
--- a/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp
+++ b/mm-video-v4l2/vidc/venc/src/omx_swvenc_mpeg4.cpp
@@ -2326,30 +2326,69 @@ SWVENC_STATUS omx_venc::swvenc_empty_buffer_done_cb
{
ENTER_FUNC();
+ (void)swvenc;
+ SWVENC_STATUS eRet = SWVENC_S_SUCCESS;
+ omx_venc *omx = reinterpret_cast<omx_venc*>(p_client);
+
+ if (p_ipbuffer == NULL)
+ {
+ eRet = SWVENC_S_FAILURE;
+ }
+ else
+ {
+ omx->swvenc_empty_buffer_done(p_ipbuffer);
+ }
+ return eRet;
+}
+
+SWVENC_STATUS omx_venc::swvenc_empty_buffer_done
+(
+ SWVENC_IPBUFFER *p_ipbuffer
+)
+{
SWVENC_STATUS eRet = SWVENC_S_SUCCESS;
OMX_ERRORTYPE error = OMX_ErrorNone;
OMX_BUFFERHEADERTYPE* omxhdr = NULL;
- omx_video *omx = reinterpret_cast<omx_video*>(p_client);
-
- (void)swvenc;
+ //omx_video *omx = reinterpret_cast<omx_video*>(p_client);
omxhdr = (OMX_BUFFERHEADERTYPE*)p_ipbuffer->p_client_data;
DEBUG_PRINT_LOW("EBD: clientData (%p)", p_ipbuffer->p_client_data);
if ( (omxhdr == NULL) ||
- ( ((OMX_U32)(omxhdr - omx->m_inp_mem_ptr) > omx->m_sInPortDef.nBufferCountActual) &&
- ((OMX_U32)(omxhdr - omx->meta_buffer_hdr) > omx->m_sInPortDef.nBufferCountActual)
+ ( ((OMX_U32)(omxhdr - m_inp_mem_ptr) >m_sInPortDef.nBufferCountActual) &&
+ ((OMX_U32)(omxhdr - meta_buffer_hdr) >m_sInPortDef.nBufferCountActual)
)
)
{
omxhdr = NULL;
error = OMX_ErrorUndefined;
}
-
- omx->omx_release_meta_buffer(omxhdr);
-
- omx->post_event ((unsigned long)omxhdr,error,OMX_COMPONENT_GENERATE_EBD);
+ // unmap the input buffer->pBuffer
+ omx_release_meta_buffer(omxhdr);
+#ifdef _ANDROID_ICS_
+ if (meta_mode_enable)
+ {
+ encoder_media_buffer_type *meta_buf = NULL;
+ unsigned int size = 0;
+ meta_buf = (encoder_media_buffer_type *)omxhdr->pBuffer;
+ if (meta_buf)
+ {
+ if (meta_buf->buffer_type == kMetadataBufferTypeCameraSource)
+ {
+ size = meta_buf->meta_handle->data[2];
+ }
+ else if (meta_buf->buffer_type == kMetadataBufferTypeGrallocSource)
+ {
+ private_handle_t *handle = (private_handle_t *)meta_buf->meta_handle;
+ size = handle->size;
+ }
+ }
+ int status = munmap(p_ipbuffer->p_buffer, size);
+ DEBUG_PRINT_HIGH("Unmapped pBuffer <%p> size <%d> status <%d>", p_ipbuffer->p_buffer, size, status);
+ }
+#endif
+ post_event ((unsigned long)omxhdr,error,OMX_COMPONENT_GENERATE_EBD);
RETURN(eRet);
}