GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2021-09-24T14:34:20Zhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/385adaptivedemux: Provide API for being able to set properties on internal HTTP ...2021-09-24T14:34:20ZBugzilla Migration Useradaptivedemux: Provide API for being able to set properties on internal HTTP (and other) sources## Submitted by pot..@..ty.com
**[Link to original bug (#765986)](https://bugzilla.gnome.org/show_bug.cgi?id=765986)**
## Description
I hope you will forgive me that I'm not good at English.
I have been using the version 1.8.0 ...## Submitted by pot..@..ty.com
**[Link to original bug (#765986)](https://bugzilla.gnome.org/show_bug.cgi?id=765986)**
## Description
I hope you will forgive me that I'm not good at English.
I have been using the version 1.8.0 of gstreamer.
Now, I am building a pipeline to play the Http Live Streaming(HLS) video.
the http protocol can play on this pipeline.
gst-launch-1.0 souphttpsrc location=http://path/to/hls.m3u8 ! decodebin ! videoconvert ! autovideosink
but, https protocol can't play.
gst-launch-1.0 souphttpsrc ssl-strict=false location=https://path/to/hls.m3u8 ! decodebin ! videoconvert ! autovideosink
By the way, in the case of the mp4 can be played on http protocol.
gst-launch-1.0 souphttpsrc ssl-strict=false location=https://path/to/movie.mp4 ! decodebin ! videoconvert ! autovideosink
Please pointed out if there is a mistake to building a pipeline.
Version: 1.8.0https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/36subparse: add support for external SSA/ASS subtitles2021-09-24T13:20:11ZBugzilla Migration Usersubparse: add support for external SSA/ASS subtitles## Submitted by Ilya K
**[Link to original bug (#625113)](https://bugzilla.gnome.org/show_bug.cgi?id=625113)**
## Description
Can't open subtitles in gstreamer (totem mostly) because of this error. There are similar bugs here: https...## Submitted by Ilya K
**[Link to original bug (#625113)](https://bugzilla.gnome.org/show_bug.cgi?id=625113)**
## Description
Can't open subtitles in gstreamer (totem mostly) because of this error. There are similar bugs here: https://bugzilla.gnome.org/show_bug.cgi?id=587704 and here: https://bugs.launchpad.net/gst-plugins-base/+bug/402221
Running latest GStreamer and totem on ubuntu maverick
That's the full log of what happens when I run Totem with debug level 2:
(totem:2989): GLib-GObject-WARNING **: value "10752000" of type `guint' is invalid or out of range for property `connection-speed' of type `guint'
0:00:08.900728007 2989 0x8ac5080 WARN decodebin2 gstdecodebin2.c:1916:type_found:<decodebin21> error: Этот файл является текстовым
0:00:08.900758696 2989 0x8ac5080 WARN decodebin2 gstdecodebin2.c:1916:type_found:<decodebin21> error: decodebin2 cannot decode plain text files
0:00:08.901170990 2989 0x8ea76e0 WARN basesrc gstbasesrc.c:2550:gst_base_src_loop:<source> error: Внутренняя ошибка передачи данных.
0:00:08.901193324 2989 0x8ea76e0 WARN basesrc gstbasesrc.c:2550:gst_base_src_loop:<source> error: streaming task paused, reason not-linked (-1)
0:00:08.906839287 2989 0x8ef7a10 WARN qtdemux qtdemux_types.c:170:qtdemux_type_get: unknown QuickTime node type iods
0:00:08.906880790 2989 0x8ef7a10 WARN qtdemux qtdemux_types.c:170:qtdemux_type_get: unknown QuickTime node type avc1
0:00:08.906894991 2989 0x8ef7a10 WARN qtdemux qtdemux_types.c:170:qtdemux_type_get: unknown QuickTime node type avcC
0:00:08.906908383 2989 0x8ef7a10 WARN qtdemux qtdemux_types.c:170:qtdemux_type_get: unknown QuickTime node type btrt
0:00:08.906928473 2989 0x8ef7a10 WARN qtdemux qtdemux_types.c:170:qtdemux_type_get: unknown QuickTime node type chpl
0:00:08.909919508 2989 0x8ef7a10 WARN qtdemux qtdemux.c:5810:qtdemux_parse_trak:<qtdemux1> unknown version 00000000
0:00:08.958753741 2989 0x8ac5080 WARN totem bacon-video-widget-gst-0.10.c:2093:bvw_bus_message_cb: Warning message: warning message from element 'decodebin21': GstMessageWarning, gerror=(GError)NULL, debug=(string)"gstdecodebin2.c\(1916\):\ type_found\ \(\):\ /GstPlayBin2:play/GstURIDecodeBin:uridecodebin1/GstDecodeBin2:decodebin21:\012decodebin2\ cannot\ decode\ plain\ text\ files";
0:00:08.981539951 2989 0x8f4f330 WARN pulse pulsesink.c:558:gst_pulsering_stream_underflow_cb:<autoaudiosink2-actual-sink-pulse> Got underflow
0:00:08.984938230 2989 0x8f4f330 WARN pulse pulsesink.c:558:gst_pulsering_stream_underflow_cb:<autoaudiosink2-actual-sink-pulse> Got underflow
0:00:08.985001837 2989 0x8f4f330 WARN pulse pulsesink.c:558:gst_pulsering_stream_underflow_cb:<autoaudiosink2-actual-sink-pulse> Got underflow
0:00:08.985043041 2989 0x8f4f330 WARN pulse pulsesink.c:558:gst_pulsering_stream_underflow_cb:<autoaudiosink2-actual-sink-pulse> Got underflow
0:00:08.985081469 2989 0x8f4f330 WARN pulse pulsesink.c:558:gst_pulsering_stream_underflow_cb:<autoaudiosink2-actual-sink-pulse> Got underflow
0:00:09.054364084 2989 0x8ac5080 WARN totem bacon-video-widget-gst-0.10.c:1604:bvw_handle_element_message: Unhandled element message playbin2-stream-changed from play: element message from element 'play': playbin2-stream-changed, uri=(string)".../video.mp4", suburi=(string)".../video.ass";
(cut off the paths as they're too long)https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/524Meson: GStreamer 1.24.0 static build fails in gstreamer-plugins-rs because of...2024-03-28T09:00:36ZSeungmin KimMeson: GStreamer 1.24.0 static build fails in gstreamer-plugins-rs because of LTO issuesDevelopers: @dabrain34 @slomo
Build pipeline: https://github.com/selkies-project/selkies-gstreamer/blob/main/addons/gstreamer/Dockerfile
The Meson setup was changed to:
```
meson setup --prefix /opt/gstreamer -Dbuildtype=release --def...Developers: @dabrain34 @slomo
Build pipeline: https://github.com/selkies-project/selkies-gstreamer/blob/main/addons/gstreamer/Dockerfile
The Meson setup was changed to:
```
meson setup --prefix /opt/gstreamer -Dbuildtype=release --default-library=static -Dgstreamer-1.0:gst-full-target-type=static_library -Dpython=enabled -Drs=enabled -Dgpl=enabled -Dbad=enabled -Dugly=enabled -Dlibav=enabled -Dgst-plugins-bad:qsv=enabled -Dgst-plugins-bad:va=enabled -Dgst-plugins-bad:openh264=enabled -Dgst-plugins-ugly:x264=enabled -Ddevtools=disabled -Ddoc=disabled -Dexamples=disabled -Dtests=disabled builddir
```
Logs:
`--default-library=static -Dgstreamer-1.0:gst-full-target-type=shared_library`: https://pastebin.com/raw/3H6Z7KwQ
`--default-library=static -Dgstreamer-1.0:gst-full-target-type=static_library`: https://pastebin.com/raw/BPbNSw5j
@slomo commented:
```
so yes, that's a rust problem but i was under the impression that this was worked around somehow in gstreamer-full too. cerbero has a workaround for it in any case
https://github.com/rust-lang/rust/issues/44322
```https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg/-/issues/42Make b_lto work with libav/FFmpeg again in 1.24.x2024-03-28T08:52:16ZSeungmin KimMake b_lto work with libav/FFmpeg again in 1.24.xThe below occurs on any shared (not static) build compiling FFmpeg while using `-Db_lto=true` (was not the case in GStreamer 1.22.x):
```
[5823/5825] Generating subprojects/gst-plugins-rs/gst-plugins-rs-pc-files with a custom command
[5...The below occurs on any shared (not static) build compiling FFmpeg while using `-Db_lto=true` (was not the case in GStreamer 1.22.x):
```
[5823/5825] Generating subprojects/gst-plugins-rs/gst-plugins-rs-pc-files with a custom command
[5825/5825] Linking target subprojects/gst-libav/ext/libav/libgstlibav.so
FAILED: subprojects/gst-libav/ext/libav/libgstlibav.so
cc -o subprojects/gst-libav/ext/libav/libgstlibav.so subprojects/gst-libav/ext/libav/libgstlibav.so.p/gstav.c.o subprojects/gst-libav/ext/libav/libgstlibav.so.p/gstavprotocol.c.o subprojects/gst-libav/ext/libav/libgstlibav.so.p/gstavcodecmap.c.o subprojects/gst-libav/ext/libav/libgstlibav.so.p/gstavutils.c.o subprojects/gst-libav/ext/libav/libgstlibav.so.p/gstavaudenc.c.o subprojects/gst-libav/ext/libav/libgstlibav.so.p/gstavvidenc.c.o subprojects/gst-libav/ext/libav/libgstlibav.so.p/gstavauddec.c.o subprojects/gst-libav/ext/libav/libgstlibav.so.p/gstavviddec.c.o subprojects/gst-libav/ext/libav/libgstlibav.so.p/gstavcfg.c.o subprojects/gst-libav/ext/libav/libgstlibav.so.p/gstavdemux.c.o subprojects/gst-libav/ext/libav/libgstlibav.so.p/gstavmux.c.o subprojects/gst-libav/ext/libav/libgstlibav.so.p/gstavdeinterlace.c.o subprojects/gst-libav/ext/libav/libgstlibav.so.p/gstavvidcmp.c.o -flto -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC -Wl,-soname,libgstlibav.so -Wl,-z,nodelete -Wl,--exclude-libs=ALL '-Wl,-rpath,$ORIGIN/../../../gstreamer/gst:$ORIGIN/../../../gstreamer/libs/gst/base:$ORIGIN/../../../gst-plugins-base/gst-libs/gst/video:$ORIGIN/../../../orc/orc:$ORIGIN/../../../gst-plugins-base/gst-libs/gst/audio:$ORIGIN/../../../gst-plugins-base/gst-libs/gst/tag:$ORIGIN/../../../gst-plugins-base/gst-libs/gst/pbutils' -Wl,-rpath-link,/tmp/gstreamer/builddir/subprojects/gstreamer/gst -Wl,-rpath-link,/tmp/gstreamer/builddir/subprojects/gstreamer/libs/gst/base -Wl,-rpath-link,/tmp/gstreamer/builddir/subprojects/gst-plugins-base/gst-libs/gst/video -Wl,-rpath-link,/tmp/gstreamer/builddir/subprojects/orc/orc -Wl,-rpath-link,/tmp/gstreamer/builddir/subprojects/gst-plugins-base/gst-libs/gst/audio -Wl,-rpath-link,/tmp/gstreamer/builddir/subprojects/gst-plugins-base/gst-libs/gst/tag -Wl,-rpath-link,/tmp/gstreamer/builddir/subprojects/gst-plugins-base/gst-libs/gst/pbutils -Wl,--start-group subprojects/FFmpeg/libavfilter.a subprojects/FFmpeg/libavutil.a subprojects/FFmpeg/libavformat.a subprojects/FFmpeg/libavcodec.a subprojects/FFmpeg/libswresample.a subprojects/FFmpeg/libswscale.a subprojects/FFmpeg/libpostproc.a subprojects/gstreamer/gst/libgstreamer-1.0.so.0.2400.0 subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.2400.0 subprojects/gst-plugins-base/gst-libs/gst/video/libgstvideo-1.0.so.0.2400.0 subprojects/orc/orc/liborc-0.4.so.0.37.0 subprojects/gst-plugins-base/gst-libs/gst/audio/libgstaudio-1.0.so.0.2400.0 subprojects/gst-plugins-base/gst-libs/gst/tag/libgsttag-1.0.so.0.2400.0 subprojects/gst-plugins-base/gst-libs/gst/pbutils/libgstpbutils-1.0.so.0.2400.0 -pthread -lm -latomic -lz -lbz2 -ldl /usr/lib/x86_64-linux-gnu/libglib-2.0.so /usr/lib/x86_64-linux-gnu/libgobject-2.0.so /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so /usr/lib/x86_64-linux-gnu/libz.so -latomic -lz -lbz2 -latomic -latomic -lz -lbz2 -latomic -lz -latomic -latomic -latomic -Wl,--end-group
../subprojects/FFmpeg/libswscale/x86/rgb2rgb_template.c:1821:6: warning: type of ‘ff_nv12ToUV_avx’ does not match original declaration [-Wlto-type-mismatch]
1821 | void RENAME(ff_nv12ToUV)(uint8_t *dstU, uint8_t *dstV,
| ^
../subprojects/FFmpeg/libswscale/x86/swscale.c:323:1: note: type mismatch in parameter 8
323 | INPUT_FUNCS(avx);
| ^
../subprojects/FFmpeg/libswscale/x86/swscale.c:323:1: note: ‘ff_nv12ToUV_avx’ was previously declared here
../subprojects/FFmpeg/libswscale/x86/rgb2rgb_template.c:1821:6: warning: type of ‘ff_nv12ToUV_sse2’ does not match original declaration [-Wlto-type-mismatch]
1821 | void RENAME(ff_nv12ToUV)(uint8_t *dstU, uint8_t *dstV,
| ^
../subprojects/FFmpeg/libswscale/x86/swscale.c:321:1: note: type mismatch in parameter 8
321 | INPUT_FUNCS(sse2);
| ^
../subprojects/FFmpeg/libswscale/x86/swscale.c:321:1: note: ‘ff_nv12ToUV_sse2’ was previously declared here
/usr/bin/ld: subprojects/FFmpeg/libavutil.a(tx_float.asm.o): relocation R_X86_64_PC32 against symbol `ff_tx_tab_32_float' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
```
Build pipeline:
https://github.com/selkies-project/selkies-gstreamer/blob/main/addons/gstreamer/Dockerfilehttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3408NVIDIA NvFBC Linux screen capture element2024-03-20T14:13:17ZSeungmin KimNVIDIA NvFBC Linux screen capture elementMaintainer of nvcodec: @seungha.yang
Proof of concept implementation: https://github.com/CERIT-SC/gstreamer-nvimagesrc
This proposal for a new element provides a high-performance screen capture API in Linux for NVIDIA GPUs. Requires T...Maintainer of nvcodec: @seungha.yang
Proof of concept implementation: https://github.com/CERIT-SC/gstreamer-nvimagesrc
This proposal for a new element provides a high-performance screen capture API in Linux for NVIDIA GPUs. Requires Tesla, Quadro, GRID, or equivalent GPUs. I may provide (albeit limited in capabilities) an instance with such GPU if you ask.
This is mainly intended as an alternative to `ximagesrc`, which uses X11 MIT-SHM.
More information: https://developer.nvidia.com/capture-sdk
Unfortunately, this doesn't work on Wayland, yet, but is expected to be implemented over time.
https://forums.developer.nvidia.com/t/wayland-information-for-r545-beta-release/214275
If you're also interested and you're in the industry, please consider sponsoring.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3364lv2: Invalid pg:role port property for Calf patches2024-03-07T17:54:45ZVladimir Sadovnikovlv2: Invalid pg:role port property for Calf patchesHere's the patch for Calf that defines port roles.
https://github.com/GStreamer/gstreamer/blob/main/subprojects/gst-plugins-bad/ext/lv2/calf-lv2-port-groups.patch
But according to LV2 specification, there is no `pg:role` property (as a...Here's the patch for Calf that defines port roles.
https://github.com/GStreamer/gstreamer/blob/main/subprojects/gst-plugins-bad/ext/lv2/calf-lv2-port-groups.patch
But according to LV2 specification, there is no `pg:role` property (as a part of Port Group extension) for the port:
https://lv2plug.in/ns/ext/port-groups
The definition `pg:group` is correct but if we dig into the `pg:group` specification, we get:
https://lv2plug.in/ns/ext/port-groups#group
> Indicates that this port is a part of a group of ports on the plugin. The port should also have an lv2:designation property to define its designation within that group.
So actually instead of `pg:role` the right way to define the port role is usage of the `lv2:designation` property.
Also, there is no `pg:leftChannel` nor `pg:rightChannel` according to the LV2 spec. There are only `pg:left` and `pg:right` definitions:
https://lv2plug.in/ns/ext/port-groups#left
https://lv2plug.in/ns/ext/port-groups#right
This breaks compatibility with plugins that provide the right definition of port groups.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3354va: radeonsi: DRM RGB formats doesn't look correctly mapped to VA formats2024-03-21T11:46:48ZVíctor Manuel Jáquez Lealva: radeonsi: DRM RGB formats doesn't look correctly mapped to VA formatsFrom the matrix channel:
> robert.mader
>
> Hm, is it just me or does vapostproc on AMD really only support RGB formats that the same Mesa driver does not support for texturing (it supports e.g. DRM BA24 while EGL only supports AB24)? H...From the matrix channel:
> robert.mader
>
> Hm, is it just me or does vapostproc on AMD really only support RGB formats that the same Mesa driver does not support for texturing (it supports e.g. DRM BA24 while EGL only supports AB24)? Has > anyone recall such issues with va on AMD?1.24.2https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3347MinGW build errors2024-03-11T21:32:37Zanonymix007MinGW build errorsBuild commands from README do not seem to work.
```
BUILDDIR=$PWD/winebuild/
export WINEPREFIX=$BUILDDIR/wine-prefix/ && mkdir -p $WINEPREFIX
export PREFIX=~/work/gstreamer-mingw_x86_64/
meson/meson.py $BUILDDIR --cross-file meson/cross/...Build commands from README do not seem to work.
```
BUILDDIR=$PWD/winebuild/
export WINEPREFIX=$BUILDDIR/wine-prefix/ && mkdir -p $WINEPREFIX
export PREFIX=~/work/gstreamer-mingw_x86_64/
meson/meson.py $BUILDDIR --cross-file meson/cross/linux-mingw-w64-64bit.txt -Dgst-plugins-bad:vulkan=disabled -Dorc:gtk_doc=disabled --prefix=$PREFIX -Djson-glib:gtk_doc=disabled
meson/meson.py install -C $BUILDDIR/
```
Same with static library:
```
meson/meson.py setup $BUILDDIR --cross-file meson/cross/linux-mingw-w64-64bit.txt -Dgst-plugins-bad:vulkan=disabled -Dorc:gtk_doc=disabled --prefix=$PREFIX --default-library=static -Dgood=enabled -Dbad=enabled -Dugly=enabled -Dgpl=enabled -Dgst-full-target-type=static_library -Djson-glib:gtk_doc=disabled
```
Setup is fine, but install fails with:
```
ninja: Entering directory `/home/user/work/gstreamer/winebuild'
ninja: error: 'subprojects/libsoup-2.74.3/libsoup/soup-enum-types.h', needed by 'subprojects/gst-plugins-good/ext/soup/libgstsoup.a.p/gstsoup.c.obj', missing and no known rule to make it
Could not rebuild /home/user/work/gstreamer/winebuild
```https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/508ci: Make use of gitlab-clippy for clippy job2024-03-27T11:07:32ZSebastian Drögeci: Make use of gitlab-clippy for clippy jobhttps://crates.io/crates/gitlab_clippy
Same thing for gst-plugins-rs.
CC @alatierahttps://crates.io/crates/gitlab_clippy
Same thing for gst-plugins-rs.
CC @alatierahttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3237webrtcbin should ignore some fields when answering2024-01-24T19:37:18ZJan Schmidtwebrtcbin should ignore some fields when answeringWhen intersecting local codec-preference caps with a peer's SDP, webrtcbin should ignore some fields depending on the codec.
For example, with Opus, mismatched `sprop-stereo` or `sprop-maxcapturerate` fields can lead to a failure to neg...When intersecting local codec-preference caps with a peer's SDP, webrtcbin should ignore some fields depending on the codec.
For example, with Opus, mismatched `sprop-stereo` or `sprop-maxcapturerate` fields can lead to a failure to negotiate a sendrecv media, even though the fields are purely informative from the sender side as per https://datatracker.ietf.org/doc/html/rfc7587#section-7.1
```
_create_answer_task:<sendrecv> did not find compatible transceiver for offer caps application/x-rtp, media=(string)audio, payload=(int)97, clock-rate=(int)48000, encoding-name=(string)OPUS, encoding-params=(string)2, sprop-stereo=(string)0, sprop-maxcapturerate=(string)48000, rtcp-fb-transport-cc=(boolean)true, will only receive
```https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3212debug: Add API to push/pop current object to TLS for logging purposes2024-01-09T06:54:20ZSebastian Drögedebug: Add API to push/pop current object to TLS for logging purposesCurrently we either have to pass through objects to code that does not concern itself with the object just for logging purposes, or get logs that are unconnected to the object that initially initiated them.
It would be great if we had s...Currently we either have to pass through objects to code that does not concern itself with the object just for logging purposes, or get logs that are unconnected to the object that initially initiated them.
It would be great if we had some API that allows pushing/popping the current object to a TLS variable, and then `GST_DEBUG()` etc make use of that if set. This would, for example, allow the code in `GstVideoConverter` to print the `videoconvert` object as part of the debug logs instead of just printing generic logs.
Main question here would be if this has considerable performance impact if logging is disabled (you'd still need to push/pop the object because you don't know what actual debug category and level is used at a later time).https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3154GLImageSink crashes randomly on OSX2023-11-24T12:40:40ZHåvard GraffGLImageSink crashes randomly on OSX### Describe your issue:
Trying to use GstGLImageSink in a product on OSX, it will cause both memory corruption and other NULL-pointer crashes.
#### Expected Behavior:
Being able to use it without it crashing the system
#### Observed...### Describe your issue:
Trying to use GstGLImageSink in a product on OSX, it will cause both memory corruption and other NULL-pointer crashes.
#### Expected Behavior:
Being able to use it without it crashing the system
#### Observed Behavior:
Crashes almost all the time if you go start, stop and start again.
#### Setup
- **Operating System: macOS Ventura 13.4**
- **Device:** MacBook Pro - 2,4 GHz 8-Core Intel Core i9
- **GStreamer Version: latest main**
### Steps to reproduce the bug:
I have a PR here with an example that reproduces the bug almost 100% on my machine:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5708
### Solutions you have tried:
Supplying a custom GstGLContext seems to help the frequency of the memory corruption, but this could just be coincidence.
The PR includes commented out code for doing this.
### Additional Information:
I have not tried this on other platforms than OSX, so don't know if the problem is present there as well.
Using OpenGL with GStreamer on OSX is basically unusable until this issue is fixed.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3115gst-python: How to register metadata using python bindings i.e. Gst.meta_regi...2023-11-09T17:40:03ZHimanshu Mittalgst-python: How to register metadata using python bindings i.e. Gst.meta_register()Gst.meta_register() requires 6 arguments where last 3 arguments are Gst.MetaInitFunction, Gst.MetaFreeFunction and Gst.MetaTransformFunction respectively. I am not able to pass those 3 arguments in python. It throws ValueError: GType Inv...Gst.meta_register() requires 6 arguments where last 3 arguments are Gst.MetaInitFunction, Gst.MetaFreeFunction and Gst.MetaTransformFunction respectively. I am not able to pass those 3 arguments in python. It throws ValueError: GType Invalid.
I have tried to send it as:
1. Regular python function: Throws ValueError
2. Using ctypes functype wrapper on regular python function: Unable to implement because Gst.Buffer do not have ctypes structure.
3. Wrapping them in Gst.MetaInitFunction and alike: Throws NotImplementedError
I want to register my custom metadata with python so that I can take advantage of python dynamic data types. My meta changes on run time and hence I want to register my metadata every time it encounters a new metadata format. This is not possible to write in C as I cannot define this dynamic ctype Structures in C. I must call Gst.meta_register() from python to achieve this.
Any help would be appreciated.
Thanks,
Himanshu Mittalhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3114gst-python: Gst.ValueArray.append_value() does not have any effect2023-11-09T17:34:50ZSebastian Drögegst-python: Gst.ValueArray.append_value() does not have any effect```python
import gi
gi.require_version('Gst', '1.0')
from gi.repository import Gst
if __name__ == '__main__':
Gst.init([])
array = Gst.ValueArray([])
Gst.ValueArray.append_value(array, 12)
print(type(array)) # <class ...```python
import gi
gi.require_version('Gst', '1.0')
from gi.repository import Gst
if __name__ == '__main__':
Gst.init([])
array = Gst.ValueArray([])
Gst.ValueArray.append_value(array, 12)
print(type(array)) # <class 'gi.overrides.Gst.ValueArray'>
print("get_size", Gst.ValueArray.get_size(array)) # get_size 0
```
Creating the value array with elements in the constructor works fine though.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3113gst-python overrides not listed in documentation, such as python equivalent o...2023-11-09T17:33:10ZR S Nikhil Krishnagst-python overrides not listed in documentation, such as python equivalent of `gst_element_link_many`There exists no python equivalent of `gst_element_link_many()`, as seen with the "not introspectable" error [here in the docs](https://gstreamer.freedesktop.org/documentation/gstreamer/gstelement.html?gi-language=python)
![image](/uploa...There exists no python equivalent of `gst_element_link_many()`, as seen with the "not introspectable" error [here in the docs](https://gstreamer.freedesktop.org/documentation/gstreamer/gstelement.html?gi-language=python)
![image](/uploads/771736e5799a777b78b41192410e0c50/image.png)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3111gst-python: Is there any way to automatically generate stubs for all the modu...2023-11-09T17:28:42ZLLgst-python: Is there any way to automatically generate stubs for all the modules and plugins?I wonder is there any pyi stub files for gstreamer? There is a tool called stubgen from mypy, but it seems does not work with gi.repository which dynamically loads libraries.I wonder is there any pyi stub files for gstreamer? There is a tool called stubgen from mypy, but it seems does not work with gi.repository which dynamically loads libraries.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3092jackaudiosink incompatible with Pipewire2023-11-05T21:23:00ZFrancesco Cerutijackaudiosink incompatible with Pipewire## Description of Problem:
A pipeline using a "jackaudiosink" element will not be able to play any sound, most of the time.
## Steps to Reproduce:
1. Run a pipeline like `gst-launch-1.0 audiotestsrc ! audioconvert ! audioresample ! ja...## Description of Problem:
A pipeline using a "jackaudiosink" element will not be able to play any sound, most of the time.
## Steps to Reproduce:
1. Run a pipeline like `gst-launch-1.0 audiotestsrc ! audioconvert ! audioresample ! jackaudiosink`
Output:
```plaintext
Setting pipeline to PAUSED ...
ERROR: from element /GstPipeline:pipeline0/GstJackAudioSink:jackaudiosink0: Resource not found.
Additional debug info:
../gstreamer/subprojects/gst-plugins-good/ext/jack/gstjackaudiosink.c(308): jack_shutdown_cb (): /GstPipeline:pipeline0/GstJackAudioSink:jackaudiosink0:
Jack server shutdown
ERROR: pipeline doesn't want to preroll.
Pipeline is PREROLLING ...
Redistribute latency...
Redistribute latency...
0:00:00.0 / 99:99:99.
```
## Debugging
This issue similar to this: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2324
Here's a bt of the `jack_shutdown_cb()` function getting called:
```plaintext
#0 jack_shutdown_cb (arg=arg@entry=0x55555581b470) at ../gstreamer/subprojects/gst-plugins-good/ext/jack/gstjackaudioclient.c:206
#1 0x00007ffff76933d0 in jack_sample_rate_cb (nframes=<optimized out>, arg=arg@entry=0x55555581b470) at ../gstreamer/subprojects/gst-plugins-good/ext/jack/gstjackaudioclient.c:237
#2 0x00007ffff7142e0a in jack_set_sample_rate_callback (client=client@entry=0x55555585e260, srate_callback=srate_callback@entry=0x7ffff76933c0 <jack_sample_rate_cb>, arg=arg@entry=0x55555581b470) at ../pipewire/pipewire-jack/src/pipewire-jack.c:4546
#3 0x00007ffff7693724 in gst_jack_audio_make_connection (status=0x7fffffffd674, jclient=<optimized out>, server=0x0, id=0x5555555697f0 "gst-launch-1.0") at ../gstreamer/subprojects/gst-plugins-good/ext/jack/gstjackaudioclient.c:320
#4 gst_jack_audio_get_connection (status=0x7fffffffd674, jclient=<optimized out>, server=0x0, id=0x5555555697f0 "gst-launch-1.0") at ../gstreamer/subprojects/gst-plugins-good/ext/jack/gstjackaudioclient.c:375
#5 gst_jack_audio_client_new
(id=0x5555555697f0 "gst-launch-1.0", server=0x0, jclient=<optimized out>, type=type@entry=GST_JACK_CLIENT_SINK, shutdown=shutdown@entry=0x7ffff76946c0 <jack_shutdown_cb>, process=process@entry=0x7ffff7695bc0 <jack_process_cb>, buffer_size=0x7ffff7694570 <jack_buffer_size_cb>, sample_rate=0x7ffff7694420 <jack_sample_rate_cb>, user_data=0x5555558782d0, status=0x7fffffffd674) at ../gstreamer/subprojects/gst-plugins-good/ext/jack/gstjackaudioclient.c:514
#6 0x00007ffff7694e70 in gst_jack_ring_buffer_open_device (buf=0x5555558782d0 [GstAudioRingBuffer|jackaudiosinkringbuffer0]) at ../gstreamer/subprojects/gst-plugins-good/ext/jack/gstjackaudiosink.c:342
#7 0x00007ffff764a167 in gst_audio_ring_buffer_open_device (buf=0x5555558782d0 [GstAudioRingBuffer|jackaudiosinkringbuffer0]) at ../gstreamer/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudioringbuffer.c:469
#8 gst_audio_ring_buffer_open_device (buf=0x5555558782d0 [GstAudioRingBuffer|jackaudiosinkringbuffer0]) at ../gstreamer/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudioringbuffer.c:449
#9 0x00007ffff76316a6 in gst_audio_base_sink_change_state (element=0x5555558751a0 [GstElement|jackaudiosink0], transition=GST_STATE_CHANGE_NULL_TO_READY) at ../gstreamer/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudiobasesink.c:2415
#10 0x00007ffff7e9c6ef in gst_element_change_state (element=element@entry=0x5555558751a0 [GstElement|jackaudiosink0], transition=transition@entry=GST_STATE_CHANGE_NULL_TO_READY) at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:3093
#11 0x00007ffff7e9cfb6 in gst_element_set_state_func (element=0x5555558751a0 [GstElement|jackaudiosink0], state=GST_STATE_READY) at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:3047
#12 0x00007ffff7e74534 in gst_bin_element_set_state (next=<optimized out>, current=<optimized out>, start_time=0 [0:00:00.000000000], base_time=0 [0:00:00.000000000], element=0x5555558751a0 [GstElement|jackaudiosink0], bin=<optimized out>)
at ../gstreamer/subprojects/gstreamer/gst/gstbin.c:2582
#13 gst_bin_change_state_func (element=0x555555876030 [GstElement|pipeline0], transition=GST_STATE_CHANGE_NULL_TO_READY) at ../gstreamer/subprojects/gstreamer/gst/gstbin.c:2931
#14 0x00007ffff7e9c6ef in gst_element_change_state (element=element@entry=0x555555876030 [GstElement|pipeline0], transition=transition@entry=GST_STATE_CHANGE_NULL_TO_READY) at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:3093
#15 0x00007ffff7e9cfb6 in gst_element_set_state_func (element=0x555555876030 [GstElement|pipeline0], state=GST_STATE_PAUSED) at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:3047
#16 0x00005555555598bb in real_main (argc=<optimized out>, argv=<optimized out>) at ../gstreamer/subprojects/gstreamer/tools/gst-launch.c:1278
#17 0x00007ffff7ac6cd0 in __libc_start_call_main (main=main@entry=0x555555557020 <main>, argc=argc@entry=8, argv=argv@entry=0x7fffffffdd98) at ../sysdeps/nptl/libc_start_call_main.h:58
#18 0x00007ffff7ac6d8a in __libc_start_main_impl (main=0x555555557020 <main>, argc=8, argv=0x7fffffffdd98, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdd88) at ../csu/libc-start.c:360
#19 0x0000555555557055 in _start ()
```
Pipewire seem to call the `jack_sample_rate_cb` callback immediately, here [pipewire-jack.c#L4530](https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/90e4ee94ec207a55748a101c4b50615f5536e76b/pipewire-jack/src/pipewire-jack.c#L4530).
From the `jackaudiosink` docs, changes in the buffer size and/or sample-rate are not supported.
And from the code here: [gstjackaudioclient.c#L337](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/808c27b4cc8645e137120ccda024b46ed75a4868/subprojects/gst-plugins-good/ext/jack/gstjackaudioclient.c#L337) we can see that the client is closed if that happens.
It would be nice if GStreamer was able to properly handle this callbacks instead :)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3080GStreamer on Android with glimagesink does not work2023-10-31T16:16:03ZTylerGStreamer on Android with glimagesink does not work### Describe your issue
Using GStreamer 1.22.5 and glimagesink. On an Orange Pi 5 (RK3588s) chip I am unable to get glimagesink to play a 60fps smoothly at all. Local file playback or http stream.
#### Expected Behavior
A simple video f...### Describe your issue
Using GStreamer 1.22.5 and glimagesink. On an Orange Pi 5 (RK3588s) chip I am unable to get glimagesink to play a 60fps smoothly at all. Local file playback or http stream.
#### Expected Behavior
A simple video file should be able to play smoothly on the RK3588s chip.
#### Observed Behavior
Unwatchable video, plays one frame and then after 30 seconds another frame shows up.
#### Setup
- **Video:** https://archive.org/details/BigBuckBunnyFULLHD60FPS
- **Operating System:** Android 12
- **Device:** Orange Pi 5
- **GStreamer Version:** 1.22.5
### Steps to reproduce the bug
Take this code from:
https://gstreamer.freedesktop.org/documentation/tutorials/android/video.html?gi-language=c
and replace the pipeline with:
playbin uri=file://path/to/big/buck/bunny/60fps video-sink=glimagesink
### How reproducible is the bug?
Always reproduceable.
### Screenshots if relevant
### Solutions you have tried
### Related non-duplicate issues
### Additional Information
```
GStreamer+libav D 0:00:26.913173746 0xb400007d03078b80 :0: nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
GStreamer+...ERFORMANCE D 0:00:26.913178412 0xb400007d22e679e0 ../gst/gstminiobject.c:542:ensure_priv_data allocating private data GstMemory miniobject 0xb400007d5354bd70
GStreamer+libav D 0:00:26.913229162 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:926:gst_ffmpegviddec_get_buffer2:<avdec_h264-0> getting buffer picture 0xb400007ce2ec9440
GStreamer+...ERFORMANCE D 0:00:26.913236746 0xb400007d22e679e0 ../gst/gstminiobject.c:441:gst_mini_object_make_writable copy GstBuffer miniobject 0xb400007d82ee8120 -> 0xb400007d82ee6a20
GStreamer+libav D 0:00:26.913280787 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:932:gst_ffmpegviddec_get_buffer2:<avdec_h264-0> opaque value SN 253
GStreamer+...rsers_h264 D 0:00:26.913325412 0xb400007d22e679e0 ../gst-libs/gst/codecparsers/gsth264parser.c:250:gst_h264_parse_nalu_header Nal type 1, ref_idc 0
GStreamer+videodecoder D 0:00:26.913350787 0xb400007d22f31b00 ../gst-libs/gst/video/gstvideodecoder.c:4184:gst_video_decoder_get_frame:<avdec_h264-0> frame_number : 253
GStreamer+h264parse D 0:00:26.913391621 0xb400007d22e679e0 ../gst/videoparsers/gsth264parse.c:1264:gst_h264_parse_handle_frame_packetized:<h264parse0> AVC nal offset 12083
GStreamer+libav D 0:00:26.913429537 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:734:gst_ffmpegviddec_video_frame_new:<avdec_h264-0> new video frame 0xb400007db2e773d0
GStreamer+h264parse D 0:00:26.913463662 0xb400007d22e679e0 ../gst/videoparsers/gsth264parse.c:972:gst_h264_parse_process_nal:<h264parse0> processing nal of type 1 Slice, size 12079
GStreamer+libav D 0:00:26.913492537 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:959:gst_ffmpegviddec_get_buffer2:<avdec_h264-0> storing opaque 0xb400007db2e773d0
GStreamer+h264parse D 0:00:26.913531037 0xb400007d22e679e0 ../gst/videoparsers/gsth264parse.c:1086:gst_h264_parse_process_nal:<h264parse0> first_mb_in_slice = 0
GStreamer+h264parse D 0:00:26.913592871 0xb400007d22e679e0 ../gst/videoparsers/gsth264parse.c:1089:gst_h264_parse_process_nal:<h264parse0> frame start: 1
GStreamer+...rsers_h264 D 0:00:26.913633996 0xb400007d22e679e0 ../gst-libs/gst/codecparsers/gsth264parser.c:2294:gst_h264_parser_parse_slice_hdr parsing "Slice header", slice type 6
GStreamer+h264parse D 0:00:26.913677162 0xb400007d22e679e0 ../gst/videoparsers/gsth264parse.c:1097:gst_h264_parse_process_nal:<h264parse0> parse result 0, first MB: 0, slice type: 6
GStreamer+h264parse D 0:00:26.913722954 0xb400007d22e679e0 ../gst/videoparsers/gsth264parse.c:488:gst_h264_parse_wrap_nal:<h264parse0> nal length 12079
GStreamer+libav D 0:00:26.913736662 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:1654:gst_ffmpegviddec_do_qos:<avdec_h264-0> decoding time 171114664
GStreamer+GST_MEMORY D 0:00:26.913760579 0xb400007d22e679e0 ../gst/gstmemory.c:141:gst_memory_init new memory 0xb400007da2e7ccd0, maxsize:12090 offset:0 size:12083
GStreamer+libav D 0:00:26.913814246 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:1835:gst_ffmpegviddec_video_frame:<avdec_h264-0> pts 4100000000 duration 16666666
GStreamer+...rsers_h264 D 0:00:26.913882787 0xb400007d22e679e0 ../gst-libs/gst/codecparsers/gsth264parser.c:1617:gst_h264_parser_identify_nalu_avc Can't parse, buffer has too small size 12083, offset 12083
GStreamer+libav D 0:00:26.913883954 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:1837:gst_ffmpegviddec_video_frame:<avdec_h264-0> picture: pts 0
GStreamer+libav D 0:00:26.913970287 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:1839:gst_ffmpegviddec_video_frame:<avdec_h264-0> picture: num 168
GStreamer+libav D 0:00:26.914023079 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:1841:gst_ffmpegviddec_video_frame:<avdec_h264-0> picture: display 0
GStreamer+GST_CAPS D 0:00:26.913945496 0xb400007d22e679e0 ../gst/gstpad.c:2715:gst_pad_has_current_caps:<h264parse0:src> check current pad caps video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)5.2, profile=(string)high, codec_data=(buffer)01640034ffe1001e67640034acd9403c0043ec05b8086802000003000200000300f01e30632c01000668ebe3cb22c0, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)2:1:7:1, coded-picture-structure=(string)frame, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
GStreamer+libav D 0:00:26.914061579 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:1843:gst_ffmpegviddec_video_frame:<avdec_h264-0> picture: opaque 0xb400007db2e76b90
GStreamer+GST_MEMORY D 0:00:26.914100954 0xb400007d22e679e0 ../gst/gstmemory.c:89:_gst_memory_free free memory 0xb400007d5354bd70
GStreamer+libav D 0:00:26.914114079 0xb400007d22f31b00 ../ext/libav/gstavviddec.c:1845:gst_ffmpegviddec_video_frame:<avdec_h264-0> picture: reordered opaque 244
```https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3074qml6glsink: fps decrease compared to qt5 qmlglsink2023-10-26T10:48:47ZDeymos sqml6glsink: fps decrease compared to qt5 qmlglsink### 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/ -->
Significant decrease in FPS in qml6glsink relative to qmlglsink(qt5)
#### Expected Behavior
<!-- What did you expect to happen -->
rtsp is played with native fps, similar to what happens in vlc
#### Observed Behavior
<!-- What actually happened -->
FPS reduced by 20-40% relative to qt5 and FPS at source
#### Setup
- **Operating System:** Windows
- **Device:** Computer <!-- Delete as appropriate !-->
- **GStreamer Version:** 1.23.0
- **Command line:**
### Steps to reproduce the bug
<!-- please fill in exact steps which reproduce the bug on your system, for example: -->
1. Play low-quality stream with qml6glsink
### How reproducible is the bug?
<!The reproducibility of the bug is Always/Intermittent/Only once after doing a very specific set of steps-->
Always
### Screenshots if relevant
on left side qmlglsink, on right side qml6glsink, pipeline and code the same:
https://drive.google.com/file/d/1qdelYydk9ANxMX4I4ca4UzPTCu-UM_Oo/view?usp=sharing
### Additional Information
Video info:
Codec: H264 - MPEG-4 AVC (part 10)
Resolution: 960x576
framerate: 12
colors: ITU-R BT.709https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3054webrtcbin: `add-transceiver` does not emit `on-negotiation-needed`2023-10-19T11:48:47ZAntonin Roussetwebrtcbin: `add-transceiver` does not emit `on-negotiation-needed`### Describe your issue
After a successful negotiation, the following snippet does not trigger an [`on-negotiation-needed` signal](https://gstreamer.freedesktop.org/documentation/webrtc/index.html?gi-language=python#webrtcbin::on-negotia...### Describe your issue
After a successful negotiation, the following snippet does not trigger an [`on-negotiation-needed` signal](https://gstreamer.freedesktop.org/documentation/webrtc/index.html?gi-language=python#webrtcbin::on-negotiation-needed), although the peer connection is in a state where renegotiation is needed.
```python
webrtcbin.emit(
"add-transceiver",
GstWebRTC.WebRTCRTPTransceiverDirection.RECVONLY,
Gst.caps_from_string(
"application/x-rtp, media=video, encoding-name=H264, payload=96, clock-rate=90000"
),
)
```
#### Expected Behavior
The `on-negotiation-needed` signal should be emitted by the `webrtcbin` element.
#### Observed Behavior
The `on-negotiation-needed` signal is only emitted by the `webrtcbin` element when it initially goes to the `PLAYING` state.
#### Setup
- **Operating System:** Gentoo Linux
- **Device:** Computer
- **GStreamer Version:** 1.20.6
### Steps to reproduce the bug
Assuming the negotiation process is well.
```python
pipeline = Gst.Pipeline.new()
webrtcbin_1 = Gst.ElementFactory.make("webrtcbin")
webrtcbin_2 = Gst.ElementFactory.make("webrtcbin")
# [...] setup webrtcbin_1 and webrtcbin_2
webrtcbin_1.connect("on-negotiation-needed", on_negotiation_needed)
def add_transceiver():
print("webrtcbin 1: adding transceiver")
webrtcbin_1.emit(
"add-transceiver",
GstWebRTC.WebRTCRTPTransceiverDirection.RECVONLY,
Gst.caps_from_string(
"application/x-rtp, media=video, encoding-name=H264, payload=96, clock-rate=90000"
),
)
pipeline.set_state(Gst.State.PLAYING)
mainloop = GLib.MainLoop()
GLib.timeout_add_seconds(5, add_transceiver)
mainloop.run()
```
See the associated test files.
### How reproducible is the bug?
The bug happens on every run.
### Tests and logs
[test.py](/uploads/cf6bbd964312fde6eb0befab06b80636/test.py) [test.log](/uploads/642128535202308349390c3b3c0233bc/test.log)
[test_no_data_channel.py](/uploads/5cd42cf443570b43bcba30dce4593039/test_no_data_channel.py) [test_no_data_channel.log](/uploads/db29217a5c2592d26d9bf92c01d0637f/test_no_data_channel.log)
[test_no_sink2.py](/uploads/7ffe8ec86a9be6786514a1f99dfb7f59/test_no_sink2.py) [test_no_sink2.log](/uploads/7f0798b3f5fa2a435f555c5d958ea155/test_no_sink2.log)