GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2021-09-29T10:05:51Zhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/907playbin3: tracer leaks2021-09-29T10:05:51ZGuillaume Desmottesplaybin3: tracer leaksThe leaks tracer is detecting a bunch of leaks when running `gst-play-1.0` on a video file with `--use-playbin3`.
```
$ GST_TRACERS="leaks" GST_DEBUG="GST_TRACER:7,leaks:6" gst-play-1.0 --use-playbin3 tests/medias/video-2s.mkv
(...)
0...The leaks tracer is detecting a bunch of leaks when running `gst-play-1.0` on a video file with `--use-playbin3`.
```
$ GST_TRACERS="leaks" GST_DEBUG="GST_TRACER:7,leaks:6" gst-play-1.0 --use-playbin3 tests/medias/video-2s.mkv
(...)
0:00:02.180382846 654132 0x9ee990 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstTagList, address=(gpointer)0x7f6e74140630, description=(string)taglist, video-codec=(string)"H.264\ \(High\ Profile\)", encoder=(string)x264, bitrate=(uint)1442151, minimum-bitrate=(uint)1221360, maximum-bitrate=(uint)1541760;, ref-count=(uint)1, trace=(string);
0:00:02.180399648 654132 0x9ee990 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstStreamCollection, address=(gpointer)0x7f6e7800c660, description=(string)collection 0x7f6e7800c660 (1 streams) < stream video 0x7f6e7800c030, ID f2d60c1e06ba3aa6cf5f38c574482211fbe2efc8a2a5ddaa0dc9ead670e23370/001:3992135233783999116, flags 0x2, caps [video/x-h264, level=(string)2, profile=(string)high, codec_data=(buffer)01640014ffe1001d67640014acd94141fb016a0c020b4a000003000200000300791e28532c01000568ebecb22c, stream-format=(string)avc, alignment=(string)au, width=(int)320, height=(int)240, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:5:4, pixel-aspect-ratio=(fraction)1/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true], tags [taglist, video-codec=(string)"H.264\ \(High\ Profile\)", encoder=(string)x264, bitrate=(uint)1442151, minimum-bitrate=(uint)1221360, maximum-bitrate=(uint)1541760;], >, ref-count=(uint)1, trace=(string);
0:00:02.180409558 654132 0x9ee990 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstStream, address=(gpointer)0x7f6e7800c030, description=(string)stream video 0x7f6e7800c030, ID f2d60c1e06ba3aa6cf5f38c574482211fbe2efc8a2a5ddaa0dc9ead670e23370/001:3992135233783999116, flags 0x2, caps [video/x-h264, level=(string)2, profile=(string)high, codec_data=(buffer)01640014ffe1001d67640014acd94141fb016a0c020b4a000003000200000300791e28532c01000568ebecb22c, stream-format=(string)avc, alignment=(string)au, width=(int)320, height=(int)240, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:5:4, pixel-aspect-ratio=(fraction)1/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true], tags [taglist, video-codec=(string)"H.264\ \(High\ Profile\)", encoder=(string)x264, bitrate=(uint)1442151, minimum-bitrate=(uint)1221360, maximum-bitrate=(uint)1541760;], ref-count=(uint)1, trace=(string);
0:00:02.180422602 654132 0x9ee990 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstMemory, address=(gpointer)0x83c600, description=(string)0x83c600, ref-count=(uint)1, trace=(string);
0:00:02.180428627 654132 0x9ee990 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstConcatPad, address=(gpointer)0x7f6e7410a040, description=(string)<'':sink_0>, ref-count=(uint)55, trace=(string);
0:00:02.180434930 654132 0x9ee990 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstCaps, address=(gpointer)0x7f6e70014c50, description=(string)video/x-h264, level=(string)2, profile=(string)high, codec_data=(buffer)01640014ffe1001d67640014acd94141fb016a0c020b4a000003000200000300791e28532c01000568ebecb22c, stream-format=(string)avc, alignment=(string)au, width=(int)320, height=(int)240, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:5:4, pixel-aspect-ratio=(fraction)1/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true, ref-count=(uint)1, trace=(string);
0:00:02.180441880 654132 0x9ee990 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstBuffer, address=(gpointer)0x7f6e78007a20, description=(string)buffer: 0x7f6e78007a20, pts 99:99:99.999999999, dts 99:99:99.999999999, dur 99:99:99.999999999, size 45, offset none, offset_end none, flags 0x0, ref-count=(uint)1, trace=(string);
** (gst-play-1.0:654132): WARNING **: 16:19:13.367: Leaks detected and logged under GST_DEBUG=GST_TRACER:7
```
We do not have those when running without `--use-playbin3`.
Most of those are fixed with !1174 except this one for which I did not find any obvious culprit.
```
0:00:02.256666402 654310 0x18b0090 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstConcatPad, address=(gpointer)0x7f1bdc0fc080, description=(string)<'':sink_0>, ref-count=(uint)55, trace=(string);
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/887matroska-mux: Allowing multiple identical tags for per stream tags2023-07-04T16:43:47ZJimmi Christensenmatroska-mux: Allowing multiple identical tags for per stream tagsCurrently, the matroskamux hardcodes the merge mode for per stream tags to be `GST_TAG_MERGE_REPLACE`. This will cause duplicate tags to be reduced down to the latest that arrived.
```c
// gst/matroska/matroska-mux.c:851
if (...Currently, the matroskamux hardcodes the merge mode for per stream tags to be `GST_TAG_MERGE_REPLACE`. This will cause duplicate tags to be reduced down to the latest that arrived.
```c
// gst/matroska/matroska-mux.c:851
if (gst_tag_list_get_scope (list) == GST_TAG_SCOPE_GLOBAL) {
gst_tag_setter_merge_tags (GST_TAG_SETTER (mux), list,
gst_tag_setter_get_tag_merge_mode (GST_TAG_SETTER (mux)));
} else {
gst_tag_list_insert (collect_pad->tags, list, GST_TAG_MERGE_REPLACE);
}
```
Seems (from what I can gather from the matroska specs) that multiple identical tags should indeed be supported by matroska, so I'm a little confused as to why the replace merge mode is used here. Is the fix here, that a different merge mode should be used, or should there be something to configure the merge mode?https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/151fallbacksrc switching to last buffer instead of fallback_sink pad before restart2021-05-27T16:36:10ZMarkus Obermeierfallbacksrc switching to last buffer instead of fallback_sink pad before restartHi,
I am using the fallbacksrc plugin heavily in a scenario with 16 streams combined on a 4 x 4 mosaic.
- Due to network issues which I cannot avoid the buffers are not received within the 40 milliseconds timeout and an immediate fallb...Hi,
I am using the fallbacksrc plugin heavily in a scenario with 16 streams combined on a 4 x 4 mosaic.
- Due to network issues which I cannot avoid the buffers are not received within the 40 milliseconds timeout and an immediate fallback occurs, however, the timeout of 5 seconds is not reached. I have some kind of 'no signal' message that occurs therefore quite often and is really annoying when watching the mosaic.
- I would like to propose as an **enhancement** to allow during the timeout and before the scheduling of the restart happens to use instead of the fallback source the last buffer of the main source. This would show a freeze of the image but will continue once the buffer has been received. It's much more convenient.
- Since I am not very familiar with Rust programming language may I ask you to add this feature or outline how you would implement it and I will try myself?
In any case I would like to express my thanks for providing such great plugin. It saved a lot of effort since I was thinking about a similar but far less sophisticated thing before I found you've already implemented it so nicely.
Kind regards,
Markushttps://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/issues/132nlesource: should implement uridecodebin's autoplug-query according with nleo...2021-09-24T12:17:02ZVíctor Manuel Jáquez Lealnlesource: should implement uridecodebin's autoplug-query according with nleoperation's capsThis is related with issue #131
In order to negotiate specific caps features, for example, nleoperation uses glvideomixer, it could accept memory:DMABuf from decoders in nlesource, nlesource should implement autoplug-query signal from ...This is related with issue #131
In order to negotiate specific caps features, for example, nleoperation uses glvideomixer, it could accept memory:DMABuf from decoders in nlesource, nlesource should implement autoplug-query signal from uridecodebin and reply with the caps supported by nleoperation sink caps.
Another task could be to support uridecodebin3 in nlesource.https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/341examples: gtksink: leaks tracer detects lots of leaks2021-05-25T09:59:28ZGuillaume Desmottesexamples: gtksink: leaks tracer detects lots of leaksTo reproduce we need !775 and this extra change setting `num-buffers` on the source so the app is terminated properly:
```diff
diff --git a/examples/src/bin/gtksink.rs b/examples/src/bin/gtksink.rs
index 9e07bf04..51e2b0fa 100644
--- a/...To reproduce we need !775 and this extra change setting `num-buffers` on the source so the app is terminated properly:
```diff
diff --git a/examples/src/bin/gtksink.rs b/examples/src/bin/gtksink.rs
index 9e07bf04..51e2b0fa 100644
--- a/examples/src/bin/gtksink.rs
+++ b/examples/src/bin/gtksink.rs
@@ -21,6 +21,7 @@ use std::cell::RefCell;
fn create_ui(app: >k::Application) {
let pipeline = gst::Pipeline::new(None);
let src = gst::ElementFactory::make("videotestsrc", None).unwrap();
+ src.set_property("num-buffers", &50).unwrap();
// Create the gtk sink and retrieve the widget from it. The sink element will be used
// in the pipeline, and the widget will be embedded in our gui.
// Gstreamer then displays frames in the gtk widget.
```
We can then see that a lot of elements, including the pipeline are leaked:
```
$ GST_TRACERS="leaks" GST_DEBUG="GST_TRACER:7" cargo run --bin gtksink --features=gtksink
(...)
0:00:01.948911781 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstVideoTestSrc, address=(gpointer)0x560c217409e0, description=(string)<videotestsrc0>, ref-count=(uint)1, trace=(string);
0:00:01.949149722 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstProxyPad, address=(gpointer)0x560c218fe0a0, description=(string)<sink:proxypad0>, ref-count=(uint)1, trace=(string);
0:00:01.949283225 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstProxyControlBinding, address=(gpointer)0x560c2163a660, description=(string)<GstProxyControlBinding@0x560c2163a660>, ref-count=(uint)1, trace=(string);
0:00:01.949302335 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstProxyControlBinding, address=(gpointer)0x560c21893050, description=(string)<GstProxyControlBinding@0x560c21893050>, ref-count=(uint)1, trace=(string);
0:00:01.949315073 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstProxyControlBinding, address=(gpointer)0x560c2163a580, description=(string)<GstProxyControlBinding@0x560c2163a580>, ref-count=(uint)1, trace=(string);
0:00:01.949327049 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstProxyControlBinding, address=(gpointer)0x560c2163a4a0, description=(string)<GstProxyControlBinding@0x560c2163a4a0>, ref-count=(uint)1, trace=(string);
0:00:01.949338849 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstPipeline, address=(gpointer)0x560c218ee130, description=(string)<pipeline0>, ref-count=(uint)1, trace=(string);
0:00:01.949351882 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstPad, address=(gpointer)0x560c218f1120, description=(string)<glcolorbalance0:src>, ref-count=(uint)1, trace=(string);
0:00:01.949364233 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstPad, address=(gpointer)0x560c218f0ed0, description=(string)<glcolorbalance0:sink>, ref-count=(uint)1, trace=(string);
0:00:01.949376437 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstPad, address=(gpointer)0x560c218f0c80, description=(string)<glcolorconvertelement0:src>, ref-count=(uint)1, trace=(string);
0:00:01.949388504 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstPad, address=(gpointer)0x560c218f0a30, description=(string)<glcolorconvertelement0:sink>, ref-count=(uint)1, trace=(string);
0:00:01.949400701 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstPad, address=(gpointer)0x560c218f07e0, description=(string)<gluploadelement0:src>, ref-count=(uint)1, trace=(string);
0:00:01.949412818 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstPad, address=(gpointer)0x560c218f0590, description=(string)<gluploadelement0:sink>, ref-count=(uint)1, trace=(string);
0:00:01.949424708 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstPad, address=(gpointer)0x560c218f0340, description=(string)<sink:sink>, ref-count=(uint)1, trace=(string);
0:00:01.949432232 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstPad, address=(gpointer)0x560c218f00f0, description=(string)<videotestsrc0:src>, ref-count=(uint)1, trace=(string);
0:00:01.949439322 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstMemory, address=(gpointer)0x7f709c024130, description=(string)0x7f709c024130, ref-count=(uint)1, trace=(string);
0:00:01.949452903 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstMemory, address=(gpointer)0x7f70a86890e0, description=(string)0x7f70a86890e0, ref-count=(uint)1, trace=(string);
0:00:01.949462968 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstMemory, address=(gpointer)0x7f70a87268e0, description=(string)0x7f70a87268e0, ref-count=(uint)1, trace=(string);
0:00:01.949475884 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstMemory, address=(gpointer)0x7f70a87bd160, description=(string)0x7f70a87bd160, ref-count=(uint)1, trace=(string);
0:00:01.949485635 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstMemory, address=(gpointer)0x7f709c026400, description=(string)0x7f709c026400, ref-count=(uint)1, trace=(string);
0:00:01.949497069 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstMemory, address=(gpointer)0x7f709c023120, description=(string)0x7f709c023120, ref-count=(uint)1, trace=(string);
0:00:01.949508411 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGtkGLSink, address=(gpointer)0x560c21823330, description=(string)<sink>, ref-count=(uint)2, trace=(string);
0:00:01.949520324 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGhostPad, address=(gpointer)0x560c218fc060, description=(string)<glsinkbin0:sink>, ref-count=(uint)1, trace=(string);
0:00:01.949533017 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLWrappedContext, address=(gpointer)0x560c218ec190, description=(string)<glwrappedcontext0>, ref-count=(uint)8, trace=(string);
0:00:01.949545903 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLWindowX11, address=(gpointer)0x560c218fa340, description=(string)<glwindowx11-0>, ref-count=(uint)1, trace=(string);
0:00:01.949558034 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLUploadElement, address=(gpointer)0x560c218f83a0, description=(string)<gluploadelement0>, ref-count=(uint)1, trace=(string);
0:00:01.949570056 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLSinkBin, address=(gpointer)0x560c21691020, description=(string)<glsinkbin0>, ref-count=(uint)1, trace=(string);
0:00:01.949582227 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLShader, address=(gpointer)0x560c218ecf30, description=(string)<glshader1>, ref-count=(uint)1, trace=(string);
0:00:01.949593763 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLShader, address=(gpointer)0x560c218ecbd0, description=(string)<glshader0>, ref-count=(uint)1, trace=(string);
0:00:01.949605998 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLSLStage, address=(gpointer)0x560c218eccf0, description=(string)<glslstage2>, ref-count=(uint)1, trace=(string);
0:00:01.949624540 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLSLStage, address=(gpointer)0x560c218ec3f0, description=(string)<glslstage0>, ref-count=(uint)1, trace=(string);
0:00:01.949636531 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLSLStage, address=(gpointer)0x560c218ece10, description=(string)<glslstage3>, ref-count=(uint)1, trace=(string);
0:00:01.949648649 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLSLStage, address=(gpointer)0x560c218ec510, description=(string)<glslstage1>, ref-count=(uint)1, trace=(string);
0:00:01.949661264 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLOverlayCompositor, address=(gpointer)0x560c2174ff20, description=(string)<gloverlaycompositor0>, ref-count=(uint)1, trace=(string);
0:00:01.949673893 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLDisplayX11, address=(gpointer)0x560c2190a050, description=(string)<gldisplayx11-0>, ref-count=(uint)8, trace=(string);
0:00:01.949686069 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLContextGLX, address=(gpointer)0x560c21c280a0, description=(string)<glcontextglx0>, ref-count=(uint)15, trace=(string);
0:00:01.949698356 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLColorConvertElement, address=(gpointer)0x560c218f8730, description=(string)<glcolorconvertelement0>, ref-count=(uint)1, trace=(string);
0:00:01.949712595 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLColorBalance, address=(gpointer)0x560c21819d00, description=(string)<glcolorbalance0>, ref-count=(uint)1, trace=(string);
0:00:01.949725695 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstGLBufferPool, address=(gpointer)0x560c21c28ac0, description=(string)<glbufferpool3>, ref-count=(uint)1, trace=(string);
0:00:01.949738029 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstContext, address=(gpointer)0x560c218e3760, description=(string)context 'gst.gl.app_context'='context, context=(GstGLContext)"\(GstGLWrappedContext\)\ glwrappedcontext0";', ref-count=(uint)1, trace=(string);
0:00:01.949750620 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstContext, address=(gpointer)0x560c218e39e0, description=(string)context 'gst.gl.app_context'='context, context=(GstGLContext)"\(GstGLWrappedContext\)\ glwrappedcontext0";', ref-count=(uint)1, trace=(string);
0:00:01.949763411 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstContext, address=(gpointer)0x560c218e35e0, description=(string)context 'gst.gl.GLDisplay'='context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";', ref-count=(uint)1, trace=(string);
0:00:01.949775471 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstContext, address=(gpointer)0x560c218e3860, description=(string)context 'gst.gl.GLDisplay'='context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";', ref-count=(uint)1, trace=(string);
0:00:01.949788662 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstContext, address=(gpointer)0x560c218e3640, description=(string)context 'gst.gl.app_context'='context, context=(GstGLContext)"\(GstGLWrappedContext\)\ glwrappedcontext0";', ref-count=(uint)1, trace=(string);
0:00:01.949802417 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstContext, address=(gpointer)0x560c218e34c0, description=(string)context 'gst.gl.GLDisplay'='context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";', ref-count=(uint)1, trace=(string);
0:00:01.949815116 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstContext, address=(gpointer)0x560c218e3700, description=(string)context 'gst.gl.GLDisplay'='context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";', ref-count=(uint)3, trace=(string);
0:00:01.949827850 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstCaps, address=(gpointer)0x560c218d1590, description=(string)video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, texture-target=(string)2D, ref-count=(uint)4, trace=(string);
0:00:01.949842283 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstCaps, address=(gpointer)0x7f709c001f20, description=(string)video/x-raw, format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, ref-count=(uint)2, trace=(string);
0:00:01.949856164 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstBus, address=(gpointer)0x560c216d1a00, description=(string)<bus0>, ref-count=(uint)3, trace=(string);
0:00:01.949868147 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstBus, address=(gpointer)0x560c216d1880, description=(string)<bus1>, ref-count=(uint)2, trace=(string);
0:00:01.949879570 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstBus, address=(gpointer)0x560c213e65c0, description=(string)<bus2>, ref-count=(uint)5, trace=(string);
0:00:01.949892488 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstBuffer, address=(gpointer)0x560c218ec7e0, description=(string)buffer: 0x560c218ec7e0, pts 0:00:01.633333333, dts 99:99:99.999999999, dur 0:00:00.033333333, size 307200, offset 49, offset_end 50, flags 0x0, ref-count=(uint)1, trace=(string);
0:00:01.949906401 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstBuffer, address=(gpointer)0x560c218eca20, description=(string)buffer: 0x560c218eca20, pts 99:99:99.999999999, dts 99:99:99.999999999, dur 99:99:99.999999999, size 307200, offset none, offset_end none, flags 0x0, ref-count=(uint)1, trace=(string);
0:00:01.949919219 379244 0x560c21502f90 TRACE GST_TRACER :0:: object-alive, type-name=(string)GstBuffer, address=(gpointer)0x560c218ec900, description=(string)buffer: 0x560c218ec900, pts 99:99:99.999999999, dts 99:99:99.999999999, dur 99:99:99.999999999, size 307200, offset none, offset_end none, flags 0x0, ref-count=(uint)1, trace=(string);
** (gtksink:379244): WARNING **: 18:08:52.976: Leaks detected and logged under GST_DEBUG=GST_TRACER:7
```https://gitlab.freedesktop.org/gstreamer/gst-examples/-/issues/42Getting error nice_agent_parse_remote_candidate_sdp: assertion 'sdp != NULL' ...2021-05-21T12:01:23Zbharath rajaGetting error nice_agent_parse_remote_candidate_sdp: assertion 'sdp != NULL' failed"libnice checking for candidate in answer, instead of parsing candidate separately. I am trying to connect gstreamer webrtc with custom unity webrtc. I get the log as below. I am using gstreamer 1.18.0 in ubuntu 20.10. libnice is of versi...libnice checking for candidate in answer, instead of parsing candidate separately. I am trying to connect gstreamer webrtc with custom unity webrtc. I get the log as below. I am using gstreamer 1.18.0 in ubuntu 20.10. libnice is of version 0.1.16-1.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1596Problems when seeking on filesrc with TS file2021-05-21T12:38:59ZMarianna Smidth BuschleProblems when seeking on filesrc with TS fileI have generated the following test files:
```
gst-launch-1.0 videotestsrc is-live=true pattern=ball num-buffers=300 ! video/x-raw,framerate=30/1,format=NV12 ! timeoverlay ! x264enc key-int-max=30 speed-preset=1 tune=zerolatency ! video/...I have generated the following test files:
```
gst-launch-1.0 videotestsrc is-live=true pattern=ball num-buffers=300 ! video/x-raw,framerate=30/1,format=NV12 ! timeoverlay ! x264enc key-int-max=30 speed-preset=1 tune=zerolatency ! video/x-h264,profile=high ! mpegtsmux ! filesink location=test.ts -v -e
```
```
gst-launch-1.0 videotestsrc is-live=true pattern=ball num-buffers=300 ! video/x-raw,framerate=30/1,format=NV12 ! timeoverlay ! filesink location=test.raw -v
```
And then they are played in a python app using parse_launch:
```
"filesrc name=replay location=test.ts ! queue ! tsparse ! tsdemux ! h264parse ! avdec_h264 ! videoconvert ! ximagesink sync=1 "
```
```
"filesrc name=replay location=test.raw ! videoparse format=nv12 width=320 height=240 framerate=30/1 ! videoconvert ! ximagesink sync=1 "
```
I have however issues when trying to do seek operations in the H264 stream (with TS container).
Without the `queue` after the `filesrc` I get:
```
(gst_ctrl.py:183848): GStreamer-CRITICAL **: 11:08:08.431: pushing on pad replay:src but it was not activated in push mode
0:00:08.281698886 183848 0x7f21940098c0 WARN basesrc gstbasesrc.c:3127:gst_base_src_loop:<replay> error: Internal data stream error.
0:00:08.281735348 183848 0x7f21940098c0 WARN basesrc gstbasesrc.c:3127:gst_base_src_loop:<replay> error: streaming stopped, reason error (-5)
```
With the `queue` I'm able to do a single seek operation with:
```
self.pipeline.seek(1.0, Gst.Format.TIME,
(Gst.SeekFlags.FLUSH | Gst.SeekFlags.ACCURATE),
Gst.SeekType.SET, 0 , Gst.SeekType.NONE, -1)
```
But subsequent calls to seek give me:
```
0:00:10.778992854 183974 0x7f5e1c35d960 WARN tsdemux tsdemux.c:917:gst_ts_demux_do_seek: Couldn't convert start position to an offset
0:00:10.779094440 183974 0x7f5e1c35d960 WARN mpegtsbase mpegtsbase.c:1721:mpegts_base_handle_seek_event: seeking failed error
0:00:10.779115381 183974 0x7f5e1c35d960 WARN tsdemux tsdemux.c:974:gst_ts_demux_srcpad_event: seeking failed
0:00:10.779150565 183974 0x7f5e1c35d960 WARN tsdemux tsdemux.c:974:gst_ts_demux_srcpad_event: seeking failed
```
I have no issues with seeking on the raw stream.
Lastly, if I change the `filesrc` into `multifilesrc` I can perform multiple seeks in the H264 encoded file.
But It jumps to weird positions in the file instead of going to the start.
I have tried using Gst.SeekFlags.KEY_UNIT instead of Gst.SeekFlags.ACCURATE and trying seeking in BYTES instead of TIME, but seen no real difference...
See http://gstreamer-devel.966125.n4.nabble.com/seek-on-filesrc-with-TS-file-td4697440.htmlhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/906filesink file size2023-08-09T14:05:11ZGabriele-Vfilesink file sizeHello,
I'm capturing some audio stream with GStreamer on Windows, then encode to MP3 and export to file, the pipleline (for the involved part) is something like this:
`audioconvert ! lamemp3enc target=bitrate bitrate=192 ! filesink locat...Hello,
I'm capturing some audio stream with GStreamer on Windows, then encode to MP3 and export to file, the pipleline (for the involved part) is something like this:
`audioconvert ! lamemp3enc target=bitrate bitrate=192 ! filesink location=E:\TestGst\\Test.mp3`
Problem is that file size is 0kb for the entire "recording" and it gets his "real size" only at the end when gstreamer is stopped.
Is there a way to have the file size increasing, so I can understand if the recording is still running? I've tried with `buffer-mode` but without luck.
Thankshttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/700RFC: Support for feature alias2021-09-24T11:08:19ZStéphane Cerveauscerveau@igalia.comRFC: Support for feature aliasAs some inconsistencies exist in the registry such as the couple mpegtsmux/tsdemux. It would be useful to keep a feature name and provide also aliases to instanciate it.
I proposed to add a list of feature's alias in GStPluginFeature an...As some inconsistencies exist in the registry such as the couple mpegtsmux/tsdemux. It would be useful to keep a feature name and provide also aliases to instanciate it.
I proposed to add a list of feature's alias in GStPluginFeature and to avoid adding a new GST_ELEMENT_REGISTER method, add a syntax to declare the element such as "feature_name(feature_alias1,feature_alias2):
```
GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (tsdemux, "tsdemux(mpegtsdemux,tsd)",
GST_RANK_PRIMARY, GST_TYPE_TS_DEMUX, _do_element_init);
```https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/337gst-build rust doesn't compile2021-05-19T09:59:42ZWojciech Kapsagst-build rust doesn't compileOS: Ubuntu 20.04
git clone --branch 1.18.4 https://gitlab.freedesktop.org/gstreamer/gst-build.git
meson -Drs=enabled build
ninja -C build
Code doesn't compile. Maybe it's worth freezing a version for the rust just like the stabl...OS: Ubuntu 20.04
git clone --branch 1.18.4 https://gitlab.freedesktop.org/gstreamer/gst-build.git
meson -Drs=enabled build
ninja -C build
Code doesn't compile. Maybe it's worth freezing a version for the rust just like the stable releases of gstreamer? Master branch in gst-plugins-rs.wrap is problematic.
```
Updating crates.io index
Updating git repository `https://github.com/gtk-rs/gtk-rs-core`
Updating git repository `https://gitlab.freedesktop.org/gstreamer/gstreamer-rs`
Updating git repository `https://github.com/fengalin/tokio`
Updating git repository `https://github.com/gtk-rs/gtk3-rs`
Updating git repository `https://github.com/rust-av/flavors`
Compiling gst-plugin-version-helper v0.6.0 (/home/wk/workspace/gst-build/subprojects/gst-plugins-rs/version-helper)
Compiling gstreamer v0.17.0 (https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#b1088a6d)
Compiling gst-plugin-lewton v0.6.0 (/home/wk/workspace/gst-build/subprojects/gst-plugins-rs/audio/lewton)
error[E0053]: method `try_from_glib` has an incompatible type for trait
--> /home/wk/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/b1088a6/gstreamer/src/enums.rs:63:13
|
63 | fn try_from_glib(val: ffi::$ffi_type) -> Result<$ok_type, $err_type> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected unsafe fn, found normal fn
...
109 | / impl_return_result_traits!(
110 | | GstStateChangeReturn,
111 | | StateChangeReturn,
112 | | StateChangeSuccess,
113 | | StateChangeError
114 | | );
| |__- in this macro invocation
|
= note: expected fn pointer `unsafe fn(_) -> Result<_, _>`
found fn pointer `fn(_) -> Result<_, _>`
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0053]: method `try_from_glib` has an incompatible type for trait
--> /home/wk/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/b1088a6/gstreamer/src/enums.rs:63:13
|
63 | fn try_from_glib(val: ffi::$ffi_type) -> Result<$ok_type, $err_type> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected unsafe fn, found normal fn
...
193 | impl_return_result_traits!(GstFlowReturn, FlowReturn, FlowSuccess, FlowError);
| ------------------------------------------------------------------------------ in this macro invocation
|
= note: expected fn pointer `unsafe fn(_) -> Result<_, _>`
found fn pointer `fn(_) -> Result<_, _>`
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0053]: method `try_from_glib` has an incompatible type for trait
--> /home/wk/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/b1088a6/gstreamer/src/enums.rs:63:13
|
63 | fn try_from_glib(val: ffi::$ffi_type) -> Result<$ok_type, $err_type> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected unsafe fn, found normal fn
...
247 | / impl_return_result_traits!(
248 | | GstPadLinkReturn,
249 | | PadLinkReturn,
250 | | PadLinkSuccess,
251 | | PadLinkError
252 | | );
| |__- in this macro invocation
|
= note: expected fn pointer `unsafe fn(_) -> Result<_, _>`
found fn pointer `fn(_) -> Result<_, _>`
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0053]: method `try_from_glib` has an incompatible type for trait
--> /home/wk/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/b1088a6/gstreamer/src/enums.rs:63:13
|
63 | fn try_from_glib(val: ffi::$ffi_type) -> Result<$ok_type, $err_type> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected unsafe fn, found normal fn
...
313 | impl_return_result_traits!(GstClockReturn, ClockReturn, ClockSuccess, ClockError);
| ---------------------------------------------------------------------------------- in this macro invocation
|
= note: expected fn pointer `unsafe fn(_) -> Result<_, _>`
found fn pointer `fn(_) -> Result<_, _>`
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 4 previous errors
```https://gitlab.freedesktop.org/gstreamer/www/-/issues/36Add various older CVEs to the security section2021-05-19T07:02:01ZSebastian DrögeAdd various older CVEs to the security sectionSee https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=gstreamer . At least the following are missing:
* CVE-2020-6095
* CVE-2019-9928
* CVE-2017-*
* all older except for CVE-2016-9634 CVE-2016-9635 CVE-2016-9636 CVE-2016-9807 CVE-2016...See https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=gstreamer . At least the following are missing:
* CVE-2020-6095
* CVE-2019-9928
* CVE-2017-*
* all older except for CVE-2016-9634 CVE-2016-9635 CVE-2016-9636 CVE-2016-9807 CVE-2016-9445 CVE-2016-9446https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/-/issues/138set rtspclientsink state to "NULL" will block2023-06-14T09:45:51ZJieset rtspclientsink state to "NULL" will blockmy app is runs on android with gstreamer 1.16.2.
the pipline has two branch as follow:
rtspsrc -> rtph264depay -> tee -> queue -> amcviddec -> queue -> autovideosink
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n...my app is runs on android with gstreamer 1.16.2.
the pipline has two branch as follow:
rtspsrc -> rtph264depay -> tee -> queue -> amcviddec -> queue -> autovideosink
|
.--> queue -> rtspclientsink
link these two branches dynamically.
rtspsrc and rtspclientsink are useing different network.
when network unavailable for rtspclientsink, i get an error message from it.
and then set rtspclientsink state to NULL. the func gst_element_set_state will been blocked,
if i destroy the branch directly, the app will crash.
the func gst_element_set_state is blocked because RECORD CMD cannot be canncelled.
the rtspclientsink element thread will block in the following two lines (3603,4366):
gst/rtsp-sink/gstrtspclientsink.c:
````
3601 while (!context->prerolled && !sink->conninfo.flushing) {
3602 GST_DEBUG_OBJECT (sink, "Waiting for caps on stream %d", context->index);
3603 g_cond_wait (&sink->preroll_cond, &sink->preroll_lock);
3604 }
4363 /* Wait for streams to be blocked */
4364 while (sink->n_streams_blocked < g_list_length (sink->contexts)) {
4365 GST_DEBUG_OBJECT (sink, "waiting for streams to be blocked");
4366 g_cond_wait (&sink->block_streams_cond, &sink->block_streams_lock);
4367 }
````
my solution is as follows,clumsy but temporarily effective:
````
diff --git a/gst/rtsp-sink/gstrtspclientsink.c b/gst/rtsp-sink/gstrtspclientsink.c
index 9b87ea3..4712c86 100644
--- a/gst/rtsp-sink/gstrtspclientsink.c
+++ b/gst/rtsp-sink/gstrtspclientsink.c
@@ -2081,6 +2081,7 @@ gst_rtsp_client_sink_connection_flush (GstRTSPClientSink * sink, gboolean flush)
stream->conninfo.flushing = flush;
}
}
+ sink->conninfo.flushing = flush;
g_cond_broadcast (&sink->preroll_cond);
g_mutex_unlock (&sink->preroll_lock);
}
@@ -3571,6 +3572,7 @@ gst_rtsp_client_sink_collect_streams (GstRTSPClientSink * sink)
GstRTSPStreamContext *context;
GList *walk;
const gchar *base;
+ gint64 end_time;
gboolean has_slash;
GST_DEBUG_OBJECT (sink, "Collecting stream information");
@@ -3600,7 +3602,8 @@ gst_rtsp_client_sink_collect_streams (GstRTSPClientSink * sink)
g_mutex_lock (&sink->preroll_lock);
while (!context->prerolled && !sink->conninfo.flushing) {
GST_DEBUG_OBJECT (sink, "Waiting for caps on stream %d", context->index);
- g_cond_wait (&sink->preroll_cond, &sink->preroll_lock);
+ end_time = g_get_monotonic_time () + G_TIME_SPAN_MILLISECOND * 500;
+ g_cond_wait_until (&sink->preroll_cond, &sink->preroll_lock, end_time);
}
if (sink->conninfo.flushing) {
g_mutex_unlock (&sink->preroll_lock);
@@ -4343,6 +4346,7 @@ gst_rtsp_client_sink_record (GstRTSPClientSink * sink, gboolean async)
GInetAddress *ia;
GSocket *conn_socket;
GList *walk;
+ gint64 end_time;
g_mutex_lock (&sink->preroll_lock);
if (sink->state == GST_RTSP_STATE_PLAYING) {
@@ -4361,11 +4365,14 @@ gst_rtsp_client_sink_record (GstRTSPClientSink * sink, gboolean async)
g_mutex_lock (&sink->block_streams_lock);
/* Wait for streams to be blocked */
- while (sink->n_streams_blocked < g_list_length (sink->contexts)) {
+ while ((sink->n_streams_blocked < g_list_length (sink->contexts)) && ! sink->conninfo.flushing) {
GST_DEBUG_OBJECT (sink, "waiting for streams to be blocked");
- g_cond_wait (&sink->block_streams_cond, &sink->block_streams_lock);
+ end_time = g_get_monotonic_time () + G_TIME_SPAN_MILLISECOND * 500;
+ g_cond_wait_until (&sink->block_streams_cond, &sink->block_streams_lock, end_time);
}
g_mutex_unlock (&sink->block_streams_lock);
+ if (sink->conninfo.flushing)
+ return GST_RTSP_EINTR;
/* Send announce, then setup for all streams */
gst_sdp_message_init (&sink->cursdp);
````
any good ideas?https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/905FTBFS with meson-0.58.02021-05-18T16:36:43ZStefan PoetterFTBFS with meson-0.58.0When building gst-plugins-base-1.17.4 with meson-0.58.0 get the following error:
`[230/788] Compiling C object gst-libs/gst/gl/libgstgl-1.0.so.0.1804.0.p/gstglwindow.c.o
FAILED: gst-libs/gst/gl/libgstgl-1.0.so.0.1804.0.p/gstglwindow.c.o...When building gst-plugins-base-1.17.4 with meson-0.58.0 get the following error:
`[230/788] Compiling C object gst-libs/gst/gl/libgstgl-1.0.so.0.1804.0.p/gstglwindow.c.o
FAILED: gst-libs/gst/gl/libgstgl-1.0.so.0.1804.0.p/gstglwindow.c.o
cc -Igst-libs/gst/gl/libgstgl-1.0.so.0.1804.0.p -I. -I.. -Igst-libs -I../gst-libs -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gudev-1.0 -I/usr/include/libdrm -I/usr/include/valgrind -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O3 -fvisibility=hidden -fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -Wmissing-declarations -Wredundant-decls -Wundef -Wwrite-strings -Wformat -Wformat-nonliteral -Wformat-security -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar -Wvla -Wpointer-arith -Wmissing-prototypes -Wdeclaration-after-statement -fPIC -pthread -DHAVE_CONFIG_H -DBUILDING_GST_GL -MD -MQ gst-libs/gst/gl/libgstgl-1.0.so.0.1804.0.p/gstglwindow.c.o -MF gst-libs/gst/gl/libgstgl-1.0.so.0.1804.0.p/gstglwindow.c.o.d -o gst-libs/gst/gl/libgstgl-1.0.so.0.1804.0.p/gstglwindow.c.o -c ../gst-libs/gst/gl/gstglwindow.c
In file included from ../gst-libs/gst/gl/gstglwindow.c:54:
../gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.h:25:10: fatal error: xdg-shell-client-protocol.h: No such file or directory
25 | #include "xdg-shell-client-protocol.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.`
compared to a build with meson-0.56.0, the cc invocation is missing these includes:
-Igst-libs/gst/gl -Igst-libs/gst/video -Igst-libs/gst/allocators
I was able to build by removing:
implicit_include_directories : false
from gst-libs/gst/gl/meson.build line 1005.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1595webrtcbin: Bad error handling2021-06-24T11:30:28ZPhilippe Normandwebrtcbin: Bad error handlingAs part of the ongoing quest of getting jitsi to work in my WebKit gstwebrtc backend I am now hitting this:
```
0:00:06.303249622 69 0x1f4e860 ERROR default webrtcsdp.c:613:_get_final_setup: remote SDP has the sam...As part of the ongoing quest of getting jitsi to work in my WebKit gstwebrtc backend I am now hitting this:
```
0:00:06.303249622 69 0x1f4e860 ERROR default webrtcsdp.c:613:_get_final_setup: remote SDP has the same 'a=setup:actpass' attribute. This is not legal
0:00:06.303263102 69 0x1f4e860 TRACE webrtcbin gstwebrtcbin.c:4003:_find_transceiver_for_sdp_media:<webkit-webrtcbin-0> Found transceiver <webrtctransceiver1>
0:00:06.303271612 69 0x1f4e860 TRACE webrtcbin gstwebrtcbin.c:594:_find_transport_for_session:<webkit-webrtcbin-0> Found transport <transportstream0> for session 0
0:00:06.303280383 69 0x1f4e860 DEBUG webrtctransportsendbin transportsendbin.c:166:transport_send_bin_change_state:<transportsendbin0> changing state: PLAYING => PLAYING
0:00:06.303295696 69 0x1f4e860 DEBUG webrtctransportreceivebin transportreceivebin.c:213:transport_receive_bin_change_state: changing state: PLAYING => PLAYING
0:00:06.303323534 69 0x1f4e860 ERROR default webrtcsdp.c:613:_get_final_setup: remote SDP has the same 'a=setup:actpass' attribute. This is not legal
(WebKitWebProcess:69): GLib-WARNING **: 01:38:06.104: GError set over the top of a previous GError or uninitialized memory.
This indicates a bug in someone's code. You must ensure an error is NULL before it's set.
The overwriting error message was: Cannot intersect direction attributes for media 1
0:00:06.303554094 69 0x19e1550 DEBUG webkitmediastreamsrc GStreamerMediaStreamSource.cpp:439:webkitMediaStreamSrcChangeState:<webkitmediastreamsrc4> READY->PAUSED
** (MiniBrowser:21): WARNING **: 01:38:19.999: WebProcess CRASHED
```
The issue seems to be that `_update_transceiver_from_sdp_media()` sets the GError once but we don't exit from the loop it's called from in `_update_transceivers_from_sdp()` so that opens the door to have the error set more than once, which apparently is not allowed :)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/699Recording video with cheese: Internal GStreamer error: code not implemented2022-11-10T09:21:06ZDennis RitterRecording video with cheese: Internal GStreamer error: code not implementedWhenever I'm trying to record a video I'm getting these errors (it worked some time ago on Ubuntu 20.10). The timer starts at a seemingly random time and the first part of the video is only a green screen.
```
Mai 16 08:53:48 cheese[5745...Whenever I'm trying to record a video I'm getting these errors (it worked some time ago on Ubuntu 20.10). The timer starts at a seemingly random time and the first part of the video is only a green screen.
```
Mai 16 08:53:48 cheese[5745]: Internal GStreamer error: code not implemented. Please file a bug at https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/new.: ../gst-libs/gst/video/gstvideofilter.c(296): gst_video_filter_transform (): /GstCameraBin:camerabin/GstEncodeBin:video-encodebin/GstVideoConvert:videoconvert1:
invalid video buffer received
Mai 16 08:53:50 cheese[5745]: Can't record audio fast enough: ../gst-libs/gst/audio/gstaudiobasesrc.c(841): gst_audio_base_src_create (): /GstCameraBin:camerabin/GstAutoAudioSrc:audiosrc/GstPulseSrc:audiosrc-actual-src-puls:
Dropped 62181 samples. This is most likely because downstream can't keep up and is consuming samples too slowly.
```
Cheese version: 3.38.0-3 on Ubuntu 21.04https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1594alphadecodebin: incorrect rendering on lossless VP92021-05-31T13:15:40ZNazar Mokrynskyialphadecodebin: incorrect rendering on lossless VP9I found that VP9 with alpha channel encoded on lossless mode is not decoded correctly by both GStreamer on master branch and FFmpeg as well, but at the same time it is rendered correctly by Firefox and Chromium, so there must be somethin...I found that VP9 with alpha channel encoded on lossless mode is not decoded correctly by both GStreamer on master branch and FFmpeg as well, but at the same time it is rendered correctly by Firefox and Chromium, so there must be something GStreamer can do about it.
Visually it looks like if alpha channel is being effectively ignored in this case.
Example file: https://cdn.streamelements.com/uploads/187c102b-ac08-4843-8ac9-4e6be93688b9.webmhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/698multiqueue: Can return GST_FLOW_OK after returning GST_FLOW_EOS2021-09-24T11:08:20ZNicolas Dufresnemultiqueue: Can return GST_FLOW_OK after returning GST_FLOW_EOSUnlike the `queue`, the `multiqueue` do not remember that downstream have return GST_FLOW_EOS. As a side effect, it will propadate the FLOW_EOS, but only once. If the following buffers are simply queued, a FLOW_OK will arrive.
What `que...Unlike the `queue`, the `multiqueue` do not remember that downstream have return GST_FLOW_EOS. As a side effect, it will propadate the FLOW_EOS, but only once. If the following buffers are simply queued, a FLOW_OK will arrive.
What `queue` does, is that it remembers this state passed the queue being empty, keeps dropping, and convert all input data return value to EOS. And does that until one of the following occure, event EOS comes it, which enabled more dropping, event SEGMENT or STREAM-START.
The side effect is that upstream element that keeps pushing and uses GstFlowCombiner, may not converge into returning GST_FLOW_EOS, as that state endup lost by a sudden FLOW_OK.https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/904textoverlay: shaded-background=true does not work on windows2021-09-24T13:26:20Zvt-smxtextoverlay: shaded-background=true does not work on windowsHy,
I tried on windows 10 x64 following command:
`gst-launch-1.0 videotestsrc ! textoverlay font-desc="Sans 24" text="TEST" shaded-background=true ! autovideosink`
The shaded background is not shown.
See screenshot:
![2021-05-14_08_4...Hy,
I tried on windows 10 x64 following command:
`gst-launch-1.0 videotestsrc ! textoverlay font-desc="Sans 24" text="TEST" shaded-background=true ! autovideosink`
The shaded background is not shown.
See screenshot:
![2021-05-14_08_40_41-Direct3D11_renderer](/uploads/8f556de04c672fb1f868e4df3fc3746e/2021-05-14_08_40_41-Direct3D11_renderer.png)https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/328cerbero v 1.18.4: msvc build fails with VS2019 version 16.9.42021-05-14T13:33:24ZAaron Boxercerbero v 1.18.4: msvc build fails with VS2019 version 16.9.4Error:
```
c:\Users\vdi\source\repos\cerbero\build\dist\msvc_x86_64\include\spandsp/fast_convert.h(320): error C2169: 'lrint': intrinsic function, cannot be defined
```
It appears that msvc version 16.9.x supplies its own intrinsic for...Error:
```
c:\Users\vdi\source\repos\cerbero\build\dist\msvc_x86_64\include\spandsp/fast_convert.h(320): error C2169: 'lrint': intrinsic function, cannot be defined
```
It appears that msvc version 16.9.x supplies its own intrinsic for `lrint`, where it didn't in previous versions. This conflicts with custom `lrint` implementation.
See this [audacity issue](https://forum.audacityteam.org/viewtopic.php?t=116165&start=10) for how this was dealt with on that project.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/697Cheese shows flickering2021-05-14T13:09:00ZMD IntisarCheese shows flickeringCheese shows flickering. Running it in the terminal shows the following.
```
Internal GStreamer error: code not implemented. Please file a bug at https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/new.: ../gst-plugins-base/gst-...Cheese shows flickering. Running it in the terminal shows the following.
```
Internal GStreamer error: code not implemented. Please file a bug at https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/new.: ../gst-plugins-base/gst-libs/gst/video/gstvideofilter.c(296): gst_video_filter_transform (): /GstCameraBin:camerabin/GstViewfinderBin:vf-bin/GstVideoConvert:vfbin-csp:
invalid video buffer received
```