From d369fbed535bc0ee611809df4c5268e0d2bf5194 Mon Sep 17 00:00:00 2001 From: Carlos Rafael Giani Date: Tue, 21 Nov 2017 22:10:09 +0100 Subject: gstreamer1.0-plugins-imx: Update to version 0.13.0 Changes: * New imxv4l2videosink element Currently only supports input physically contiguous memory blocks as input (so, for example, no videotestsrc) * New Pango-based overlay elements using G2D for rendering * gstimxcommon library is now public Necessary when implementing external sinks to retrieve the mapped physical memory address from gstreamer buffers (NOTE: ABI may change in the next few releases until this is stabilized) * New optional ability to use GstPhysMemory from gst-plugins-bad * imxv4l2videosrc: * Add checks for V4L XRGB555X and GStreamer NV61 pixel formats * Add UYVY support and make it the new default UYVY works better with IPU-based deinterlacing, since with I420, deinterlaced frames may exhibit a green band at the bottom, which is apparently an IPU bug related to the plane offsets. * Fix compile prior to Gstreamer 1.3.1 * v4l2_buffer_pool: Add special case for tw6869 driver The tw6869 driver requires a different physical address to allow DMA'able buffers for decreasing latency between chip and display * v4l2src: add fractional "fps" property (obsoletes the "fps-n" property) * Add GstImxV4l2Meta init function This avoids the g_assert() that was caused by the missing init function * Add num-additional-buffers property This can be useful if capturing video isn't smooth; it sets the number of internal additional buffers, so if downstream consumes too many buffers, imxv4l2videosrc might end up doing a blocking wait until buffers are returned * imxv4l2src plugin is now called imxv4l2video, because it also contains imxv4l2videosink Also, the v4l2 elements can be enabled/disabled in the build configuration individually now * compositor: * Clear output also if the input format has an alpha channel * Only copy compositor input buffers to DMA memory once If a single input frame is used for multiple output frames, we would otherwise copy multiple times which can easily go to the limit of the memory bandwidth * vpu: * Fix leak causd by missing GstVideoCodecState unref * Release decoder context GCond during flush to fix potential deadlock * Add memory tag to VPU framebuffer meta to avoid meta related crashes * Add support for GRAY8 frames as a "fake grayscale mode" Grayscale is actually encoded as I420, with the U and V planes filled with 0x80 bytes. This feature also makes libimxvpuapi 0.10.3 the new minimum requirement. * Remove 8-pixel alignment from width & height sinkcaps * Framebuffer array: fix memory leak if we got out of memory * Handle releasing of buffers without assigned framebuffer This can happen if the buffer is released before it was actually used, e.g. when renegotiating at the very beginning; prevents a crash that would otherwise occur * Add parameter check to avoid encoder crash on flush * g2d: * Always enable blending if the input frames have an alpha channel G2D automatically makes use not only of global alpha, but also of per-pixel alpha. Therefore, it makes sense to enable blending even if global alpha is set to 255, as long as the input frames have an alpha channel. Such blending is useful for composing a video frame with some partially-transparent overlays for example (not to be confused with hardware overlays though). * Add build configuration switches to explicitely specify G2D include and library paths * Disable cacheable memory allocation Several issues were reported with cacheable DMA memory, so it is turned off, at least for now * blitter: * Add property to clear screen to black in blitter sinks * Add output-rotation property to videotransform base class * audio: * Fix SIGFPE when restarting mp3 encoder * Fix reference counting for caps * Mark static codec caps as may be leaked This gets rid of the false positive in the leak tracer * misc: * Update waf to 1.9.3 to fix compilation with Python 3.4+ Signed-off-by: Carlos Rafael Giani Signed-off-by: Otavio Salvador --- .../gstreamer/gstreamer1.0-plugins-imx_0.12.2.bb | 67 --------------------- .../gstreamer/gstreamer1.0-plugins-imx_0.13.0.bb | 69 ++++++++++++++++++++++ 2 files changed, 69 insertions(+), 67 deletions(-) delete mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_0.12.2.bb create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_0.13.0.bb diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_0.12.2.bb b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_0.12.2.bb deleted file mode 100644 index e7f75680..00000000 --- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_0.12.2.bb +++ /dev/null @@ -1,67 +0,0 @@ -DESCRIPTION = "GStreamer 1.0 plugins for i.MX platforms" -LICENSE = "LGPLv2+" -LIC_FILES_CHKSUM = "file://LICENSE;md5=55ca817ccb7d5b5b66355690e9abc605" -SECTION = "multimedia" -# gstreamer1.0-plugins-bad is in DEPENDS because the build script scans for the -# GstPhotography headers and libraries -DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad virtual/kernel" -# add the audioparsers and the videoparsersbad plugins as RDEPENDS ; audioparsers -# for the uniaudio decoder, videoparsersbad for the VPU video decoder -# the gstreamer1.0-plugins-imx RDEPENDS is necessary to ensure the -good recipe is -# build (it is not a compile-time dependency however, hence RDEPENDS and not DEPENDS) -RDEPENDS_gstreamer1.0-plugins-imx = "gstreamer1.0-plugins-good" -RDEPENDS_gstreamer1.0-plugins-imx-imxaudio = "gstreamer1.0-plugins-good-audioparsers" -RDEPENDS_gstreamer1.0-plugins-imx-imxvpu = "gstreamer1.0-plugins-bad-videoparsersbad" - -SRCBRANCH ?= "master" -SRCREV = "50ddcd9f2b6ecc3d94d0d2f71b6de841d8a8fb7b" -SRC_URI = "git://github.com/Freescale/gstreamer-imx.git;branch=${SRCBRANCH}" - -S = "${WORKDIR}/git" - -inherit pkgconfig waf - -do_compile[depends] += "virtual/kernel:do_shared_workdir" - -# configure the eglvivsink element to use the appropriate EGL platform code -# Wayland if 'wayland' is present in DISTRO_FEATURES, if not, -# X11 if x11 is present in DISTRO_FEATURES, -# Framebuffer otherwise -EGLVIVSINK_PLATFORM = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', \ - bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', \ - 'fb', d),d)}" - -EGL_PLATFORM_CONF = "--egl-platform=${EGLVIVSINK_PLATFORM}" -EXTRA_OECONF = "--kernel-headers=${STAGING_KERNEL_DIR}/include ${PACKAGECONFIG_CONFARGS}" - -EGLVIVSINK_DEPENDS = " \ - virtual/egl virtual/libgles2 \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', \ - bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/libx11', \ - '', d), d)} \ -" - -PACKAGECONFIG ?= "uniaudiodec mp3encoder v4l2src" -PACKAGECONFIG_append_imxgpu3d = " eglvivsink" -PACKAGECONFIG_append_imxgpu2d = " g2d" -PACKAGECONFIG_append_imxipu = " ipu" -PACKAGECONFIG_append_imxvpu = " vpu" -PACKAGECONFIG_append_imxpxp = " pxp" - -PACKAGECONFIG[g2d] = ",--disable-g2d,imx-gpu-viv" -PACKAGECONFIG[pxp] = ",--disable-pxp," -PACKAGECONFIG[ipu] = ",--disable-ipu," -PACKAGECONFIG[vpu] = ",--disable-vpu,libimxvpuapi" -PACKAGECONFIG[eglvivsink] = "${EGL_PLATFORM_CONF},--disable-eglvivsink,${EGLVIVSINK_DEPENDS}" -PACKAGECONFIG[v4l2src] = ",--disable-v4l2src," -PACKAGECONFIG[uniaudiodec] = ",--disable-uniaudiodec,imx-codec" -PACKAGECONFIG[mp3encoder] = ",--disable-mp3encoder,imx-codec" - -# LIBV is used by gst-plugins-package.inc to specify the GStreamer version (0.10 vs 1.0) -LIBV = "1.0" -require recipes-multimedia/gstreamer/gst-plugins-package.inc - -# the following line is required to produce one package for each plugin -PACKAGES_DYNAMIC = "^${PN}-.*" - -COMPATIBLE_MACHINE = "(mx6dl|mx6q|mx6sl|mx6sx|mx6ul|mx6ull|mx7d)" diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_0.13.0.bb b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_0.13.0.bb new file mode 100644 index 00000000..efd4ee19 --- /dev/null +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_0.13.0.bb @@ -0,0 +1,69 @@ +DESCRIPTION = "GStreamer 1.0 plugins for i.MX platforms" +LICENSE = "LGPLv2+" +LIC_FILES_CHKSUM = "file://LICENSE;md5=55ca817ccb7d5b5b66355690e9abc605" +SECTION = "multimedia" +# gstreamer1.0-plugins-bad is in DEPENDS because the build script scans for the +# GstPhotography headers and libraries +DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad virtual/kernel" +# add the audioparsers and the videoparsersbad plugins as RDEPENDS ; audioparsers +# for the uniaudio decoder, videoparsersbad for the VPU video decoder +# the gstreamer1.0-plugins-imx RDEPENDS is necessary to ensure the -good recipe is +# build (it is not a compile-time dependency however, hence RDEPENDS and not DEPENDS) +RDEPENDS_gstreamer1.0-plugins-imx = "gstreamer1.0-plugins-good" +RDEPENDS_gstreamer1.0-plugins-imx-imxaudio = "gstreamer1.0-plugins-good-audioparsers" +RDEPENDS_gstreamer1.0-plugins-imx-imxvpu = "gstreamer1.0-plugins-bad-videoparsersbad" + +SRCBRANCH ?= "master" +SRCREV = "048d596dfc657f16d235029c39221b0a118e5c87" +SRC_URI = "git://github.com/Freescale/gstreamer-imx.git;branch=${SRCBRANCH}" + +S = "${WORKDIR}/git" + +inherit pkgconfig waf + +do_compile[depends] += "virtual/kernel:do_shared_workdir" + +# configure the eglvivsink element to use the appropriate EGL platform code +# Wayland if 'wayland' is present in DISTRO_FEATURES, if not, +# X11 if x11 is present in DISTRO_FEATURES, +# Framebuffer otherwise +EGLVIVSINK_PLATFORM = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', \ + bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', \ + 'fb', d),d)}" + +EGL_PLATFORM_CONF = "--egl-platform=${EGLVIVSINK_PLATFORM}" +EXTRA_OECONF = "--kernel-headers=${STAGING_KERNEL_DIR}/include ${PACKAGECONFIG_CONFARGS}" + +EGLVIVSINK_DEPENDS = " \ + virtual/egl virtual/libgles2 \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', \ + bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/libx11', \ + '', d), d)} \ +" + +PACKAGECONFIG ?= "uniaudiodec mp3encoder v4l2src v4l2sink" +PACKAGECONFIG_append_imxgpu3d = " eglvivsink" +PACKAGECONFIG_append_imxgpu2d = " g2d g2dpango" +PACKAGECONFIG_append_imxipu = " ipu" +PACKAGECONFIG_append_imxvpu = " vpu" +PACKAGECONFIG_append_imxpxp = " pxp" + +PACKAGECONFIG[g2d] = ",--disable-g2d,imx-gpu-viv" +PACKAGECONFIG[g2dpango] = ",--disable-g2dpango,imx-gpu-viv pango" +PACKAGECONFIG[pxp] = ",--disable-pxp," +PACKAGECONFIG[ipu] = ",--disable-ipu," +PACKAGECONFIG[vpu] = ",--disable-vpu,libimxvpuapi" +PACKAGECONFIG[eglvivsink] = "${EGL_PLATFORM_CONF},--disable-eglvivsink,${EGLVIVSINK_DEPENDS}" +PACKAGECONFIG[v4l2src] = ",--disable-imxv4l2videosrc," +PACKAGECONFIG[v4l2sink] = ",--disable-imxv4l2videosink," +PACKAGECONFIG[uniaudiodec] = ",--disable-uniaudiodec,imx-codec" +PACKAGECONFIG[mp3encoder] = ",--disable-mp3encoder,imx-codec" + +# LIBV is used by gst-plugins-package.inc to specify the GStreamer version (0.10 vs 1.0) +LIBV = "1.0" +require recipes-multimedia/gstreamer/gst-plugins-package.inc + +# the following line is required to produce one package for each plugin +PACKAGES_DYNAMIC = "^${PN}-.*" + +COMPATIBLE_MACHINE = "(mx6dl|mx6q|mx6sl|mx6sx|mx6ul|mx6ull|mx7d)" -- cgit v1.2.3-54-g00ecf