GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2023-01-24T19:43:51Zhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/156RFC: audio decoder plugin based on Symphonia2023-01-24T19:43:51ZFrançois LaignelRFC: audio decoder plugin based on SymphoniaI've been considering this for more than a year and since it gained exposure today, I guess it's a good time to ask: what would you think about an audio decoder plugin based on [Symphonia](https://github.com/pdeljanov/Symphonia)?I've been considering this for more than a year and since it gained exposure today, I guess it's a good time to ask: what would you think about an audio decoder plugin based on [Symphonia](https://github.com/pdeljanov/Symphonia)?https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1610amc: add support for dynamic bitrate change2021-09-24T14:39:25ZRoman Shpuntovamc: add support for dynamic bitrate changeI use h264 encoder on Android 10 device. There is no effect after call `g_object_set(gstplugin, "bitrate", value, NULL);` when pipeline in playing state. The bitrate value can be set only on stopped pipeline. It would be nice to add bitr...I use h264 encoder on Android 10 device. There is no effect after call `g_object_set(gstplugin, "bitrate", value, NULL);` when pipeline in playing state. The bitrate value can be set only on stopped pipeline. It would be nice to add bitrate change feature during playing state. This is feature request issue. I use gstreamer version 1.16.3. Thanks!https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/issues/135anything about how to use ges on android2021-07-05T11:01:49Zwenxianything about how to use ges on androidNo document or example for GES using on Android, try running example c code in android device, but no luck. As simple as adding a URI clip to timeline is not working properly, the file can be loaded but no video is rending on the screen....No document or example for GES using on Android, try running example c code in android device, but no luck. As simple as adding a URI clip to timeline is not working properly, the file can be loaded but no video is rending on the screen. See through the debug log but haven't got a clue.https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/918EGL not working on Raspberry Pi 3b+2022-10-20T22:55:34ZJay DouglassEGL not working on Raspberry Pi 3b+I'm using gst-build and I can't get EGL working on GStreamer 1.18.4 on a Raspberry Pi 3b+. The 1.14 packages worked fine. I have run `rpi-update`. `dtoverlay=vc4-fkms-v3d` is set in /boot/config.txt.
Here's the meson command I'm running...I'm using gst-build and I can't get EGL working on GStreamer 1.18.4 on a Raspberry Pi 3b+. The 1.14 packages worked fine. I have run `rpi-update`. `dtoverlay=vc4-fkms-v3d` is set in /boot/config.txt.
Here's the meson command I'm running. The gles2_module_name & egl_module_name options appear to have no effect.
```
$ meson --prefix=/usr \
-D gl=enabled \
-D gl_api=gles2 \
-D gl_platform=egl \
-D gl_winsys=dispmanx \
-D gles2_module_name=/opt/vc/lib/libbrcmGLESv2.so \
-D egl_module_name=/opt/vc/lib/libbrcmEGL.so \
..
$ ldd /usr/lib/arm-linux-gnueabihf/libgstgl-1.0.so
libEGL.so.1 => /lib/arm-linux-gnueabihf/libEGL.so.1 (0x76a9e000)
$ gst-launch-1.0 videotestsrc ! glimagesink
Setting pipeline to PAUSED ...
ERROR: from element /GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink: Failed to initialize egl: EGL_NOT_INITIALIZED
Additional debug info:
../ext/gl/gstglimagesink.c(1096): _ensure_gl_setup (): /GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink
```
After building gst-plugins-base again with {egl,glesv2}.pc symlinks
```
$ sudo ln -fs /opt/vc/lib/pkgconfig/brcmegl.pc /lib/arm-linux-gnueabihf/pkgconfig/egl.pc
$ sudo ln -fs /opt/vc/lib/pkgconfig/brcmglesv2.pc /lib/arm-linux-gnueabihf/pkgconfig/glesv2.pc
$ ldd /usr/lib/arm-linux-gnueabihf/libgstgl-1.0.so
libbrcmEGL.so => /opt/vc/lib/libbrcmEGL.so (0x76ada000)
libbrcmGLESv2.so => /opt/vc/lib/libbrcmGLESv2.so (0x76ab5000)
$ gst-launch-1.0 videotestsrc ! glimagesink
Setting pipeline to PAUSED ...
* failed to add service - already in use?
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1609webrtc: Various `Since` markers are missing now2021-06-28T15:15:48ZSebastian Drögewebrtc: Various `Since` markers are missing nowThe following discussion from !2241 should be addressed:
- [ ] @slomo started a [discussion](https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241#note_974140):
> This should've stayed on the now opaque ty...The following discussion from !2241 should be addressed:
- [ ] @slomo started a [discussion](https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241#note_974140):
> This should've stayed on the now opaque typedef, and also in various other places.https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/904Demote dvdemux to marginal2021-09-24T13:34:37ZEdward HerveyDemote dvdemux to marginal`dvdemux` (and `dvdec`) both rely on libdv which hasn't been maintained in ages.
* Means it doesn't properly recognize any non-SD formats (i.e. all the DVCPro variants)
* The fact that it's not maintained means that we can't really fix/...`dvdemux` (and `dvdec`) both rely on libdv which hasn't been maintained in ages.
* Means it doesn't properly recognize any non-SD formats (i.e. all the DVCPro variants)
* The fact that it's not maintained means that we can't really fix/improve it. If ever there are any security issues that's also worrying
I propose we do like for `dvdec` and we demote the rank of `dvdemux` to marginal, and enable the gst-libav DV demuxer with a rank of SECONDARY. I've tested a few files with that demuxer and it works fine.https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/917parsebin: use chain after free2023-06-09T14:59:55ZSirius Wuparsebin: use chain after freeA use-after-free bug of parsebin occurs if playbin3 is set to NONE a few seconds after it is set to PLAYING. I'm using 1.16 on Android to play an mp4 video.
The following log shows that `connect_pad` executed by thread 0x7f5a5430 (tid ...A use-after-free bug of parsebin occurs if playbin3 is set to NONE a few seconds after it is set to PLAYING. I'm using 1.16 on Android to play an mp4 video.
The following log shows that `connect_pad` executed by thread 0x7f5a5430 (tid 3036) try to lock the chain 0x808fed90 after the chain 0x808fed90 was freed by thread 0x81a24520 (tid 2245).
```
06-28 04:54:37.004 2075 3036 D GStreamer+parsebin: 0:05:46.479062582 0x7f5a5430 ../gst/playback/gstparsebin.c:2855:gst_parse_chain_new:<parsebin40> Creating new chain 0x808fed90 with parent group 0x8ff272b0
06-28 04:54:37.010 2075 2245 V GStreamer+parsebin: 0:05:46.484662874 0x81a24520 ../gst/playback/gstparsebin.c:2678:gst_parse_chain_free_internal:<parsebin40> locking chain 0x808fed90 from thread 0x81a24520
06-28 04:54:37.010 2075 2245 V GStreamer+parsebin: 0:05:46.484768749 0x81a24520 ../gst/playback/gstparsebin.c:2678:gst_parse_chain_free_internal:<parsebin40> locked chain 0x808fed90 from thread 0x81a24520
06-28 04:54:37.010 2075 2245 D GStreamer+parsebin: 0:05:46.484866457 0x81a24520 ../gst/playback/gstparsebin.c:2681:gst_parse_chain_free_internal:<parsebin40> Hiding chain 0x808fed90
06-28 04:54:37.010 2075 2245 D GStreamer+parsebin: 0:05:46.484979624 0x81a24520 ../gst/playback/gstparsebin.c:2811:gst_parse_chain_free_internal:<parsebin40> Hidden chain 0x808fed90
06-28 04:54:37.010 2075 2245 V GStreamer+parsebin: 0:05:46.485093957 0x81a24520 ../gst/playback/gstparsebin.c:2812:gst_parse_chain_free_internal:<parsebin40> unlocking chain 0x808fed90 from thread 0x81a24520
06-28 04:54:37.018 2075 3036 D GStreamer+parsebin: 0:05:46.492812332 0x7f5a5430 ../gst/playback/gstparsebin.c:1751:connect_pad:<parsebin40> pad qtdemux37:video_0 , chain:0x808fed90, 2 factories, caps video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)high, codec_data=(buffer)0164001effe1001c6764001eacd940b43dbff0020001b100000303e90000ea600f162d9601000668ebe3cb22c0, width=(int)720, height=(int)480, framerate=(fraction)30000/1001, pixel-aspect-ratio=(fraction)32/27
06-28 04:54:37.019 2075 2245 V GStreamer+parsebin: 0:05:46.494063874 0x81a24520 ../gst/playback/gstparsebin.c:2678:gst_parse_chain_free_internal:<parsebin40> locking chain 0x808fed90 from thread 0x81a24520
06-28 04:54:37.019 2075 2245 V GStreamer+parsebin: 0:05:46.494214082 0x81a24520 ../gst/playback/gstparsebin.c:2678:gst_parse_chain_free_internal:<parsebin40> locked chain 0x808fed90 from thread 0x81a24520
06-28 04:54:37.020 2075 2245 D GStreamer+parsebin: 0:05:46.494361957 0x81a24520 ../gst/playback/gstparsebin.c:2681:gst_parse_chain_free_internal:<parsebin40> Freeing chain 0x808fed90
06-28 04:54:37.020 2075 2245 D GStreamer+parsebin: 0:05:46.494531416 0x81a24520 ../gst/playback/gstparsebin.c:2811:gst_parse_chain_free_internal:<parsebin40> Freed chain 0x808fed90
06-28 04:54:37.020 2075 2245 V GStreamer+parsebin: 0:05:46.494663249 0x81a24520 ../gst/playback/gstparsebin.c:2812:gst_parse_chain_free_internal:<parsebin40> unlocking chain 0x808fed90 from thread 0x81a24520
06-28 04:54:37.023 2075 3036 V GStreamer+parsebin: 0:05:46.498147791 0x7f5a5430 ../gst/playback/gstparsebin.c:1839:connect_pad locking chain 0x808fed90 from thread 0x7f5a5430
```
The following are the backtraces of thread 0x7f5a5430 (tid 3036) and thread 0x81a24520 (tid 2245). Where should I put `CHAIN_MUTEX_LOCK(chain)` to fix this issue? Attached file is a more complete log after function `pad_added_cb` was called, which results in the `connect_pad` call.[use-after-free.log](/uploads/3dc99fa785a2823a36fb32638b52a9b5/use-after-free.log)
```
Thread 0x7f5a5430
Thread 106 (Thread 2075.3036):
#0 0xb18173f4 in syscall () from target:/system/lib/libc.so
#1 0xb1847560 in __pthread_mutex_lock_with_timeout(pthread_mutex_internal_t*, bool, timespec const*) () from target:/system/lib/libc.so
#2 0x837fb26a in g_mutex_lock (mutex=0x808fed98) at ../glib/gthread-posix.c:214
#3 0x835231ba in connect_pad (parsebin=<optimized out>, src=<optimized out>, parsepad=<optimized out>, pad=<optimized out>, caps=<optimized out>, factories=<optimized out>, chain=<optimized out>, deadend_details=<optimized out>) at ../gst/playback/gstparsebin.c:1839
#4 analyze_new_pad (parsebin=<optimized out>, src=<optimized out>, pad=0x80868e40, caps=0x80830918, chain=<optimized out>) at ../gst/playback/gstparsebin.c:1498
#5 0x8352586e in pad_added_cb (element=0x8e2c5ad0, pad=<optimized out>, chain=<optimized out>) at ../gst/playback/gstparsebin.c:2459
#6 0x837b0acc in ffi_call_SYSV () from target:/data/app/com.karaokeui-2/lib/arm/libgstreamer_android.so
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
```
```
Thread 96 (Thread 2075.2245):
#0 0xb18173f4 in syscall () from target:/system/lib/libc.so
#1 0xb1847560 in __pthread_mutex_lock_with_timeout(pthread_mutex_internal_t*, bool, timespec const*) () from target:/system/lib/libc.so
#2 0x83742ae8 in gst_pad_stop_task (pad=0x80026ea8) at ../gst/gstpad.c:6306
#3 0x8373970a in activate_mode_internal (pad=0x80026ea8, parent=0x8e2c5ad0, mode=<optimized out>, active=<optimized out>) at ../gst/gstpad.c:1217
#4 0x83739250 in gst_pad_set_active (pad=0x80026ea8, active=0) at ../gst/gstpad.c:1115
#5 0x83727854 in activate_pads (vpad=<optimized out>, ret=0x8d80a148, active=0x8d80a198) at ../gst/gstelement.c:3062
#6 0x837324da in gst_iterator_fold (it=0x8b4e74a8, func=0x8372783d <activate_pads>, ret=0x8d80a148, user_data=0x8d80a198) at ../gst/gstiterator.c:617
#7 0x8372780a in iterator_activate_fold_with_resync (iter=0x8b4e74a8, func=<optimized out>, user_data=0x8d80a198) at ../gst/gstelement.c:3086
#8 0x83727652 in gst_element_pads_activate (element=0x8e2c5ad0, active=<optimized out>) at ../gst/gstelement.c:3131
#9 0x837261d2 in gst_element_change_state_func (element=0x8e2c5ad0, transition=GST_STATE_CHANGE_PAUSED_TO_READY) at ../gst/gstelement.c:3196
#10 0x8347057c in gst_qtdemux_change_state (element=0x8e2c5ad0, transition=GST_STATE_CHANGE_PAUSED_TO_READY) at ../gst/isomp4/qtdemux.c:2761
#11 0x83724d12 in gst_element_change_state (element=0x8e2c5ad0, transition=<optimized out>) at ../gst/gstelement.c:2974
#12 0x837265d4 in gst_element_set_state_func (element=0x8e2c5ad0, state=GST_STATE_NULL) at ../gst/gstelement.c:2928
#13 0x835277ac in gst_parse_chain_free_internal (chain=0x8b4e76d8, hide=<optimized out>) at ../gst/playback/gstparsebin.c:2817
#14 0x8352915c in gst_parse_chain_free (chain=0x8b4e76d8) at ../gst/playback/gstparsebin.c:2838
#15 gst_parse_bin_change_state (element=0x7fa75e10, transition=<optimized out>) at ../gst/playback/gstparsebin.c:4342
#16 0x83724d12 in gst_element_change_state (element=0x7fa75e10, transition=<optimized out>) at ../gst/gstelement.c:2974
#17 0x837265d4 in gst_element_set_state_func (element=0x7fa75e10, state=GST_STATE_READY) at ../gst/gstelement.c:2928
#18 0x837049f6 in gst_bin_element_set_state (bin=<optimized out>, element=<optimized out>, base_time=<optimized out>, current=<optimized out>, next=<optimized out>, start_time=<optimized out>) at ../gst/gstbin.c:2627
#19 gst_bin_change_state_func (element=<optimized out>, transition=GST_STATE_CHANGE_PAUSED_TO_READY) at ../gst/gstbin.c:2969
#20 0x8350fa2a in gst_decodebin3_change_state (element=0x8e53f338, transition=<optimized out>) at ../gst/playback/gstdecodebin3.c:2876
#21 0x83724d12 in gst_element_change_state (element=0x8e53f338, transition=<optimized out>) at ../gst/gstelement.c:2974
#22 0x837265d4 in gst_element_set_state_func (element=0x8e53f338, state=GST_STATE_READY) at ../gst/gstelement.c:2928
#23 0x837049f6 in gst_bin_element_set_state (bin=<optimized out>, element=<optimized out>, base_time=<optimized out>, current=<optimized out>, next=<optimized out>, start_time=<optimized out>) at ../gst/gstbin.c:2627
#24 gst_bin_change_state_func (element=<optimized out>, transition=GST_STATE_CHANGE_PAUSED_TO_READY) at ../gst/gstbin.c:2969
#25 0x8351beb6 in gst_uri_decode_bin3_change_state (element=0x8e53f1a0, transition=GST_STATE_CHANGE_PAUSED_TO_READY) at ../gst/playback/gsturidecodebin3.c:1054
#26 0x83724d12 in gst_element_change_state (element=0x8e53f1a0, transition=<optimized out>) at ../gst/gstelement.c:2974
#27 0x837265d4 in gst_element_set_state_func (element=0x8e53f1a0, state=GST_STATE_READY) at ../gst/gstelement.c:2928
#28 0x837049f6 in gst_bin_element_set_state (bin=<optimized out>, element=<optimized out>, base_time=<optimized out>, current=<optimized out>, next=<optimized out>, start_time=<optimized out>) at ../gst/gstbin.c:2627
#29 gst_bin_change_state_func (element=<optimized out>, transition=GST_STATE_CHANGE_PAUSED_TO_READY) at ../gst/gstbin.c:2969
#30 0x834e9740 in gst_play_bin3_change_state (element=0x8b4e2040, transition=GST_STATE_CHANGE_PAUSED_TO_READY) at ../gst/playback/gstplaybin3.c:4944
#31 0x83724d12 in gst_element_change_state (element=0x8b4e2040, transition=<optimized out>) at ../gst/gstelement.c:2974
#32 0x837265d4 in gst_element_set_state_func (element=0x8b4e2040, state=GST_STATE_NULL) at ../gst/gstelement.c:2928
#33 0x88125e30 in set_uri (player=0x81a0c800, uri=0x7cbca960 "file:///data/user/0/com.karaokeui/files/broadcast/20201030_3.mp4") at jni/inul.c:780
#34 0x8812a550 in dispatch (action=0x7cb83380, player=0x81a0c800) at jni/actions.c:11
#35 0x837e51a8 in g_thread_pool_thread_proxy (data=0x82461a68) at ../glib/gthreadpool.c:307
#36 0x837e4600 in g_thread_proxy (data=0x81a24520) at ../glib/gthread.c:784
#37 0xb1846d34 in __pthread_start(void*) () from target:/system/lib/libc.so
#38 0xb1819aae in __start_thread () from target:/system/lib/libc.so
#39 0x00000000 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
```https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/issues/134buffer meta from framepositioner can not pass OpenGL filters2021-09-24T12:17:02ZKyrylo Polezhaievbuffer meta from framepositioner can not pass OpenGL filtersThe only way for `zorder` and `alpha` to pass something like `glupload ! gltransformation ! gldownload` effect is when `gst_base_transform_set_passthrough` set to `TRUE`.The only way for `zorder` and `alpha` to pass something like `glupload ! gltransformation ! gldownload` effect is when `gst_base_transform_set_passthrough` set to `TRUE`.https://gitlab.freedesktop.org/gstreamer/gstreamer-sharp/-/issues/57iOS build2021-09-24T10:46:35ZRoman MinyayloviOS buildHi
I'm working on a DotNet wrapper based on this project code (but it's not ready to merge request). Currently, it's worked correctly in Windows with MSVC build, macOS, should work on Linux, and also it's worked on Android with a dynami...Hi
I'm working on a DotNet wrapper based on this project code (but it's not ready to merge request). Currently, it's worked correctly in Windows with MSVC build, macOS, should work on Linux, and also it's worked on Android with a dynamic monolith build of GStreamer.
My wrapper uses Xamarin.Mac/Xamarin.iOS/MonoAndroid/net471/net-5.0 targets.
But, I don't know how to link with GStreamer on iOS.
Docs told me what only static linking is possible, and examples are for C++. But, as I see in the VideoLAN project, the framework that includes a dynamic monolith library is possible. Can somebody help me to build a dynamic library of GStreamer for iOS or convert the existing static library to the dynamic framework?
Thank you.https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/903qtdemux: Use sidx to seek on fragmented mp42023-07-11T09:59:27ZJan Schmidtqtdemux: Use sidx to seek on fragmented mp4At the moment, qtdemux completely refuses to seek on fragmented mp4 when operating in push mode.
This makes sense if the only source of fragmented mp4 is DASH or so, because the adaptive demuxer can do the seeking upstream. However, if ...At the moment, qtdemux completely refuses to seek on fragmented mp4 when operating in push mode.
This makes sense if the only source of fragmented mp4 is DASH or so, because the adaptive demuxer can do the seeking upstream. However, if we're just playing a fragmented mp4 via vanilla mp4, qtdemux needs to handle the seeking.
If there's an sidx present in the file, we can use that to find the correct moof and do seeking that way. Right now, qtdemux only uses the sidx to calculate duration and then discards it.https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/349Incomplete rust binding for RTSPMountPoints2021-07-09T11:34:47ZPrakash DuggarajuIncomplete rust binding for RTSPMountPointsHard to override or implement your own RTSPMountPoints since the Trait RTSPMountPointsImpl is not present.
Having a custom mount point would be required to have custom patch matching logic.Hard to override or implement your own RTSPMountPoints since the Trait RTSPMountPointsImpl is not present.
Having a custom mount point would be required to have custom patch matching logic.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1606cameraundistort: Provide description for "settings" parameter in documentation2021-09-24T14:39:25ZYegor Tcameraundistort: Provide description for "settings" parameter in documentationIn the plugin description, "settings" parameter is described as "Camera correction parameters (opaque string of serialized OpenCV objects)".
This description is very vague and lacks specific as to what exactly OpenCV object it expects, i...In the plugin description, "settings" parameter is described as "Camera correction parameters (opaque string of serialized OpenCV objects)".
This description is very vague and lacks specific as to what exactly OpenCV object it expects, in what format they should be serialized and provided to the pipeline.
Example pipeline omits giving actual example of the parameter, substituting it with question marks: settings="???"
I would be great if plugin description was extended to include actual settings parameters example and state what OpenCV object it expects and in what formats.https://gitlab.freedesktop.org/gstreamer/gst-examples/-/issues/47[MCU] Which elements can use to get MCU.2023-05-18T16:32:53ZAmal Kabulov[MCU] Which elements can use to get MCU.Hi All. is it possible to achieve MCU with the latest version of GStreamer? If it's possible, can you pls describe what elements can I use?
```
audio -> queue -> ?
webrtcbin ->
video -> queue -> ?
...Hi All. is it possible to achieve MCU with the latest version of GStreamer? If it's possible, can you pls describe what elements can I use?
```
audio -> queue -> ?
webrtcbin ->
video -> queue -> ?
-> ? -> webrtcbin or somesink
audio -> queue -> ?
webrtcbin ->
video -> queue -> ?
```https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/99mpeg2: missing first 2 frames with op2b-mpeg2-wave_hd.mxf2021-07-29T10:59:46ZStéphane Cerveauscerveau@igalia.commpeg2: missing first 2 frames with op2b-mpeg2-wave_hd.mxfThe first 2 frames are dropped by the decoder arguing a:
```
libav :0:: Skipping B slice due to open GOP
...
```
```
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb40086f0 (#0)(sub=#1) sync:1 PTS:0:00:00.160000000 DTS:...The first 2 frames are dropped by the decoder arguing a:
```
libav :0:: Skipping B slice due to open GOP
...
```
```
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb40086f0 (#0)(sub=#1) sync:1 PTS:0:00:00.160000000 DTS:0:00:00.000000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008b30 (#4)(sub=#1) sync:0 PTS:0:00:00.200000000 DTS:0:00:00.160000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008c40 (#5)(sub=#1) sync:0 PTS:0:00:00.240000000 DTS:0:00:00.200000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008a20 (#3)(sub=#1) sync:0 PTS:0:00:00.280000000 DTS:0:00:00.120000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008910 (#7)(sub=#1) sync:0 PTS:0:00:00.320000000 DTS:0:00:00.280000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008800 (#8)(sub=#1) sync:0 PTS:0:00:00.360000000 DTS:0:00:00.320000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008b30 (#6)(sub=#1) sync:0 PTS:0:00:00.400000000 DTS:0:00:00.240000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008c40 (#10)(sub=#1) sync:0 PTS:0:00:00.440000000 DTS:0:00:00.400000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb40086f0 (#11)(sub=#1) sync:0 PTS:0:00:00.480000000 DTS:0:00:00.440000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008910 (#9)(sub=#1) sync:0 PTS:0:00:00.520000000 DTS:0:00:00.360000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008800 (#13)(sub=#1) sync:0 PTS:0:00:00.560000000 DTS:0:00:00.520000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008a20 (#14)(sub=#1) sync:0 PTS:0:00:00.600000000 DTS:0:00:00.560000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008c40 (#12)(sub=#1) sync:1 PTS:0:00:00.640000000 DTS:0:00:00.480000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb40086f0 (#16)(sub=#1) sync:0 PTS:0:00:00.680000000 DTS:0:00:00.640000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008b30 (#17)(sub=#1) sync:0 PTS:0:00:00.720000000 DTS:0:00:00.680000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008800 (#15)(sub=#1) sync:0 PTS:0:00:00.760000000 DTS:0:00:00.600000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008a20 (#19)(sub=#1) sync:0 PTS:0:00:00.800000000 DTS:0:00:00.760000000
der_prepare_finish_frame:<avdec_mpegvideo0> finish frame 0x7f7cb4008910 (#20)(sub=#1) sync:0 PTS:0:00:00.840000000 DTS:0:00:00.800000000
```
Using mpeg2dec from gst-plugins-ugly, the decoder is able to generate this 2 missing frames.
```
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c0077e0 (#1)(sub=#1) sync:0 PTS:0:00:00.080000000 DTS:0:00:00.040000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c0078f0 (#2)(sub=#1) sync:0 PTS:0:00:00.120000000 DTS:0:00:00.080000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c0076d0 (#0)(sub=#1) sync:1 PTS:0:00:00.160000000 DTS:0:00:00.000000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c007b10 (#4)(sub=#1) sync:0 PTS:0:00:00.200000000 DTS:0:00:00.160000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c007c20 (#5)(sub=#1) sync:0 PTS:0:00:00.240000000 DTS:0:00:00.200000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c007a00 (#3)(sub=#1) sync:0 PTS:0:00:00.280000000 DTS:0:00:00.120000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c0076d0 (#7)(sub=#1) sync:0 PTS:0:00:00.320000000 DTS:0:00:00.280000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c0078f0 (#8)(sub=#1) sync:0 PTS:0:00:00.360000000 DTS:0:00:00.320000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c007b10 (#6)(sub=#1) sync:0 PTS:0:00:00.400000000 DTS:0:00:00.240000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c0078f0 (#10)(sub=#1) sync:0 PTS:0:00:00.440000000 DTS:0:00:00.400000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c0076d0 (#11)(sub=#1) sync:0 PTS:0:00:00.480000000 DTS:0:00:00.440000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c0077e0 (#9)(sub=#1) sync:0 PTS:0:00:00.520000000 DTS:0:00:00.360000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c007c20 (#13)(sub=#1) sync:0 PTS:0:00:00.560000000 DTS:0:00:00.520000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c0077e0 (#14)(sub=#1) sync:0 PTS:0:00:00.600000000 DTS:0:00:00.560000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c007a00 (#12)(sub=#1) sync:1 PTS:0:00:00.640000000 DTS:0:00:00.480000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c0078f0 (#16)(sub=#1) sync:0 PTS:0:00:00.680000000 DTS:0:00:00.640000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c007b10 (#17)(sub=#1) sync:0 PTS:0:00:00.720000000 DTS:0:00:00.680000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c0076d0 (#15)(sub=#1) sync:0 PTS:0:00:00.760000000 DTS:0:00:00.600000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c007a00 (#19)(sub=#1) sync:0 PTS:0:00:00.800000000 DTS:0:00:00.760000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c0077e0 (#20)(sub=#1) sync:0 PTS:0:00:00.840000000 DTS:0:00:00.800000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c0078f0 (#18)(sub=#1) sync:0 PTS:0:00:00.880000000 DTS:0:00:00.720000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c0077e0 (#22)(sub=#1) sync:0 PTS:0:00:00.920000000 DTS:0:00:00.880000000
der_prepare_finish_frame:<mpeg2dec0> finish frame 0x7ff23c007a00 (#23)(sub=#1) sync:0 PTS:0:00:00.960000000 DTS:0:00:00.920000000
```
Related to gst-plugins-base#895https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/712Unable to properly use video overlay on Windows2023-03-11T06:35:08ZNass NassUnable to properly use video overlay on WindowsI am working on windows 10. I am developing an application using GTK (installed with vcpkg) and gstreamer (version 3.18) in c ++.
I noticed several issues during development:
1- Cannot use glimagesink in the application (via gst_video_o...I am working on windows 10. I am developing an application using GTK (installed with vcpkg) and gstreamer (version 3.18) in c ++.
I noticed several issues during development:
1- Cannot use glimagesink in the application (via gst_video_overlay_set_window_handle), no error is raised but the video is not displayed. glimagesink works fine with gst-launch.
2- Same issue for d3dvideosink
3- d3d11videosink works fine in the app but does not resize when the parent window resizes. We have to stop the pipeline, restore the play state to see the video displayed over all the available space.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1605msdk: ADL YOCTO Timestamping when rendering 8k AV1 video2021-08-04T05:02:59ZLi Ying Gomsdk: ADL YOCTO Timestamping when rendering 8k AV1 videoSUT Information:
- Platform: ADL-S
- OS: Yocto
- Kernel: 5.10.35-intel-ese-standard-lts
Defect Description:
- Timestamping when rendering 8k AV1 video.
- No issue when decoding 8k AV1 video on MSDK.
Command and error:
GST-VAAPI:
`gst...SUT Information:
- Platform: ADL-S
- OS: Yocto
- Kernel: 5.10.35-intel-ese-standard-lts
Defect Description:
- Timestamping when rendering 8k AV1 video.
- No issue when decoding 8k AV1 video on MSDK.
Command and error:
GST-VAAPI:
`gst-launch-1.0 filesrc location=/media/AV1_Videos/Coastguard_7680x4320_3mbps_60fps_Main_at_L6.1.mkv ! matroskademux ! vaapiav1dec ! vaapipostproc ! glimagesink`
GST-MSDK:
`gst-launch-1.0 filesrc location=/media/AV1_Videos/Coastguard_7680x4320_3mbps_60fps_Main_at_L6.1.mkv ! matroskademux ! msdkav1dec async-depth=4 ! msdkvpp ! glimagesink`
root@intel-corei7-64:~# `gst-launch-1.0 filesrc location=/media/AV1_Videos/Coastguard_7680x4320_3mbps_60fps_Main_at_L6.1.mkv ! matroskademux ! msdkav1dec async-depth=4 ! msdkvpp ! glimagesink`
```
Setting pipeline to PAUSED ...
libva info: VA-API version 1.9.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib64/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_9
libva info: va_openDriver() returns 0
Pipeline is PREROLLING ...
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";
Got context from element 'msdkvpp0': gst.msdk.Context=context, gst.msdk.Context=(GstMsdkContext)"\(GstMsdkContext\)\ msdkcontext0";
Redistribute latency...
Pipeline is PREROLLED ...0 %)
Setting pipeline to PLAYING ...
New clock: GstSystemClock
WARNING: from element /GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink: A lot of buffers are being dropped.
Additional debug info:
../git/libs/gst/base/gstbasesink.c(3132): 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:
../git/libs/gst/base/gstbasesink.c(3132): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink:
There may be a timestamping problem, or this computer is too slow.
Got EOS from element "pipeline0".
Execution ended after 0:00:11.634939749
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/901Documentation fo ismlmux example pipelines and output same as mj2mux2023-08-09T08:53:40ZIan MoonDocumentation fo ismlmux example pipelines and output same as mj2mux```
gst/isomp4/gstqtmux-doc.c
* SECTION:element-ismlmux
* @title: ismlmux
* @short_description: Muxer for ISML smooth streaming (.isml) files
*
* This element merges streams (audio and video) into MJ2 (.mj2) files.
...
* ## Exa...```
gst/isomp4/gstqtmux-doc.c
* SECTION:element-ismlmux
* @title: ismlmux
* @short_description: Muxer for ISML smooth streaming (.isml) files
*
* This element merges streams (audio and video) into MJ2 (.mj2) files.
...
* ## Example pipelines
* |[
* gst-launch-1.0 v4l2src num-buffers=50 ! queue ! jp2kenc ! mj2mux ! filesink location=video.mj2
* ]|
* Records a video stream captured from a v4l2 device, encodes it into JPEG-2000
* and muxes it into an mj2 file.
```https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/711Source file documentation section links are not generating text between ancho...2021-09-24T18:48:22ZIan MoonSource file documentation section links are not generating text between anchor tags in html outputExpected:
```
Multiqueue is similar to a normal Queue with the following additional features
```
Actual:
```
Multiqueue is similar to a normal with the following additional features
```
[https://gstreamer.freedesktop.org/documentation/...Expected:
```
Multiqueue is similar to a normal Queue with the following additional features
```
Actual:
```
Multiqueue is similar to a normal with the following additional features
```
[https://gstreamer.freedesktop.org/documentation/coreelements/multiqueue.html?gi-language=c#multiqueue-page](https://gstreamer.freedesktop.org/documentation/coreelements/multiqueue.html?gi-language=c#multiqueue-page)
/plugins/elements/gstmultiqueue.c
```
/**
* SECTION:element-multiqueue
* Multiqueue is similar to a normal #GstQueue with the following additional
```
excerpt [view-source:https://gstreamer.freedesktop.org/documentation/coreelements/multiqueue.html?gi-language=c#multiqueue-page ](view-source:https://gstreamer.freedesktop.org/documentation/coreelements/multiqueue.html?gi-language=c#multiqueue-page)
```
<p>Data is queued until one of the limits specified by the
<a href="GstMultiQueue:max-size-buffers"></a>, <a href="GstMultiQueue:max-size-bytes"></a> and/or
<a href="GstMultiQueue:max-size-time"></a> properties has been reached. Any attempt to push
more buffers into the queue will block the pushing thread until more space
```
No text inside the anchor tags. This is likely prevalent everywhere.https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/900rtspsrc: deadlock on set_state(NULL)2023-06-01T16:16:49ZAlba Mendezme@alba.shrtspsrc: deadlock on set_state(NULL)I've found a deadlock when setting the state of `rtspsrc` to `NULL`. I think this bug is in rtspsrc's side, not our pipeline, but I might be wrong.
- `change_state` waits for the RTSP task to finish.
- It can't finish because it's in th...I've found a deadlock when setting the state of `rtspsrc` to `NULL`. I think this bug is in rtspsrc's side, not our pipeline, but I might be wrong.
- `change_state` waits for the RTSP task to finish.
- It can't finish because it's in the middle of sending EOS to the stream's `udpsrc[0]`, and it's waiting on its `STATE_LOCK`.
- `STATE_LOCK` is held by the RTCP task, which is (due to timeout) also sending EOS to the stream's `udpsrc[0]`. It can't finish because it's waiting for udpsrc's task to finish.
- udpsrc's task can't finish because it's blocked by rtpjitterbuffer's chain function. I suppose the 'flushing' is expected to unblock it, but I still have to investigate further.
Note: (I don't know if it's relevant) I didn't call `gst_element_set_state` on `rtspsrc` directly, but on its immediate parent bin (which is not the pipeline).
Below are the relevant stack traces. This caught me off guard, I'm not 100% sure the stack traces are correct... once I'm able to reproduce again I'll give more info.
Main thread:
- gst_element_set_state(bin, NULL)
- https://gitlab.freedesktop.org/gstreamer/gstreamer/blob/41677a526b83bb2493087af1d93b50c297cf97cd/gst/gstbin.c#L2615
- https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/blob/aad9c8a2165b0bbee957c54262391006e81907af/gst/rtsp/gstrtspsrc.c#L9233
RTSP task:
- https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/blob/aad9c8a2165b0bbee957c54262391006e81907af/gst/rtsp/gstrtspsrc.c#L6189
- https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/blob/aad9c8a2165b0bbee957c54262391006e81907af/gst/rtsp/gstrtspsrc.c#L5049
- https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/blob/aad9c8a2165b0bbee957c54262391006e81907af/gst/rtsp/gstrtspsrc.c#L5003
- https://gitlab.freedesktop.org/gstreamer/gstreamer/blob/b16e96dd878e0c5e7baeb8fad62ca43de1f66982/gst/gstelement.c#L1973
RTCP task:
- https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/blob/aad9c8a2165b0bbee957c54262391006e81907af/gst/rtsp/gstrtspsrc.c#L3600
- https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/blob/aad9c8a2165b0bbee957c54262391006e81907af/gst/rtsp/gstrtspsrc.c#L3581
- https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/blob/aad9c8a2165b0bbee957c54262391006e81907af/gst/rtsp/gstrtspsrc.c#L3543
- https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/blob/aad9c8a2165b0bbee957c54262391006e81907af/gst/rtsp/gstrtspsrc.c#L5003
- https://gitlab.freedesktop.org/gstreamer/gstreamer/blob/5230cab38d22b861fec54174c9285fb4c2f10cef/libs/gst/base/gstbasesrc.c#L1934
udpsrc task:
~~~
#1 0x0000007f884f4b84 in g_cond_wait () at /usr/lib/aarch64-linux-gnu/libglib-2.0.so.0
#2 0x0000007f4aef9a40 in gst_rtp_jitter_buffer_chain () at /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstrtpmanager.so
#3 0x0000007f78167de4 in gst_pad_push_data () at /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#4 0x0000007f781710bc in gst_pad_push () at /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#5 0x0000007f4af0784c in gst_rtp_ssrc_demux_chain () at /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstrtpmanager.so
#6 0x0000007f78167de4 in gst_pad_push_data () at /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#7 0x0000007f781710bc in gst_pad_push () at /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#8 0x0000007f78167de4 in gst_pad_push_data () at /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#9 0x0000007f781710bc in gst_pad_push () at /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#10 0x0000007f4af27a5c in gst_rtp_session_process_rtp () at /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstrtpmanager.so
#11 0x0000007f4af0cb90 in source_push_rtp () at /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstrtpmanager.so
#12 0x0000007f4af1e704 in rtp_source_process_rtp () at /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstrtpmanager.so
#13 0x0000007f4af19a84 in rtp_session_process_rtp () at /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstrtpmanager.so
#14 0x0000007f4af2b460 in gst_rtp_session_chain_recv_rtp () at /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstrtpmanager.so
#15 0x0000007f78167de4 in gst_pad_push_data () at /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#16 0x0000007f781710bc in gst_pad_push () at /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#17 0x0000007f7814f0f4 in gst_proxy_pad_chain_default () at /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#18 0x0000007f78167de4 in gst_pad_push_data () at /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#19 0x0000007f781710bc in gst_pad_push () at /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#20 0x0000007f6b79a734 in gst_base_src_loop () at /usr/lib/aarch64-linux-gnu/libgstbase-1.0.so.0
#21 0x0000007f781aa94c in gst_task_func () at /usr/lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
~~~https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/710Wrong profile-level-id doesn't allow to show video stream on Chrome2022-11-10T09:21:07ZSabri MTIBAAWrong profile-level-id doesn't allow to show video stream on ChromeHello,
I have an issue with the the profile-level-id generated in SDP offer. gstreamer is well launched with different pipelines
tspsrc name=uridb location=rtsp://3xxxxx/media latency=100 ! queue ! webrtcbin name=sendrecv stun-server=st...Hello,
I have an issue with the the profile-level-id generated in SDP offer. gstreamer is well launched with different pipelines
tspsrc name=uridb location=rtsp://3xxxxx/media latency=100 ! queue ! webrtcbin name=sendrecv stun-server=stun://xxxx:19302"
the problem that the video streaming doesn't work only if profile level id to equal 42e01f .. others media streams worked fine.
is it possible to have a way to force the attribute "rofile-level-id" in SDP offer? I mean from the source code.
SDP offer
{
"sdp": {
"type": "offer",
"sdp": "
v=0\r\no=- 5741020075475070333 0 IN IP4 0.0.0.0\r\n
s=-\r\nt=0 0\r\n
a=ice-options:trickle\r\n
m=video 9 UDP/TLS/RTP/SAVPF 96\r\n
c=IN IP4 0.0.0.0\r\na=setup:actpass\r\n
a=ice-ufrag:p1Wf4WFTOUtYhdUgIe4SpcPS9vD47giI\r\n
a=ice-pwd:UjXwzttvUang42eAj5piRmkpZFHBmoO5\r\n
a=rtcp-mux\r\na=rtcp-rsize\r\na=sendrecv\r\n
a=rtpmap:96 H264/90000\r\na=rtcp-fb:96 nack pli\r\n
a=rtcp-fb:96 transport-cc\r\na=charset:Shift_JIS\r\n
a=etag:1234567890\r\na=x-framerate:15\r\na=framerate:15.0\r\n
a=fmtp:96 packetization-mode=1;profile-level-id=4d0028;sprop-parameter-sets=Z00AKIqKUDwBE/Kg,aO48gA==\r\n
a=ssrc:1687063760 msid:user481470074@host-90bfffe2 webrtctransceiver0\r\n
a=ssrc:1687063760 cname:user481470074@host-90bfffe2\r\na=mid:video0\r\n
a=fingerprint:sha-256 C4:59:DC:2D:AD:48:55:AD:8E:5E:4B:4B:33:62:47:05:84:1B:35:49:FE:F2:3E:D2:6D:A4:08:AA:30:4F:4F:C1\r\n
a=rtcp-mux-only\r\n
a=fmtp:96 profile-level-id=42e01f\r\n"
},
"type": "video-offer",
"target": "mobile",
"name": "camera"
}
thanks
Sabri