Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mmal_xsplitter vout display error: Failed to open Xsplitter:opengles2 module #30

Open
ShaoMingya opened this issue Nov 5, 2020 · 9 comments

Comments

@ShaoMingya
Copy link

PI4B,use python-vlc,

#!/usr/bin/env python3
import time, vlc

instance = vlc.Instance("--verbose=0","--no-xlib")
media_list = instance.media_list_new(['/home/pi/Videos/test.mp4', '/home/pi/Videos/Gallium_drops.mp4'])
list_player = instance.media_list_player_new()
list_player.set_media_list(media_list)

list_player.set_playback_mode(vlc.PlaybackMode.loop)
list_player.play()

while True:
    time.sleep(300)

My requirement is to be able to switch between each video seamlessly when using a playlist.
But every time the video is switched, the playback window will be black for about one second.

pi@raspberrypi:~ $ /home/pi/python_codes/py_vlc/vlc_test.py
[91825a98] mmal_codec decoder: VCSM init succeeded: Legacy
[a4a01ca8] mmal_xsplitter vout display error: Failed to open Xsplitter:opengles2 module
[91808358] mmal_codec decoder: VCSM init succeeded: Legacy
[91808358] main decoder error: buffer deadlock prevented
[a4a05ae8] mmal_xsplitter vout display error: Failed to open Xsplitter:opengles2 module
[91808ae0] mmal_codec decoder: VCSM init succeeded: Legacy
[91808ae0] main decoder error: buffer deadlock prevented
[a4a43840] mmal_xsplitter vout display error: Failed to open Xsplitter:opengles2 module

@masseelch
Copy link

masseelch commented May 31, 2021

I have the exact same problem but with libvlc-go, which are libVLCs bindings for go.

[5271ea98] mmal_codec decoder: VCSM init succeeded: Legacy
[64001580] gles2 generic error: parent window not available
[64000de8] mmal_xsplitter vout display error: Failed to open Xsplitter:opengles2 module
[64001580] xcb generic error: window not available
[64000de8] mmal_xsplitter vout display error: Failed to open Xsplitter:xcb_x11 module
[5273cfd8] mmal_codec decoder: VCSM init succeeded: Legacy
[5273cfd8] main decoder error: buffer deadlock prevented
[5273ab18] gles2 generic error: parent window not available
[5273a8f0] mmal_xsplitter vout display error: Failed to open Xsplitter:opengles2 module
[5273ab18] xcb generic error: window not available
[5273a8f0] mmal_xsplitter vout display error: Failed to open Xsplitter:xcb_x11 module

@KenT2
Copy link

KenT2 commented May 31, 2021

You may need to add --vout mmal_vout to the instance options

@masseelch
Copy link

You may need to add --vout mmal_vout to the instance options

Dang! You are a hero. Now some of the videos do work without a gap. For some of them I still get the main decoder error: buffer deadlock prevented error though.

@KenT2
Copy link

KenT2 commented Jun 1, 2021

I get that error as well. I just ignore it.

@masseelch
Copy link

That error does occur when the black gap happens, that was descibed by @ShaoMingya.

@AVollane
Copy link

Hello. How about it now? Did you find something? I have the same problem with LibVLCSharp.

@jc-kynesim
Copy link

"Buffer deadlock prevented" isn't a real error in the sense that something has gone wrong. What it means is that the mmal h/w decode can buffer more frames than vlc is expecting before outputting anything. It would be very nice to reduce the size of that Q but the firmware makes it very difficult (impossible)

@masseelch
Copy link

"Buffer deadlock prevented" isn't a real error in the sense that something has gone wrong. What it means is that the mmal h/w decode can buffer more frames than vlc is expecting before outputting anything. It would be very nice to reduce the size of that Q but the firmware makes it very difficult (impossible)

Is this the reason the black gap happens? Because the buffer is not yet fully filled and detection/flush takes a while?

@jc-kynesim
Copy link

VLC doesn't, in general, do anything about starting up the next stream until the previous one has finished and tends to tear down everything (including the video out) in between. On a PC the stop/restart can be fast enough that you don't see it, on a pi it is more visible. The large input buffering doesn't help as VLC spends more of its time stuffing the input than dealing with anything else.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants