VSync in imx-gst1.0 plugins in official BSP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

VSync in imx-gst1.0 plugins in official BSP

3,101 Views
arnoutdiels
Contributor III

Hi,

I am comparing the IMX6ULL, IMX6SL and IMX6SX (evks) for a video application.

For firmware, I am using the yocto L4.9.11_1.0.0-ga+mx8-alpha BSP.

I can play video through gstreamer on LCD's on all devices, but I'm basically using the imxv4l2videosink on all devices (which seems to be very efficient). But I am still experiencing screen tearing when I do something like "gst-launch-1.0 videotestsrc pattern=ball ! imxv4l2sink"

However, I got seriously confused by Yocto/gstreamer/video – Gateworks  and others. As it turns out, the recipe for the BSP uses git://git.freescale.com/imx/gst1.0-plugins-fsl.git, and NOT GitHub - Freescale/gstreamer-imx: GStreamer 1.0 plugins for i.MX platforms . The two repo's are significantly different.

In the first link, there is described how a "use-vsyc" option can be used to force vsync. However, the "relevant" sinks/option are not available in the repo from freescale. (You can simply search a cloned freescale repo for "vsync", it yields nothing)

Hence my question: How can I ensure vsync'ed (no screen tearing) images when using the official BSP and gstreamer?

Thanks for your reply!

Arnout

0 Kudos
15 Replies

2,206 Views
arnoutdiels
Contributor III

Wow, this is getting stranger.

On the SoloX, it I am missing the vsync:

V4.9 image X11 SX

 

imx6sxsabresd login: root

root@imx6sxsabresd:~# gst-inspect-1.0 | grep imx

aiur.imx: webm: webm

aiur.imx:  aiurdemux: Aiur universal demuxer

imxvideoconvert.imx:  imxvideoconvert_g2d: IMX g2d Video Converter

imxvideoconvert.imx:  imxvideoconvert_pxp: IMX pxp Video Converter

imxcompositor.imx:  imxcompositor_g2d: IMX g2d Video Compositor

imxcompositor.imx:  imxcompositor_pxp: IMX pxp Video Compositor

beep.imx: ac3: ac3

beep.imx: 3ca: ac3

beep.imx:  beepdec: Beep universal decoder

imxv4l2.imx:  imxv4l2sink: IMX Video (video4linux2) Sink

imxv4l2.imx:  imxv4l2src: IMX Video (video4linux2) Source

imxmp3enc.imx:  imxmp3enc: imx mp3 audio encoder

overlaysink.imx:  overlaysink: IMX Video (video compositor) Sink

BUT on the 6ULL, I have something totally different:

V4.9 image X11 ULL

 

root@imx6ull14x14evk:/# gst-inspect-1.0 | grep imx

imxpxp:  imxpxpvideosink: Freescale PxP video sink

imxpxp:  imxpxpvideotransform: Freescale PxP video transform

imxv4l2videosrc:  imxv4l2videosrc: V4L2 CSI Video Source

imxaudio:  imxuniaudiodec: Freescale i.MX uniaudio decoder

imxaudio:  imxmp3audioenc: Freescale i.MX MP3 encoder

 

The imxpxp DOES have the use_vsync option.

Howcome this is so different for the soloX and ULL? And how can I get vsync to work on the soloX?

0 Kudos

2,206 Views
arnoutdiels
Contributor III

To exclude a yocto build for the soloX mistake from my part, I took L4.9.11_1.0.0-ga_images_MX6QPDLSOLOX.tar - fsl-image-qt5-validation-imx-x11-imx6qpdlsolox.sdcard directly from https://www.nxp.com/support/developer-resources/hardware-development-tools/sabre-development-system/...  

Funny thing is, this image does not even boot. The bootloader is wrong in the "official" image. When I fix this (by copying the correct bootloader, but keeping the MBR and all partitions as they were in the image), I get confirmation that my build was correct:

imx6qpdlsolox login: random: crng init done

NXP i.MX Release Distro 4.9.11-1.0.0 imx6qpdlsolox ttymxc0

imx6qpdlsolox login: root
root@imx6qpdlsolox:~# gst-inspect-1.0 | grep imx
display(/dev/fb0) resolution is (1024x768).
imxvideoconvert.imx: imxvideoconvert_pxp: IMX pxp Video Converter
imxvideoconvert.imx: imxvideoconvert_g2d: IMX g2d Video Converter
imxcompositor.imx: imxcompositor_pxp: IMX pxp Video Compositor
imxcompositor.imx: imxcompositor_g2d: IMX g2d Video Compositor
beep.imx: beepdec: Beep universal decoder
beep.imx: 3ca: ac3
beep.imx: ac3: ac3
imxmp3enc.imx: imxmp3enc: imx mp3 audio encoder
aiur.imx: aiurdemux: Aiur universal demuxer
aiur.imx: webm: webm
imxv4l2.imx: imxv4l2src: IMX Video (video4linux2) Source
imxv4l2.imx: imxv4l2sink: IMX Video (video4linux2) Sink
overlaysink.imx: overlaysink: IMX Video (video compositor) Sink

0 Kudos

2,206 Views
igorpadykov
NXP Employee
NXP Employee

Hi Arnout

you are right, both repo are different as there are  community gstreamer-imx plugins

and nxp gstreamer plugins and it is explained on

trac.gateworks.com/wiki/Yocto/gstreamer

Please note that IMX6ULL, IMX6SL and IMX6SX do not have vpu (no hardware video support),

it makes sense to test with processors which have vpu, like i.MX6DQ, SDL.

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

2,206 Views
arnoutdiels
Contributor III

Hi,

I know that they don't contain a VPU and don't support HW decoding, but the IMX6S and higher don't come in small enough packages for my current application to use Hence the subset I'm testing now aiming at SW decoding.

Regardless, my main question remains:

- How can vsync be achieved on the 4.9 BSP on the SoloX in Gst? (It works on the ULL build, but not on the SoloX..)

0 Kudos

2,206 Views
igorpadykov
NXP Employee
NXP Employee

Hi Arnout

nxp gstreamer plugins are based on specific i.mx vpu usage.

Seems issues with software (generic) implementation may be posted

on gstreamer mail list

GStreamer: Mailing Lists 

Best regards
igor

0 Kudos

2,206 Views
arnoutdiels
Contributor III

Hi,

It's not an issue of gst itself, it's an issue of the BSP yocto build, made by freescale/NXP. It chooses what version of GST to build and what plugins to build. As far as I can see, it only builds the imxpxp plugin for the imx6ull, and not for the other targets. 

If I were to mail this to the Gstreamer guys, they would most likely also just refer me back to NXP (since they made the yocto BSP layer that does it)

0 Kudos

2,206 Views
igorpadykov
NXP Employee
NXP Employee

L4.9.11_1.0.0-ga+mx8-alpha BSP is in development stage, "alpha"

means that not all features are tested. Please try official BSPs described in

i.MX 6 / i.MX 7 Series Software and Development Tool|NXP 

use sect.5.1 Build configurations, sect.5.2 Choosing an i.MX Yocto project image

attached Yocto Guide.

0 Kudos

2,206 Views
arnoutdiels
Contributor III

The attached guide is also from the same alpha release, and the official latest BSP one can download for e.g. the soloX IS also that 4.9 alpha release.

My only other option is to revert to the 4.1 BSP. Is this what you recommend?

And I understand there are bugs in the alpha release. I just want to point one out, so it can be confirmed and fixed.

Or, if for some good reason it makes no sense to be able to have the imxpxp plugin (to do vsync on the soloX, soloL) I would like to learn it.

0 Kudos

2,206 Views
igorpadykov
NXP Employee
NXP Employee

attached guide is not from alpha, it is official Linux 4.9.11_1.0.0 BSP

linux-imx.git - i.MX Linux Kernel 

opposite to "alpha", it is documented, below

https://www.nxp.com/webapp/Download?colCode=L4.9.11_1.0.0_LINUX_DOCS 

In particular Release Notes describes which features were tested, Linux Guide

shows this in more detailed way.

Best regards
igor

0 Kudos

2,206 Views
arnoutdiels
Contributor III

First page, top right

pastedImage_1.png

What am I missing?

0 Kudos

2,206 Views
igorpadykov
NXP Employee
NXP Employee

you are missing "+",

that is it is L4.9.11_1.0.0-ga

with addition of i.MX8 software, which is alpha.

0 Kudos

2,206 Views
arnoutdiels
Contributor III

Ok, so you agree that the attached guide IS from alpha, with the +mx8 I hope.

Can you please then tell me what the official yocto tag is for the "non-alpha" release.. 

In the document you attached, it says:

mkdir fsl-release-bsp
$ cd fsl-release-bsp
$ repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-morty
$ repo sync
Use this for the GA release only, but not for i.MX 8 Alpha release. For i.MX 8 Alpha release, follow the Readme instructions

These are the commands I executed. So I would assume I am using the correct version.. Just how are you concluding I am not at the right version?

0 Kudos

2,206 Views
igorpadykov
NXP Employee
NXP Employee
0 Kudos

2,206 Views
arnoutdiels
Contributor III

That's the linux kernel. I am taking about the yocto repository.

git://git.freescale.com/imx/fsl-arm-yocto-bsp.git

(Which is down.. again.)

Latest commit that I used:

commit 1b9d32260104cf7c906b92d5f0dbc07d5df86e97
Author: Jun Zhu <junzhu@nxp.com>
Date: Thu Sep 28 18:19:57 2017 +0800

imx-4.9.11-1.0.0_ga.xml: Update the revision of meta-fsl-bsp-release layer

0 Kudos

2,206 Views
igorpadykov
NXP Employee
NXP Employee

for processors without hardware video support (without vpu module) nxp imx-gst1.0

plugins do not add improvements compared with generic gstreamer (using software implementation)
so one can post this to meta-fsl-arm mailing list, so that more people could try to assist you.
https://lists.yoctoproject.org/listinfo/meta-freescale

Best regards
igor

0 Kudos