Bypassing a lock a library uses to ensure thread safe modification to a linked list is obviously going to be unsafe.
Posts by popcornmix
-
-
Edit: Btw, are callbacks blocks the whole component, or separated by ports on it?
If any callback blocks, you will block all mmal communication with the gpu - so all ports will be blocked.
-
I'm afraid MMAL is a bit of a black box to me - I've not worked on the internals.
I've just used it a client, and like you, have had a number of hard to debug issues.
One thing you need to be careful of is the MMAL callbacks are run from the normal MMAL processing thread.
If you block in the callback you will stop any further progress.
So callbacks should never block. If you need to do blocking work, then you need a separate task and just signal it from the callback.
I'm a little concerned that ProcessOutputCallback may do that.
Attaching gdb after things have locked up and looking at the threads that are blocked may be illuminating.
-
As I've said, it's not based on your implementation of LE9. I didn't use any OMX components to render. I also didn't use port connections between decoder and renderer. But video_render component crashes on some occasions even if input port buffer release callback happens. I tried to flush renderer queue on input format change. I think the problem happens because there is always a single buffer left in the renderer, and I can't tell if it's used by firmware or not before disabling/flushing the port.
Is there any reliable way to determine the buffer is no longer needed by the renderer component?Just to clarify LE9 has two independent HW acceleration methods, MMAL and openmax.
The (default) MMAL decoder uses the MMAL renderer and doesn't use openmax in any way.
MMAL works with buffers that you submit (mmal_port_send_buffer) and receive (through callback function given to mmal_port_enable).
The rule is once you've submitted a buffer it is owned by the firmware until it is returned in the callback.
-
I could create pull requests for all, if it's appropriate.
No need. A fork is fine for a custom release like this. A tag (of each tree) for any released binary would be useful for associating source code with binary.
Since I've caught your attention, do you have any recommendations for "mmal_port_disable" and "mmal_port_flush" infinite lock-ups?
I'm afraid these sort of issues are hard to debug.
The mmal buffers that are submitted and retrieved from mmal calls include linked list pointers.
If you ever do anything wrong with one of these, like submitting it twice, freeing it when it's still in use etc, you'll likely get a subsequent crash or hang.
Do you get the same behaviour on a genuine LE9 image? If not, then what are the differences?
-
If the video files are HDR and the projector doesn't support HDR, then the colours will be wrong.
This has never worked on a Pi.
-
This is an unofficial test build of LibreELEC 11.0.1 with RPi3 HW acceleration support.
Interesting.
You should include a link to the source you have built from (both to give users an idea of what they are running, and to comply with the GPL2 licence).
-
Do you mean "adjust display refresh rate to match video"?
Or "sync playback to display"?
The former is generally recommended. The latter isn't.
-
Just tested a IFO file on LE11, no problem.
Can you try copying your DVD folder to sdcard or usb stick?
I suspect that will play, and your issue is nfs releated.
-
The log from LE11 with debug enabled would also be useful.
-
thanks for great release, only thing I miss now is non-crazy white subtitles for hdr on rpi4, any progress on that?
Have you trid:
Settings/Player/Subtitles - Official Kodi Wiki
It doesn't work for all forms of subtitles (e.g. not for bitmapped) but it may help.
-
Enabling debug in kodi, restarting kodi and then using pastekodi will get more information.
This looks significant.
CodeFeb 16 19:10:57.723112 LibreELEC kernel: EDID block 0 is all zeroes Feb 16 19:10:57.723179 LibreELEC kernel: [00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Feb 16 19:10:57.723245 LibreELEC kernel: [00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Feb 16 19:10:57.723308 LibreELEC kernel: [00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Feb 16 19:10:57.723370 LibreELEC kernel: [00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Feb 16 19:10:57.723432 LibreELEC kernel: [00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Feb 16 19:10:57.723494 LibreELEC kernel: [00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Feb 16 19:10:57.723558 LibreELEC kernel: [00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Feb 16 19:10:57.723624 LibreELEC kernel: [00] ZERO 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Feb 16 19:10:57.723684 LibreELEC kernel: EDID block 0 is all zeroes
Your edid should describe the modes supported by the display. Obviously a block of zeros isn't helpful.
Capturing the same pastekodi log on LE10.0.4 and comparing may be informative.
-
Use the "pastekodi" script to generate logs and post the link.
-
It's crashing in inputstream.adaptive so may be best to report here.
Include the crash log.
A debug enabled LibreELEC build may provide more details on the crash.
-
This is the github issue, which includes a test build that should fix it:
[BUG] No audio option for Hifiberry AMP 3 selectable · Issue #7557 · LibreELEC/LibreELEC.tvDescribe the bug I have followed the instructions to add the Hifiberry AMP 3 overlay to get the audio output option in the list to be selected, but I don't…github.com -
My first guess would be a hdmi cable that can't handle the pixel frequency of the hdmi mode.
What hdmi is mode is running? (e.g. 4kp60 or 4kp30). A debug enabled log file would answer some of these questions.
As test, can you force kodi to 1080p60 (set that is system/display settings and disable adjust refresh rate in video settings).
Does the video now play with correct colours?
-
-
Could be this issue which is fixed on Nexus builds.