After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 705764 - Low fps when playing 1080p video on Raspberry Pi Model B
Low fps when playing 1080p video on Raspberry Pi Model B
Status: RESOLVED INVALID
Product: GStreamer
Classification: Platform
Component: gst-omx
1.0.9
Other Linux
: Normal normal
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-08-10 18:23 UTC by Yevhen
Modified: 2014-06-22 14:57 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
not enough resources for 1080p/omxvideodec/eglglessink (11.65 KB, text/x-log)
2013-08-23 14:32 UTC, Julien Isorce
Details

Description Yevhen 2013-08-10 18:23:27 UTC
I'm trying to play the 1080p video
(http://samplemedia.linaro.org/H264/big_buck_bunny_1080p_H264_AAC_25fps_7200K.MP4)
using the following pipeline:

GST_DEBUG=2 gst-launch-1.0 filesrc location=/tmp/video.MP4 ! decodebin ! eglglessink

I get a lot of frames dropped and see messages like:
WARN             omxvideodec gstomxvideodec.c:2003:gst_omx_video_dec_loop:<omxh264dec-omxh264dec0> Frame is too late, dropping (deadline 0:00:00.088929327)

There is not such problem with playback when using omxplayer.
Comment 1 Sebastian Dröge (slomo) 2013-08-13 10:40:03 UTC
Can you check if it works better in a manual pipeline, e.g.

filesrc location=video.mp4 ! qtdemux ! queue ! h264parse ! omxh264dec ! queue ! eglglessink

if it doesn't, can you check with top which of the queue threads is taking all the CPU time? Is the CPU actually used completely?
Comment 2 Yevhen 2013-08-13 15:13:36 UTC
The following pipeline

filesrc location=video.mp4 ! qtdemux ! queue ! h264parse ! omxh264dec ! queue !
eglglessink

not works for me.
It gives me the same messages in console but without displaying any video.

CPU load in both cases is less then 50%.
Here is a stat of CPU usage from top:

6.8 eglglessink-ren
5.8 ILCS_HOST
4.9 queue0:src
2.9 VCHIQ completio
1.9 queue1:src
1.0 gst-launch-1.0
1.0 qtdemux0:sink
1.0 omxh264dec-omxh
0.0 HDispmanx Notif
0.0 HTV Notify
0.0 HCEC Notify
0.0 gst-launch-1.0
Comment 3 Sebastian Dröge (slomo) 2013-08-14 08:25:25 UTC
Is it working better if you set "sync=false" on the sink? Maybe this is an IO related problem, and qtdemux IO read pattern is suboptimal. Could you add another queue in front of qtdemux to see if that helps (it goes to push mode then)?
Comment 4 Yevhen 2013-08-14 10:58:41 UTC
Setting sync=false makes video plays more smoothly but it's like in slow motion.
I'm using SD card class 10 so there should not be any problems with read speed.
Comment 5 Sebastian Dröge (slomo) 2013-08-14 12:13:44 UTC
Can you try if using latest git master of gst-omx and gst-plugins-bad helps?
Comment 6 Yevhen 2013-08-14 12:24:48 UTC
I've already tried (v1.1.3 of gstreamer and gstreamer-plugins) but when I want to play video or even run "gst-launch-1.0 videotestsrc ! eglglessink" execution terminates with crash.
Comment 7 Julien Isorce 2013-08-23 14:32:46 UTC
Created attachment 252875 [details]
not enough resources for 1080p/omxvideodec/eglglessink
Comment 8 Julien Isorce 2013-08-23 14:33:12 UTC
Hi, well here gst-launch-1.0 videotestsrc ! "video/x-raw, width=1920, height=1080" ! eglglessink is running (but slow as expected)

About the 1080p video I experience also a pb: EGL_BAD_ALLOC

egladaption gstegladaptation_egl.c:77:got_egl_error: EGL ERROR: eglCreateWindowSurface returned 0x3003

gst_omx_port_allocate_buffers_unlocked:<omxh264dec-omxh264dec0> Failed to allocate buffer for video_decode port 131: Insufficient resources (0x80001000)

See attached log for gst-launch-1.0 souphttpsrc location=http://samplemedia.linaro.org/H264/big_buck_bunny_1080p_H264_AAC_25fps_7200K.MP4 ! qtdemux ! h264parse ! omxh264dec  ! eglglessink


Same result if not using EGLImage (for example by adding "video/x-raw, format=(string)I420" between omxh264dec and eglglessink)

too many resources ? 4 buffers ?
Comment 9 Sebastian Dröge (slomo) 2013-08-26 07:15:44 UTC
Try changing the memory split to allocate more memory to the videocore (in /boot/config.txt).
Comment 10 Julien Isorce 2013-08-30 13:32:23 UTC
Nice! It works with gpu_mem=128 :)
Comment 11 Yevhen 2013-08-31 13:59:56 UTC
I can't make it work.
Can you write your system configuration and how you build or where you download (in case of pre built binaries) gstreamer.
Also posting config.txt here would also be fine.