Message ID | 1412545628-12153-1-git-send-email-bisson.gary@gmail.com |
---|---|
State | Superseded |
Headers | show |
Dear Gary, Peter, Peter Seiderer submitted a different patch to add the same package back in March. Arnout and I compared them, see below our findings. Gary Bisson wrote: > Open-source GStreamer 1.0 plugins for i.MX platforms. > More info at https://github.com/Freescale/gstreamer-imx > > Signed-off-by: Gary Bisson <bisson.gary@gmail.com> > --- > > This patch has been tested using an i.MX6Q SabreLite (nitrogen6x config) along > with the usual Tears of Steel movie in 1080p: > http://media.xiph.org/mango/tears_of_steel_1080p.webm > > Below are the commands used to test the different sinks: > > $ gst-launch-1.0 playbin uri=file:///root/tears_of_steel_1080p.webm > $ gst-launch-1.0 filesrc location=/root/tears_of_steel_1080p.webm ! \ > matroskademux ! imxvpudec ! imxipusink > $ gst-launch-1.0 filesrc location=/root/tears_of_steel_1080p.webm ! \ > matroskademux ! imxvpudec ! imxeglvivsink > > The toolchain used was the Sourcery CodeBench 2014.05. The video above also > requires the following extra configuration in order to demux the content: > BR2_PACKAGE_GST1_PLUGINS_GOOD=y > BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA=y Thanks for providing details on how to test this. Except that I'm in Düsseldorf for the Buildroot Developers Days right now and have no board with me for testing... > > I'm not fond of all the dependencies of this package but I couldn't seem to > find a way to do it differently. A try has been made to select the Vivante > package automatically but it requires doing a select of > BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q which doesn't work. Let me know > if you'd like another mechanism to be able to select this plugin. > > Thanks, > Gary > > package/gstreamer1/Config.in | 1 + > package/gstreamer1/gst1-plugins-imx/Config.in | 35 +++++++++++++ > .../gst1-plugins-imx/gst1-plugins-imx.mk | 57 ++++++++++++++++++++++ > 3 files changed, 93 insertions(+) > create mode 100644 package/gstreamer1/gst1-plugins-imx/Config.in > create mode 100644 package/gstreamer1/gst1-plugins-imx/gst1-plugins-imx.mk > > diff --git a/package/gstreamer1/Config.in b/package/gstreamer1/Config.in > index fe0ad48..d43e4a6 100644 > --- a/package/gstreamer1/Config.in > +++ b/package/gstreamer1/Config.in > @@ -6,6 +6,7 @@ source "package/gstreamer1/gst1-plugins-base/Config.in" > source "package/gstreamer1/gst1-plugins-good/Config.in" > source "package/gstreamer1/gst1-plugins-bad/Config.in" > source "package/gstreamer1/gst1-plugins-ugly/Config.in" > +source "package/gstreamer1/gst1-plugins-imx/Config.in" The package name is consistent with the other gst1 plugins. To me, This is better than the name chosen by Peter Seiderer (gstreamer1-imx). > source "package/gstreamer1/gst1-libav/Config.in" > source "package/gstreamer1/gst-omx/Config.in" > endif > diff --git a/package/gstreamer1/gst1-plugins-imx/Config.in b/package/gstreamer1/gst1-plugins-imx/Config.in > new file mode 100644 > index 0000000..7c8a467 > --- /dev/null > +++ b/package/gstreamer1/gst1-plugins-imx/Config.in > @@ -0,0 +1,35 @@ > +comment "gst1-plugins-imx needs an imx-specific Linux kernel to be built" > + depends on BR2_arm && !BR2_LINUX_KERNEL > + > +comment "gst1-plugins-imx needs an (e)glibc toolchain" > + depends on BR2_arm > + depends on !BR2_TOOLCHAIN_USES_GLIBC > + > +comment "gst1-plugins-imx requires Freescale VPU wrapper libraries" > + depends on BR2_arm > + depends on !BR2_PACKAGE_LIBFSLVPUWRAP > + > +comment "gst1-plugins-imx requires Freescale GPU libraries for i.MX6" > + depends on BR2_arm > + depends on BR2_PACKAGE_LIBFSLVPUWRAP > + depends on !BR2_PACKAGE_GPU_VIV_BIN_MX6Q It would be better to have only one comment showing all the dependencies at once to avoid cluttering the menuconfig screen when the dependencies are not met. Also, please format it according to the guidelines in http://nightly.buildroot.org/manual.html#dependencies-target-toolchain-options BTW, the last warning should be shown regardless of the value of BR2_PACKAGE_LIBFSLVPUWRAP, nope? > + > +config BR2_PACKAGE_GST1_PLUGINS_IMX > + bool "gst1-plugins-imx" > + depends on BR2_LINUX_KERNEL > + depends on BR2_arm # Only relevant for i.MX > + depends on BR2_TOOLCHAIN_USES_GLIBC > + depends on BR2_PACKAGE_GPU_VIV_BIN_MX6Q > + depends on BR2_PACKAGE_LIBFSLVPUWRAP > + select BR2_PACKAGE_GST1_PLUGINS_BASE Your depends + selects and Peter's ones are pretty different. Here are Peter's: > + depends on BR2_LINUX_KERNEL # imx-lib > + depends on BR2_arm # Only relevant for i.MX > + select BR2_PACKAGE_GST1_PLUGINS_BASE > + select BR2_PACKAGE_LIBFSLVPUWRAP > + select BR2_PACKAGE_IMX_LIB > + select BR2_PACKAGE_LIBFSLPARSER > + select BR2_PACKAGE_LIBFSLCODEC According to Gary, (e)glibc is needed. Peter, did you build-test with uClibc (or musl)? How about imx-lib, libfslparser and libfslcodec? It would be great if you could have a list that really matches the package. It's probably going to be a mix of the two, but I don't know exactly which pieces should be picked. > + help > + This is a set of GStreamer 1.0 plugins for plugins for Freescale's > + i.MX platform, with emphasis on video en/decoding using the i.MX > + VPU engine. > + > + Currently, this software has been tested only with the i.MX6 SoC > + family. > + > + The software as a whole is currently in beta stage. Some of Peter's comments are really informative, such as: > + [...] It requires a kernel that > + includes the i.MX6 specific headers to be built. > + > + To use the VPU, its firmware blob must be installed as well. This > + can be found in the firmware-imx package in the "Hardware handling" > + menu. Can you merge the two statements? > + > + More info at https://github.com/Freescale/gstreamer-imx > diff --git a/package/gstreamer1/gst1-plugins-imx/gst1-plugins-imx.mk b/package/gstreamer1/gst1-plugins-imx/gst1-plugins-imx.mk > new file mode 100644 > index 0000000..64a1b5b > --- /dev/null > +++ b/package/gstreamer1/gst1-plugins-imx/gst1-plugins-imx.mk > @@ -0,0 +1,57 @@ > +################################################################################ > +# > +# gst1-plugins-imx > +# > +################################################################################ > + > +GST1_PLUGINS_IMX_VERSION = 0.9.9 > +GST1_PLUGINS_IMX_SITE = https://github.com/Freescale/gstreamer-imx.git > +GST1_PLUGINS_IMX_SITE_METHOD = git Use the github helper macro: http://nightly.buildroot.org/manual.html#github-download-url > + > +GST1_PLUGINS_IMX_LICENSE = LGPLv2+ > +GST1_PLUGINS_IMX_LICENSE_FILES = LICENSE > + > +GST1_PLUGINS_IMX_INSTALL_STAGING = YES > + > +GST1_PLUGINS_IMX_DEPENDENCIES += host-pkgconf host-python \ > + gpu-viv-bin-mx6q gstreamer1 gst1-plugins-base libfslvpuwrap Peter's version does not depend on host-python, yours does. Actually that dependency is needed becase waf does not work with recent python3 interpreters. That's why all Buildroot packages that use waf (jack2, midori, samba4) depend on it. > + > +# needs access to imx-specific kernel headers > +GST1_PLUGINS_IMX_DEPENDENCIES += linux > +GST1_PLUGINS_IMX_CONF_OPTS += --prefix="/usr" \ > + --kernel-headers="$(LINUX_DIR)/include" > + > +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) > +GST1_PLUGINS_IMX_DEPENDENCIES += xlib_libX11 > +GST1_PLUGINS_IMX_CONF_OPTS += --egl-platform=x11 > +else > +ifeq ($(BR2_PACKAGE_WAYLAND),y) > +GST1_PLUGINS_IMX_DEPENDENCIES += wayland > +GST1_PLUGINS_IMX_CONF_OPTS += --egl-platform=wayland > +else > +GST1_PLUGINS_IMX_CONF_OPTS += --egl-platform=fb > +endif > +endif ...and you support X11 and Wayland, which is good. Overall your patch looks better, except Peter lists more mandatory dependencies (perhaps some or all are actually neede), has a more informative package description and uses the github helper. Merging the two patches to get the best of each would be good, and it would be great if you could cooperate to do that! I'm afraid I haven't much experience on i.MX to help, but I'll be glad to test your work (but please keep me in Cc:).
Hi Luca, Thanks for your feedback, below are my comments. Sorry Peter I didn't see your patch from March. On 10/12/2014 07:43 AM, Luca Ceresoli wrote: > Dear Gary, Peter, [...] > It would be better to have only one comment showing all the dependencies > at once to avoid cluttering the menuconfig screen when the dependencies > are not met. Also, please format it according to the guidelines in > http://nightly.buildroot.org/manual.html#dependencies-target-toolchain-options > Ok I can rework those comments. > > BTW, the last warning should be shown regardless of the value of > BR2_PACKAGE_LIBFSLVPUWRAP, nope? The goal here was to show only one comment at a time. Both comments will be merged in one. > [...] > According to Gary, (e)glibc is needed. Peter, did you build-test with > uClibc (or musl)? Actually this dependency is not required as it is implicit, the real eglibc dependency comes from the GPU_VIV package. > > How about imx-lib, libfslparser and libfslcodec? No, Peter's dependencies seem to have some legacy from the old gstreamer plugin, see package/gstreamer/gst-fsl-plugins/Config.in. Moreover it is missing the GPU_VIV package dependency required to have the imxg2d and imxegl plugins and also narrows this plugin to iMX6 platforms only. > > It would be great if you could have a list that really matches the > package. It's probably going to be a mix of the two, but I don't know > exactly which pieces should be picked. The best is to compare the dependencies from the Yocto recipe: https://github.com/Freescale/meta-fsl-arm/blob/master/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_0.9.9.bb This is what I've based my package on. > [...] > Can you merge the two statements? I can add the Kernel header comment but regarding the VPU I've offered a patch for the firmware to be selected when imx-vpu package is enabled: http://lists.busybox.net/pipermail/buildroot/2014-October/107894.html > [...] > Use the github helper macro: > http://nightly.buildroot.org/manual.html#github-download-url Ok. > [...] > Peter's version does not depend on host-python, yours does. > > Actually that dependency is needed becase waf does not work with > recent python3 interpreters. That's why all Buildroot packages that use > waf (jack2, midori, samba4) depend on it. Yes host-python is required. > [...] > ...and you support X11 and Wayland, which is good. > > Overall your patch looks better, except Peter lists more mandatory > dependencies (perhaps some or all are actually neede), has a more > informative package description and uses the github helper. Merging > the two patches to get the best of each would be good, and it would be > great if you could cooperate to do that! > > I'm afraid I haven't much experience on i.MX to help, but I'll be glad > to test your work (but please keep me in Cc:). > No problem I'll keep you in cc. But what is the plan now? Should I offer a v2 or let Peter integrate the remarks above in his patch? Thanks, Gary
Dear Gary, Gary Bisson wrote: > Hi Luca, > > Thanks for your feedback, below are my comments. > Sorry Peter I didn't see your patch from March. > > On 10/12/2014 07:43 AM, Luca Ceresoli wrote: >> Dear Gary, Peter, > [...] >> It would be better to have only one comment showing all the dependencies >> at once to avoid cluttering the menuconfig screen when the dependencies >> are not met. Also, please format it according to the guidelines in >> http://nightly.buildroot.org/manual.html#dependencies-target-toolchain-options >> > Ok I can rework those comments. >> >> BTW, the last warning should be shown regardless of the value of >> BR2_PACKAGE_LIBFSLVPUWRAP, nope? > The goal here was to show only one comment at a time. Both comments will > be merged in one. >> [...] >> According to Gary, (e)glibc is needed. Peter, did you build-test with >> uClibc (or musl)? > Actually this dependency is not required as it is implicit, the real > eglibc dependency comes from the GPU_VIV package. I see. A brief comment would be helpful, as it is for all inherited dependencies. Example: # Required by gpu-viv-bin-mx6q comment "gst1-plugins-imx needs an (e)glibc toolchain" depends on BR2_arm depends on !BR2_TOOLCHAIN_USES_GLIBC >> >> How about imx-lib, libfslparser and libfslcodec? > No, Peter's dependencies seem to have some legacy from the old gstreamer > plugin, see package/gstreamer/gst-fsl-plugins/Config.in. Moreover it is > missing the GPU_VIV package dependency required to have the imxg2d and > imxegl plugins and also narrows this plugin to iMX6 platforms only. >> >> It would be great if you could have a list that really matches the >> package. It's probably going to be a mix of the two, but I don't know >> exactly which pieces should be picked. > The best is to compare the dependencies from the Yocto recipe: > https://github.com/Freescale/meta-fsl-arm/blob/master/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_0.9.9.bb Ok. > > This is what I've based my package on. >> [...] >> Can you merge the two statements? > I can add the Kernel header comment but regarding the VPU I've offered a > patch for the firmware to be selected when imx-vpu package is enabled: > http://lists.busybox.net/pipermail/buildroot/2014-October/107894.html Ouch, I almost forgot that patch. I just added my Reviewed-by:. >> [...] >> Use the github helper macro: >> http://nightly.buildroot.org/manual.html#github-download-url > Ok. >> [...] >> Peter's version does not depend on host-python, yours does. >> >> Actually that dependency is needed becase waf does not work with >> recent python3 interpreters. That's why all Buildroot packages that use >> waf (jack2, midori, samba4) depend on it. > Yes host-python is required. >> [...] >> ...and you support X11 and Wayland, which is good. >> >> Overall your patch looks better, except Peter lists more mandatory >> dependencies (perhaps some or all are actually neede), has a more >> informative package description and uses the github helper. Merging >> the two patches to get the best of each would be good, and it would be >> great if you could cooperate to do that! >> >> I'm afraid I haven't much experience on i.MX to help, but I'll be glad >> to test your work (but please keep me in Cc:). >> > No problem I'll keep you in cc. But what is the plan now? Should I offer > a v2 or let Peter integrate the remarks above in his patch? Well, you can send your own patch, or if Peter wants to cooperate then he may be helpful. But he's not been active in the latest months, so unless he gets in touch I'd go on anyway if I were you.
On 13/10/14 14:06, Luca Ceresoli wrote: > Dear Gary, > > Gary Bisson wrote: >> Hi Luca, >> >> Thanks for your feedback, below are my comments. >> Sorry Peter I didn't see your patch from March. >> >> On 10/12/2014 07:43 AM, Luca Ceresoli wrote: [snip] >>> According to Gary, (e)glibc is needed. Peter, did you build-test with >>> uClibc (or musl)? >> Actually this dependency is not required as it is implicit, the real >> eglibc dependency comes from the GPU_VIV package. > > I see. A brief comment would be helpful, as it is for all inherited > dependencies. Example: > > # Required by gpu-viv-bin-mx6q > comment "gst1-plugins-imx needs an (e)glibc toolchain" > depends on BR2_arm > depends on !BR2_TOOLCHAIN_USES_GLIBC That's not the right place for pointing to gpu-viv-bin-mx6q. It should be something like: config BR2_PACKAGE_GST1_PLUGINS_IMX bool "gst1-plugins-imx" depends on BR2_LINUX_KERNEL depends on BR2_arm # Only relevant for i.MX depends on BR2_TOOLCHAIN_USES_GLIBC # gpu-viv-bin-mx6q select BR2_PACKAGE_GPU_VIV_BIN_MX6Q # Cannot select libfslvpuwrap because user must select the CPU depends on BR2_PACKAGE_LIBFSLVPUWRAP (I added that thing about libfslvpuwrap but I'm not sure of it...) Regards, Arnout
Arnout, all, On Tue, Oct 14, 2014 at 7:31 AM, Arnout Vandecappelle <arnout@mind.be> wrote: > [snip] > > # Required by gpu-viv-bin-mx6q > > comment "gst1-plugins-imx needs an (e)glibc toolchain" > > depends on BR2_arm > > depends on !BR2_TOOLCHAIN_USES_GLIBC > > That's not the right place for pointing to gpu-viv-bin-mx6q. It should be > something like: > > config BR2_PACKAGE_GST1_PLUGINS_IMX > bool "gst1-plugins-imx" > depends on BR2_LINUX_KERNEL > depends on BR2_arm # Only relevant for i.MX > depends on BR2_TOOLCHAIN_USES_GLIBC # gpu-viv-bin-mx6q > select BR2_PACKAGE_GPU_VIV_BIN_MX6Q > # Cannot select libfslvpuwrap because user must select the CPU > depends on BR2_PACKAGE_LIBFSLVPUWRAP > > (I added that thing about libfslvpuwrap but I'm not sure of it...) > > That is actually what I said in the first e-mail, I am not proud of all those dependencies but I couldn't find a way to select GPU_VIV_MX6Q as it is only selectable if FREESCALE_IMX_PLATFORM is set to FREESCALE_IMX_PLATFORM_IMX6Q. A select like above would give an error but I'm open to any other solution. Thanks, Gary
On 14/10/14 19:16, Gary Bisson wrote: > Arnout, all, > > On Tue, Oct 14, 2014 at 7:31 AM, Arnout Vandecappelle <arnout@mind.be > <mailto:arnout@mind.be>> wrote: > > [snip] > > # Required by gpu-viv-bin-mx6q > > comment "gst1-plugins-imx needs an (e)glibc toolchain" > > depends on BR2_arm > > depends on !BR2_TOOLCHAIN_USES_GLIBC > > That's not the right place for pointing to gpu-viv-bin-mx6q. It should be > something like: > > config BR2_PACKAGE_GST1_PLUGINS_IMX > bool "gst1-plugins-imx" > depends on BR2_LINUX_KERNEL > depends on BR2_arm # Only relevant for i.MX > depends on BR2_TOOLCHAIN_USES_GLIBC # gpu-viv-bin-mx6q > select BR2_PACKAGE_GPU_VIV_BIN_MX6Q > # Cannot select libfslvpuwrap because user must select the CPU > depends on BR2_PACKAGE_LIBFSLVPUWRAP > > (I added that thing about libfslvpuwrap but I'm not sure of it...) > > > That is actually what I said in the first e-mail, I am not proud of all those > dependencies but I couldn't find a way to select GPU_VIV_MX6Q as it is only > selectable if FREESCALE_IMX_PLATFORM is set to FREESCALE_IMX_PLATFORM_IMX6Q. A > select like above would give an error but I'm open to any other solution. Actually, you can do select BR2_PACKAGE_FREESCALE_IMX select BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q I'm not entirely sure if that's good though, because if the user has selected one of the other i.MX platforms and he thinks that he can use GStreamer with it, he'll get something completely different from what he expected... Regards, Arnout
Arnout, All, On 2014-10-14 23:05 +0200, Arnout Vandecappelle spake thusly: > On 14/10/14 19:16, Gary Bisson wrote: > > On Tue, Oct 14, 2014 at 7:31 AM, Arnout Vandecappelle <arnout@mind.be > > <mailto:arnout@mind.be>> wrote: > > > > [snip] > > > # Required by gpu-viv-bin-mx6q > > > comment "gst1-plugins-imx needs an (e)glibc toolchain" > > > depends on BR2_arm > > > depends on !BR2_TOOLCHAIN_USES_GLIBC > > > > That's not the right place for pointing to gpu-viv-bin-mx6q. It should be > > something like: > > > > config BR2_PACKAGE_GST1_PLUGINS_IMX > > bool "gst1-plugins-imx" > > depends on BR2_LINUX_KERNEL > > depends on BR2_arm # Only relevant for i.MX > > depends on BR2_TOOLCHAIN_USES_GLIBC # gpu-viv-bin-mx6q > > select BR2_PACKAGE_GPU_VIV_BIN_MX6Q > > # Cannot select libfslvpuwrap because user must select the CPU > > depends on BR2_PACKAGE_LIBFSLVPUWRAP > > > > (I added that thing about libfslvpuwrap but I'm not sure of it...) > > > > > > That is actually what I said in the first e-mail, I am not proud of all those > > dependencies but I couldn't find a way to select GPU_VIV_MX6Q as it is only > > selectable if FREESCALE_IMX_PLATFORM is set to FREESCALE_IMX_PLATFORM_IMX6Q. A > > select like above would give an error but I'm open to any other solution. > > Actually, you can do > select BR2_PACKAGE_FREESCALE_IMX > select BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q No you can't do that, because BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q is part of a choice, and you can not select a choice entry. So a 'depends on' it must be in this case. Not sure what to do about the comment, though. We currently have no such case documented in the manual; only comments about toolchain deps are described... I'm not against adding comments about dependencies on other packages, but I think we should keep them to a minimal level, like dependencies on biggish stuff (like X.org), or non-obvious stuff. Regards, Yann E. MORIN.
Yann, All, On 10/17/2014 02:07 PM, Yann E. MORIN wrote: > [snip] > No you can't do that, because BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q > is part of a choice, and you can not select a choice entry. > > So a 'depends on' it must be in this case. > > Not sure what to do about the comment, though. We currently have no such > case documented in the manual; only comments about toolchain deps are > described... > > I'm not against adding comments about dependencies on other packages, > but I think we should keep them to a minimal level, like dependencies on > biggish stuff (like X.org), or non-obvious stuff. > > Regards, > Yann E. MORIN. I agree that a dependency seemed like the only option. Regarding the comment it was more about showing the package exists. Although doing a search will tell you about it and its dependencies I'm afraid people would think the package is missing. As a comparison the Gstreamer 0.10 fsl plugin always shows up as it does not depend on iMX6 GPU libs. Anyway, would it make sense for me to offer a patch v2 or should we wait to agree first on modifications? So far I have listed those modifications to be made on the current version: - Use of github helper macro - Modify package comment with Peter S. original patch - Remove eglibc dependency (already from GPU libs) But I am still unclear on two items: - Package naming: although Peter K. did prefer gstreamer1-imx over gstreamer-imx [1], gst1-plugins-imx still looks closer to BR plugin naming. Also consider the Yocto recipe name [2] which is gstreamer1.0-plugins-imx, pretty close from gst1-plugins-imx. - Comments: comments on package dependencies could be removed at first and if people find it confusing we could work on it later. Regards, Gary [1] http://lists.busybox.net/pipermail/buildroot/2014-February/090496.html [2] https://github.com/Freescale/meta-fsl-arm/blob/master/recipes-multimedia/gstreamer/gstreamer1.0-plugins-imx_0.9.9.bb
Gary, All, On 2014-10-17 14:28 -0700, Gary Bisson spake thusly: > On 10/17/2014 02:07 PM, Yann E. MORIN wrote: > >[snip] > >No you can't do that, because BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q > >is part of a choice, and you can not select a choice entry. > > > >So a 'depends on' it must be in this case. > > > >Not sure what to do about the comment, though. We currently have no such > >case documented in the manual; only comments about toolchain deps are > >described... > > > >I'm not against adding comments about dependencies on other packages, > >but I think we should keep them to a minimal level, like dependencies on > >biggish stuff (like X.org), or non-obvious stuff. > > > >Regards, > >Yann E. MORIN. > > I agree that a dependency seemed like the only option. Regarding the comment > it was more about showing the package exists. > Although doing a search will tell you about it and its dependencies I'm > afraid people would think the package is missing. > As a comparison the Gstreamer 0.10 fsl plugin always shows up as it does not > depend on iMX6 GPU libs. > > Anyway, would it make sense for me to offer a patch v2 or should we wait to > agree first on modifications? Yup, let people get back home from Düsseldorf and get some rest aftert the heavy use they put their neurons at during LinuxCon/ELCE this past week... ;-) > So far I have listed those modifications to be made on the current version: > - Use of github helper macro > - Modify package comment with Peter S. original patch > - Remove eglibc dependency (already from GPU libs) Are we sure gst1-plugins-imx does not itself require glibc? If there are pre-built libraries, check they are not linked with libc.so.6: readelf -d libgst-imx-something.so > But I am still unclear on two items: > - Package naming: although Peter K. did prefer gstreamer1-imx over > gstreamer-imx [1], gst1-plugins-imx still looks closer to BR plugin naming. > Also consider the Yocto recipe name [2] which is gstreamer1.0-plugins-imx, > pretty close from gst1-plugins-imx. Well, gst1-plugins-imx seems quite correctly aligned to existing packages names, so I'd vote for that. > - Comments: comments on package dependencies could be removed at first and > if people find it confusing we could work on it later. Agreed. Regards, Yann E. MORIN.
Dear Gary, Yann E. MORIN wrote: > Gary, All, > > On 2014-10-17 14:28 -0700, Gary Bisson spake thusly: >> On 10/17/2014 02:07 PM, Yann E. MORIN wrote: >>> [snip] >>> No you can't do that, because BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q >>> is part of a choice, and you can not select a choice entry. >>> >>> So a 'depends on' it must be in this case. >>> >>> Not sure what to do about the comment, though. We currently have no such >>> case documented in the manual; only comments about toolchain deps are >>> described... >>> >>> I'm not against adding comments about dependencies on other packages, >>> but I think we should keep them to a minimal level, like dependencies on >>> biggish stuff (like X.org), or non-obvious stuff. >>> >>> Regards, >>> Yann E. MORIN. >> >> I agree that a dependency seemed like the only option. Regarding the comment >> it was more about showing the package exists. >> Although doing a search will tell you about it and its dependencies I'm >> afraid people would think the package is missing. >> As a comparison the Gstreamer 0.10 fsl plugin always shows up as it does not >> depend on iMX6 GPU libs. >> >> Anyway, would it make sense for me to offer a patch v2 or should we wait to >> agree first on modifications? > > Yup, let people get back home from Düsseldorf and get some rest aftert > the heavy use they put their neurons at during LinuxCon/ELCE this past > week... ;-) > >> So far I have listed those modifications to be made on the current version: >> - Use of github helper macro >> - Modify package comment with Peter S. original patch >> - Remove eglibc dependency (already from GPU libs) > > Are we sure gst1-plugins-imx does not itself require glibc? > If there are pre-built libraries, check they are not linked with > libc.so.6: > readelf -d libgst-imx-something.so > >> But I am still unclear on two items: >> - Package naming: although Peter K. did prefer gstreamer1-imx over >> gstreamer-imx [1], gst1-plugins-imx still looks closer to BR plugin naming. >> Also consider the Yocto recipe name [2] which is gstreamer1.0-plugins-imx, >> pretty close from gst1-plugins-imx. > > Well, gst1-plugins-imx seems quite correctly aligned to existing > packages names, so I'd vote for that. > >> - Comments: comments on package dependencies could be removed at first and >> if people find it confusing we could work on it later. I agree with Yann. You addressed the most relevant issues, so now you may send a v3 with all agreed changes. It might be not yet perfect, but I (and hopefully Yann and others) will review it and I'm pretty sure it's going to be very close to be accepted.
diff --git a/package/gstreamer1/Config.in b/package/gstreamer1/Config.in index fe0ad48..d43e4a6 100644 --- a/package/gstreamer1/Config.in +++ b/package/gstreamer1/Config.in @@ -6,6 +6,7 @@ source "package/gstreamer1/gst1-plugins-base/Config.in" source "package/gstreamer1/gst1-plugins-good/Config.in" source "package/gstreamer1/gst1-plugins-bad/Config.in" source "package/gstreamer1/gst1-plugins-ugly/Config.in" +source "package/gstreamer1/gst1-plugins-imx/Config.in" source "package/gstreamer1/gst1-libav/Config.in" source "package/gstreamer1/gst-omx/Config.in" endif diff --git a/package/gstreamer1/gst1-plugins-imx/Config.in b/package/gstreamer1/gst1-plugins-imx/Config.in new file mode 100644 index 0000000..7c8a467 --- /dev/null +++ b/package/gstreamer1/gst1-plugins-imx/Config.in @@ -0,0 +1,35 @@ +comment "gst1-plugins-imx needs an imx-specific Linux kernel to be built" + depends on BR2_arm && !BR2_LINUX_KERNEL + +comment "gst1-plugins-imx needs an (e)glibc toolchain" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC + +comment "gst1-plugins-imx requires Freescale VPU wrapper libraries" + depends on BR2_arm + depends on !BR2_PACKAGE_LIBFSLVPUWRAP + +comment "gst1-plugins-imx requires Freescale GPU libraries for i.MX6" + depends on BR2_arm + depends on BR2_PACKAGE_LIBFSLVPUWRAP + depends on !BR2_PACKAGE_GPU_VIV_BIN_MX6Q + +config BR2_PACKAGE_GST1_PLUGINS_IMX + bool "gst1-plugins-imx" + depends on BR2_LINUX_KERNEL + depends on BR2_arm # Only relevant for i.MX + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_PACKAGE_GPU_VIV_BIN_MX6Q + depends on BR2_PACKAGE_LIBFSLVPUWRAP + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + This is a set of GStreamer 1.0 plugins for plugins for Freescale's + i.MX platform, with emphasis on video en/decoding using the i.MX + VPU engine. + + Currently, this software has been tested only with the i.MX6 SoC + family. + + The software as a whole is currently in beta stage. + + More info at https://github.com/Freescale/gstreamer-imx diff --git a/package/gstreamer1/gst1-plugins-imx/gst1-plugins-imx.mk b/package/gstreamer1/gst1-plugins-imx/gst1-plugins-imx.mk new file mode 100644 index 0000000..64a1b5b --- /dev/null +++ b/package/gstreamer1/gst1-plugins-imx/gst1-plugins-imx.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# gst1-plugins-imx +# +################################################################################ + +GST1_PLUGINS_IMX_VERSION = 0.9.9 +GST1_PLUGINS_IMX_SITE = https://github.com/Freescale/gstreamer-imx.git +GST1_PLUGINS_IMX_SITE_METHOD = git + +GST1_PLUGINS_IMX_LICENSE = LGPLv2+ +GST1_PLUGINS_IMX_LICENSE_FILES = LICENSE + +GST1_PLUGINS_IMX_INSTALL_STAGING = YES + +GST1_PLUGINS_IMX_DEPENDENCIES += host-pkgconf host-python \ + gpu-viv-bin-mx6q gstreamer1 gst1-plugins-base libfslvpuwrap + +# needs access to imx-specific kernel headers +GST1_PLUGINS_IMX_DEPENDENCIES += linux +GST1_PLUGINS_IMX_CONF_OPTS += --prefix="/usr" \ + --kernel-headers="$(LINUX_DIR)/include" + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +GST1_PLUGINS_IMX_DEPENDENCIES += xlib_libX11 +GST1_PLUGINS_IMX_CONF_OPTS += --egl-platform=x11 +else +ifeq ($(BR2_PACKAGE_WAYLAND),y) +GST1_PLUGINS_IMX_DEPENDENCIES += wayland +GST1_PLUGINS_IMX_CONF_OPTS += --egl-platform=wayland +else +GST1_PLUGINS_IMX_CONF_OPTS += --egl-platform=fb +endif +endif + +define GST1_PLUGINS_IMX_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + $(HOST_DIR)/usr/bin/python2 ./waf configure \ + $(GST1_PLUGINS_IMX_CONF_OPTS) \ + ) +endef + +define GST1_PLUGINS_IMX_BUILD_CMDS + (cd $(@D); \ + $(HOST_DIR)/usr/bin/python2 ./waf build -j $(PARALLEL_JOBS) \ + ) +endef + +define GST1_PLUGINS_IMX_INSTALL_TARGET_CMDS + (cd $(@D); \ + $(HOST_DIR)/usr/bin/python2 ./waf --destdir=$(TARGET_DIR) \ + install \ + ) +endef + +$(eval $(generic-package))
Open-source GStreamer 1.0 plugins for i.MX platforms. More info at https://github.com/Freescale/gstreamer-imx Signed-off-by: Gary Bisson <bisson.gary@gmail.com> --- This patch has been tested using an i.MX6Q SabreLite (nitrogen6x config) along with the usual Tears of Steel movie in 1080p: http://media.xiph.org/mango/tears_of_steel_1080p.webm Below are the commands used to test the different sinks: $ gst-launch-1.0 playbin uri=file:///root/tears_of_steel_1080p.webm $ gst-launch-1.0 filesrc location=/root/tears_of_steel_1080p.webm ! \ matroskademux ! imxvpudec ! imxipusink $ gst-launch-1.0 filesrc location=/root/tears_of_steel_1080p.webm ! \ matroskademux ! imxvpudec ! imxeglvivsink The toolchain used was the Sourcery CodeBench 2014.05. The video above also requires the following extra configuration in order to demux the content: BR2_PACKAGE_GST1_PLUGINS_GOOD=y BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA=y I'm not fond of all the dependencies of this package but I couldn't seem to find a way to do it differently. A try has been made to select the Vivante package automatically but it requires doing a select of BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q which doesn't work. Let me know if you'd like another mechanism to be able to select this plugin. Thanks, Gary package/gstreamer1/Config.in | 1 + package/gstreamer1/gst1-plugins-imx/Config.in | 35 +++++++++++++ .../gst1-plugins-imx/gst1-plugins-imx.mk | 57 ++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 package/gstreamer1/gst1-plugins-imx/Config.in create mode 100644 package/gstreamer1/gst1-plugins-imx/gst1-plugins-imx.mk