>    >  PACKAGECONFIG = "faad"
>    > +PACKAGECONFIG = "kms"
> 
>    ^^^ This doesn't look right...

Just see it in the context.


On Mon, Mar 26, 2018 at 09:49:54AM -0400, Prasad, Ram wrote:
>    HI Denys,
>    > +PACKAGECONFIG = "kms"
>    This was required to make sure kms get compiled.
>    Is it required to make this platform dependent PACKAGECONFIG?
> 
>    Ramprasad
> 
>    -----Original Message-----
>    From: Dmytriyenko, Denys
>    Sent: Monday, March 26, 2018 6:41 AM
>    To: Prasad, Ram
>    Cc: [email protected]
>    Subject: Re: [meta-arago] [rocko 5/9] gstreamer1.0*-bad: Enable kmssink
>    with gst 1.12
> 
>    On Thu, Mar 22, 2018 at 09:36:41AM +0530, Ramprasad N wrote:
>    > Signed-off-by: Ramprasad N <[email protected]>
>    > ---
>    >  ...Add-omapdrm-in-the-list-of-driver-modules.patch | 165
>    +++++++++++++++++++++
>    >  .../gstreamer1.0-plugins-bad_1.12.2.bbappend       |   5 +-
>    >  2 files changed, 169 insertions(+), 1 deletion(-)  create mode 100644
>    > meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ba
>    > d/0003-kmssink-Add-omapdrm-in-the-list-of-driver-modules.patch
>    >
>    > diff --git
>    > a/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-
>    > bad/0003-kmssink-Add-omapdrm-in-the-list-of-driver-modules.patch
>    > b/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-
>    > bad/0003-kmssink-Add-omapdrm-in-the-list-of-driver-modules.patch
>    > new file mode 100644
>    > index 0000000..2e4965c
>    > --- /dev/null
>    > +++ b/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plug
>    > +++ ins-bad/0003-kmssink-Add-omapdrm-in-the-list-of-driver-modules.pat
>    > +++ ch
>    > @@ -0,0 +1,165 @@
>    > +From 4ef13bc433d218f2ebcbe2e9b7853d10d7b9acbc Mon Sep 17 00:00:00
>    > +2001
>    > +From: Ramprasad N <[email protected]>
>    > +Date: Tue, 6 Mar 2018 19:02:20 +0530
>    > +Subject: [PATCH 3/5] kmssink: Add omapdrm in the list of driver
>    > +modules
>    > +
>    > +In gstreamer-bad v1.12.2 kmssink plugin is available but omapdrm
>    > +driver is not added in the list of driver module.
>    > +
>    > +DRM and DMABUF are treated differently by gstreamer eventhough they
>    > +are based on fd allocator.
>    > +GST1.12 has many changes to dmabuf allocator and hence DRM and DMABUF
>    > +will be treated differently.
>    > +
>    > +Added support for DRM buffer importing. Without this addition, there
>    > +will be frame-copy happens and slows down the playback.
>    > +
>    > +Signed-off-by: Ramprasad N <[email protected]>
>    > +---
>    > + sys/kms/Makefile.am  |   1 +
>    > + sys/kms/gstkmssink.c | 101
>    > +++++++++++++++++++++++++++++++++++++++++++++++++++-
>    > + 2 files changed, 101 insertions(+), 1 deletion(-)
>    > +
>    > +diff --git a/sys/kms/Makefile.am b/sys/kms/Makefile.am index
>    > +a97cad1..063f5ef 100644
>    > +--- a/sys/kms/Makefile.am
>    > ++++ b/sys/kms/Makefile.am
>    > +@@ -23,6 +23,7 @@ libgstkms_la_LIBADD =                       \
>    > +      $(GST_ALLOCATORS_LIBS)                  \
>    > +      $(GST_LIBS)                              \
>    > +      $(KMS_DRM_LIBS)                  \
>    > ++    $(top_builddir)/gst-libs/gst/drm/libgstdrm-$(GST_API_VERSION).la \
>    > +      $(NULL)
>    > +
>    > + libgstkms_la_LDFLAGS =                       \
>    > +diff --git a/sys/kms/gstkmssink.c b/sys/kms/gstkmssink.c index
>    > +d19e19e..028bec6 100644
>    > +--- a/sys/kms/gstkmssink.c
>    > ++++ b/sys/kms/gstkmssink.c
>    > +@@ -85,7 +85,8 @@ static int
>    > + kms_open (gchar ** driver)
>    > + {
>    > +   static const char *drivers[] = { "i915", "radeon", "nouveau",
>    "vmwgfx",
>    > +-    "exynos", "amdgpu", "imx-drm", "rockchip", "atmel-hlcdc", "msm"
>    > ++    "exynos", "amdgpu", "imx-drm", "rockchip", "atmel-hlcdc", "msm",
>    > ++    "omapdrm"
>    > +   };
>    > +   int i, fd = -1;
>    > +
>    > +@@ -1041,6 +1042,100 @@ set_cached_kmsmem (GstMemory * mem, GstMemory
>    > +* kmsmem)  }
>    > +
>    > + static gboolean
>    > ++gst_kms_sink_import_drmbuf (GstKMSSink * self, GstBuffer * inbuf,
>    > ++    GstBuffer ** outbuf)
>    > ++{
>    > ++  gint prime_fds[GST_VIDEO_MAX_PLANES] = { 0, };
>    > ++  GstVideoMeta *meta;
>    > ++  guint i, n_mem, n_planes;
>    > ++  GstKMSMemory *kmsmem;
>    > ++  guint mems_idx[GST_VIDEO_MAX_PLANES];
>    > ++  gsize mems_skip[GST_VIDEO_MAX_PLANES];
>    > ++  GstMemory *mems[GST_VIDEO_MAX_PLANES];
>    > ++
>    > ++  if (!self->has_prime_import)
>    > ++    return FALSE;
>    > ++
>    > ++  /* This will eliminate most non-dmabuf out there */  if
>    > ++ (!gst_is_drm_memory (gst_buffer_peek_memory (inbuf, 0)))
>    > ++    return FALSE;
>    > ++
>    > ++  n_planes = GST_VIDEO_INFO_N_PLANES (&self->vinfo);  n_mem =
>    > ++ gst_buffer_n_memory (inbuf);  meta = gst_buffer_get_video_meta
>    > ++ (inbuf);
>    > ++
>    > ++  GST_TRACE_OBJECT (self, "Found a drmbuf with %u planes and %u
>    memories",
>    > ++      n_planes, n_mem);
>    > ++
>    > ++  /* We cannot have multiple dmabuf per plane */  if (n_mem >
>    > ++ n_planes)
>    > ++    return FALSE;
>    > ++  g_assert (n_planes != 0);
>    > ++
>    > ++  /* Update video info based on video meta */  if (meta) {
>    > ++    GST_VIDEO_INFO_WIDTH (&self->vinfo) = meta->width;
>    > ++    GST_VIDEO_INFO_HEIGHT (&self->vinfo) = meta->height;
>    > ++
>    > ++    for (i = 0; i < meta->n_planes; i++) {
>    > ++      GST_VIDEO_INFO_PLANE_OFFSET (&self->vinfo, i) = meta->offset[i];
>    > ++      GST_VIDEO_INFO_PLANE_STRIDE (&self->vinfo, i) = meta->stride[i];
>    > ++    }
>    > ++  }
>    > ++
>    > ++  /* Find and validate all memories */  for (i = 0; i < n_planes;
>    > ++ i++) {
>    > ++    guint length;
>    > ++
>    > ++    if (!gst_buffer_find_memory (inbuf,
>    > ++            GST_VIDEO_INFO_PLANE_OFFSET (&self->vinfo, i), 1,
>    > ++            &mems_idx[i], &length, &mems_skip[i]))
>    > ++      return FALSE;
>    > ++
>    > ++    mems[i] = gst_buffer_peek_memory (inbuf, mems_idx[i]);
>    > ++
>    > ++    /* adjust for memory offset, in case data does not
>    > ++     * start from byte 0 in the dmabuf fd */
>    > ++    mems_skip[i] += mems[i]->offset;
>    > ++
>    > ++    /* And all memory found must be dmabuf */
>    > ++    if (!gst_is_drm_memory (mems[i]))
>    > ++      return FALSE;
>    > ++  }
>    > ++
>    > ++  kmsmem = (GstKMSMemory *) get_cached_kmsmem (mems[0]);  if
>    > ++ (kmsmem) {
>    > ++    GST_LOG_OBJECT (self, "found KMS mem %p in DMABuf mem %p with fb
>    id = %d",
>    > ++        kmsmem, mems[0], kmsmem->fb_id);
>    > ++    goto wrap_mem;
>    > ++  }
>    > ++
>    > ++  for (i = 0; i < n_planes; i++)
>    > ++    prime_fds[i] = gst_fd_memory_get_fd (mems[i]);
>    > ++
>    > ++  GST_LOG_OBJECT (self, "found these prime ids: %d, %d, %d, %d",
>    prime_fds[0],
>    > ++      prime_fds[1], prime_fds[2], prime_fds[3]);
>    > ++
>    > ++  kmsmem = gst_kms_allocator_dmabuf_import (self->allocator,
>    prime_fds,
>    > ++      n_planes, mems_skip, &self->vinfo);  if (!kmsmem)
>    > ++    return FALSE;
>    > ++
>    > ++  GST_LOG_OBJECT (self, "setting KMS mem %p to DMABuf mem %p with fb
>    id = %d",
>    > ++      kmsmem, mems[0], kmsmem->fb_id);  set_cached_kmsmem (mems[0],
>    > ++ GST_MEMORY_CAST (kmsmem));
>    > ++
>    > ++wrap_mem:
>    > ++  *outbuf = gst_buffer_new ();
>    > ++  if (!*outbuf)
>    > ++    return FALSE;
>    > ++  gst_buffer_append_memory (*outbuf, gst_memory_ref (GST_MEMORY_CAST
>    > ++(kmsmem)));
>    > ++  gst_buffer_add_parent_buffer_meta (*outbuf, inbuf);
>    > ++  gst_buffer_copy_into (*outbuf, inbuf, GST_BUFFER_COPY_METADATA, 0,
>    > ++-1);
>    > ++
>    > ++  return TRUE;
>    > ++}
>    > ++static gboolean
>    > + gst_kms_sink_import_dmabuf (GstKMSSink * self, GstBuffer * inbuf,
>    > +     GstBuffer ** outbuf)
>    > + {
>    > +@@ -1151,6 +1246,10 @@ gst_kms_sink_get_input_buffer (GstKMSSink *
>    self, GstBuffer * inbuf)
>    > +     return gst_buffer_ref (inbuf);
>    > +
>    > +   buf = NULL;
>    > ++  if (gst_kms_sink_import_drmbuf (self, inbuf, &buf))
>    > ++    return buf;
>    > ++
>    > ++  buf = NULL;
>    > +   if (gst_kms_sink_import_dmabuf (self, inbuf, &buf))
>    > +     return buf;
>    > +
>    > +--
>    > +1.9.1
>    > +
>    > diff --git
>    > a/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-
>    > bad_1.12.2.bbappend
>    > b/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-
>    > bad_1.12.2.bbappend
>    > index 437689f..f99b81d 100644
>    > ---
>    > a/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plugins-
>    > bad_1.12.2.bbappend
>    > +++ b/meta-arago-extras/recipes-multimedia/gstreamer/gstreamer1.0-plug
>    > +++ ins-bad_1.12.2.bbappend
>    > @@ -1,6 +1,7 @@
>    >  FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
>    > 
>    >  PACKAGECONFIG = "faad"
>    > +PACKAGECONFIG = "kms"
> 
>    ^^^ This doesn't look right...
> 
>    >  # gstreamer is now also included on Keystone, be mindful of any
>    > Graphics dependencies
>    >  PACKAGECONFIG_append_omap-a15 = "
>    ${@bb.utils.contains('DISTRO_FEATURES','wayland','wayland','',d)}"
>    > @@ -22,6 +23,7 @@ DEPENDS_append_ti33x = " \  SRC_URI_append_ti43x = "
>    > \
>    >      file://0001-gstdrmallocator-Add-DRM-allocator-support.patch \
>    >      file://0002-parsers-bug-fixes-on-parsers.patch \
>    > +   
>    > + file://0003-kmssink-Add-omapdrm-in-the-list-of-driver-modules.patch
>    > + \
>    >  "
>    > 
>    >  SRC_URI_append_ti33x = " \
>    > @@ -30,8 +32,9 @@ SRC_URI_append_ti33x = " \
>    >  SRC_URI_append_omap-a15 = " \
>    >      file://0001-gstdrmallocator-Add-DRM-allocator-support.patch \
>    >      file://0002-parsers-bug-fixes-on-parsers.patch \
>    > +   
>    > + file://0003-kmssink-Add-omapdrm-in-the-list-of-driver-modules.patch
>    > + \
>    >  "
>    > 
>    >  PACKAGE_ARCH = "${MACHINE_ARCH}"
>    > 
>    > -PR = "r2"
>    > +PR = "r3"
>    > --
>    > 1.9.1
>    >
>    > _______________________________________________
>    > meta-arago mailing list
>    > [email protected]
>    > http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago
_______________________________________________
meta-arago mailing list
[email protected]
http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago

Reply via email to