diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2013-03-06 22:45:32 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2013-03-06 22:45:32 -0800 |
| commit | 502bf25b05b42726d7f1d2fd7feefcbfb6ac4a59 (patch) | |
| tree | c8fdf5bbefb703c76185db46d2e1ddc617a1e5e7 | |
| parent | 4f1e077df2555205e57d861b6d17b962a6aaad46 (diff) | |
| parent | 41da192219a5326bdf28139e6e74104d018ff4ea (diff) | |
| download | android_hardware_qcom_media-502bf25b05b42726d7f1d2fd7feefcbfb6ac4a59.tar.gz android_hardware_qcom_media-502bf25b05b42726d7f1d2fd7feefcbfb6ac4a59.tar.bz2 android_hardware_qcom_media-502bf25b05b42726d7f1d2fd7feefcbfb6ac4a59.zip | |
Merge "mm-video: vdec: Notify display about the format of video playback"
| -rw-r--r-- | mm-video/vidc/vdec/Android.mk | 2 | ||||
| -rw-r--r-- | mm-video/vidc/vdec/inc/omx_vdec.h | 6 | ||||
| -rw-r--r-- | mm-video/vidc/vdec/src/omx_vdec.cpp | 32 |
3 files changed, 37 insertions, 3 deletions
diff --git a/mm-video/vidc/vdec/Android.mk b/mm-video/vidc/vdec/Android.mk index fb5f26ff..56e25807 100644 --- a/mm-video/vidc/vdec/Android.mk +++ b/mm-video/vidc/vdec/Android.mk @@ -68,6 +68,7 @@ libmm-vdec-inc += frameworks/av/include/media/stagefright libmm-vdec-inc += hardware/qcom/display/libqservice libmm-vdec-inc += frameworks/av/media/libmediaplayerservice libmm-vdec-inc += frameworks/native/include/binder +libmm-vdec-inc += hardware/qcom/display/libqdutils LOCAL_MODULE := libOmxVdec @@ -80,6 +81,7 @@ LOCAL_SHARED_LIBRARIES := liblog libutils libbinder libcutils libdl LOCAL_SHARED_LIBRARIES += libdivxdrmdecrypt LOCAL_SHARED_LIBRARIES += libqservice +LOCAL_SHARED_LIBRARIES += libqdMetaData LOCAL_SRC_FILES := src/frameparser.cpp LOCAL_SRC_FILES += src/h264_utils.cpp diff --git a/mm-video/vidc/vdec/inc/omx_vdec.h b/mm-video/vidc/vdec/inc/omx_vdec.h index e1fd663c..7de5a371 100644 --- a/mm-video/vidc/vdec/inc/omx_vdec.h +++ b/mm-video/vidc/vdec/inc/omx_vdec.h @@ -84,6 +84,7 @@ extern "C"{ #if defined (_ANDROID_ICS_) #include <gralloc_priv.h> #include <IQService.h> +#include <qdMetaData.h> #endif #include <pthread.h> @@ -591,8 +592,13 @@ private: void handle_extradata(OMX_BUFFERHEADERTYPE *p_buf_hdr); OMX_ERRORTYPE enable_extradata(OMX_U32 requested_extradata, bool enable = true); void print_debug_extradata(OMX_OTHER_EXTRADATATYPE *extra); +#ifdef _MSM8974_ void append_interlace_extradata(OMX_OTHER_EXTRADATATYPE *extra, OMX_U32 interlaced_format_type); +#else + void append_interlace_extradata(OMX_OTHER_EXTRADATATYPE *extra, + OMX_U32 interlaced_format_type, OMX_U32 buf_index); +#endif void append_frame_info_extradata(OMX_OTHER_EXTRADATATYPE *extra, OMX_U32 num_conceal_mb, OMX_U32 picture_type, diff --git a/mm-video/vidc/vdec/src/omx_vdec.cpp b/mm-video/vidc/vdec/src/omx_vdec.cpp index 2c038762..1b8c5935 100644 --- a/mm-video/vidc/vdec/src/omx_vdec.cpp +++ b/mm-video/vidc/vdec/src/omx_vdec.cpp @@ -4244,6 +4244,12 @@ OMX_ERRORTYPE omx_vdec::use_output_buffer( drv_ctx.ptr_outputbuffer[i].bufferaddr = buff; drv_ctx.ptr_outputbuffer[i].mmaped_size = drv_ctx.ptr_outputbuffer[i].buffer_len = drv_ctx.op_buf.buffer_size; +#if defined(_ANDROID_ICS_) + if (drv_ctx.interlace != VDEC_InterlaceFrameProgressive) { + int enable = 1; + setMetaData(handle, PP_PARAM_INTERLACED, (void*)&enable); + } +#endif } else #endif @@ -8469,7 +8475,7 @@ void omx_vdec::handle_extradata_secure(OMX_BUFFERHEADERTYPE *p_buf_hdr) { p_buf_hdr->nFlags |= OMX_BUFFERFLAG_EXTRADATA; append_interlace_extradata(p_extra, - ((struct vdec_output_frameinfo *)p_buf_hdr->pOutputPortPrivate)->interlaced_format); + ((struct vdec_output_frameinfo *)p_buf_hdr->pOutputPortPrivate)->interlaced_format, index); p_extra = (OMX_OTHER_EXTRADATATYPE *) (((OMX_U8 *) p_extra) + p_extra->nSize); } if (client_extradata & OMX_FRAMEINFO_EXTRADATA && p_extra && @@ -8659,7 +8665,7 @@ void omx_vdec::handle_extradata(OMX_BUFFERHEADERTYPE *p_buf_hdr) { p_buf_hdr->nFlags |= OMX_BUFFERFLAG_EXTRADATA; append_interlace_extradata(p_extra, - ((struct vdec_output_frameinfo *)p_buf_hdr->pOutputPortPrivate)->interlaced_format); + ((struct vdec_output_frameinfo *)p_buf_hdr->pOutputPortPrivate)->interlaced_format, index); p_extra = (OMX_OTHER_EXTRADATATYPE *) (((OMX_U8 *) p_extra) + p_extra->nSize); } if (client_extradata & OMX_FRAMEINFO_EXTRADATA && p_extra && @@ -8876,10 +8882,17 @@ void omx_vdec::print_debug_extradata(OMX_OTHER_EXTRADATATYPE *extra) } void omx_vdec::append_interlace_extradata(OMX_OTHER_EXTRADATATYPE *extra, - OMX_U32 interlaced_format_type) + OMX_U32 interlaced_format_type, OMX_U32 buf_index) { OMX_STREAMINTERLACEFORMAT *interlace_format; OMX_U32 mbaff = 0; +#if defined(_ANDROID_ICS_) + OMX_U32 enable = 0; + private_handle_t *handle = NULL; + handle = (private_handle_t *)native_buffer[buf_index].nativehandle; + if(!handle) + DEBUG_PRINT_LOW("%s: Native Buffer handle is NULL",__func__); +#endif extra->nSize = OMX_INTERLACE_EXTRADATA_SIZE; extra->nVersion.nVersion = OMX_SPEC_VERSION; extra->nPortIndex = OMX_CORE_OUTPUT_PORT_INDEX; @@ -8895,12 +8908,25 @@ void omx_vdec::append_interlace_extradata(OMX_OTHER_EXTRADATATYPE *extra, interlace_format->bInterlaceFormat = OMX_FALSE; interlace_format->nInterlaceFormats = OMX_InterlaceFrameProgressive; drv_ctx.interlace = VDEC_InterlaceFrameProgressive; +#if defined(_ANDROID_ICS_) + if(handle) + { + setMetaData(handle, PP_PARAM_INTERLACED, (void*)&enable); + } +#endif } else { interlace_format->bInterlaceFormat = OMX_TRUE; interlace_format->nInterlaceFormats = OMX_InterlaceInterleaveFrameTopFieldFirst; drv_ctx.interlace = VDEC_InterlaceInterleaveFrameTopFieldFirst; +#if defined(_ANDROID_ICS_) + enable = 1; + if(handle) + { + setMetaData(handle, PP_PARAM_INTERLACED, (void*)&enable); + } +#endif } print_debug_extradata(extra); } |
