summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-02-16 18:51:39 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-02-16 18:51:39 -0800
commit844f029683104718380a2ed6b969a9947223ea06 (patch)
treebadff1af8bf2c55f197f29e0f84597d29a2b1e7d
parent0193b9c6b599e2be787fbb50bcd1cad8416b5d66 (diff)
parent416ba491203a1841db033f49b457bb28c71c6761 (diff)
downloadandroid_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.h1
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp34
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*)&current_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;