From 65c7214237a5dccbd57cf43437f9f3a26bc2e742 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 14 Oct 2015 19:24:22 +0300 Subject: amcvideodec: Implement support for COLOR_QCOM_FormatYVU420SemiPlanar32mMultiView for decoding https://bugzilla.gnome.org/show_bug.cgi?id=756578 --- sys/androidmedia/gstamc.c | 3 +++ sys/androidmedia/gstamcvideodec.c | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/sys/androidmedia/gstamc.c b/sys/androidmedia/gstamc.c index 88dc96808..078e28a3b 100644 --- a/sys/androidmedia/gstamc.c +++ b/sys/androidmedia/gstamc.c @@ -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; diff --git a/sys/androidmedia/gstamcvideodec.c b/sys/androidmedia/gstamcvideodec.c index eb30e7adc..68700df9f 100644 --- a/sys/androidmedia/gstamcvideodec.c +++ b/sys/androidmedia/gstamcvideodec.c @@ -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, -- cgit v1.2.1