GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2023-09-04T07:21:15Zhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/1026Params to get Interlaced signal from SDI (v4l2src plugin)2023-09-04T07:21:15ZDmitry sdmParams to get Interlaced signal from SDI (v4l2src plugin)### Signal from SDI capture card:
`# mwcap-info -i /dev/video1`
```
Input specific
Signal status .......................... Valid
Type ................................... HD
Scanning type .......................... Interlaced
C...### Signal from SDI capture card:
`# mwcap-info -i /dev/video1`
```
Input specific
Signal status .......................... Valid
Type ................................... HD
Scanning type .......................... Interlaced
Color depth ............................ 10 Bits
Sampling struct ........................ Y/Cb/Cr, 4:2:2
ST352 payloadID ........................ 16778629
```
### gst-launch-1.0 v4l2src shown options for SDI capture card:
`# gst-launch-1.0 --gst-debug=v4l2src:5 v4l2src device=/dev/video1 ! fakesink 2>&1 | sed -une '/caps of src/ s/[:;] /\n/gp'`
```
...
video/x-raw, format=(string)I420, width=(int)[ 48, 2048 ], height=(int)[ 32, 2160 ], framerate=(fraction)[ 1/1, 5000000/83333 ]
video/x-raw(format:Interlaced), format=(string)I420, width=(int)[ 48, 2048 ], height=(int)[ 32, 2160 ], framerate=(fraction)[ 1/1, 5000000/83333 ], interlace-mode=(string)alternate
...
```
### command for get NDI from SDI:
```gst-launch-1.0 -e v4l2src device="/dev/video1" do-timestamp=true pixel-aspect-ratio=1 ! video/x-raw, format=I420, width=1920, height=1080, framerate=50/1, interlace-mode=interlaced ! queue ! ndisinkcombiner name=combiner alsasrc device="hw:CARD=SDI_1,DEV=0" do-timestamp=true ! audio/x-raw, rate=96000, channels=2 ! queue ! audioconvert ! combiner.audio combiner. ! ndisink ndi-name="video1"```
i think that something wrong with interlace-mode= option, because my
### tests results is follow:
1) without option interlace-mode= - NDI Studio Monitor shown - 1080 50p
2) interlace-mode=Interlaced / interlace-mode=interlaced - NDI Studio Monitor shown - 1080 50p
3) interlace-mode=alternate - ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Invalid caps
Additional debug info:
../sys/v4l2/gstv4l2object.c(4078): gst_v4l2_object_set_format_full (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
Can't parse caps video/x-raw, format=(string)I420, width=(int)1920, height=(int)1080, framerate=(fraction)50/1, interlace-mode=(string)alternate, pixel-aspect-ratio=(fraction)1/1
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
4) interlace-mode=interleaved - ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Device '/dev/video1' has no supported format
I have found this link:
[gstreamer.freedesktop.org - raw-video-media-types](https://gstreamer.freedesktop.org/documentation/additional/design/mediatype-video-raw.html?gi-language=c#raw-video-media-types)
with options: [progressive, interleaved, mixed, fields, alternate]
and this link:
[gstreamer.freedesktop.org - GstDeinterlaceModes](https://gstreamer.freedesktop.org/documentation/deinterlace/index.html?gi-language=c#GstDeinterlaceModes)
with options: [auto, interlaced, disabled, auto-strict]
Which one i need to use in for parse caps?
**Maybe i need to use escape symbols for correct parse video/x-raw(format:Interlaced) ?**
Problem, that i split signat to NDI and RTSP and
final stream - rtsp://*.*.*.*:8554/video1
shown 50 fps progressive, but i need 25 fps progressive for get less redundancy
ffprobe.exe rtsp://*.*.*.*:8554/video1
Input #0, rtsp, from 'rtsp://*.*.*.*:8554/video1':
Metadata:
title : Stream
Duration: N/A, start: 0.101708, bitrate: N/A
Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
Stream #0:1: Video: h264 (High), yuv420p(tv, bt709, **progressive**), 1920x1080 [SAR 1:1 DAR 16:9], **50 fps**, 50 tbr, 90k tbn
**What i need to get 1080 50i for NDI (approximately as a RAW signal), at same time i use this signal for deinterlace it as 25p to RTSP**https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/404meson: newer cargo-c than specified required2023-08-14T08:08:16ZTimo Gurrmeson: newer cargo-c than specified required### Describe your issue
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/blob/main/meson.build#L23 states `>=0.9.3` but build fails with cargo-c `<0.9.21`.
#### Expected Behavior
Build.
#### Observed Behavior
```
[...]
ninja: ...### Describe your issue
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/blob/main/meson.build#L23 states `>=0.9.3` but build fails with cargo-c `<0.9.21`.
#### Expected Behavior
Build.
#### Observed Behavior
```
[...]
ninja: build stopped: subcommand failed.
Error: CliError { error: Some(Minimum required cargo-c version is 0.9.21 but using cargo-c version 0.9.19+cargo-0.70), exit_code: 101 }
[...]
```
#### Setup
- **Operating System:** Linux
- **Device:** Computer
- **gst-plugins-rs Version:** 0.11.0 / git
- **GStreamer Version:** 1.22.4
- **Command line:** -
### Steps to reproduce the bug
1. have cargo-c `<0.9.21` installed
2. try to build
### How reproducible is the bug?
Always.
### Screenshots if relevant
-
### Solutions you have tried
-
### Related non-duplicate issues
-
### Additional Information
-https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2900gst-validate-launcher often reports the wrong iteration as failing when runni...2023-08-13T08:19:20ZAlicia Boya Garcíagst-validate-launcher often reports the wrong iteration as failing when running tests with -f### Describe your issue
```
-f, --forever Keep running tests until one fails
```
The `-f` option can be passed to gst-validate-launcher to run a test in repeat until it fails. This is helpful for investigating race conditions.
...### Describe your issue
```
-f, --forever Keep running tests until one fails
```
The `-f` option can be passed to gst-validate-launcher to run a test in repeat until it fails. This is helpful for investigating race conditions.
Unfortunately, once a failure happens, gst-validate-launcher often reports the wrong iteration, and test file, as failing.
### Steps to reproduce the bug
```
gst-validate-launcher <test reproducing a race condition> -f
```
### How reproducible is the bug?
Intermittent, but happens pretty often. ~~When the failing test is a timeout, so far it's been reported correctly.~~https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/403Whipsink: How to monitor connection state changes2023-08-14T10:09:11ZKun WuWhipsink: How to monitor connection state changesHi, wish you are doing well.
I'm looking for some help/advice about how to monitor connection-state change in the WebRTC bin. This can be helpful for a pipeline to remove a WebRTC bin when the client disconnects.
There are two problems...Hi, wish you are doing well.
I'm looking for some help/advice about how to monitor connection-state change in the WebRTC bin. This can be helpful for a pipeline to remove a WebRTC bin when the client disconnects.
There are two problems:
1. How to react to the signal of a child object?
Like in the whipsink [example](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/blob/main/net/webrtchttp/src/whipsink/imp.rs#L352), we could connect to the connection-state signal of webrtcbin element and handle the state changes in the callback. However, for elements like whipsink (which wraps a webrtcbin itself), this approach seems not to work.
2. How to handle disconnections from client?
When a client disconnects, we could see that the connection-state of TransportSendbin in GstWebRTCBin becomes 'closed' (from 'connected'). However, the same property in GstWebRTCBin is still 'connected', which can be observed in this.![pipeline.svg](/uploads/9bdf9a510a179699907eb400ef31b731/pipeline.svg) This seems to be a bit confusing and tricky to handle.
Any suggestion would be appreciated.https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/402Latest release (0.11.0) is missing Cargo.lock file2023-08-25T00:46:06ZMazhar HussainLatest release (0.11.0) is missing Cargo.lock filehttps://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/1025JPEG Encoding Issue in Appsrc Pipeline2023-10-12T15:47:06ZSulthan AmanuJPEG Encoding Issue in Appsrc PipelineHello Team,
I am reaching out regarding an issue I encountered in my application. I have been attempting to save JPEG image files from an appsrc. In my application, I receive raw frames from a webcam source through the identity plugin, ...Hello Team,
I am reaching out regarding an issue I encountered in my application. I have been attempting to save JPEG image files from an appsrc. In my application, I receive raw frames from a webcam source through the identity plugin, which I store in a local variable called "buflist". I then aim to convert this buffer (buflist) into a JPEG file using the jpegenc plugin. However, I have run into difficulties as the jpegenc plugin fails to encode the raw buffer frame successfully.
I took the initiative to investigate further by introducing an additional identity element into the appsrc pipeline. This allowed me to gather information and ascertain that I can indeed save the raw frames without encoding. They are stored as image files. However, the problem arises when I try to implement jpegenc for encoding. After adding jpegenc to the pipeline followed by the identity element, I noticed that I no longer receive frames callback.
I would like to emphasize that I would prefer alternatives to using the tee element or branching the pipeline concept. While I understand that the tee element could potentially offer a solution, it affects the overall pipeline. Furthermore, incorporating jpegenc introduces a delay in frame encoding, which is why I pursued the approach of capturing frames from the actual pipeline and subsequently saving them using multifilesink or sending them through a UDP sink.
For your convenience, I have included the relevant code below. I kindly request your assistance in identifying a solution within the context of my code.
**CODE **
[GST_CODE.odt](/uploads/5000f8cefbd18048ce29e681bc8a1273/GST_CODE.odt)
I eagerly await your guidance and appreciate your help in resolving this matter.https://gitlab.freedesktop.org/gstreamer/gstreamer-project/-/issues/113ubuntu 22.04 meson all plugins cannot open shared object file: No such file ...2023-08-10T11:13:27Zart vanubuntu 22.04 meson all plugins cannot open shared object file: No such file or directory or undefined symbol:following tutorial for general build and using meson on ubuntu 22.04, the build completes without errors but every plugin has the error `cannot open shared object file: No such file or directory` or ` undefined symbol:`
Is there a basic...following tutorial for general build and using meson on ubuntu 22.04, the build completes without errors but every plugin has the error `cannot open shared object file: No such file or directory` or ` undefined symbol:`
Is there a basic step missing in the docs to prevent this?
using `meson setup --reconfigure -Dgpl=enabled --prefix=/home/ubuntu/out builddir`
also tried adding `-Ddefault_library=static` but this gives `meson.build:438:12: ERROR: <SharedLibrary f5a7a95@@gstreamer-1.0@sha: libgstreamer-1.0.so.0.2300.0> is not a static library.`https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/480gstreamer1.0-libav - file detection inconsistencies?2023-08-16T06:19:50ZUwe Dippelgstreamer1.0-libav - file detection inconsistencies?I new in here, and didn't find any forum to ask. Google also couldn't help me, sorry.
This is my issue: Recently I discovered that certain files were missing in the list of files shown (and subsequently streamed) by rygel. I have updated...I new in here, and didn't find any forum to ask. Google also couldn't help me, sorry.
This is my issue: Recently I discovered that certain files were missing in the list of files shown (and subsequently streamed) by rygel. I have updated the discovery process a number of times, and could reproduce the failure for certain files of the same extension: mp4.
Here are two examples:
```
$ file Die_Konsequenz.mp4
Die_Konsequenz.mp4: ISO Media, MP4 v2 [ISO 14496-14]
$ file Die_Jagd.mp4
Die_Jagd.mp4: ISO Media, MP4 Base Media v1 [ISO 14496-12:2003]
```
Both seem to be of the same format, mp4, but the first one is never indexed, the second file always.
This is the output of the installed support:
```
$ gst-inspect-1.0 | grep v2
...
libav: avdec_msmpeg4v2: libav MPEG-4 part 2 Microsoft variant version 2 decoder
libav: avenc_msmpeg4v2: libav MPEG-4 part 2 Microsoft variant version 2 encoder
...
```
If anything else is helpful, for more detail, please ask!https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2893Documentation fo ismlmux example pipelines and output same as mj2mux2023-08-09T10:15:01ZIan 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-rs/-/issues/479Compiling examples with current public gstreamer dependencies2023-08-09T13:32:33ZPeter BeresfordCompiling examples with current public gstreamer dependenciesI've established that a direct clone of this repo compiles examples correctly, however I'm trying to compile them against the latest public crates.io versions in an isolated project (same folder structure as that of the examples, with th...I've established that a direct clone of this repo compiles examples correctly, however I'm trying to compile them against the latest public crates.io versions in an isolated project (same folder structure as that of the examples, with the same build.rs file). Anything with an embedded plugin/element (e.g. cairo_compositor.rs) is failing with error message/s of the following form:
```
pub trait ObjectImpl: ObjectSubclass + ObjectImplExt {
| ^^^^^^^^^^^^^^ required by this bound in `ObjectImpl`
error[E0277]: the trait bound `imp_pad::CairoCompositorPad: gstreamer::subclass::prelude::ObjectSubclassType` is not satisfied
--> src/bin/cairo_compositor.rs:543:32
|
543 | impl GstObjectImpl for CairoCompositorPad {}
| ^^^^^^^^^^^^^^^^^^ the trait `gstreamer::subclass::prelude::ObjectSubclassType` is not implemented for `imp_pad::CairoCompositorPad`
|
= help: the trait `gstreamer::subclass::prelude::ObjectSubclassType` is implemented for `gstreamer::glib::boxed_any_object::imp::BoxedAnyObject`
= note: required for `imp_pad::CairoCompositorPad` to implement `gstreamer::subclass::prelude::ObjectSubclass`
= note: required for `imp_pad::CairoCompositorPad` to implement `gstreamer::subclass::prelude::ObjectImpl`
note: required by a bound in `gstreamer::subclass::prelude::GstObjectImpl`
pub trait GstObjectImpl: ObjectImpl {}
| ^^^^^^^^^^ required by this bound in `GstObjectImpl`
error[E0277]: the trait bound `imp_pad::CairoCompositorPad: gstreamer::subclass::prelude::ObjectSubclassType` is not satisfied
--> src/bin/cairo_compositor.rs:546:26
|
546 | impl PadImpl for CairoCompositorPad {}
| ^^^^^^^^^^^^^^^^^^ the trait `gstreamer::subclass::prelude::ObjectSubclassType` is not implemented for `imp_pad::CairoCompositorPad`
|
= help: the trait `gstreamer::subclass::prelude::ObjectSubclassType` is implemented for `gstreamer::glib::boxed_any_object::imp::BoxedAnyObject`
= note: required for `imp_pad::CairoCompositorPad` to implement `gstreamer::subclass::prelude::ObjectSubclass`
= note: required for `imp_pad::CairoCompositorPad` to implement `gstreamer::subclass::prelude::ObjectImpl`
= note: required for `imp_pad::CairoCompositorPad` to implement `gstreamer::subclass::prelude::GstObjectImpl`
note: required by a bound in `gstreamer::subclass::prelude::PadImpl`
```
(etc.). My Cargo.toml file contains the following dependencies:
```
glib = { git = "https://github.com/gtk-rs/gtk-rs-core" }
gst = { package = "gstreamer", version = "0.21.0" }
gst-gl = { package = "gstreamer-gl", version = "0.21.0", optional = true }
gst-gl-egl = { package = "gstreamer-gl-egl", version = "0.21.0", optional = true }
gst-gl-wayland = { package = "gstreamer-gl-wayland", version = "0.21.0", optional = true }
gst-gl-x11 = { package = "gstreamer-gl-x11", version = "0.21.0", optional = true }
gst-app = { package = "gstreamer-app", version = "0.21.0" }
gst-audio = { package = "gstreamer-audio", version = "0.21.0" }
gst-base = { package = "gstreamer-base", version = "0.21.0" }
gst-video = { package = "gstreamer-video", version = "0.21.0" }
gst-pbutils = { package = "gstreamer-pbutils", version = "0.21.0" }
gst-play = { package = "gstreamer-play", version = "0.21.0", optional = true }
gst-player = { package = "gstreamer-player", version = "0.21.0", optional = true }
ges = { package = "gstreamer-editing-services", version = "0.21.0", optional = true }
gst-sdp = { package = "gstreamer-sdp", version = "0.21.0", optional = true }
gst-rtsp = { package = "gstreamer-rtsp", version = "0.21.0", optional = true }
gst-rtsp-server = { package = "gstreamer-rtsp-server", version = "0.21.0", optional = true }
gst-allocators = { package = "gstreamer-allocators", version = "0.21.0", optional = true }
gio = { git = "https://github.com/gtk-rs/gtk-rs-core", optional = true }
anyhow = "1.0"
derive_more = "0.99.5"
futures = "0.3"
byte-slice-cast = "1"
cairo-rs = { git = "https://github.com/gtk-rs/gtk-rs-core", features=["use_glib"], optional = true }
pango = { git = "https://github.com/gtk-rs/gtk-rs-core", optional = true }
pangocairo = { git = "https://github.com/gtk-rs/gtk-rs-core", optional = true }
glutin = { version = "0.29", optional = true }
image = { version = "0.24", optional = true, default-features = false, features = ["png", "jpeg"] }
memmap2 = { version = "0.7", optional = true }
memfd = { version = "0.6", optional = true }
uds = { version = "0.2", optional = true }
```
but otherwise is identical to the original. Am I missing something in terms of module paths, or are there updates to the public crates that I should be waiting for?
Cheers, and thanks,
Peter B.https://gitlab.freedesktop.org/gstreamer/gst-indent/-/issues/2Needs to go over the input twice in order to produce a stable result2023-08-12T09:16:00ZTim-Philipp Müllertim@centricular.comNeeds to go over the input twice in order to produce a stable resultGNU indent has issues with very long lines where `something->gets->derefed->a->lot->and->even->more` and will toggle back and forth between two indentation schemes for such long derefs across line ends.
In the old `gst-indent` we do thi...GNU indent has issues with very long lines where `something->gets->derefed->a->lot->and->even->more` and will toggle back and forth between two indentation schemes for such long derefs across line ends.
In the old `gst-indent` we do this:
```sh
# Run twice. GNU indent isn't idempotent
# when run once
for i in 1 2; do
$INDENT \
--braces-on-if-line \
--case-brace-indentation0 \
--case-indentation2 \
--braces-after-struct-decl-line \
--line-length80 \
--no-tabs \
--cuddle-else \
--dont-line-up-parentheses \
--continuation-indentation4 \
--honour-newlines \
--tab-size8 \
--indent-level2 \
--leave-preprocessor-space \
$* || exit $?
done
```
Our `gst-indent-1.0` tool needs to do this transparently (we could just point the script to `gst-indent-1.0` but that wouldn't work well on Windows I think?)https://gitlab.freedesktop.org/gstreamer/gst-indent/-/issues/1Should maintain LF line endings for output files on Windows if input source f...2023-08-12T11:33:00ZTim-Philipp Müllertim@centricular.comShould maintain LF line endings for output files on Windows if input source files had LF line endings> Currently indent will always output with `LF` line endings even if the source file has `CRLF` line endings.
Update: this is not actually the issue. The problem on Windows is that indent outputs files in 'text mode', which means that o...> Currently indent will always output with `LF` line endings even if the source file has `CRLF` line endings.
Update: this is not actually the issue. The problem on Windows is that indent outputs files in 'text mode', which means that on Windows it will always output files with `CRLF` endings even if the input file had `LF` endings.
> That's fine on Linux/*nix, but not great on Windows, where git might automatically convert to `CRLF` when checking out files.
>
> This is a usability issue for Windows devs because `git diff` will show 'everything has changed' by default in that case (I know you can pass `-b -w` but that's beside the point).
>
> `gst-indent-1.0` should maintain the input line ending scheme or write to a temp file and then fix it up in a second round before writing out the result to the final destination.https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/397whipwebrtcsink: crashes when inspected with gst-inspect-1.02023-08-09T08:00:18ZPhilippe Normandwhipwebrtcsink: crashes when inspected with gst-inspect-1.0In debug:
```
env G_DEBUG=fatal_criticals gst-inspect-1.0 whipwebrtcsink
Program terminated with signal SIGTRAP, Trace/breakpoint trap. ...In debug:
```
env G_DEBUG=fatal_criticals gst-inspect-1.0 whipwebrtcsink
Program terminated with signal SIGTRAP, Trace/breakpoint trap.
#0 g_logv (log_domain=0x7ff9f5abf030 "GLib-GObject", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7ffcfe1d4fc0) at ../glib/gmessages.c:1422
Downloading source file /usr/src/debug/glib2-2.76.4-3.fc38.x86_64/redhat-linux-build/../glib/gmessages.c
1422 g_private_set (&g_log_depth, GUINT_TO_POINTER (depth));
(gdb) bt
#0 g_logv (log_domain=0x7ff9f5abf030 "GLib-GObject", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7ffcfe1d4fc0) at ../glib/gmessages.c:1422
#1 0x00007ff9f5b3d393 in g_log
(log_domain=log_domain@entry=0x7ff9f5abf030 "GLib-GObject", log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x7ff9f5ac9eb0 "cannot retrieve class for invalid (unclassed) type '%s'")
at ../glib/gmessages.c:1460
#2 0x00007ff9f5ab9d2e in g_type_class_ref (type=<optimized out>) at ../gobject/gtype.c:3035
#3 0x00007ff9f5aa3d40 in object_interface_check_properties (check_data=check_data@entry=0x0, g_iface=g_iface@entry=0x7b0f20) at ../gobject/gobject.c:1860
#4 0x00007ff9f5ab2b7a in type_iface_vtable_iface_init_Wm (iface=<optimized out>, node=node@entry=0x7f5440) at ../gobject/gtype.c:2189
#5 0x00007ff9f5aba13b in type_class_init_Wm (pclass=<optimized out>, node=0x7f5440) at ../gobject/gtype.c:2377
#6 g_type_class_ref (type=<optimized out>) at ../gobject/gtype.c:3066
#7 0x00007ff9f4e9740f in glib::object::Class<glib::object::Object>::from_type<glib::object::Object> (type_=...) at src/object.rs:3944
#8 glib::object::Object::new_internal (type_=..., properties=...) at src/object.rs:1444
#9 0x00007ff9f46d8399 in glib::object::ObjectBuilder<gstrswebrtc::signaller::Signaller>::build<gstrswebrtc::signaller::Signaller> (self=...)
at /var/home/phil/.cargo-home/git/checkouts/gtk-rs-core-7be42ca38bd6361c/9e0abef/glib/src/object.rs:1555
#10 0x00007ff9f46d8658 in gstrswebrtc::signaller::Signaller::new (mode=<optimized out>) at net/webrtc/src/signaller/mod.rs:43
#11 0x00007ff9f4664a49 in gstrswebrtc::webrtcsink::imp::{impl#1}::default () at net/webrtc/src/webrtcsink/imp.rs:314
#12 0x00007ff9f46c5984 in std::sync::mutex::{impl#7}::default<gstrswebrtc::webrtcsink::imp::Settings> () at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/std/src/sync/mutex.rs:477
#13 gstrswebrtc::webrtcsink::imp::{impl#63}::default () at net/webrtc/src/webrtcsink/imp.rs:309
#14 gstrswebrtc::webrtcsink::imp::{impl#64}::new () at net/webrtc/src/webrtcsink/imp.rs:3184
#15 glib::subclass::types::ObjectSubclass::with_class<gstrswebrtc::webrtcsink::imp::BaseWebRTCSink> (_klass=<optimized out>)
at /var/home/phil/.cargo-home/git/checkouts/gtk-rs-core-7be42ca38bd6361c/9e0abef/glib/src/subclass/types.rs:691
#16 glib::subclass::types::instance_init<gstrswebrtc::webrtcsink::imp::BaseWebRTCSink> (obj=0x7f4f50, klass=<optimized out>)
at /var/home/phil/.cargo-home/git/checkouts/gtk-rs-core-7be42ca38bd6361c/9e0abef/glib/src/subclass/types.rs:941
#17 0x00007ff9f5aba497 in g_type_create_instance (type=Python Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str
) at ../gobject/gtype.c:1977
#18 0x00007ff9f5a9ff74 in g_object_new_internal (class=0x7f4890, params=0x0, n_params=0) at ../gobject/gobject.c:2246
#19 0x00007ff9f5aa1596 in g_object_new_internal (n_params=<optimized out>, params=<optimized out>, class=<optimized out>) at ../gobject/gobject.c:2243
#20 g_object_new_with_properties (object_type=<optimized out>, n_properties=n_properties@entry=0, names=names@entry=0x0, values=values@entry=0x0) at ../gobject/gobject.c:2409
#21 0x00007ff9f5ca9e3f in gst_element_factory_create_with_properties (factory=0x7a3330, n=n@entry=0, names=names@entry=0x0, values=0x0) at ../subprojects/gstreamer/gst/gstelementfactory.c:494
#22 0x00007ff9f5caa639 in gst_element_factory_create (factory=factory@entry=0x7a3330, name=name@entry=0x0) at ../subprojects/gstreamer/gst/gstelementfactory.c:665
#23 0x0000000000407a8a in print_element_info (feature=feature@entry=0x7a3330, print_names=print_names@entry=0) at ../subprojects/gstreamer/tools/gst-inspect.c:1742
#24 0x0000000000409736 in print_feature_info (print_all=0, feature_name=0x7ffcfe1d8697 "whipwebrtcsink") at ../subprojects/gstreamer/tools/gst-inspect.c:1704
#25 real_main (argc=<optimized out>, argv=<optimized out>) at ../subprojects/gstreamer/tools/gst-inspect.c:2327
#26 0x00007ff9f58c4b4a in __libc_start_call_main (main=main@entry=0x404b90 <main>, argc=argc@entry=2, argv=argv@entry=0x7ffcfe1d6b18) at ../sysdeps/nptl/libc_start_call_main.h:58
#27 0x00007ff9f58c4c0b in __libc_start_main_impl (main=0x404b90 <main>, argc=2, argv=0x7ffcfe1d6b18, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffcfe1d6b08)
at ../csu/libc-start.c:360
#28 0x0000000000404bc5 in _start ()
```
In release no critical warning, crashes right away:
```
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007ffa0f788c51 in type_data_ref_U (node=<optimized out>) at ../gobject/gtype.c:1293
Downloading source file /usr/src/debug/glib2-2.76.4-3.fc38.x86_64/redhat-linux-build/../gobject/gtype.c
1293 } while (!g_atomic_int_compare_and_exchange ((int *) &node->ref_count, current, current + 1));
(gdb) bt
#0 0x00007ffa0f788c51 in type_data_ref_U (node=<optimized out>) at ../gobject/gtype.c:1293
#1 g_type_class_ref (type=<optimized out>) at ../gobject/gtype.c:3040
#2 0x00007ffa0f772d40 in object_interface_check_properties (check_data=check_data@entry=0x0, g_iface=g_iface@entry=0x1f1bce0) at ../gobject/gobject.c:1860
#3 0x00007ffa0f781b7a in type_iface_vtable_iface_init_Wm (iface=<optimized out>, node=node@entry=0x1f61cf0) at ../gobject/gtype.c:2189
#4 0x00007ffa0f78913b in type_class_init_Wm (pclass=<optimized out>, node=0x1f61cf0) at ../gobject/gtype.c:2377
#5 g_type_class_ref (type=<optimized out>) at ../gobject/gtype.c:3066
#6 0x00007ffa0ec2abfc in glib::object::Class<glib::object::Object>::from_type<glib::object::Object> (type_=...) at src/object.rs:3944
#7 glib::object::Object::new_internal (type_=..., properties=...) at src/object.rs:1444
#8 0x00007ffa0e3a2230 in glib::object::ObjectBuilder<gstrswebrtc::signaller::Signaller>::build<gstrswebrtc::signaller::Signaller> (self=...)
at /var/home/phil/.cargo-home/git/checkouts/gtk-rs-core-7be42ca38bd6361c/9e0abef/glib/src/object.rs:1555
#9 gstrswebrtc::signaller::Signaller::new (mode=gstrswebrtc::signaller::imp::WebRTCSignallerRole::Producer) at net/webrtc/src/signaller/mod.rs:43
#10 0x00007ffa0e543e0c in gstrswebrtc::webrtcsink::imp::{impl#1}::default () at net/webrtc/src/webrtcsink/imp.rs:314
#11 0x00007ffa0e389dd8 in std::sync::mutex::{impl#7}::default<gstrswebrtc::webrtcsink::imp::Settings> () at /rustc/eb26296b556cef10fb713a38f3d16b9886080f26/library/std/src/sync/mutex.rs:477
#12 gstrswebrtc::webrtcsink::imp::{impl#63}::default () at net/webrtc/src/webrtcsink/imp.rs:309
#13 gstrswebrtc::webrtcsink::imp::{impl#64}::new () at net/webrtc/src/webrtcsink/imp.rs:3184
#14 glib::subclass::types::ObjectSubclass::with_class<gstrswebrtc::webrtcsink::imp::BaseWebRTCSink> (_klass=<optimized out>)
at /var/home/phil/.cargo-home/git/checkouts/gtk-rs-core-7be42ca38bd6361c/9e0abef/glib/src/subclass/types.rs:691
#15 glib::subclass::types::instance_init<gstrswebrtc::webrtcsink::imp::BaseWebRTCSink> (obj=0x1f61800, klass=<optimized out>)
at /var/home/phil/.cargo-home/git/checkouts/gtk-rs-core-7be42ca38bd6361c/9e0abef/glib/src/subclass/types.rs:941
#16 0x00007ffa0f789497 in g_type_create_instance (type=Python Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str
) at ../gobject/gtype.c:1977
#17 0x00007ffa0f76ef74 in g_object_new_internal (class=0x1f61100, params=0x0, n_params=0) at ../gobject/gobject.c:2246
#18 0x00007ffa0f770596 in g_object_new_internal (n_params=<optimized out>, params=<optimized out>, class=<optimized out>) at ../gobject/gobject.c:2243
#19 g_object_new_with_properties (object_type=<optimized out>, n_properties=n_properties@entry=0, names=names@entry=0x0, values=values@entry=0x0) at ../gobject/gobject.c:2409
#20 0x00007ffa0f978e3f in gst_element_factory_create_with_properties (factory=0x1f0e0e0, n=n@entry=0, names=names@entry=0x0, values=0x0) at ../subprojects/gstreamer/gst/gstelementfactory.c:494
#21 0x00007ffa0f979639 in gst_element_factory_create (factory=factory@entry=0x1f0e0e0, name=name@entry=0x0) at ../subprojects/gstreamer/gst/gstelementfactory.c:665
#22 0x0000000000407a8a in print_element_info (feature=feature@entry=0x1f0e0e0, print_names=print_names@entry=0) at ../subprojects/gstreamer/tools/gst-inspect.c:1742
#23 0x0000000000409736 in print_feature_info (print_all=0, feature_name=0x7ffd02b0b6a5 "whipwebrtcsink") at ../subprojects/gstreamer/tools/gst-inspect.c:1704
#24 real_main (argc=<optimized out>, argv=<optimized out>) at ../subprojects/gstreamer/tools/gst-inspect.c:2327
#25 0x00007ffa0f593b4a in __libc_start_call_main (main=main@entry=0x404b90 <main>, argc=argc@entry=2, argv=argv@entry=0x7ffd02b0a0c8) at ../sysdeps/nptl/libc_start_call_main.h:58
#26 0x00007ffa0f593c0b in __libc_start_main_impl (main=0x404b90 <main>, argc=2, argv=0x7ffd02b0a0c8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffd02b0a0b8)
at ../csu/libc-start.c:360
#27 0x0000000000404bc5 in _start ()
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/1003taginject tags property is not readable2023-08-08T12:51:45ZMiguel Ángel Cabrera Miñagorritaginject tags property is not readableTrying to read the tags from a taginject component using the python bindings I find the following error:
```
TypeError: property tags is not readable
```
However, the [docs](https://gstreamer.freedesktop.org/documentation/debug/taginjec...Trying to read the tags from a taginject component using the python bindings I find the following error:
```
TypeError: property tags is not readable
```
However, the [docs](https://gstreamer.freedesktop.org/documentation/debug/taginject.html?gi-language=c#taginject:tags) clearly state the `tags` property should be readable.
The following is how I try to get the tags:
```
tags = taginject.get_property("tags")
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/1002playbin3,decodebin3: Select wrong stream type with gapless flag2023-08-08T06:28:44Zchinn zamplaybin3,decodebin3: Select wrong stream type with gapless flagI have three mp4 files:
1.mp4 with both audio and video stream
2.mp4 with video stream only
3.mp4 with both audio and video stream
Testing cmd:
gst-play-1.0 --gapless --use-playbin3 1.mp4 2.mp4 3.mp4
**The 3.mp4 will only play the ...I have three mp4 files:
1.mp4 with both audio and video stream
2.mp4 with video stream only
3.mp4 with both audio and video stream
Testing cmd:
gst-play-1.0 --gapless --use-playbin3 1.mp4 2.mp4 3.mp4
**The 3.mp4 will only play the audio, but the video is gone**
The dot file of 1.mp4:
![image](/uploads/ab7e41738b99f868dc009b717adac5c0/image.png)
The dot file of 2.mp4:
![image](/uploads/d4cb4ad01f2a4d760d799dfcbf0bde68/image.png)
The dot file of 3.mp4:
![image](/uploads/dc08dae491d971bfd38424253c81175c/image.png)
As the png files shows, when playing 3.mp4, the decodebin will create a new audio stream (now there are two audio streams and one video stream in total), but the 3.mp4 only have two streams, so the playbin only check the type of the first two streams which is both audio type, than the video stream is not selected:
``` shell
0:00:07.147435095 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2248:gst_play_bin3_handle_message:<playbin> selected s
tream types changed, reconfiguring output
0:00:07.147449387 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2812:reconfigure_output:<playbin> selected_stream_type
s : audio
0:00:07.147463388 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2814:reconfigure_output:<playbin> active_stream_types
: audio video
0:00:07.147478263 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2829:reconfigure_output:<playbin> Stream type status:
'audio' selected active
0:00:07.147490513 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2836:reconfigure_output:<playbin> Stream type 'audio'
already active
0:00:07.147504222 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2829:reconfigure_output:<playbin> Stream type status:
'video' NOT selected active
0:00:07.147516472 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2839:reconfigure_output:<playbin> Stream type 'video'
is no longer requested
0:00:07.159008628 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2487:remove_combiner:<playbin> No combiner element to
remove
0:00:07.159033128 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2829:reconfigure_output:<playbin> Stream type status:
'text' NOT selected NOT active
0:00:07.159066087 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2896:reconfigure_output:<playbin> selected_stream_type
s : audio
0:00:07.159081546 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2898:reconfigure_output:<playbin> active_stream_types
: audio
```
My gstreamer version is 1.22.0.
I don't know if what I described is detailed, please let me know if you need more infomations.
Best Wishes.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2883arch isn't picking up liblc32023-08-09T00:26:38ZSolarAquarionarch isn't picking up liblc3Arch has the pkgconfig file as lc3 and not liblc3, so despite it being there it's not being picked up
Similarly with webrtc-audio-processing-1 it has it as webrtc-audio-processingArch has the pkgconfig file as lc3 and not liblc3, so despite it being there it's not being picked up
Similarly with webrtc-audio-processing-1 it has it as webrtc-audio-processinghttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/478Fix builds on docs.rs and document all features2023-08-08T08:09:12ZpentamassivFix builds on docs.rs and document all featuresGir no longer generates a dox feature for building the documentation without linking the libraries. Because of that the entry for `[package.metadata.docs.rs]` in the `Cargo.toml` file needs to be changed a little bit for the builds to su...Gir no longer generates a dox feature for building the documentation without linking the libraries. Because of that the entry for `[package.metadata.docs.rs]` in the `Cargo.toml` file needs to be changed a little bit for the builds to succeed. Even though gstreamer itself does not use docs.rs for its documentation, many smaller projects do. If the builds fail for gstreamer on docs.rs, all builds from crates that depend on gstreamer also fail and they would not be able to use docs.rs.
This is what the correct entry in the Cargo.toml usually should look like ([source](https://gtk-rs.org/gir/book/tutorial/high_level_rust_api.html)):
```
[package.metadata.docs.rs]
all-features = true
# For build.rs scripts
rustc-args = ["--cfg", "docsrs"]
# For rustdoc
rustdoc-args = ["--cfg", "docsrs"]
```
Since https://github.com/gtk-rs/gir/pull/1487 was merged, all you have to do for the -sys crates to have the correct entry, is to remove `features = []` from `[package.metadata.docs.rs]`. Gir will then replace it with `all-features=true` and activate the required rustc args and rustdoc args.
The Cargo.toml file of the safe wrapper crates will not be changed by gir, so they need to be changed manually.https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/477Fix last remaining line containing dox2023-08-08T08:09:12ZpentamassivFix last remaining line containing doxDuring the removal of the dox feature, you must have missed one line. Unfortunately I can't fork the project to open a PR, but you can easily find it.
The line
`#[cfg(any(feature = "v1_18", feature = "dox"))]`
should be changed to
`#[cf...During the removal of the dox feature, you must have missed one line. Unfortunately I can't fork the project to open a PR, but you can easily find it.
The line
`#[cfg(any(feature = "v1_18", feature = "dox"))]`
should be changed to
`#[cfg(feature = "v1_18")]`
Thank youhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2882Windows example playbin error2023-08-08T08:40:06ZBruce ClayWindows example playbin errorI downloaded and installed the latest gstreamer for windows and installed it then I downloaded and installed the latest gstreamer dev for windows.
I rebooted the computer as suggested in the instructions. I built one of the basic exampl...I downloaded and installed the latest gstreamer for windows and installed it then I downloaded and installed the latest gstreamer dev for windows.
I rebooted the computer as suggested in the instructions. I built one of the basic examples. When I run the example, gst_parse_launch returns a null pipeline and the error returned is "no element \"playbin\". When I run gst-inspect, playbin is listed. when I run gst-inspect playbin several parameters are shown. If I run gst-launch playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm from the command line the video shows and I hear good audio. because the returned pipeline is null the rest of the calls also fail.
The example source I used follows
//#include <string>
#include <gst/gst.h>
int
main (int argc, char *argv[])
{
GstElement *pipeline;
GstBus *bus;
GstMessage *msg;
GError* err = NULL;
/* Initialize GStreamer */
gst_init (NULL, NULL);
/* Build the pipeline */
pipeline =
gst_parse_launch(
"playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm",
&err);
char* errStr = err->message;
//std::string errMsg = err->message;
/* Start playing */
gst_element_set_state (pipeline, GST_STATE_PLAYING);
/* Wait until error or EOS */
bus = gst_element_get_bus (pipeline);
msg =
gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE,
GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
/* Free resources */
if (msg != NULL)
gst_message_unref (msg);
gst_object_unref (bus);
gst_element_set_state (pipeline, GST_STATE_NULL);
gst_object_unref (pipeline);
return 0;
}
Any guidance would be appreciated.
Brucehttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2881webrtcbin: no offer is being sent2023-08-09T09:20:29ZHugo Svirakwebrtcbin: no offer is being sentOur usual flow as follows:
1. on-negotiation-needed is invoked
2. application invokes "create-offer"
3. application invokes "set-local-description" with offer
4. application sends offer to the other party via signalling server
However,...Our usual flow as follows:
1. on-negotiation-needed is invoked
2. application invokes "create-offer"
3. application invokes "set-local-description" with offer
4. application sends offer to the other party via signalling server
However, the local description is sometimes (randomly) already set and therefore on-negotiation-needed is not invoked and flow is not executed. How can local-description be already set when checking if negotiation is needed? The webrtcbin is sendonly.