amcvideodec: Implement support for COLOR_QCOM_FormatYVU420SemiPlanar32mMultiView...
authorSebastian Dröge <sebastian@centricular.com>
Wed, 14 Oct 2015 16:24:22 +0000 (19:24 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Tue, 20 Oct 2015 07:12:32 +0000 (10:12 +0300)
https://bugzilla.gnome.org/show_bug.cgi?id=756578

sys/androidmedia/gstamc.c
sys/androidmedia/gstamcvideodec.c

index 88dc96808704cc5586e209aa67b011739a968d0d..078e28a3b6f1540c1692e1a62fdc3aef428ee61e 100644 (file)
@@ -1989,6 +1989,7 @@ static const struct
   COLOR_QCOM_FormatYUV420SemiPlanar, GST_VIDEO_FORMAT_NV12}, {
   COLOR_QCOM_FormatYUV420PackedSemiPlanar64x32Tile2m8ka, GST_VIDEO_FORMAT_NV12}, {
   COLOR_QCOM_FormatYVU420SemiPlanar32m, GST_VIDEO_FORMAT_NV12}, {
+  COLOR_QCOM_FormatYVU420SemiPlanar32mMultiView, GST_VIDEO_FORMAT_NV12}, {
   COLOR_OMX_SEC_FormatNV12Tiled, GST_VIDEO_FORMAT_NV12}, {
   COLOR_FormatYCbYCr, GST_VIDEO_FORMAT_YUY2}, {
   COLOR_FormatYV12, GST_VIDEO_FORMAT_YV12}
@@ -2216,6 +2217,7 @@ gst_amc_color_format_info_set (GstAmcColorFormatInfo * color_format_info,
     }
     case COLOR_QCOM_FormatYUV420SemiPlanar:
     case COLOR_QCOM_FormatYVU420SemiPlanar32m:
+    case COLOR_QCOM_FormatYVU420SemiPlanar32mMultiView:
     case COLOR_FormatYUV420SemiPlanar:{
       if (stride == 0 || slice_height == 0) {
         GST_ERROR ("Stride or slice height is 0");
@@ -2397,6 +2399,7 @@ gst_amc_color_format_copy (GstAmcColorFormatInfo * cinfo,
     }
     case COLOR_QCOM_FormatYUV420SemiPlanar:
     case COLOR_QCOM_FormatYVU420SemiPlanar32m:
+    case COLOR_QCOM_FormatYVU420SemiPlanar32mMultiView:
     case COLOR_FormatYUV420SemiPlanar:{
       gint i, j, height;
       gint c_stride, v_stride;
index eb30e7adce206eec70b364f3ee694355827b0bff..68700df9ff4bd3f61bd957b8d265df15db61499a 100644 (file)
@@ -535,6 +535,12 @@ gst_amc_video_dec_set_src_caps (GstAmcVideoDec * self, GstAmcFormat * format)
   output_state = gst_video_decoder_set_output_state (GST_VIDEO_DECODER (self),
       gst_format, width, height, self->input_state);
 
+  /* FIXME: Special handling for multiview, untested */
+  if (color_format == COLOR_QCOM_FormatYVU420SemiPlanar32mMultiView) {
+    gst_video_multiview_video_info_change_mode (&output_state->info,
+        GST_VIDEO_MULTIVIEW_MODE_TOP_BOTTOM, GST_VIDEO_MULTIVIEW_FLAGS_NONE);
+  }
+
   self->format = gst_format;
   if (!gst_amc_color_format_info_set (&self->color_format_info,
           klass->codec_info, mime, color_format, width, height, stride,