mm-video: vidc: Add support for ISDB-T full seg

Add support for ISDB-T full seg for MPEG2 codec.
Add support to parse DATA_CORRUPT, ASPECT_RATIO and
SEQDISP properties.

Change-Id: Ibccb571ce1c4ab3ac873321b4812dc1777bcc121
diff --git a/mm-video/vidc/vdec/src/omx_vdec_msm8974.cpp b/mm-video/vidc/vdec/src/omx_vdec_msm8974.cpp
index f661947..e1f74db 100644
--- a/mm-video/vidc/vdec/src/omx_vdec_msm8974.cpp
+++ b/mm-video/vidc/vdec/src/omx_vdec_msm8974.cpp
@@ -541,6 +541,8 @@
 	prev_ts(LLONG_MAX),
 	rst_prev_ts(true),
 	frm_int(0),
+	m_disp_hor_size(0),
+	m_disp_vert_size(0),
 	in_reconfig(false),
 	m_display_id(NULL),
 	h264_parser(NULL),
@@ -8546,6 +8548,14 @@
       case EXTRADATA_PANSCAN_WINDOW:
         panscan_payload = (struct msm_vidc_panscan_window_payload *)data->data;
         break;
+      case EXTRADATA_MPEG2_SEQDISP:
+        struct msm_vidc_mpeg2_seqdisp_payload *seqdisp_payload;
+        seqdisp_payload = (struct msm_vidc_mpeg2_seqdisp_payload *)data->data;
+        if (seqdisp_payload) {
+          m_disp_hor_size = seqdisp_payload->disp_width;
+          m_disp_vert_size = seqdisp_payload->disp_height;
+        }
+        break;
       default:
         goto unrecognized_extradata;
       }
@@ -8620,6 +8630,14 @@
       if(ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control)) {
         DEBUG_PRINT_HIGH("Failed to set panscan extradata\n");
       }
+      if (output_capability == V4L2_PIX_FMT_MPEG2)
+      {
+        control.id = V4L2_CID_MPEG_VIDC_VIDEO_EXTRADATA;
+        control.value =  V4L2_MPEG_VIDC_EXTRADATA_MPEG2_SEQDISP;
+        if(ioctl(drv_ctx.video_driver_fd, VIDIOC_S_CTRL, &control)) {
+          DEBUG_PRINT_HIGH("Failed to set panscan extradata\n");
+        }
+      }
     } else if (requested_extradata & OMX_TIMEINFO_EXTRADATA)
     {
       control.id = V4L2_CID_MPEG_VIDC_VIDEO_EXTRADATA;
@@ -8811,6 +8829,15 @@
   frame_info->nConcealedMacroblocks = num_conceal_mb;
   frame_info->nFrameRate = frame_rate;
   frame_info->panScan.numWindows = 0;
+  if (output_capability == V4L2_PIX_FMT_MPEG2)
+  {
+    if (m_disp_hor_size && m_disp_vert_size)
+    {
+      frame_info->displayAspectRatio.displayHorizontalSize = m_disp_hor_size;
+      frame_info->displayAspectRatio.displayVerticalSize = m_disp_vert_size;
+    }
+  }
+
   if(panscan_payload) {
   frame_info->panScan.numWindows = panscan_payload->num_panscan_windows;
   panscan_window = &panscan_payload->wnd[0];