GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2023-03-08T17:02:29Zhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2348AC3 audio does not play2023-03-08T17:02:29ZAndrew HawkinsAC3 audio does not play### Describe your issue
<!-- a clear and concise summary of the bug. -->
<!-- For any GStreamer usage question, please contact the community using the #gstreamer channel on IRC https://www.oftc.net/ or the mailing list on https://gstream...### Describe your issue
<!-- a clear and concise summary of the bug. -->
<!-- For any GStreamer usage question, please contact the community using the #gstreamer channel on IRC https://www.oftc.net/ or the mailing list on https://gstreamer.freedesktop.org/lists/ -->
#### Expected Behavior
<!-- What did you expect to happen -->
#### Observed Behavior
<!-- What actually happened -->
#### Setup
- **Operating System:** - Ubuntu
- **Device:** Virtual Machine
- **GStreamer Version:** - 1.22.0
- **Command line:** - gst-launch-1.0 playbin uri=file:///home/andy/media/bbc_hd-burt_bacharach.m2t
### Steps to reproduce the bug
<!-- please fill in exact steps which reproduce the bug on your system, for example: -->
1. open terminal
2. type `gst-launch-1.0 playbin uri=file:///home/andy/media/bbc_hd-burt_bacharach.m2t`
### How reproducible is the bug?
100%
### Screenshots if relevant
### Solutions you have tried
### Related non-duplicate issues
### Additional Information
First 500k of file, and debug log from gst-discover-1.0 attached.
[gst-discover.log](/uploads/6bd901cf5d025770559312dfe1b96675/gst-discover.log)
[bbc_hd-burt_bacharach-start.m2t](/uploads/2fff8635f7390dd83303b4bec82d727a/bbc_hd-burt_bacharach-start.m2t)
Full media file is available here: https://uniguestinc-my.sharepoint.com/:u:/g/personal/andy_hawkins_uniguest_com/EfgV4AbcJfNDs4FbheCRNMIBN429RViw91g6gxdSZPa2tA?e=UMQUIVhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3116qmlglsink: QT integration in python not working due to mismatch for PyQT2023-11-09T17:42:36ZOlivier Algoetqmlglsink: QT integration in python not working due to mismatch for PyQTHello,
I am trying to use PyQT5 with qmlglsink: Qt: v 5.9.5 PyQt: v 5.10.1
Error given: TypeError: could not convert '\<PyQt5.QtQuick.QQuickItem object at 0x7f746b0dc8\>' to type 'gpointer' when setting property 'GstQtSink.widget'
Exa...Hello,
I am trying to use PyQT5 with qmlglsink: Qt: v 5.9.5 PyQt: v 5.10.1
Error given: TypeError: could not convert '\<PyQt5.QtQuick.QQuickItem object at 0x7f746b0dc8\>' to type 'gpointer' when setting property 'GstQtSink.widget'
Example code:
```python
import sys
from PyQt5.QtGui import QGuiApplication
from PyQt5.QtQml import QQmlApplicationEngine
import PyQt5.QtQuick as QtQuick
import gi
gi.require_version("Gst", "1.0")
gi.require_version("GstVideo", "1.0")
from gi.repository import GObject, Gst, GstVideo
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.quit.connect(app.quit)
GObject.threads_init()
Gst.init(None)
class GstDisplay:
def __init__(self):
pipeline = "videotestsrc ! glupload ! qmlglsink name=sink"
self.pipeline = Gst.parse_launch(pipeline) # xvimagesink, ximagesink
self.setup_pipeline()
self.sink = self.pipeline.get_by_name("sink")
def setup_pipeline(self):
self.state = Gst.State.NULL
bus = self.pipeline.get_bus()
bus.add_signal_watch()
bus.enable_sync_message_emission()
def start_pipeline(self):
self.pipeline.set_state(Gst.State.PLAYING)
gstpipe=GstDisplay()
gstpipe.start_pipeline()
engine.load('main.qml')
root=engine.rootObjects()[0]
videoItem=engine.rootObjects()[0].findChild(QtQuick.QQuickItem,name="videoItem")
gstpipe.sink.set_property("widget", videoItem)```
main.qml:
import QtQuick 2.0
import QtQuick.Controls 2.0
import QtMultimedia 5.0
import org.freedesktop.gstreamer.GLVideoItem 1.0
ApplicationWindow {
visible: true
width: 1920
height: 1080
title: "HelloApp"
GstGLVideoItem {
id: video
objectName: "videoItem"
anchors.centerIn: parent
width: parent.width
height: parent.height
}
}
```https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2353jpegdec: multithreaded implementation with libjpeg-turbo2023-03-09T19:59:34Znicolasb565jpegdec: multithreaded implementation with libjpeg-turboI have been wondering for a while if there is a way to make jpegdec use multiple threads for processing?
This is to improve performance. What I read is that it should be possible with libjpeg-turbo, but I did not manage to find any examp...I have been wondering for a while if there is a way to make jpegdec use multiple threads for processing?
This is to improve performance. What I read is that it should be possible with libjpeg-turbo, but I did not manage to find any examples.
Is there any interest in doing this?
Thanks!https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2355decodebin3: decoder is READY while the rest of the pipeline is PAUSED2023-08-03T13:02:40ZGuillaume Desmottesdecodebin3: decoder is READY while the rest of the pipeline is PAUSED![image](/uploads/46f505676088269d6519e6bf8dddc800/image.png)
See the pipeline above snapshoted in `uridecodebin3::pad_added_cb()`.
As you can see at this point `avdec_h264` is the only element still in the `READY` state while all the ...![image](/uploads/46f505676088269d6519e6bf8dddc800/image.png)
See the pipeline above snapshoted in `uridecodebin3::pad_added_cb()`.
As you can see at this point `avdec_h264` is the only element still in the `READY` state while all the other elements, including `decodebin3`, are `PAUSED`.
I'm not sure if this is a bug or not but its quite confusing and prevent sending seek events to `decodebin3`'s source pad.
I don't have this problem with `uridecodebin`.
This can be easily reproduced using https://gitlab.freedesktop.org/gdesmott/gstreamer-rs/-/commit/9acdb8be11a0e6b1ebdf74964a7c2b9c4f8c3f8f
cc @bilboedEdward HerveyEdward Herveyhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2356OpenGL leak2023-03-10T16:50:27ZCélestin Marotmarotcelestin@gmail.comOpenGL leakWhenever an OpenGL context is created, there is a leak of the GstGLWindowWin32 and the GstGLDisplay objects.
### setup info
I am testing on Windows with [GStreamer 1.21.1 (9820e58b)](https://gitlab.freedesktop.org/gstreamer/gstreamer/-...Whenever an OpenGL context is created, there is a leak of the GstGLWindowWin32 and the GstGLDisplay objects.
### setup info
I am testing on Windows with [GStreamer 1.21.1 (9820e58b)](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/tags/1.21.1), but the leak is probably still there in later releases.
### to reproduce the leak
``` powershell
$ $env:GST_DEBUG="3,GST_TRACER:7"
$ $env:GST_TRACERS="leaks(check-refs=true)"
$ gst-launch-1.0.exe gltestsrc num-buffers=1 ! fakesink
0:00:00.055860000 5324 000001F1117DEE70 DEBUG GST_TRACER gsttracer.c:160:gst_tracer_register:<registry0> update existing feature 000001F10F457180 (latency)
0:00:00.061080000 5324 000001F1117DEE70 DEBUG GST_TRACER gsttracer.c:160:gst_tracer_register:<registry0> update existing feature 000001F10F457240 (log)
0:00:00.066136000 5324 000001F1117DEE70 DEBUG GST_TRACER gsttracer.c:160:gst_tracer_register:<registry0> update existing feature 000001F10F457300 (stats)
0:00:00.071278000 5324 000001F1117DEE70 DEBUG GST_TRACER gsttracer.c:160:gst_tracer_register:<registry0> update existing feature 000001F10F4573C0 (leaks)
0:00:00.076390000 5324 000001F1117DEE70 DEBUG GST_TRACER gsttracer.c:160:gst_tracer_register:<registry0> update existing feature 000001F10F457480 (factories)
0:00:00.081537000 5324 000001F1117DEE70 TRACE GST_TRACER gsttracerrecord.c:109:gst_tracer_record_build_format: object-alive.class, type-name=(structure)"value\,\ type\=\(type\)gchararray\;", address=(structure)"value\,\ type\=\(type\)gpointer\;", description=(structure)"value\,\ type\=\(type\)gchararray\;", ref-count=(structure)"value\,\ type\=\(type\)guint\;", trace=(structure)"value\,\ type\=\(type\)gchararray\;";
0:00:00.093394000 5324 000001F1117DEE70 DEBUG GST_TRACER gsttracerrecord.c:123:gst_tracer_record_build_format: new format string: object-alive, type-name=(string)%s, address=(gpointer)%p, description=(string)%s, ref-count=(uint)%u, trace=(string)%s;
0:00:00.100848000 5324 000001F1117DEE70 TRACE GST_TRACER gsttracerrecord.c:109:gst_tracer_record_build_format: object-refings.class, ts=(structure)"value\,\ type\=\(type\)guint64\;", type-name=(structure)"value\,\ type\=\(type\)gchararray\;", address=(structure)"value\,\ type\=\(type\)gpointer\;", description=(structure)"value\,\ type\=\(type\)gchararray\;", ref-count=(structure)"value\,\ type\=\(type\)guint\;", trace=(structure)"value\,\ type\=\(type\)gchararray\;";
0:00:00.113948000 5324 000001F1117DEE70 DEBUG GST_TRACER gsttracerrecord.c:123:gst_tracer_record_build_format: new format string: object-refings, ts=(guint64)%llu, type-name=(string)%s, address=(gpointer)%p, description=(string)%s, ref-count=(uint)%u, trace=(string)%s;
0:00:00.121754000 5324 000001F1117DEE70 TRACE GST_TRACER gsttracerrecord.c:109:gst_tracer_record_build_format: object-added.class, type-name=(structure)"value\,\ type\=\(type\)gchararray\;", address=(structure)"value\,\ type\=\(type\)gpointer\;";
0:00:00.129058000 5324 000001F1117DEE70 DEBUG GST_TRACER gsttracerrecord.c:123:gst_tracer_record_build_format: new format string: object-added, type-name=(string)%s, address=(gpointer)%p;
0:00:00.134778000 5324 000001F1117DEE70 TRACE GST_TRACER gsttracerrecord.c:109:gst_tracer_record_build_format: object-removed.class, type-name=(structure)"value\,\ type\=\(type\)gchararray\;", address=(structure)"value\,\ type\=\(type\)gpointer\;";
0:00:00.142110000 5324 000001F1117DEE70 DEBUG GST_TRACER gsttracerrecord.c:123:gst_tracer_record_build_format: new format string: object-removed, type-name=(string)%s, address=(gpointer)%p;
Use Windows high-resolution clock, precision: 1 ms
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
0:00:00.153989000 5324 000001F11184C200 FIXME default gstutils.c:4026:gst_pad_create_stream_id_internal:<gltestsrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
Got context from element 'gltestsrc0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplay\)\ gldisplay0";
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 0:00:00.002806000
Setting pipeline to NULL ...
Freeing pipeline ...
0:00:00.359909000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)<glwindowwin32-0>, ref-count=(uint)1, trace=(string);
0:00:00.366696000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)162230000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)reffed, ref-count=(uint)2, trace=(string);
0:00:00.373580000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)162231000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)unreffed, ref-count=(uint)1, trace=(string);
0:00:00.380572000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)162406000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)reffed, ref-count=(uint)2, trace=(string);
0:00:00.387447000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)168611000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)unreffed, ref-count=(uint)1, trace=(string);
0:00:00.394521000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)262608000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)reffed, ref-count=(uint)2, trace=(string);
0:00:00.401452000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)291904000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)unreffed, ref-count=(uint)1, trace=(string);
0:00:00.408507000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)291910000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)reffed, ref-count=(uint)2, trace=(string);
0:00:00.415635000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)292277000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)unreffed, ref-count=(uint)1, trace=(string);
0:00:00.422862000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)292289000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)reffed, ref-count=(uint)2, trace=(string);
0:00:00.429935000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)294021000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)reffed, ref-count=(uint)3, trace=(string);
0:00:00.436998000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)294599000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)unreffed, ref-count=(uint)2, trace=(string);
0:00:00.444227000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)294749000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)reffed, ref-count=(uint)3, trace=(string);
0:00:00.451148000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)294903000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)unreffed, ref-count=(uint)2, trace=(string);
0:00:00.458411000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)294935000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)reffed, ref-count=(uint)3, trace=(string);
0:00:00.465335000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)294962000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)unreffed, ref-count=(uint)2, trace=(string);
0:00:00.472422000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)294965000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)reffed, ref-count=(uint)3, trace=(string);
0:00:00.479092000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)328267000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)unreffed, ref-count=(uint)2, trace=(string);
0:00:00.485985000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)328275000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)reffed, ref-count=(uint)3, trace=(string);
0:00:00.492760000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)328311000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)unreffed, ref-count=(uint)2, trace=(string);
0:00:00.499626000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)335228000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)reffed, ref-count=(uint)3, trace=(string);
0:00:00.506671000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)335351000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)unreffed, ref-count=(uint)2, trace=(string);
0:00:00.513698000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)335359000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)reffed, ref-count=(uint)3, trace=(string);
0:00:00.521027000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)335407000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)unreffed, ref-count=(uint)2, trace=(string);
0:00:00.528395000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)335428000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)reffed, ref-count=(uint)3, trace=(string);
0:00:00.535607000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)335442000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)unreffed, ref-count=(uint)2, trace=(string);
0:00:00.542838000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)335445000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)reffed, ref-count=(uint)3, trace=(string);
0:00:00.550074000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)335563000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)unreffed, ref-count=(uint)2, trace=(string);
0:00:00.557349000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)355082000, type-name=(string)GstGLWindowWin32, address=(gpointer)000001F1118AE040, description=(string)unreffed, ref-count=(uint)1, trace=(string);
0:00:00.564425000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLDisplay, address=(gpointer)000001F10F4CFD40, description=(string)<gldisplay0>, ref-count=(uint)1, trace=(string);
0:00:00.570825000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)162127000, type-name=(string)GstGLDisplay, address=(gpointer)000001F10F4CFD40, description=(string)reffed, ref-count=(uint)3, trace=(string);
0:00:00.577782000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)162128000, type-name=(string)GstGLDisplay, address=(gpointer)000001F10F4CFD40, description=(string)unreffed, ref-count=(uint)3, trace=(string);
0:00:00.584892000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)162132000, type-name=(string)GstGLDisplay, address=(gpointer)000001F10F4CFD40, description=(string)reffed, ref-count=(uint)4, trace=(string);
0:00:00.592164000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)162132000, type-name=(string)GstGLDisplay, address=(gpointer)000001F10F4CFD40, description=(string)unreffed, ref-count=(uint)3, trace=(string);
0:00:00.599371000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)162132000, type-name=(string)GstGLDisplay, address=(gpointer)000001F10F4CFD40, description=(string)unreffed, ref-count=(uint)2, trace=(string);
0:00:00.606598000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)162187000, type-name=(string)GstGLDisplay, address=(gpointer)000001F10F4CFD40, description=(string)reffed, ref-count=(uint)3, trace=(string);
0:00:00.613828000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)162230000, type-name=(string)GstGLDisplay, address=(gpointer)000001F10F4CFD40, description=(string)reffed, ref-count=(uint)4, trace=(string);
0:00:00.620995000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)294014000, type-name=(string)GstGLDisplay, address=(gpointer)000001F10F4CFD40, description=(string)reffed, ref-count=(uint)5, trace=(string);
0:00:00.628164000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)294017000, type-name=(string)GstGLDisplay, address=(gpointer)000001F10F4CFD40, description=(string)unreffed, ref-count=(uint)4, trace=(string);
0:00:00.635438000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)355087000, type-name=(string)GstGLDisplay, address=(gpointer)000001F10F4CFD40, description=(string)unreffed, ref-count=(uint)3, trace=(string);
0:00:00.642642000 5324 000001F1117DEE70 TRACE GST_TRACER :0:: object-refings, ts=(guint64)355350000, type-name=(string)GstGLDisplay, address=(gpointer)000001F10F4CFD40, description=(string)unreffed, ref-count=(uint)2, trace=(string);
** (gst-launch-1.0:5324): WARNING **: 17:30:40.184: Leaks detected and logged under GST_DEBUG=GST_TRACER:7
```
I have the same issue whenever an OpenGL context is created. For example:
```
gst-launch-1.0.exe videotestsrc num-buffers=1 ! glupload ! glimagesinkelement
```
also leaks.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2372vulkan: no plugins on macOS2023-03-13T16:43:28ZRoman Shpuntovvulkan: no plugins on macOSI use gstreamer 1.22.1 on macOS Ventura. I have no Vulkan plugins:
```
bash-3.2$ ./gst-inspect-1.0 | grep vulkan
bash-3.2$
```
Also I have no `libgstvulkan.dylib`:
```
bash-3.2$ ls -l | grep vulkan
-rw-r--r-- 1 root wheel 1476928 ...I use gstreamer 1.22.1 on macOS Ventura. I have no Vulkan plugins:
```
bash-3.2$ ./gst-inspect-1.0 | grep vulkan
bash-3.2$
```
Also I have no `libgstvulkan.dylib`:
```
bash-3.2$ ls -l | grep vulkan
-rw-r--r-- 1 root wheel 1476928 Mar 6 15:18 libgstvulkan.a
-rw-r--r-- 1 root wheel 2214 Mar 6 15:18 libgstvulkan.la
bash-3.2$ pwd
/Library/Frameworks/GStreamer.framework/Versions/1.0/lib/gstreamer-1.0
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1761Caught segmentation fault while loading plugin file:.2023-07-13T17:08:15ZDivya Sampath KumarCaught segmentation fault while loading plugin file:.Hello,
I am using Gstreamer version 1.20.3. I encounter this log line in the issue title, but it does not report any library name. It just prints out ".". I also do not see any errors in the Gstreamer logs (it is set to INFO level). Whe...Hello,
I am using Gstreamer version 1.20.3. I encounter this log line in the issue title, but it does not report any library name. It just prints out ".". I also do not see any errors in the Gstreamer logs (it is set to INFO level). Where does the library loading actually happen? I thought it is when element_factory_make() and gst_init_check() is invoked but I am not so sure. Can somebody help me understand the different APIs of Gstreamer where library loading actually happens?
To include more details, I have a code where gstreamer is written in C++ and is being run on Java threads via JNI. Since multiple threads can invoke gst_element_make at the same time, I added locks around the calls to make sure no 2 threads try to load at the same time.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2373Make default audiosink/videosink configurable at build time2023-03-14T09:39:21ZMing LiuMake default audiosink/videosink configurable at build timeI noticed currently the audiosink/videosink are not configurable in gst-plugins-base project:
In meson.build:
```
# FIXME: These should be configure options
core_conf.set_quoted('DEFAULT_VIDEOSINK', 'autovideosink')
core_conf.set_quote...I noticed currently the audiosink/videosink are not configurable in gst-plugins-base project:
In meson.build:
```
# FIXME: These should be configure options
core_conf.set_quoted('DEFAULT_VIDEOSINK', 'autovideosink')
core_conf.set_quoted('DEFAULT_AUDIOSINK', 'autoaudiosink')
```
while we should make the configurable, so the developers can choose a audosink/videosink at build time.https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/328utils/livesync: intermittent test failure2024-03-21T11:32:02ZFrançois Laignelutils/livesync: intermittent test failureSee https://gitlab.freedesktop.org/fengalin/gst-plugins-rs/-/jobs/38067122See https://gitlab.freedesktop.org/fengalin/gst-plugins-rs/-/jobs/38067122https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2381glimagesink: crash on iOS device2023-11-13T15:49:27ZRoman Shpuntovglimagesink: crash on iOS deviceThis issue 100% reproducible with GstPlay example project from `subprojects/gst-examples/playback/player/ios/GstPlay`. I use gstreamer 1.22.1 and iPhone with iOS 15.5 (I think it does not matter the version of iOS).
Steps to reproduce:
1...This issue 100% reproducible with GstPlay example project from `subprojects/gst-examples/playback/player/ios/GstPlay`. I use gstreamer 1.22.1 and iPhone with iOS 15.5 (I think it does not matter the version of iOS).
Steps to reproduce:
1. Create `stop` button and place it on VideoViewController in Xcode UI
2. Connect `stop` button to the function stop on `VideoViewController.m` file
3. Implement `stop` function:
```
- (IBAction)stop:(id)sender {
gst_player_stop(player);
is_playing_desired = NO;
[UIApplication sharedApplication].idleTimerDisabled = NO;
}
```
4. Run for debug app `GstPlay`
5. Select video from list (I used `http://techslides.com/demos/sample-videos/small.mp4`, this file added to `OnlineMedia.plist`)
6. Press `play` button
7. After video playback is started (wait ~2 seconds) then press `stop` button
8. Press `Back` (`< Library` on iOS) button
9. Crash
backtrace:
```
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xf84fc13d0340)
frame #0: 0x00000001a9eb2f40 libobjc.A.dylib`objc_msgSend + 32
frame #1: 0x000000019376aea4 UIKitCore`_makeSubTreePerformSelector + 388
frame #2: 0x000000019376af04 UIKitCore`_makeSubTreePerformSelector + 484
frame #3: 0x000000019376af04 UIKitCore`_makeSubTreePerformSelector + 484
frame #4: 0x0000000193737504 UIKitCore`-[UIView(Internal) _addSubview:positioned:relativeTo:] + 932
frame #5: 0x0000000193894330 UIKitCore`-[_UIParallaxDimmingView didMoveToWindow] + 180
frame #6: 0x0000000193865288 UIKitCore`-[UIView(Internal) _didMoveFromWindow:toWindow:] + 2240
frame #7: 0x0000000193864d6c UIKitCore`-[UIView(Internal) _didMoveFromWindow:toWindow:] + 932
frame #8: 0x000000019378b664 UIKitCore`__45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 140
frame #9: 0x000000019381ad5c UIKitCore`-[UIView(Hierarchy) _postMovedFromSuperview:] + 812
frame #10: 0x00000001937379c8 UIKitCore`-[UIView(Internal) _addSubview:positioned:relativeTo:] + 2152
frame #11: 0x000000019392821c UIKitCore`__53-[_UINavigationParallaxTransition animateTransition:]_block_invoke_2 + 1552
frame #12: 0x00000001937207e0 UIKitCore`+[UIView(Animation) performWithoutAnimation:] + 104
frame #13: 0x00000001938616e0 UIKitCore`__53-[_UINavigationParallaxTransition animateTransition:]_block_invoke + 248
frame #14: 0x00000001939338d4 UIKitCore`+[UIView _performBlockDelayingTriggeringResponderEvents:forScene:] + 252
frame #15: 0x000000019393c6a8 UIKitCore`-[_UINavigationParallaxTransition animateTransition:] + 1096
frame #16: 0x0000000193a637a4 UIKitCore`___UIViewControllerTransitioningRunCustomTransition_block_invoke_2 + 76
frame #17: 0x000000019388ff38 UIKitCore`+[UIKeyboardSceneDelegate _pinInputViewsForKeyboardSceneDelegate:onBehalfOfResponder:duringBlock:] + 116
frame #18: 0x0000000193f5da94 UIKitCore`___UIViewControllerTransitioningRunCustomTransition_block_invoke.663 + 204
frame #19: 0x0000000193992e7c UIKitCore`+[UIView(Animation) _setAlongsideAnimations:toRunByEndOfBlock:] + 204
frame #20: 0x0000000193829178 UIKitCore`_UIViewControllerTransitioningRunCustomTransition + 628
frame #21: 0x00000001939259a8 UIKitCore`-[UINavigationController _startCustomTransition:] + 3580
frame #22: 0x0000000193a8313c UIKitCore`-[UINavigationController _startDeferredTransitionIfNeeded:] + 696
frame #23: 0x00000001939588e4 UIKitCore`-[UINavigationController __viewWillLayoutSubviews] + 168
frame #24: 0x00000001938802dc UIKitCore`-[UILayoutContainerView layoutSubviews] + 228
frame #25: 0x0000000193739fb4 UIKitCore`-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 2592
frame #26: 0x0000000194eb0cd0 QuartzCore`CA::Layer::layout_if_needed(CA::Transaction*) + 532
frame #27: 0x0000000194ea3134 QuartzCore`CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 136
frame #28: 0x0000000194eb7a7c QuartzCore`CA::Context::commit_transaction(CA::Transaction*, double, double*) + 452
frame #29: 0x0000000194ec0970 QuartzCore`CA::Transaction::commit() + 704
frame #30: 0x0000000194ea288c QuartzCore`CA::Transaction::flush_as_runloop_observer(bool) + 88
frame #31: 0x00000001911750c4 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 36
frame #32: 0x0000000191144080 CoreFoundation`__CFRunLoopDoObservers + 592
frame #33: 0x000000019113f13c CoreFoundation`__CFRunLoopRun + 1052
frame #34: 0x0000000191152bc8 CoreFoundation`CFRunLoopRunSpecific + 600
frame #35: 0x00000001ad286374 GraphicsServices`GSEventRunModal + 164
frame #36: 0x0000000193ac2648 UIKitCore`-[UIApplication _run] + 1100
frame #37: 0x0000000193843d90 UIKitCore`UIApplicationMain + 364
* frame #38: 0x0000000102ebc268 GstPlay`main(argc=1, argv=0x000000016cf4b798) at main.m:10:16
frame #39: 0x0000000107ad1ce4 dyld`start + 520
```
I have the same issue on complex pipeline. I think the problem in `glimagesink`, because no crash if I set `player = gst_player_new (gst_player_video_overlay_video_renderer_new (NULL), NULL);` (In my pipeline `gst_video_overlay_set_window_handle` function). I believe somebody forgot to clean surface after usage or uses surface is not in main thread. No issue if I use `pause` button instead of `stop`.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2382avdec_h264 performance regression in 1.22.1 against 1.18.4 (Debian Bullseye)2024-02-27T07:27:59ZVincas Dargisavdec_h264 performance regression in 1.22.1 against 1.18.4 (Debian Bullseye)Problem is discovered this slower Celeron machine (i3, i7 works fine), running Debian 11 Bullseye (amd54):
```
$ lscpu | fgrep "Model name"
Model name: Intel(R) Celeron(R) CPU J1900 @ 1.99GHz
```
Default `gstreame...Problem is discovered this slower Celeron machine (i3, i7 works fine), running Debian 11 Bullseye (amd54):
```
$ lscpu | fgrep "Model name"
Model name: Intel(R) Celeron(R) CPU J1900 @ 1.99GHz
```
Default `gstreamer` on this system is:
```
$ gst-launch-1.0 --version
gst-launch-1.0 version 1.18.4
GStreamer 1.18.4
http://packages.qa.debian.org/gstreamer1.0
```
ffmpeg:
```
$ apt-cache policy libavcodec58 | fgrep Installed
Installed: 7:4.3.5-0+deb11u1
```
If I run this pipeline (originally I use rtsp source, but it does not matter) using default Debian GStreamer 1.18.4, have no issues, just rarely some frames being dropped:
```
$ GST_DEBUG=3 gst-launch-1.0 filesrc location=bbb_sunflower_1080p_30fps_normal.mp4 ! qtdemux ! h264parse ! avdec_h264 ! glupload ! glimagesink
Setting pipeline to PAUSED ...
Xlib: sequence lost (0x1002e > 0x30) in reply type 0x0!
0:00:00.488589900 191886 0x558025e43190 WARN basesrc gstbasesrc.c:3688:gst_base_src_start_complete:<filesrc0> pad not activated yet
Pipeline is PREROLLING ...
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";
0:00:00.489848160 191886 0x7fe4a80020c0 WARN qtdemux qtdemux_types.c:244:qtdemux_type_get: unknown QuickTime node type iods
0:00:00.489983484 191886 0x7fe4a80020c0 WARN qtdemux qtdemux_types.c:244:qtdemux_type_get: unknown QuickTime node type ac-3
0:00:00.490041756 191886 0x7fe4a80020c0 WARN qtdemux qtdemux_types.c:244:qtdemux_type_get: unknown QuickTime node type .com
0:00:00.490234920 191886 0x7fe4a80020c0 WARN qtdemux qtdemux.c:3066:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 1
0:00:00.490847856 191886 0x7fe4a80020c0 WARN qtdemux qtdemux.c:3066:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 2
0:00:00.491037924 191886 0x7fe4a80020c0 WARN qtdemux qtdemux.c:3066:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 3
Redistribute latency...
Redistribute latency...
Pipeline is PREROLLED ...0 %)
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.865790496 191886 0x7fe4a80020c0 WARN videodecoder gstvideodecoder.c:3298:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:00.200000000 deadline:0:00:00.200000000 earliest_time:0:00:00.200824835
0:00:16.918082568 191886 0x7fe4a80020c0 WARN videodecoder gstvideodecoder.c:3298:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:16.266666666 deadline:0:00:16.266666666 earliest_time:0:00:16.278571344
```
CPU usage is about 100%/400%
![image](/uploads/7f9cbac4c9a8dfb15f9be4ad4d490576/image.png)
`sudo perf top -F 10000 -p $(pgrep gst-launch-1.0) -K -g` output:
![image](/uploads/c836743045497f0b9d6f6452d9de669f/image.png)
-----
-----
-----
Now, if I use my own built (using Conan package manager recipes, modified to use 1.22.1 instead of 1.19) GStreamer with ffmpeg 4.3.2 (tried 4.4, 5.0 with same results, as [Conan packages exist for them](https://conan.io/center/ffmpeg)):
```
$ ./gst-inspect-1.0 --version
gst-inspect-1.0 version 1.22.1
GStreamer 1.22.1
Unknown package origin
```
Using same pipeline I get most of frames being dropped (unusable), and increased CPU usage around to 230%:
```
$ GST_DEBUG=3 ./gst-launch-1.0 filesrc location=bbb_sunflower_1080p_30fps_normal.mp4 ! qtdemux ! h264parse ! avdec_h264 ! glupload ! glimagesink
Setting pipeline to PAUSED ...
Xlib: sequence lost (0x1002e > 0x30) in reply type 0x0!
0:00:00.181625340 200336 0x56521bf45800 WARN basesrc gstbasesrc.c:3693:gst_base_src_start_complete:<filesrc0> pad not activated yet
Pipeline is PREROLLING ...
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";
0:00:00.182743128 200336 0x7f4d9c002300 WARN qtdemux qtdemux_types.c:264:qtdemux_type_get: unknown QuickTime node type iods
0:00:00.182836500 200336 0x7f4d9c002300 WARN qtdemux qtdemux_types.c:264:qtdemux_type_get: unknown QuickTime node type ac-3
0:00:00.182899272 200336 0x7f4d9c002300 WARN qtdemux qtdemux_types.c:264:qtdemux_type_get: unknown QuickTime node type .com
0:00:00.183071688 200336 0x7f4d9c002300 WARN qtdemux qtdemux.c:3240:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 1
0:00:00.183715104 200336 0x7f4d9c002300 WARN qtdemux qtdemux.c:3240:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 2
0:00:00.183897972 200336 0x7f4d9c002300 WARN qtdemux qtdemux.c:3240:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 3
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Pipeline is PREROLLED ...0 %)
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstSystemClock
0:00:00.590498088 200336 0x7f4d9c002300 WARN videodecoder gstvideodecoder.c:3668:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:00.166666666 deadline:0:00:00.166666666 earliest_time:0:00:00.180211760
0:00:00.740400432 200336 0x7f4d9c002300 WARN videodecoder gstvideodecoder.c:3668:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:00.233333333 deadline:0:00:00.233333333 earliest_time:0:00:00.254439445
0:00:01.986741360 200336 0x7f4d9c002300 WARN basesink gstbasesink.c:3143:gst_base_sink_is_too_late:<sink> warning: A lot of buffers are being dropped.
0:00:01.986786180 200336 0x7f4d9c002300 WARN basesink gstbasesink.c:3143:gst_base_sink_is_too_late:<sink> warning: There may be a timestamping problem, or this computer is too slow.
0:00:01.987076028 200336 0x7f4d9c002300 WARN basesink gstbasesink.c:3143:gst_base_sink_is_too_late:<sink> warning: A lot of buffers are being dropped.
WARNING: from element /GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink: A lot of buffers are being dropped.
0:00:01.987103208 200336 0x7f4d9c002300 WARN basesink gstbasesink.c:3143:gst_base_sink_is_too_late:<sink> warning: There may be a timestamping problem, or this computer is too slow.
Additional debug info:
../src/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink:
There may be a timestamping problem, or this computer is too slow.
WARNING: from element /GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink: A lot of buffers are being dropped.
Additional debug info:
../src/libs/gst/base/gstbasesink.c(3143): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink:
There may be a timestamping problem, or this computer is too slow.
0:00:02.060476824 200336 0x7f4d9c002300 WARN videodecoder gstvideodecoder.c:3668:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:01.266666666 deadline:0:00:01.266666666 earliest_time:0:00:01.930497888
0:00:02.086263348 200336 0x7f4d9c002300 WARN videodecoder gstvideodecoder.c:3668:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:01.300000000 deadline:0:00:01.300000000 earliest_time:0:00:01.930497888
0:00:02.167794300 200336 0x7f4d9c002300 WARN videodecoder gstvideodecoder.c:3668:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:01.333333333 deadline:0:00:01.333333333 earliest_time:0:00:01.930497888
0:00:02.185953540 200336 0x7f4d9c002300 WARN videodecoder gstvideodecoder.c:3668:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:01.366666666 deadline:0:00:01.366666666 earliest_time:0:00:01.930497888
0:00:02.203559892 200336 0x7f4d9c002300 WARN videodecoder gstvideodecoder.c:3668:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:01.400000000 deadline:0:00:01.400000000 earliest_time:0:00:01.930497888
0:00:02.297347956 200336 0x7f4d9c002300 WARN videodecoder gstvideodecoder.c:3668:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:01.466666666 deadline:0:00:01.466666666 earliest_time:0:00:01.930497888
0:00:02.318142312 200336 0x7f4d9c002300 WARN videodecoder gstvideodecoder.c:3668:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:01.533333333 deadline:0:00:01.533333333 earliest_time:0:00:01.930497888
0:00:02.429438556 200336 0x7f4d9c002300 WARN videodecoder gstvideodecoder.c:3668:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:01.600000000 deadline:0:00:01.600000000 earliest_time:0:00:01.930497888
0:00:02.521305528 200336 0x7f4d9c002300 WARN videodecoder gstvideodecoder.c:3668:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:01.700000000 deadline:0:00:01.700000000 earliest_time:0:00:01.930497888
0:00:02.560126488 200336 0x7f4d9c002300 WARN videodecoder gstvideodecoder.c:3668:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:01.766666666 deadline:0:00:01.766666666 earliest_time:0:00:01.930497888
0:00:02.653258296 200336 0x7f4d9c002300 WARN videodecoder gstvideodecoder.c:3668:gst_video_decoder_clip_and_push_buf:<avdec_h264-0> Dropping frame due to QoS. start:0:00:01.866666666 deadline:0:00:01.866666666 earliest_time:0:00:01.930497888
```
![image](/uploads/6fc94dc1656388dfd243aac9fa034d33/image.png)
![image](/uploads/07bf5b3afac064cb7b1aa4c0bdc82357/image.png)
We were using software decoder to get smaller RTSP video latency (`avdec_h264` results in just bout 200ms).
Now, with 1.22.1 we get same latency with new `vah264dec`, which is great and thanks to that, but software fallback is now too hard for cheaper Celeron machines for some reason...
This is `ffmpeg` Conan build log, where I do see optimizations enabled, so I doubt it's Conan build issue:
https://paste.mozilla.org/oiD2mmX0
This is `gstreamer-libav` Conan build log, where I do see `release` mode being used:
https://paste.mozilla.org/To5R451phttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2386RFC: Move parsers and codecs to base but keep them unstable2024-02-19T15:55:42ZNicolas DufresneRFC: Move parsers and codecs to base but keep them unstableThe codecs parser library and codecs are strictly required these days, yet they are in -bad, which mean they cannot be used in -good plugin. We already started duplicating code because of this situation. What I'd like to propose (and I c...The codecs parser library and codecs are strictly required these days, yet they are in -bad, which mean they cannot be used in -good plugin. We already started duplicating code because of this situation. What I'd like to propose (and I can do the work) is not move the codec parsers (and codecs) into -base, but keep the UNSTABLE marker there. This will allow notably moving the videoparsers into good or base (were they belong as they are strict requirements). It will also allow me to consolidate both v4l2 plugins into one again.Nicolas DufresneNicolas Dufresnehttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2392glimagesink does not receive navigation events on macOS2023-03-21T14:08:01ZLukas Geigerglimagesink does not receive navigation events on macOS### Describe your issue
`glimagesink` does not seem to receive any navigation events like mouse clicks and key presses on macOS.
We are trying to build an application that should receive navigation events. This works nicely on Linux, ho...### Describe your issue
`glimagesink` does not seem to receive any navigation events like mouse clicks and key presses on macOS.
We are trying to build an application that should receive navigation events. This works nicely on Linux, however when running the same code on macOS no navigation events are received. I can reproduce the issues with `gst-launch-1.0` and the `navigationtest` plugin (see below).
Navigation events also seem to work on macOS when switching to `osxvideosink`. Is this an expected limitation of `glimagesink`?
#### Setup
- **Operating System:** macOS 12.6.3
- **Device:** Computer
- **GStreamer Version:** 1.22.1 (installed via Homebrew for `navigationtest` but also reproducible in a proper application with the official installer)
- **Command line:** `gst-launch-1.0 videotestsrc ! navigationtest ! glimagesink`
### Steps to reproduce the bug
1. run `gst-launch-1.0 videotestsrc ! navigationtest ! glimagesink`
2. observe that clicks on the output window are not highlightedhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2394Add vvdec/vvenc-based VVC/h266 decoder/encoder elements2023-06-26T23:12:42ZSebastian DrögeAdd vvdec/vvenc-based VVC/h266 decoder/encoder elementsSee https://github.com/fraunhoferhhiSee https://github.com/fraunhoferhhihttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2402rtspsrc: parse error when running On Amazon Linux Host as a Container2023-03-24T18:19:21ZAlex Laurtspsrc: parse error when running On Amazon Linux Host as a Container### Describe your issue
I have a GStreamer pipeline which I want to read a RTSP stream and then generate video chunks of exactly 1 second long with default FPS (i.e. 30 FPS).
I was using a video file to emulate a RTSP stream and streame...### Describe your issue
I have a GStreamer pipeline which I want to read a RTSP stream and then generate video chunks of exactly 1 second long with default FPS (i.e. 30 FPS).
I was using a video file to emulate a RTSP stream and streamed it to a RTSP proxy server. All the components (i.e. video publisher, RTSP proxy server and GStreamer pipeline) are operated as Docker containers in Docker Compose. For the video file, I configured it to have a GOP of 30 so that every 1 second could have 1 keyframe.
My GStreamer pipeline crashed during runtime after around 30-50 seconds of connection to the RTSP stream.
#### Expected Behavior
1. The pipeline should generate video chunks of exactly 1 second long and exactly 30 frames without any quality issues like drop frames/ frozen frames
2. The pipeline should generate the video chunks as fast as the stream (i.e. generate 1 video chunk per second)
3. The pipeline shouldn't crash during runtime.
#### Observed Behavior
1. OK
2. OK
3. The pipeline crashed during runtime (after around 30-40 seconds)
#### Setup
- **Operating System:** Amazon Linux (Ubuntu and MacOS don't have this issue, I only encountered this issue in Amazon Linux)
- **Device:** EC2 Instance
- **GStreamer Version:** 1.20 (I also tried 1.18, 1.16, 1.23, but all failed)
- **Command line:** `gst-launch-1.0 rtspsrc location=rtsp://server:8554/example ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! videoscale ! videorate ! "video/x-raw,framerate=30/1" ! x264enc tune=zerolatency ! splitmuxsink max-size-time=1000000000 send-keyframe-requests=TRUE location=/videos/video_%03d.mp4`
### Steps to reproduce the bug
1. set up this `docker-compose.yml` file:
```
version: "3.8"
services:
server:
image: aler9/rtsp-simple-server
container_name: rtsp-server
hostname: rtsp-server
restart: always
# avoid packet loss
environment:
- RTSP_PROTOCOLS=udp
ports:
- 8554:8554
publisher:
image: linuxserver/ffmpeg
container_name: video-publisher
volumes:
- ./videos:/videos
command:
[
"-re",
"-stream_loop",
"-1",
"-i",
"/videos/1080_video_demo_gop30_br25000.mp4",
"-c",
"copy",
"-f",
"rtsp",
"rtsp://server:8554/example"
]
depends_on:
- server
subscriber:
image: restreamio/gstreamer:2023-01-30T11-39-02Z-prod
volumes:
- videos:/videos
# gst-launch-1.0 rtspsrc location=rtsp://server:8554/example ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! videoscale ! videorate ! "video/x-raw,framerate=25/1" ! x264enc tune=zerolatency ! splitmuxsink max-size-time=1000000000 send-keyframe-requests=TRUE location=video_%03d.mp4
command:
[
"gst-launch-1.0",
"rtspsrc",
"location=rtsp://server:8554/example",
"!",
"rtph264depay",
"!",
"h264parse",
"!",
"avdec_h264",
"!",
"videoconvert",
"!",
"videoscale",
"!",
"videorate",
"!",
"video/x-raw,framerate=30/1",
"!",
"x264enc",
"tune=zerolatency",
"!",
"splitmuxsink",
"max-size-time=1000000000",
"send-keyframe-requests=TRUE",
"location=/videos/video_%03d.mp4"
]
depends_on:
- publisher
volumes:
videos:
```
2. Set up EC2 instance with Amazon Linux and download docker and docker-compose. I was using c1.xlarge (i.e. 8 vCPU, 7 GB RAM) and the docker containers share all resources from the host
3. Download the video file here: https://drive.google.com/file/d/1MpulcH2W_7ONlClBLmWQAZh_OrfNB9L9/view?usp=sharing
4. Created a folder `videos` and put the video there
3. run `docker-compose up`
### How reproducible is the bug?
Always happen so long as you set up the environment correctly
### Screenshots if relevant
A screenshot of the error message when the pipeline crashed
![Screenshot_2023-03-22_at_5.40.32_PM](/uploads/e8a655aa53d688c371b92b970dfd8f53/Screenshot_2023-03-22_at_5.40.32_PM.png)
### Solutions you have tried
- I tried changing `RTSP_PROTOCOLS` from `tcp` to `udp`, UDP protocol doesn't have crash issue but it introduce drop frames/ frozen frames issues, which is not desirable in my use case
- I disabled `zerolatency` from `x264enc` and then the pipeline didn't crash, but the generated video chunks have varying duration and FPS, which is not acceptable in my use case
- As stated above, I tried testing it on M1 Mac and also Ubuntu EC2. They all work so the issue only happened in Amazon Linux host. (This is so weird given that Docker container should be agnostic of host's OS)
### Related non-duplicate issues
There is another issue: I did re-encoding to enforce 30 FPS in the pipeline, which is quite inefficient. Otherwise, the generated video file will either have varying FPS or varying duration. I don't know why GStreamer pipeline is not able to pick up the FPS from the RTSP stream itself.
### Additional Information
Error message that I received:
```
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Got EOS from element "pipeline0".
Execution ended after 0:01:02.730363236
Setting pipeline to NULL ...
ERROR: from element /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0: Could not read from resource.
Additional debug info:
../gst/rtsp/gstrtspsrc.c(6523): gst_rtsp_src_receive_response (): /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0:
Could not receive message. (Parse error)
ERROR: from element /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0: Could not read from resource.
Additional debug info:
../gst/rtsp/gstrtspsrc.c(6621): gst_rtspsrc_try_send (): /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0:
Could not receive message. (Parse error)
ERROR: from element /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0: Could not write to resource.
Additional debug info:
../gst/rtsp/gstrtspsrc.c(8346): gst_rtspsrc_close (): /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0:
Could not send message. (Parse error)
Freeing pipeline ...
```https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2404Generated Video Chunks from RTSP Stream Have Varying Duration and Varying FPS2023-03-23T09:06:06ZAlex LauGenerated Video Chunks from RTSP Stream Have Varying Duration and Varying FPS### Describe your issue
(This is another issue I found apart from https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2402 using similar configuration setup)
I have a GStreamer pipeline which I want to read a RTSP stream and the...### Describe your issue
(This is another issue I found apart from https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2402 using similar configuration setup)
I have a GStreamer pipeline which I want to read a RTSP stream and then generate video chunks of exactly 1 second long with default FPS (i.e. 30 FPS).
I was using a video file to emulate a RTSP stream and streamed it to a RTSP proxy server. All the components (i.e. video publisher, RTSP proxy server and GStreamer pipeline) are operated as Docker containers in Docker Compose. For the video file, I configured it to have a GOP of 30 so that every 1 second could have 1 keyframe.
My GStreamer pipeline generated video chunks of varying duration and FPS. I don't know why GStreamer couldn't pick up the FPS from RTSP stream.
#### Expected Behavior
1. The pipeline should generate video chunks of exactly 1 second long and exactly 30 frames without any quality issues like drop frames/ frozen frames
2. The pipeline should generate the video chunks as fast as the stream (i.e. generate 1 video chunk per second)
#### Observed Behavior
1. The generated video chunks have varying duration and FPS. They are not exactly 1 second long
2. OK
#### Setup
- **Operating System:** MacOS/ Ubuntu (EC2) / Amazon Linux (EC2), I found this issue in many OS
- **Device:** M1 Mac, EC2
- **GStreamer Version:** 1.20
- **Command line:** `gst-launch-1.0 rtspsrc location=rtsp://server:8554/example ! rtph264depay ! h264parse ! splitmuxsink max-size-time=1000000000 location=video_1sec_%d.mp4`
### Steps to reproduce the bug
1. set up this `docker-compose.yml` file:
```
version: "3.8"
services:
server:
image: aler9/rtsp-simple-server
container_name: rtsp-server
hostname: rtsp-server
restart: always
# avoid packet loss
environment:
- RTSP_PROTOCOLS=udp
ports:
- 8554:8554
publisher:
image: linuxserver/ffmpeg
container_name: video-publisher
volumes:
- ./videos:/videos
command:
[
"-re",
"-stream_loop",
"-1",
"-i",
"/videos/1080_video_demo_gop30_br25000.mp4",
"-c",
"copy",
"-f",
"rtsp",
"rtsp://server:8554/example"
]
depends_on:
- server
subscriber:
image: restreamio/gstreamer:2023-01-30T11-39-02Z-prod
volumes:
- videos:/videos
# gst-launch-1.0 rtspsrc location=rtsp://server:8554/example ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! videoscale ! videorate ! "video/x-raw,framerate=25/1" ! x264enc tune=zerolatency ! splitmuxsink max-size-time=1000000000 send-keyframe-requests=TRUE location=video_%03d.mp4
command:
[
"gst-launch-1.0",
"rtspsrc",
"location=rtsp://server:8554/example",
"!",
"rtph264depay",
"!",
"h264parse",
"!",
"splitmuxsink",
"max-size-time=1000000000",
"location=video_1sec_%d.mp4"
]
depends_on:
- publisher
volumes:
videos:
```
2. Use Ubuntu/ MacM1 and setup docker & docker-compose
3. Download the video file here: https://drive.google.com/file/d/1MpulcH2W_7ONlClBLmWQAZh_OrfNB9L9/view?usp=sharing
4. Created a folder `videos` and put the video there
5. run `docker-compose up`
### How reproducible is the bug?
Always happen so long as you set up the environment correctly
### Screenshots if relevant
NA
### Solutions you have tried
NA
### Related non-duplicate issues
NA
### Additional Information
NAhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2405vaapipostproc changes size of image even when width and height parameter are ...2023-05-02T10:09:15Zandres00157vaapipostproc changes size of image even when width and height parameter are set to 0Hi,
I am using the next pipeline:
rtspsrc->rtph264depay->h264parse->vaapih264dec->vaapipostproc->capsfilter->videoconvert->appsink
When I set the parameters of width and height in vaapipostproc it works fine, but when I don't speci...Hi,
I am using the next pipeline:
rtspsrc->rtph264depay->h264parse->vaapih264dec->vaapipostproc->capsfilter->videoconvert->appsink
When I set the parameters of width and height in vaapipostproc it works fine, but when I don't specify the width and height there is an IP camera that shows a green screen image. If I remove the vaapipostproc from the pipeline, then it works fine but we need to have this component in the pipeline.
When I put the debugger in gstreamer with GST_DEBUG=3, these are the error messages I get from the pipeline:
0:00:40.831616665 6 0x7f00286d8400 WARN videofilter gstvideofilter.c:296:gst_video_filter_transform:<videoconvert0> warning: invalid video buffer received
0:00:40.950975777 6 0x7f00286d8400 ERROR default video-frame.c:181:gst_video_frame_map_id: invalid buffer size 6185160 < 6186240
I printed the size of the image in the appsink and it was [1908x1080], but the IP camera is configured to [1920x1080]. If I changed the size of the video in the camera configuration UI to [2688x1520], which it is the maximum value, then it shows the video correctly.
My question is why I do I see the green image when the camera resolution is set to [1920x1080] and it only works when it is set to maximum resolution?
We can't hardcode the size of the image so I wonder if I am missing something.
Thanks in advances for your help.
Gstreamer version: GStreamer Core Library version 1.20.3https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2406matroskamux: VLC is unable to play files muxed with streamable=true2023-03-23T11:29:18ZTristan Matthewsmatroskamux: VLC is unable to play files muxed with streamable=true### Describe your issue
<!-- a clear and concise summary of the bug. -->
<!-- For any GStreamer usage question, please contact the community using the #gstreamer channel on IRC https://www.oftc.net/ or the mailing list on https://gstream...### Describe your issue
<!-- a clear and concise summary of the bug. -->
<!-- For any GStreamer usage question, please contact the community using the #gstreamer channel on IRC https://www.oftc.net/ or the mailing list on https://gstreamer.freedesktop.org/lists/ -->
Create a test file with:
```
gst-launch-1.0 -e videotestsrc ! vp8enc ! matroskamux streamable=true ! filesink location=testsrc.mkv
```
#### Expected Behavior
<!-- What did you expect to happen -->
The file should be playable with VLC.
#### Observed Behavior
<!-- What actually happened -->
Playback in VLC fails with:
```
[00007f0780c02240] mkv demux error: unable to read KaxCluster during seek, giving up
[00007f0780c02240] mkv demux error: unable to read KaxCluster during seek, giving up
```
#### Setup
- **Operating System:** Ubuntu 22.10
- **Device:** Computer
- **GStreamer Version:** 1.23.0.1 (git)
- **Command line:** See above
### How reproducible is the bug?
<!-- The reproducibility of the bug is Always/Intermittent/Only once after doing a very specific set of steps-->
100%
### Solutions you have tried
Playback with VLC does work with:
```
vlc --demux avformat testsrc.mkv
```
### Additional Information
<!-- Any other information such as logs. Make use of <details> for long output -->
It's not 100% clear to me if this is a GStreamer bug or a VLC bug.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2409PID in PMT but not present in data stream2023-03-24T11:34:43ZAndrew HawkinsPID in PMT but not present in data streamWe frequently see streams where an audio PID is present in the PMT (say an Audio Described channel) but this PID never appears in the actual data stream. It would be useful to be able to detect that this PID is 'empty' in order to not pr...We frequently see streams where an audio PID is present in the PMT (say an Audio Described channel) but this PID never appears in the actual data stream. It would be useful to be able to detect that this PID is 'empty' in order to not present it to the user as an option for selecting.
A sample file is attached. Further captures show that the PID can sometimes be present in the data stream, so it would appear that the broadcaster does transmit data in this PID at times.
[CBBC-trim.m2t](/uploads/00309461e31c6e602d2d893de981aec9/CBBC-trim.m2t)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2411trying to connect v4l2h264enc with webrtcsink2023-03-26T13:18:29ZDaniel Etrying to connect v4l2h264enc with webrtcsinkHi, I'm trying to connect `v4l2h264enc` with `webrtcsink` on a Raspberry PI to no avail.
- I patched `net/webrtc/src/webrtcsink/imp.rs` as shown here (for sure not sufficient or even wrong):
```
diff --git a/net/webrtc/src/webrtcsink/i...Hi, I'm trying to connect `v4l2h264enc` with `webrtcsink` on a Raspberry PI to no avail.
- I patched `net/webrtc/src/webrtcsink/imp.rs` as shown here (for sure not sufficient or even wrong):
```
diff --git a/net/webrtc/src/webrtcsink/imp.rs b/net/webrtc/src/webrtcsink/imp.rs
index dec860a9..7e62d027 100644
--- a/net/webrtc/src/webrtcsink/imp.rs
+++ b/net/webrtc/src/webrtcsink/imp.rs
@@ -406,6 +406,9 @@ fn configure_encoder(enc: &gst::Element, start_bitrate: u32) {
enc.set_property_from_str("error-resilient", "default");
enc.set_property("lag-in-frames", 0i32);
}
+ "v4l2h264enc" => {
+ enc.set_property_from_str("extra-controls", "controls,video_bitrate=1500000,video_bitrate_mode=0,h264_profile=1,h264_level=9");
+ }
"x264enc" => {
enc.set_property("bitrate", start_bitrate / 1000);
enc.set_property_from_str("tune", "zerolatency");
@@ -600,6 +603,9 @@ impl VideoEncoder {
"x264enc" | "nvh264enc" | "vaapih264enc" | "vaapivp8enc" => {
(self.element.property::<u32>("bitrate") * 1000) as i32
}
+ "v4l2h264enc" => {
+ 1500000 as i32
+ }
"nvv4l2h264enc" | "nvv4l2vp8enc" | "nvv4l2vp9enc" => {
(self.element.property::<u32>("bitrate")) as i32
}
@@ -630,6 +636,9 @@ impl VideoEncoder {
"nvv4l2h264enc" | "nvv4l2vp8enc" | "nvv4l2vp9enc" => {
self.element.set_property("bitrate", bitrate as u32)
}
+ "v4l2h264enc" => {
+ self.element.set_property_from_str("extra-controls", format!("controls,video_bitrate={bitrate},video_bitrate_mode=0,h264_profile=1,h264_level=9").as_str());
+ }
factory => unimplemented!("Factory {} is currently not supported", factory),
}
```
- Compilation and installation fine
At runtime this pipeline fires errors:
```
GST_DEBUG=3 gst-launch-1.0 webrtcsink video-caps="video/x-h264,level=(string)3.1" name=ws videotestsrc ! ws.
```
Errors:
```
pi@raspberrypi:~ $ GST_DEBUG=3 gst-launch-1.0 webrtcsink video-caps="video/x-h264,level=(string)3.1" name=ws videotestsrc ! ws.
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
0:00:00.110480484 121906 0x557b7298c0 FIXME default gstutils.c:4031:gst_pad_create_stream_id_internal:<videotestsrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
0:00:00.303385009 121906 0x7f9c035580 WARN v4l2 gstv4l2object.c:4675:gst_v4l2_object_probe_caps:<v4l2h264enc0:src> Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: Invalid argument
0:00:00.304958224 121906 0x7f9c045b00 FIXME default gstutils.c:4031:gst_pad_create_stream_id_internal:<videotestsrc1:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.351207138 121906 0x7f9c045b00 WARN v4l2 gstv4l2object.c:3228:gst_v4l2_object_reset_compose_region:<v4l2h264enc0:src> Failed to get default compose rectangle with VIDIOC_G_SELECTION: Invalid argument
0:00:00.351874357 121906 0x7f9c045b00 WARN v4l2 gstv4l2object.c:3228:gst_v4l2_object_reset_compose_region:<v4l2h264enc0:sink> Failed to get default compose rectangle with VIDIOC_G_SELECTION: Invalid argument
0:00:00.364054523 121906 0x7f9c045b00 WARN v4l2bufferpool gstv4l2bufferpool.c:848:gst_v4l2_buffer_pool_start:<v4l2h264enc0:pool0:src> Uncertain or not enough buffers, enabling copy threshold
0:00:00.372199299 121906 0x7f9c045b00 ERROR v4l2bufferpool gstv4l2bufferpool.c:712:gst_v4l2_buffer_pool_streamon:<v4l2h264enc0:pool0:sink> error with STREAMON 3 (No such process)
0:00:00.372269003 121906 0x7f9c045b00 ERROR v4l2bufferpool gstv4l2bufferpool.c:2277:gst_v4l2_buffer_pool_process:<v4l2h264enc0:pool0:sink> failed to start streaming
0:00:00.373427664 121906 0x7f9c045b00 WARN v4l2videoenc gstv4l2videoenc.c:870:gst_v4l2_video_enc_handle_frame:<v4l2h264enc0> error: Failed to process frame.
0:00:00.373463442 121906 0x7f9c045b00 WARN v4l2videoenc gstv4l2videoenc.c:870:gst_v4l2_video_enc_handle_frame:<v4l2h264enc0> error: Maybe be due to not enough memory or failing driver
0:00:00.373752811 121906 0x7f9c045b00 WARN basesrc gstbasesrc.c:3132:gst_base_src_loop:<videotestsrc1> error: Internal data stream error.
0:00:00.373779922 121906 0x7f9c045b00 WARN basesrc gstbasesrc.c:3132:gst_base_src_loop:<videotestsrc1> error: streaming stopped, reason error (-5)
0:00:00.380312836 121906 0x7f9c035580 WARN webrtcsink net/webrtc/src/webrtcsink/imp.rs:2208:gstrswebrtc::webrtcsink::imp:<ws> Codec discovery pipeline failed: Failed to process frame.
0:00:00.380398428 121906 0x7f9c035580 ERROR webrtcsink net/webrtc/src/webrtcsink/imp.rs:2325:gstrswebrtc::webrtcsink::imp:<ws> error: No caps found for stream video_0
ERROR: from element /GstPipeline:pipeline0/GstWebRTCSink:ws: There is no codec present that can handle the stream's type.
Additional debug info:
net/webrtc/src/webrtcsink/imp.rs(2326): gstrswebrtc::webrtcsink::imp (): /GstPipeline:pipeline0/GstWebRTCSink:ws:
Failed to look up output caps: No caps found for stream video_0
Execution ended after 0:00:00.269974351
Setting pipeline to NULL ...
Freeing pipeline ...
pi@raspberrypi:~ $
```
I think the main error is this:
```
0:00:00.380398428 121906 0x7f9c035580 ERROR webrtcsink net/webrtc/src/webrtcsink/imp.rs:2325:gstrswebrtc::webrtcsink::imp:<ws> error: No caps found for stream video_0
ERROR: from element /GstPipeline:pipeline0/GstWebRTCSink:ws: There is no codec present that can handle the stream's type.
Additional debug info:
net/webrtc/src/webrtcsink/imp.rs(2326): gstrswebrtc::webrtcsink::imp (): /GstPipeline:pipeline0/GstWebRTCSink:ws:
Failed to look up output caps: No caps found for stream video_0
```
This pipeline, instead, works as expected:
```
GST_DEBUG=3 gst-launch-1.0 videotestsrc ! v4l2h264enc extra-controls="controls,video_bitrate=1500000,video_bitrate_mode=0,h264_profile=1,h264_level=9" ! 'video/x-h264, level=(string)3.1' ! fakesink
```