[meta-freescale] [meta-fsl-arm][PATCH v2 1/2] gstreamer1.0-plugins-base: Fix IMXCameraApp image time cannot display issue.
Carlos Rafael Giani
dv at pseudoterminal.org
Mon Mar 28 23:58:53 PDT 2016
As said in the previous submission, I think this patch is acceptable,
and a good example of something truly i.MX specific.
Since 8/16-pixel alignments aren't exactly uncommon, I think this should
be turned into a solution that can be upstreamed and is applicable to
many other GStreamer plugins that generate video frames.
However, at least for now, we can live with this patch.
On 2016-01-29 10:41, Yuqing Zhu wrote:
> IMXCameraApp: When Enabled "save time to image" item, preview,
> find the time can not display completely.
>
> As IPU need 8 pixels alignment, add one workaround in base text overlay
> to generate 8 pixels alignment text video buffer. The side effect should
> cause all text a little smaller.
>
> Signed-off-by: Yuqing Zhu <b54851 at freescale.com>
> ---
> ...-Linux_MX6QP_ARD-IMXCameraApp-When-Enable.patch | 58 ++++++++++++++++++++++
> .../gstreamer/gstreamer1.0-plugins-base_%.bbappend | 8 ++-
> 2 files changed, 64 insertions(+), 2 deletions(-)
> create mode 100755 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-MMFMWK-7030-Linux_MX6QP_ARD-IMXCameraApp-When-Enable.patch
>
> diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-MMFMWK-7030-Linux_MX6QP_ARD-IMXCameraApp-When-Enable.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-MMFMWK-7030-Linux_MX6QP_ARD-IMXCameraApp-When-Enable.patch
> new file mode 100755
> index 0000000..1f54fc1
> --- /dev/null
> +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-MMFMWK-7030-Linux_MX6QP_ARD-IMXCameraApp-When-Enable.patch
> @@ -0,0 +1,58 @@
> +From f19e83a1a69a3dbbeb16dc4bcee3fb87317bb65b Mon Sep 17 00:00:00 2001
> +From: Song Bing <b06498 at freescale.com>
> +Date: Mon, 11 Jan 2016 14:51:17 +0800
> +Subject: [PATCH] MMFMWK-7030 [Linux_MX6QP_ARD]IMXCameraApp:When Enabled "save
> + time to image" item, preview, find the time can not display
> + completely. 100%
> +
> +As IPU need 8 pixels alignment, add one workaround in base text overlay
> +to generate 8 pixels alignment text video buffer. The side effect should
> +cause all text a little smaller.
> +
> +Upstream-Status: Inappropriate [i.MX specific]
> +
> +Signed-off-by: Song Bing b06498 at freescale.com
> +---
> + ext/pango/gstbasetextoverlay.c | 12 ++++++++++--
> + 1 file changed, 10 insertions(+), 2 deletions(-)
> +
> +diff --git a/ext/pango/gstbasetextoverlay.c b/ext/pango/gstbasetextoverlay.c
> +index 3e98aa1..de64c92 100755
> +--- a/ext/pango/gstbasetextoverlay.c
> ++++ b/ext/pango/gstbasetextoverlay.c
> +@@ -1545,7 +1545,7 @@ gst_base_text_overlay_render_pangocairo (GstBaseTextOverlay * overlay,
> + gint unscaled_width, unscaled_height;
> + gint width, height;
> + gboolean full_width = FALSE;
> +- double scalef = 1.0;
> ++ double scalef = 1.0, scalefx, scalefy;
> + double a, r, g, b;
> + gdouble shadow_offset = 0.0;
> + gdouble outline_offset = 0.0;
> +@@ -1673,6 +1673,14 @@ gst_base_text_overlay_render_pangocairo (GstBaseTextOverlay * overlay,
> + height = ceil (height * overlay->render_scale);
> + scalef *= overlay->render_scale;
> +
> ++ /* i.MX special, will cause text a little small */
> ++ scalefx = scalef * ((gdouble)GST_ROUND_DOWN_8 (width)) / width;
> ++ scalefy = scalef * ((gdouble)GST_ROUND_DOWN_8 (height)) / height;
> ++ width = GST_ROUND_DOWN_8 (width);
> ++ height = GST_ROUND_DOWN_8 (height);
> ++ GST_DEBUG_OBJECT (overlay, "Rendering with width %d and height %d "
> ++ , width, height);
> ++
> + if (width <= 0 || height <= 0) {
> + g_mutex_unlock (GST_BASE_TEXT_OVERLAY_GET_CLASS (overlay)->pango_lock);
> + GST_DEBUG_OBJECT (overlay,
> +@@ -1689,7 +1697,7 @@ gst_base_text_overlay_render_pangocairo (GstBaseTextOverlay * overlay,
> + /* Prepare the transformation matrix. Note that the transformation happens
> + * in reverse order. So for horizontal text, we will translate and then
> + * scale. This is important to understand which scale shall be used. */
> +- cairo_matrix_init_scale (&cairo_matrix, scalef, scalef);
> ++ cairo_matrix_init_scale (&cairo_matrix, scalefx, scalefy);
> +
> + if (overlay->use_vertical_render) {
> + gint tmp;
> +--
> +1.7.9.5
> +
> diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
> index ff4d77b..f1992c3 100644
> --- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
> +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
> @@ -1,7 +1,11 @@
> FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
>
> -SRC_URI_append_mx6 = " file://gstplaybin-remove-flag-deinterlace.patch"
> -SRC_URI_append_mx7 = " file://gstplaybin-remove-flag-deinterlace.patch"
> +IMX_PATCHES = " file://gstplaybin-remove-flag-deinterlace.patch \
> + file://0001-MMFMWK-7030-Linux_MX6QP_ARD-IMXCameraApp-When-Enable.patch \
> +"
> +
> +SRC_URI_append_mx6 = "${IMX_PATCHES}"
> +SRC_URI_append_mx7 = "${IMX_PATCHES}"
>
> PACKAGE_ARCH_mx6 = "${MACHINE_SOCARCH}"
> PACKAGE_ARCH_mx7 = "${MACHINE_SOCARCH}"
More information about the meta-freescale
mailing list