Skip to contentSkip to conversation

Help about gstreamer h264 in buildroot

Buildroot Marco Trapanese 3 participants 11 messages Jun 14, 2014 – Jun 21, 2014

lore
Share & tools
lore
#0 lore raw

Hello,
I'm trying to play mp4 h264 video files on a RPi.
Attached there is the .config file.
When I try to play such a file I get this error:

Warning: "No decoder available for type 'video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)4, profile=(string)main, codec_data=(buffer)014d4028ffe10016274d4028a9180f0044fcb8035010101b6c2b5ef7c04001000428de09c8, width=(int)1920, height=(int)1080, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1, parsed=(boolean)true'."
Error: "Your GStreamer installation is missing a plug-in."

Anyway I selected (and checked with gst-inspect) the x264parse plugin (from bad- ones).
After a search on the web it seems I need also the gst-ffmpeg but this requires libavcodec which cannot compile:

libavcodec/arm/ac3dsp_armv6.S: Assembler messages:
libavcodec/arm/ac3dsp_armv6.S:40: Error: selected processor does not support ARM mode `movw r8,#0x1fe0'

I was working on a 2014.05-git-00366-gba25b12-dirty version. I tried on a newer one (2014.08-git-00302-g712414c) but there is the same error.

What am I missing?

Thanks!
Marco

-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config
Type: application/xml
Size: 53179 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20140614/6604f687/attachment.wsdl>

#1 lore raw

Dear Marco Trapanese,

Quoted 7 lines · Marco Trapanese

libavcodec/arm/ac3dsp_armv6.S: Assembler messages:
libavcodec/arm/ac3dsp_armv6.S:40: Error: selected processor does not support ARM mode `movw r8,#0x1fe0'

I was working on a 2014.05-git-00366-gba25b12-dirty version. I tried on a newer one (2014.08-git-00302-g712414c) but there is the same error.

I tried building your configuration, and here it fails with a different issue:

.obj/qeglfshooks_pi.o: In function `QEglFSPiHooks::destroyNativeWindow(void*)':
qeglfshooks_pi.cpp:(.text+0x2c): undefined reference to vc_dispmanx_update_start' qeglfshooks_pi.cpp:(.text+0x38): undefined reference to vc_dispmanx_element_remove' qeglfshooks_pi.cpp:(.text+0x40): undefined reference to vc_dispmanx_update_submit_sync' .obj/qeglfshooks_pi.o: In function QEglFSPiHooks::platformDestroy()':
qeglfshooks_pi.cpp:(.text+0x90): undefined reference to vc_dispmanx_display_close' .obj/qeglfshooks_pi.o: In function QEglFSPiHooks::platformDisplay() const':
qeglfshooks_pi.cpp:(.text+0xa0): undefined reference to `vc_dispmanx_display_open'
.obj/qeglfshooks_pi.o: In function `QEglFSPiHooks::createNativeWindow(QPlatformWindow*, QSize const&, QSurfaceFormat const&)':
qeglfshooks_pi.cpp:(.text+0x10c): undefined reference to vc_dispmanx_update_start' qeglfshooks_pi.cpp:(.text+0x15c): undefined reference to vc_dispmanx_element_add' qeglfshooks_pi.cpp:(.text+0x168): undefined reference to `vc_dispmanx_update_submit_sync'
collect2: error: ld returned 1 exit status

That's an issue with the RPi OpenGL implementation, I think we have had a couple of similar failures in the autobuilders. Maxime, Yann, any suggestion?

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#2 lore raw

Il 14/06/2014 14:14, Thomas Petazzoni ha scritto:

Quoted 8 lines

I tried building your configuration, and here it fails with a different issue:

.obj/qeglfshooks_pi.o: In function `QEglFSPiHooks::destroyNativeWindow(void*)':
qeglfshooks_pi.cpp:(.text+0x2c): undefined reference to `vc_dispmanx_update_start' qeglfshooks_pi.cpp:(.text+0x38): undefined reference to

How is it possible?
Shouldn't the same configuration lead to the same output?

Quoted 3 lines

That's an issue with the RPi OpenGL implementation, I think we have had a couple of similar failures in the autobuilders. Maxime, Yann, any suggestion? Thomas

Well, given that this currently doesn't work in buildroot, is there another way to play an mp4/h264 video from Qt5?

Thanks!
Marco

#3 lore raw

Dear Marco Trapanese,

Quoted 8 lines · Marco Trapanese
Quoted 5 lines

.obj/qeglfshooks_pi.o: In function `QEglFSPiHooks::destroyNativeWindow(void*)':
qeglfshooks_pi.cpp:(.text+0x2c): undefined reference to `vc_dispmanx_update_start' qeglfshooks_pi.cpp:(.text+0x38): undefined reference to

How is it possible?
Shouldn't the same configuration lead to the same output?

Two possibilities:

1/ We're not using exactly the same Buildroot version, so that might
affect the build.

2/ Sometimes, the host environment has some impact on the build.
Buildroot tries to avoid this as much as possible, but the cross-compilation is never fully guaranteed from being isolated of the host machine configuration.

Quoted 6 lines
Quoted 3 lines

That's an issue with the RPi OpenGL implementation, I think we have had a couple of similar failures in the autobuilders. Maxime, Yann, any suggestion? Thomas

Well, given that this currently doesn't work in buildroot, is there another way to play an mp4/h264 video from Qt5?

I think we should rather fix the problems :)

Thanks,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#4 lore raw

Il 15/06/2014 00:34, Thomas Petazzoni ha scritto:

Quoted 3 lines

Well, given that this currently doesn't work in buildroot, is there another way to play an mp4/h264 video from Qt5?
I think we should rather fix the problems :)

Hi Thomas,
I appreciate a lot your efforts, anyway I have to ask you any news because Thursday I must show my project and if I can't play mp4 h264 video with buildroot I have to rely on another distro.

Of course I don't request anything! It's just to know if it's easy enough to fix, otherwise I need to restart from scratch another time.

Thanks!
Marco

#5 lore raw

Dear Marco Trapanese,

Quoted 6 lines · Marco Trapanese

I appreciate a lot your efforts, anyway I have to ask you any news because Thursday I must show my project and if I can't play mp4 h264 video with buildroot I have to rely on another distro.

Of course I don't request anything! It's just to know if it's easy enough to fix, otherwise I need to restart from scratch another time.

So far, I haven't been able to look further into the problem, and I don't expect to be able to do so before your deadline on Thursday.

Hopefully, another Buildroot person can have a look and give you some insight.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#6 lore raw
In reply to Thomas Petazzoni

Il 14/06/2014 14:14, Thomas Petazzoni ha scritto:

Quoted 17 lines

I tried building your configuration, and here it fails with a different issue:

.obj/qeglfshooks_pi.o: In function `QEglFSPiHooks::destroyNativeWindow(void*)':
qeglfshooks_pi.cpp:(.text+0x2c): undefined reference to vc_dispmanx_update_start' qeglfshooks_pi.cpp:(.text+0x38): undefined reference to vc_dispmanx_element_remove' qeglfshooks_pi.cpp:(.text+0x40): undefined reference to vc_dispmanx_update_submit_sync' .obj/qeglfshooks_pi.o: In function QEglFSPiHooks::platformDestroy()':
qeglfshooks_pi.cpp:(.text+0x90): undefined reference to vc_dispmanx_display_close' .obj/qeglfshooks_pi.o: In function QEglFSPiHooks::platformDisplay() const':
qeglfshooks_pi.cpp:(.text+0xa0): undefined reference to `vc_dispmanx_display_open'
.obj/qeglfshooks_pi.o: In function `QEglFSPiHooks::createNativeWindow(QPlatformWindow*, QSize const&, QSurfaceFormat const&)':
qeglfshooks_pi.cpp:(.text+0x10c): undefined reference to vc_dispmanx_update_start' qeglfshooks_pi.cpp:(.text+0x15c): undefined reference to vc_dispmanx_element_add' qeglfshooks_pi.cpp:(.text+0x168): undefined reference to `vc_dispmanx_update_submit_sync'
collect2: error: ld returned 1 exit status

Quoted 3 lines

That's an issue with the RPi OpenGL implementation, I think we have had a couple of similar failures in the autobuilders. Maxime, Yann, any suggestion?

Hi Thomas, after fixing the gst-ffmpeg issue thanks to Arnout Vandecappelle, I'm still trying to compile buildroot and now I'm facing the problem you reported above.

Do you confirm this doesn't work?

I'm very confused how to skip around all those bugs in order to have a functional buildroot environment.

Marco

#7 lore raw

Dear Marco Trapanese,

Quoted 3 lines · Marco Trapanese

Hi Thomas, after fixing the gst-ffmpeg issue thanks to Arnout Vandecappelle, I'm still trying to compile buildroot and now I'm facing the problem you reported above.

Weird that I didn't fall into the issue you reported originally, despite using the Buildroot configuration you provided.

Quoted 1 line

Do you confirm this doesn't work?

I don't confirm anything, it just didn't build here, with the error messages that I've posted.

Quoted 2 lines

I'm very confused how to skip around all those bugs in order to have a functional buildroot environment.

You shouldn't try to "skip around", but instead you should help us to _fix_ those issues. The support for Qt5+OpenGL is still fairly, and since there are multiple OpenGL implementation, generally one for each platform, we haven't yet tested and fixed all the possible combinations. It is thanks to bug reports provided by users like you that we can progressively fix those issues, and provide a build system that is more and more capable to build all configurations correctly out-of-the-box.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#8 lore raw

Il 21/06/2014 15:04, Thomas Petazzoni ha scritto:

Quoted 2 lines

I don't confirm anything, it just didn't build here, with the error messages that I've posted.

Ok, you confirm it doesn't build there. I confirm it doesn't build here.

Quoted 8 lines

You shouldn't try to "skip around", but instead you should help us to _fix_ those issues. The support for Qt5+OpenGL is still fairly, and since there are multiple OpenGL implementation, generally one for each platform, we haven't yet tested and fixed all the possible combinations. It is thanks to bug reports provided by users like you that we can progressively fix those issues, and provide a build system that is more and more capable to build all configurations correctly out-of-the-box. Best regards, Thomas

I understand your point-of-view.
I hope you also understand the frustration of a normal user which try to configure its own embedded system.

In the website of buildroot I read:

"Is very easy to set up, thanks to its menuconfig, gconfig and xconfig configuration interfaces, familiar to all embedded Linux developers. Building a basic embedded Linux system with Buildroot typically takes 15-30 minutes."

I never had a working buildroot environment since several months! Of course I know I'm not an expert so I cannot fix the bugs by myself. I'm talking about a standard embedded systems (i.MX6 or RPi) with very common packages (Qt5, gstreamer).

I also understand no charge is required and in fact I don't expect anything from the buildroot staff! But for a user it's not an option to delay for days or weeks a project because buildroot doesn't build.

So I'm just wondering if it is possible to know which combination of kernel/buildroot version leads to a working environment with basic packages. For my current project based upon RPi I need only:

- common utility: ssh (dropbear or openssh), lighttpd, etc (no problem here!)
- Qt5 (all modules, egl platform)
- gstreamer with mp3, mp4 h264 and qtmultimedia support

By the way, I don't need Qt5.3, I could use 5.2 as well.

Best regards
Marco

#9 lore raw

Il 21/06/2014 15:23, Marco Trapanese ha scritto:

Quoted 8 lines

So I'm just wondering if it is possible to know which combination of kernel/buildroot version leads to a working environment with basic packages. For my current project based upon RPi I need only:

- common utility: ssh (dropbear or openssh), lighttpd, etc (no problem here!)
- Qt5 (all modules, egl platform)
- gstreamer with mp3, mp4 h264 and qtmultimedia support

I'm close to find a working solution.
Attached there is the current .config file.

Qt5 is working
QtMultimedia is working
gstreamer for mp3 decoding is working

I can't play only mp4 video files. GStreamer tells me there are no video sinks available.

Which buildroot package contains a gstreamer video sink that works without X (egl/gles) ?

Thanks again
Marco

-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config
Type: application/xml
Size: 53785 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20140621/0c4c1a5c/attachment.wsdl>

#10 lore raw
In reply to Marco Trapanese
Quoted 13 lines · Marco Trapanese

Hello,
I'm trying to play mp4 h264 video files on a RPi.
Attached there is the .config file.
When I try to play such a file I get this error:

Warning: "No decoder available for type 'video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)4, profile=(string)main, codec_data=(buffer)014d4028ffe10016274d4028a9180f0044fcb8035010101b6c2b5ef7c04001000428de09c8, width=(int)1920, height=(int)1080, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1, parsed=(boolean)true'."
Error: "Your GStreamer installation is missing a plug-in."

Quoted 8 lines

Anyway I selected (and checked with gst-inspect) the x264parse plugin (from bad- ones).
After a search on the web it seems I need also the gst-ffmpeg but this requires libavcodec which cannot compile:

libavcodec/arm/ac3dsp_armv6.S: Assembler messages:
libavcodec/arm/ac3dsp_armv6.S:40: Error: selected processor does not support ARM mode `movw r8,#0x1fe0'

This is a bug in gst-ffmpeg's libavcodec: we explicitly pass
--enable-armv6 --disable-armv6t2
to configure, but it still uses armv6t2 instructions (movw with 16-bit immediate).

The upstream ffmpeg patch that fixes it is in
http://git.videolan.org/?p=ffmpeg.git;a=commit;h=9a83adaf346bc5e38183427b2bd11084c11d1c8b

I'll post a patch in a minute.

Regards,
Arnout

Quoted 18 lines

I was working on a 2014.05-git-00366-gba25b12-dirty version.
I tried on a newer one (2014.08-git-00302-g712414c) but there is the same error.

What am I missing?

Thanks!
Marco

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F