please choosego to mobile | Continue to access the PC version
View: 228|Reply: 1

OPi 5 Max Gstreamer glimagesink error

[Copy link]

1

threads

1

posts

7

credits

Novice

Rank: 1

credits
7
Published in 2024-11-13 16:44:45 | Show all floors |Read mode
This post was finally edited by Gol at 2024-11-13 16:49

A problem with Orange Pi 5 Max. Tryinig Gstreamer with mppvideodec  element. Decoding H264 video stream and show on HDMI display with glimagesink.

On microSD image with Orangepi5max_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.160  it works but 3-4 minutes, after that video stops (disappears on HDMI) and no any messages in console, gstreamer pipeline continue work.

With microSD image Orangepi5max_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.160 decoding doesn't work at all. Shows  error

"Caught SIGSEGV
exec gdb failed: No such file or directory
Spinning.  Please run 'gdb gst-launch-1.0 4223' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.
"


CPU temperature 42 degrees Celcium, so no overheating.


When testing on Orangepi5max_1.0.0_ubuntu_focal_desktop_xfce_linux5.10.160

Running pipelines in SSH console under root.

1. Test pipeline:
gst-launch-1.0 videotestsrc ! glimagesink    - works fine, no problems

2. Test pipeline:
gst-launch-1.0 -e -v udpsrc port=3000 buffer-size=300000000 do-timestamp=true ! h264parse ! mppvideodec ! glupload ! glcolorconvert ! glshader fragment="`cat shader.txt`" ! gldownload ! videoconvert ! aasink sync=false    - works with no problems  (ASCII output in console)

3. Pipeline which is needed for me:
gst-launch-1.0 -e -v udpsrc port=3000 buffer-size=300000000 do-timestamp=true ! h264parse ! mppvideodec ! glupload ! glcolorconvert ! glshader fragment="`cat shader.txt`" ! glimagesink sync=false    - it works 3-4 minutes only, sometimes less.

If enable GST_DEBUG=4 I see it hangs after some minutes with the message:
glwindow gstglwindow_gbm_egl.c:297:draw_cb: Could not initialize GBM surface


Serarching for this message, found https://github.com/GStreamer/gst-plugins-base/blob/master/gst-libs/gst/gl/gbm/gstglwindow_gbm_egl.c  Hangs after function drmModePageFlip call

/* Presently, current_bo is shown on screen. Schedule the next page
   * flip, this time flip to next_bo. The flip happens asynchronously, so
   * we can continue and render etc. in the meantime. */
  window_egl->waiting_for_flip = 1;
  ret = drmModePageFlip (display->drm_fd, display->crtc_id, framebuf->fb_id,
      DRM_MODE_PAGE_FLIP_EVENT, &(window_egl->waiting_for_flip));
  if (ret != 0) {
    /* NOTE: According to libdrm sources, the page is _not_
     * considered flipped if drmModePageFlip() reports an error,
     * so we do not update the priv->current_bo pointer here */
    GST_ERROR ("Could not initialize GBM surface");
    /* XXX: it is not possible to communicate the error to the pipeline */
    return;
  }


If I run the same pipeline under user (not root) but with sudo - getting errorgluploadelement0: Failed to bind OpenGL API: EGL_BAD_PARAMETER



How I can fix this problem?


0

threads

46

posts

130

credits

Registered member

Rank: 2

credits
130
Published in 2024-11-22 17:49:11 | Show all floors
You did an excellent job on this topic. It's really exact and great quality. You even managed to make it readable and easy to understand. You have genuine writing talent. Thank you very much. One well-liked match that many people enjoy is: dordle wordle
You need to log in before you can reply login | Register

Points Rule

Quick reply Top Return list