diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2016-02-16 18:51:39 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-02-16 18:51:39 -0800 |
commit | 844f029683104718380a2ed6b969a9947223ea06 (patch) | |
tree | badff1af8bf2c55f197f29e0f84597d29a2b1e7d | |
parent | 0193b9c6b599e2be787fbb50bcd1cad8416b5d66 (diff) | |
parent | 416ba491203a1841db033f49b457bb28c71c6761 (diff) | |
download | android_hardware_qcom_media-844f029683104718380a2ed6b969a9947223ea06.tar.gz android_hardware_qcom_media-844f029683104718380a2ed6b969a9947223ea06.tar.bz2 android_hardware_qcom_media-844f029683104718380a2ed6b969a9947223ea06.zip |
Merge "mm-video-v4l2: vidc: vdec: skip enabling S3D extra data for secure session"
-rw-r--r-- | mm-video-v4l2/vidc/vdec/inc/omx_vdec.h | 1 | ||||
-rw-r--r-- | mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp | 34 |
2 files changed, 34 insertions, 1 deletions
diff --git a/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h b/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h index 2478338a..4d9b072a 100644 --- a/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h +++ b/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h @@ -991,6 +991,7 @@ class omx_vdec: public qc_omx_component unsigned int m_fill_output_msg; bool client_set_fps; + unsigned int stereo_output_mode; class allocate_color_convert_buf { public: 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 7dfacc05..aadf2e7b 100644 --- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp +++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp @@ -123,7 +123,7 @@ extern "C" { #define EXTRADATA_IDX(__num_planes) ((__num_planes) ? (__num_planes) - 1 : 0) #define ALIGN(x, to_align) ((((unsigned) x) + (to_align - 1)) & ~(to_align - 1)) -#define DEFAULT_EXTRADATA (OMX_INTERLACE_EXTRADATA) +#define DEFAULT_EXTRADATA (OMX_INTERLACE_EXTRADATA | OMX_FRAMEPACK_EXTRADATA) #define DEFAULT_CONCEAL_COLOR "32784" //0x8010, black by default #ifndef ION_FLAG_CP_BITSTREAM @@ -642,6 +642,7 @@ omx_vdec::omx_vdec(): m_error_propogated(false), m_other_extradata(NULL), m_profile(0), client_set_fps(false), + stereo_output_mode(HAL_NO_3D), m_last_rendered_TS(-1), m_queued_codec_config_count(0), current_perf_level(V4L2_CID_MPEG_VIDC_PERF_LEVEL_NOMINAL), @@ -8047,6 +8048,13 @@ OMX_ERRORTYPE omx_vdec::fill_buffer_done(OMX_HANDLETYPE hComp, UPDATE_REFRESH_RATE, (void*)¤t_framerate); } + if (buffer->nFilledLen && m_enable_android_native_buffers && m_out_mem_ptr) { + OMX_U32 buf_index = buffer - m_out_mem_ptr; + DEBUG_PRINT_LOW("stereo_output_mode = %d",stereo_output_mode); + setMetaData((private_handle_t *)native_buffer[buf_index].privatehandle, + S3D_FORMAT, (void*)&stereo_output_mode); + } + if (il_buffer) { log_output_buffers(il_buffer); if (dynamic_buf_mode) { @@ -10123,6 +10131,26 @@ void omx_vdec::handle_extradata(OMX_BUFFERHEADERTYPE *p_buf_hdr) case MSM_VIDC_EXTRADATA_S3D_FRAME_PACKING: struct msm_vidc_s3d_frame_packing_payload *s3d_frame_packing_payload; s3d_frame_packing_payload = (struct msm_vidc_s3d_frame_packing_payload *)(void *)data->data; + switch (s3d_frame_packing_payload->fpa_type) { + case MSM_VIDC_FRAMEPACK_SIDE_BY_SIDE: + if (s3d_frame_packing_payload->content_interprtation_type == 1) + stereo_output_mode = HAL_3D_SIDE_BY_SIDE_L_R; + else if (s3d_frame_packing_payload->content_interprtation_type == 2) + stereo_output_mode = HAL_3D_SIDE_BY_SIDE_R_L; + else { + DEBUG_PRINT_ERROR("Unsupported side-by-side framepacking type"); + stereo_output_mode = HAL_NO_3D; + } + break; + case MSM_VIDC_FRAMEPACK_TOP_BOTTOM: + stereo_output_mode = HAL_3D_TOP_BOTTOM; + break; + default: + DEBUG_PRINT_ERROR("Unsupported framepacking type"); + stereo_output_mode = HAL_NO_3D; + } + DEBUG_PRINT_LOW("setMetaData FRAMEPACKING : fpa_type = %lu, content_interprtation_type = %lu, stereo_output_mode= %d", + s3d_frame_packing_payload->fpa_type, s3d_frame_packing_payload->content_interprtation_type, stereo_output_mode); if (client_extradata & OMX_FRAMEPACK_EXTRADATA) { append_framepack_extradata(p_extra, s3d_frame_packing_payload); p_extra = (OMX_OTHER_EXTRADATATYPE *) (((OMX_U8 *) p_extra) + p_extra->nSize); @@ -10264,6 +10292,10 @@ OMX_ERRORTYPE omx_vdec::enable_extradata(OMX_U32 requested_extradata, } } if (requested_extradata & OMX_FRAMEPACK_EXTRADATA) { + if (secure_mode) { + DEBUG_PRINT_HIGH("S3D frame packing not supported for secure sessions"); + return OMX_ErrorUnsupportedSetting; + } if (output_capability == V4L2_PIX_FMT_H264) { DEBUG_PRINT_HIGH("enable OMX_FRAMEPACK_EXTRADATA"); control.id = V4L2_CID_MPEG_VIDC_VIDEO_EXTRADATA; |