GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2023-11-02T13:13:48Zhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3085waylandsink: support only RGB formats2023-11-02T13:13:48ZRoman Shpuntovwaylandsink: support only RGB formatsI use gstreamer 1.22.5 on Ubuntu 23.10. gst-inspect shows next formats for `waylandsink`:
```
Pad Templates:
SINK template: 'sink'
Availability: Always
Capabilities:
video/x-raw
format: { (string)BGRx, (s...I use gstreamer 1.22.5 on Ubuntu 23.10. gst-inspect shows next formats for `waylandsink`:
```
Pad Templates:
SINK template: 'sink'
Availability: Always
Capabilities:
video/x-raw
format: { (string)BGRx, (string)BGRA, (string)RGBx, (string)xBGR, (string)xRGB, (string)RGBA, (string)ABGR, (string)ARGB, (string)RGB, (string)BGR, (string)RGB16, (string)BGR16, (string)YUY2, (string)YVYU, (string)UYVY, (string)AYUV, (string)NV12, (string)NV21, (string)NV16, (string)NV61, (string)YUV9, (string)YVU9, (string)Y41B, (string)I420, (string)YV12, (string)Y42B, (string)v308 }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
```
I tried to use `videotestsrc` format I420 with `waylandsink`:
```
gst-launch-1.0 videotestsrc ! "video/x-raw, format=(string)I420" ! waylandsink -vv
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data stream error.
Additional debug info:
../libs/gst/base/gstbasesrc.c(3132): gst_base_src_loop (): /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
```
and format NV12:
```
gst-launch-1.0 videotestsrc ! "video/x-raw, format=(string)NV12" ! waylandsink -vv
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data stream error.
Additional debug info:
../libs/gst/base/gstbasesrc.c(3132): gst_base_src_loop (): /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
```
and no problem with `videoconvert`:
```
gst-launch-1.0 videotestsrc ! "video/x-raw, format=(string)I420" ! videoconvert ! waylandsink -vv
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = video/x-raw, format=(string)I420, width=(int)320, height=(int)240, framerate=(fraction)30/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, format=(string)I420, width=(int)320, height=(int)240, framerate=(fraction)30/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)320, height=(int)240, framerate=(fraction)30/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, format=(string)BGRx
/GstPipeline:pipeline0/GstWaylandSink:waylandsink0.GstPad:sink: caps = video/x-raw, width=(int)320, height=(int)240, framerate=(fraction)30/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, format=(string)BGRx
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)I420, width=(int)320, height=(int)240, framerate=(fraction)30/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, format=(string)I420, width=(int)320, height=(int)240, framerate=(fraction)30/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstSystemClock
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:01.706451202
Setting pipeline to NULL ...
Freeing pipeline ...
```
I have the same problem with `gtkwaylandsink`https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3084Unable to build on iOS Simulator on Apple Silicon2023-11-08T11:23:42ZArnaud SchildknechtUnable to build on iOS Simulator on Apple Silicon### Describe your issue
I'm trying to build a project using GStreamer 1.22.6 with the iOS simulator on Xcode 15. I keep getting the following error :
```
Building for 'iOS-simulator', but linking in object file (/Users/******/Library/Dev...### Describe your issue
I'm trying to build a project using GStreamer 1.22.6 with the iOS simulator on Xcode 15. I keep getting the following error :
```
Building for 'iOS-simulator', but linking in object file (/Users/******/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/Versions/1.0/GStreamer[arm64][66](libgstadder_a-gstadder.c.o)) built for 'iOS'
```
I initially thought about a project configuration issue, but ... I tried the [example project](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/tree/main/subprojects/gst-docs/examples/tutorials/xcode%20iOS/) and I get the exact same error.
Is it supposed to work on an iOS simulator?
#### Expected Behavior
The project to build and run successfully.
#### Observed Behavior
The project fails to compile with the error mentioned in the description.
#### Setup
- **Operating System:** MacOS 14.0
- **Device:** Macbook Pro M2 Pro
- **GStreamer Version:** 1.22.6
- **Command line:** zsh
- **Xcode version:** 15.0
- **iOS Version:** 17.0
### Steps to reproduce the bug
1. Download the [example project](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/tree/main/subprojects/gst-docs/examples/tutorials/xcode%20iOS/)
2. Select the target "Tutorial 1"
3. Select an iOS Simulator e.g. iPhone 15 Pro
4. Run
### How reproducible is the bug?
Always (at least in my case)
### Related non-duplicate issues
https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/378https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3083[regression][build][linux] on gst-plugins-good/sys/ximage/gstximagesrc.c2023-11-03T18:20:53ZBin-CI[regression][build][linux] on gst-plugins-good/sys/ximage/gstximagesrc.ccatch build regression cause by https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5493
```
10:30:02,742 INFO - FAILED: subprojects/gst-plugins-good/sys/ximage/libgstximagesrc.so
10:30:02,742 INFO - cc -o subprojects/...catch build regression cause by https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5493
```
10:30:02,742 INFO - FAILED: subprojects/gst-plugins-good/sys/ximage/libgstximagesrc.so
10:30:02,742 INFO - cc -o subprojects/gst-plugins-good/sys/ximage/libgstximagesrc.so subprojects/gst-plugins-good/sys/ximage/libgstximagesrc.so.p/gstximagesrc.c.o subprojects/gst-plugins-good/sys/ximage/libgstximagesrc.so.p/ximageutil.c.o -L/opt/media/install/lib -I/opt/media/install/include -Wl,--as-needed -Wl,--no-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,libgstximagesrc.so -Wl,-Bsymbolic-functions -Wl,-z,nodelete -g3 '-Wl,-rpath,$ORIGIN/../../../gstreamer/libs/gst/base:$ORIGIN/../../../gstreamer/gst:$ORIGIN/../../../gst-plugins-base/gst-libs/gst/video:$ORIGIN/../../../orc/orc' -Wl,-rpath-link,/opt/media/build/gstreamer/__meson_build/subprojects/gstreamer/libs/gst/base -Wl,-rpath-link,/opt/media/build/gstreamer/__meson_build/subprojects/gstreamer/gst -Wl,-rpath-link,/opt/media/build/gstreamer/__meson_build/subprojects/gst-plugins-base/gst-libs/gst/video -Wl,-rpath-link,/opt/media/build/gstreamer/__meson_build/subprojects/orc/orc subprojects/gstreamer/libs/gst/base/libgstbase-1.0.so.0.2300.0 subprojects/gstreame...
10:30:02,742 INFO - /usr/bin/ld: subprojects/gst-plugins-good/sys/ximage/libgstximagesrc.so.p/gstximagesrc.c.o: in function `gst_ximage_src_event':
10:30:02,742 INFO - /opt/media/build/gstreamer/__meson_build/../subprojects/gst-plugins-good/sys/ximage/gstximagesrc.c:1246: undefined reference to `gst_ximage_navigation_mouse_push_button'
10:30:02,742 INFO - /usr/bin/ld: /opt/media/build/gstreamer/__meson_build/../subprojects/gst-plugins-good/sys/ximage/gstximagesrc.c:1237: undefined reference to `gst_ximage_navigation_key'
10:30:02,743 INFO - /usr/bin/ld: /opt/media/build/gstreamer/__meson_build/../subprojects/gst-plugins-good/sys/ximage/gstximagesrc.c:1264: undefined reference to `gst_ximage_navigation_mouse_push_button'
10:30:02,743 INFO - /usr/bin/ld: /opt/media/build/gstreamer/__meson_build/../subprojects/gst-plugins-good/sys/ximage/gstximagesrc.c:1266: undefined reference to `gst_ximage_navigation_mouse_push_button'
10:30:02,743 INFO - /usr/bin/ld: /opt/media/build/gstreamer/__meson_build/../subprojects/gst-plugins-good/sys/ximage/gstximagesrc.c:1253: undefined reference to `gst_ximage_navigation_mouse_move_pointer'
10:30:02,743 INFO - collect2: error: ld returned 1 exit status
```https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3082some question about use flvdemux2023-11-02T06:52:10ZBarry-chen12581some question about use flvdemuxI have some questions when I try to use flvdemux.
I have a rtmp stream, I need to use flvdemux to get the video.
This is my cmd:
gst-launch-1.0 -v rtmpsrc location={rtmpsrc} ! flvdemux name=demux demux.video ! queue ! identity name=v_d...I have some questions when I try to use flvdemux.
I have a rtmp stream, I need to use flvdemux to get the video.
This is my cmd:
gst-launch-1.0 -v rtmpsrc location={rtmpsrc} ! flvdemux name=demux demux.video ! queue ! identity name=v_delay signal-handoffs=TRUE ! h264parse ! video/x-h264,stream-format=byte-stream ! fakesink demux.audio ! queue ! fakesink
but it doesn’t work each time, sometimes It can work, sometimes it can’t.
this is success
gst-launch-1.0 -v rtmpsrc location={rtmpsrc} ! flvdemux name=demux demux.video ! queue ! identity name=v_delay signal-handoffs=TRUE ! h264parse ! video/x-h264,stream-format=byte-stream ! fakesink demux.audio ! queue ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, rate=(int)44100, channels=(int)2, codec_data=(buffer)1210
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:src: caps = audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, rate=(int)44100, channels=(int)2, codec_data=(buffer)1210
/GstPipeline:pipeline0/GstFakeSink:fakesink1.GstPad:sink: caps = audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, rate=(int)44100, channels=(int)2, codec_data=(buffer)1210
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-h264, stream-format=(string)avc, pixel-aspect-ratio=(fraction)1/1, codec_data=(buffer)01640028ffe1001c27640028ac2d301e0089f97011000003000100000300329da1c3138001000428ee3cb0
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/x-h264, stream-format=(string)avc, pixel-aspect-ratio=(fraction)1/1, codec_data=(buffer)01640028ffe1001c27640028ac2d301e0089f97011000003000100000300329da1c3138001000428ee3cb0
/GstPipeline:pipeline0/GstIdentity:v_delay.GstPad:src: caps = video/x-h264, stream-format=(string)avc, pixel-aspect-ratio=(fraction)1/1, codec_data=(buffer)01640028ffe1001c27640028ac2d301e0089f97011000003000100000300329da1c3138001000428ee3cb0
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = video/x-h264, stream-format=(string)avc, pixel-aspect-ratio=(fraction)1/1, codec_data=(buffer)01640028ffe1001c27640028ac2d301e0089f97011000003000100000300329da1c3138001000428ee3cb0
/GstPipeline:pipeline0/GstIdentity:v_delay.GstPad:sink: caps = video/x-h264, stream-format=(string)avc, pixel-aspect-ratio=(fraction)1/1, codec_data=(buffer)01640028ffe1001c27640028ac2d301e0089f97011000003000100000300329da1c3138001000428ee3cb0
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, stream-format=(string)byte-stream, pixel-aspect-ratio=(fraction)1/1, width=(int)1920, height=(int)1080, framerate=(fraction)25/1, parsed=(boolean)true, alignment=(string)au, profile=(string)high, level=(string)4
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-h264, stream-format=(string)byte-stream, pixel-aspect-ratio=(fraction)1/1, width=(int)1920, height=(int)1080, framerate=(fraction)25/1, parsed=(boolean)true, alignment=(string)au, profile=(string)high, level=(string)4
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, pixel-aspect-ratio=(fraction)1/1, width=(int)1920, height=(int)1080, framerate=(fraction)25/1, parsed=(boolean)true, alignment=(string)au, profile=(string)high, level=(string)4
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, pixel-aspect-ratio=(fraction)1/1, width=(int)1920, height=(int)1080, framerate=(fraction)25/1, parsed=(boolean)true, alignment=(string)au, profile=(string)high, level=(string)4
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
![image](/uploads/2d92b4e544fbdd37965f8c9bede9d9d1/image.png)
this is not work
gst-launch-1.0 -v rtmpsrc location={rtmpsrc} ! flvdemux name=demux demux.video ! queue ! identity name=v_delay signal-handoffs=TRUE ! h264parse ! video/x-h264,stream-format=byte-stream ! fakesink demux.audio ! queue ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, rate=(int)44100, channels=(int)2, codec_data=(buffer)1210
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:src: caps = audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, rate=(int)44100, channels=(int)2, codec_data=(buffer)1210
/GstPipeline:pipeline0/GstFakeSink:fakesink1.GstPad:sink: caps = audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, rate=(int)44100, channels=(int)2, codec_data=(buffer)1210
![image](/uploads/bcd34bcb480602f69bc6627b5ab77c95/image.png)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3081gst-python build fails on Python 3.13 (patch included)2023-11-03T16:42:57ZGwyn Cieslagst-python build fails on Python 3.13 (patch included)https://bugzilla.redhat.com/show_bug.cgi?id=224725[py313.patch](/uploads/239a69609da6662674913acc23c0ca96/py313.patch)https://bugzilla.redhat.com/show_bug.cgi?id=224725[py313.patch](/uploads/239a69609da6662674913acc23c0ca96/py313.patch)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3079gl: gloverlaycompositor stops rendering overlays after glimagesink is resized...2023-11-08T14:31:00ZPiotr Brzezińskigl: gloverlaycompositor stops rendering overlays after glimagesink is resized to minimum sizeReproduction steps:
1. `gst-launch-1.0 videotestsrc ! timeoverlay ! glimagesink`
2. Shrink glimagesink window to minimum height possible
After resizing it back to normal size you will notice the overlay is gone. gloverlaycompositor stop...Reproduction steps:
1. `gst-launch-1.0 videotestsrc ! timeoverlay ! glimagesink`
2. Shrink glimagesink window to minimum height possible
After resizing it back to normal size you will notice the overlay is gone. gloverlaycompositor stops working completely, no logs no nothing.
Confirmed happening on macOS and Linux, doesn't seem platform specific.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3078Set multiple properties with freeze_notify2023-10-31T16:17:05ZOmer TalSet multiple properties with freeze_notifyHello all,
So I am trying to set multiple properties of a GstElement using g_object_set. The number of properties is unknown so this must occur within a loop. I want all the properties to be updated at the same time, so I was trying to ...Hello all,
So I am trying to set multiple properties of a GstElement using g_object_set. The number of properties is unknown so this must occur within a loop. I want all the properties to be updated at the same time, so I was trying to use `g_object_freeze_notify` & `g_object_thaw_notify`.
So basically it looks something like this:
```
g_object_freeze_notify(object);
for (...)
{
g_object_set(object, ...);
}
g_object_thaw_notify(object);
```
My goal is to update `videocrop` properties and make sure the output is always at a fixed width & height (so I have to change top & bottom and left & right at the same time).
While I was testing my code, I tried removing the `g_object_thaw_notify()` call, and surprisingly, the object's properties did in fact change.
Is that an issue? Am I doing something wrong?
Thanks.
Omer.https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/1032matroskademux: Number of protected subsamples might zero in WebM2023-10-31T07:43:03Zzhaolifengmatroskademux: Number of protected subsamples might zero in WebMnb_part maybe zero, in test av1 cenc(WebM) case.nb_part maybe zero, in test av1 cenc(WebM) case.https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/454webrtcsink: Launching GStreamer pipeline fails2023-11-17T19:49:48ZMatt Kirklandwebrtcsink: Launching GStreamer pipeline failsRunning on Windows 10
- Installed both MSVC packages
- Installed Rust
- Have Node v18.16.0 installed
Going through the documentation i ran the commands that are shown
- WEBRTCSINK_SIGNALLING_SERVER_LOG=debug cargo run --bin gst-webrtc-s...Running on Windows 10
- Installed both MSVC packages
- Installed Rust
- Have Node v18.16.0 installed
Going through the documentation i ran the commands that are shown
- WEBRTCSINK_SIGNALLING_SERVER_LOG=debug cargo run --bin gst-webrtc-signalling-server (SERVER STARTS AND RUNS FINE)
- gstwebrtc-api npm install/npm run (RUNS FINE AND I GET THE WEB UI THAT WILL STREAM WEBCAM WITHOUT ISSUE)
- gst-launch-1.0 webrtcsink name=ws meta="meta,name=gst-stream" videotestsrc ! ws. audiotestsrc ! ws. (THIS FAILS. Runs for about 2 seconds then fails![streamError](/uploads/b656c7647cedf0cbd5f2d662e40fb83f/streamError.PNG)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3071Should kate plugin be removed from bad ?2023-10-27T09:11:26ZFederico Mena QuinteroShould kate plugin be removed from bad ?As far as I can tell, libtiger's source is not available anymore in googlecode.com nor git.xiph.org. Distros appear to be carrying an old tarball for years.
Should the kate plugin be removed? This would allow distros to remove libkate...As far as I can tell, libtiger's source is not available anymore in googlecode.com nor git.xiph.org. Distros appear to be carrying an old tarball for years.
Should the kate plugin be removed? This would allow distros to remove libkate / libtiger and lose some unmaintained code.https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/453gstwebrtc-api: use as non global instance2024-02-27T12:54:33ZYorick Smildagstwebrtc-api: use as non global instanceFor an application I'm developing I'd like to incorporate the provided `gstwebrtc-api` for JavaScript. This works, however it is less than ideal that the library acts as a single global instance instead of an object that can be instantia...For an application I'm developing I'd like to incorporate the provided `gstwebrtc-api` for JavaScript. This works, however it is less than ideal that the library acts as a single global instance instead of an object that can be instantiated.
The problems that could be solved with this:
- Set a config on the declaration of a new instance instead of a single config before `DOM` load.
- Communicate with multiple signalling servers from one page.
From the documentation I couldn't deduce the design choices that led to it being a global instance, but in my opinion the other option would be beneficial.
The question becomes; is this a change that would be accepted?
And if so, is there someone who would want to help make this change? As I'm not that familiar with the stack that was used to build the original implementation.https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/452livesync: synchronization broken when receiving early buffer after segment up...2023-11-10T15:47:47ZGuillaume Desmotteslivesync: synchronization broken when receiving early buffer after segment updateI found another segment problem (cf #450).
After running for a while, `uriplaylistbin` upstream switches to the next media item, sending a new segment and resetting buffer `pts`.
But as the first buffer is too early, this new segment is...I found another segment problem (cf #450).
After running for a while, `uriplaylistbin` upstream switches to the next media item, sending a new segment and resetting buffer `pts`.
But as the first buffer is too early, this new segment is never forwarded downstream.
As a result downstream (`audiobuffersplit`) got invalid running-time and `livesync` code waiting on code is broken.
I'm also not sure why it set the duration of the first buffer to 0.5 sec?
Here are the logs:
```
0:03:04.426598717 537298 0x555b03cca060 TRACE livesync imp.rs:723:gstlivesync::livesync::imp::LiveSync::sink_event:<10-0-encoder-audio-audio-livesync> Queueing Event { ptr: 0x7f3af8002d60, type: "segment", seqnum: Seqnum(3639), structure: Some(GstEventSegment { segment: (GstSegment) ((GstSegment*) 0x7f3b04001cb0) }) }
0:03:04.426622773 537298 0x555b03cca060 TRACE livesync imp.rs:812:gstlivesync::livesync::imp::LiveSync::sink_chain:<10-0-encoder-audio-audio-livesync> Incoming Buffer { ptr: 0x7f3ad02abb40, pts: 0:00:00.044000000, dts: --:--:--.---------, duration: 0:00:00.019999999, size: 7680, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(DISCONT), metas: [] }
0:03:04.427553475 537298 0x555b03d07060 TRACE livesync imp.rs:1018:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Waiting for clock to reach 24:22:02.542633419
0:03:04.449580743 537298 0x555b03d07060 TRACE livesync imp.rs:1026:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Clock returned Ok(Ok) -21957975
0:03:04.449608195 537298 0x555b03d07060 TRACE livesync imp.rs:1037:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Unqueueing Some(Buffer(Buffer { ptr: 0x555b03dae5a0, pts: 0:03:00.023532454, dts: --:--:--.---------, duration: 0:00:00.000708333, size: 272, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(0x0), metas: [] }, OnTime))
0:03:04.449628353 537298 0x555b03d07060 TRACE livesync imp.rs:1192:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Pushing Buffer { ptr: 0x555b03dae5a0, pts: 0:03:00.023532454, dts: --:--:--.---------, duration: 0:00:00.000708333, size: 272, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(0x0), metas: [] }
0:03:04.449639273 537298 0x555b03d07060 LOG audiobuffersplit gstaudiobuffersplit.c:715:gst_audio_buffer_split_sink_chain:<10-0-encoder-audio-audiobuffersplit> Processing buffer at running time 24:22:01.542633419 with timestamp 0:03:00.023532454 with duration 0:00:00.000708333 (34 samples)
0:03:04.449640716 537298 0x555b03cca060 TRACE livesync imp.rs:936:gstlivesync::livesync::imp::LiveSync::sink_chain:<10-0-encoder-audio-audio-livesync> Queueing Buffer { ptr: 0x7f3ad02abb40, pts: 0:00:00.044000000, dts: --:--:--.---------, duration: 0:00:00.020000000, size: 7680, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(DISCONT), metas: [] } (OnTime)
0:03:04.449675472 537298 0x555b03d07060 TRACE livesync imp.rs:1018:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Waiting for clock to reach 24:22:02.543341752
0:03:04.449677335 537298 0x555b03cca060 TRACE livesync imp.rs:812:gstlivesync::livesync::imp::LiveSync::sink_chain:<10-0-encoder-audio-audio-livesync> Incoming Buffer { ptr: 0x7f3ad02aba20, pts: 0:00:00.064000000, dts: --:--:--.---------, duration: 0:00:00.021333333, size: 8192, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(0x0), metas: [] }
0:03:04.450473843 537298 0x555b03d07060 TRACE livesync imp.rs:1026:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Clock returned Ok(Ok) -545143
0:03:04.450501335 537298 0x555b03d07060 TRACE livesync imp.rs:1037:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Unqueueing Some(Event(Event { ptr: 0x7f3a800032a0, type: "tag", seqnum: Seqnum(3382), structure: Some(GstTagList-stream { taglist: (GstTagList) ((GstTagList*) 0x7f3a7400a370) }) }))
0:03:04.450546791 537298 0x555b03d07060 TRACE livesync imp.rs:1018:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Waiting for clock to reach 24:22:02.543341752
0:03:04.450555448 537298 0x555b03d07060 TRACE livesync imp.rs:1026:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Clock returned Err(Early) 325165
0:03:04.450567591 537298 0x555b03d07060 TRACE livesync imp.rs:1037:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Unqueueing Some(Event(Event { ptr: 0x7f3ab40d2020, type: "tag", seqnum: Seqnum(1142), structure: Some(GstTagList-global { taglist: (GstTagList) ((GstTagList*) 0x7f3b380021e0) }) }))
0:03:04.450580295 537298 0x555b03d07060 TRACE livesync imp.rs:1018:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Waiting for clock to reach 24:22:02.543341752
0:03:04.450587088 537298 0x555b03d07060 TRACE livesync imp.rs:1026:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Clock returned Err(Early) 357356
0:03:04.450597888 537298 0x555b03d07060 TRACE livesync imp.rs:1037:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Unqueueing Some(Event(Event { ptr: 0x7f3af8002d60, type: "segment", seqnum: Seqnum(3639), structure: Some(GstEventSegment { segment: (GstSegment) ((GstSegment*) 0x7f3b04001cb0) }) }))
0:03:04.450621944 537298 0x555b03d07060 DEBUG livesync imp.rs:1060:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> pending Segment { format: Time, start: 0:00:00.044000000, offset: 0:00:00.000000000, stop: 0:36:50.924000000, rate: 1.0, applied_rate: 1.0, flags: SegmentFlags(0x0), time: 0:00:00.000000000, base: 24:22:01.544320919, position: 0:00:00.044000000, duration: ->
0:03:04.450632003 537298 0x555b03d07060 TRACE livesync imp.rs:1018:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Waiting for clock to reach 24:22:02.543341752
0:03:04.450639637 537298 0x555b03d07060 TRACE livesync imp.rs:1026:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Clock returned Err(Early) 409895
0:03:04.450662600 537298 0x555b03d07060 TRACE livesync imp.rs:1037:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Unqueueing Some(Buffer(Buffer { ptr: 0x7f3ad02abb40, pts: 0:00:00.044000000, dts: --:--:--.---------, duration: 0:00:00.020000000, size: 7680, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(DISCONT), metas: [] }, OnTime))
0:03:04.450672038 537298 0x555b03d07060 DEBUG livesync imp.rs:1258:gstlivesync::livesync::imp::LiveSync::buffer_is_early:<10-0-encoder-audio-audio-livesync> Timestamp is too early: buffer starts at 24:22:02.544320919, expected 24:22:02.543341752
0:03:04.450686866 537298 0x555b03d07060 DEBUG livesync imp.rs:1302:gstlivesync::livesync::imp::LiveSync::patch_output_buffer:<10-0-encoder-audio-audio-livesync> Repeating Buffer { ptr: 0x555b03dae5a0, pts: 0:03:00.023532454, dts: --:--:--.---------, duration: 0:00:00.000708333, size: 272, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(0x0), metas: [] }
0:03:04.450762500 537298 0x555b03d07060 DEBUG livesync imp.rs:1335:gstlivesync::livesync::imp::LiveSync::patch_output_buffer:<10-0-encoder-audio-audio-livesync> Patched output buffer duration to 0:00:00.500000000
0:03:04.450780183 537298 0x555b03d07060 TRACE livesync imp.rs:1192:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Pushing Buffer { ptr: 0x555b03dae5a0, pts: 0:03:00.024240787, dts: --:--:--.---------, duration: 0:00:00.500000000, size: 192000, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(GAP | TAG_MEMORY), metas: [] }
0:03:04.450790252 537298 0x555b03d07060 LOG audiobuffersplit gstaudiobuffersplit.c:715:gst_audio_buffer_split_sink_chain:<10-0-encoder-audio-audiobuffersplit> Processing buffer at running time 99:99:99.999999999 with timestamp 0:03:00.024240787 with duration 0:00:00.500000000 (24000 samples)
0:03:04.450799830 537298 0x555b03d07060 TRACE livesync imp.rs:1018:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Waiting for clock to reach 0:00:01.500000000
0:03:04.450806894 537298 0x555b03d07060 TRACE livesync imp.rs:1026:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Clock returned Err(Early) 87721043918683
0:03:04.450821361 537298 0x555b03d07060 TRACE livesync imp.rs:1037:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Unqueueing Some(Buffer(Buffer { ptr: 0x7f3ad02abb40, pts: 0:00:00.044000000, dts: --:--:--.---------, duration: 0:00:00.020000000, size: 7680, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(DISCONT), metas: [] }, OnTime))
0:03:04.450829346 537298 0x555b03d07060 DEBUG livesync imp.rs:1258:gstlivesync::livesync::imp::LiveSync::buffer_is_early:<10-0-encoder-audio-audio-livesync> Timestamp is too early: buffer starts at 24:22:02.544320919, expected 0:00:01.500000000
0:03:04.450842892 537298 0x555b03d07060 DEBUG livesync imp.rs:1302:gstlivesync::livesync::imp::LiveSync::patch_output_buffer:<10-0-encoder-audio-audio-livesync> Repeating Buffer { ptr: 0x555b03dae5a0, pts: 0:03:00.024240787, dts: --:--:--.---------, duration: 0:00:00.500000000, size: 192000, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(GAP | TAG_MEMORY), metas: [] }
0:03:04.450856397 537298 0x555b03d07060 TRACE livesync imp.rs:1192:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Pushing Buffer { ptr: 0x555b03dae5a0, pts: 0:03:00.524240787, dts: --:--:--.---------, duration: 0:00:00.500000000, size: 192000, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(GAP | TAG_MEMORY), metas: [] }
0:03:04.450869612 537298 0x555b03d07060 LOG audiobuffersplit gstaudiobuffersplit.c:715:gst_audio_buffer_split_sink_chain:<10-0-encoder-audio-audiobuffersplit> Processing buffer at running time 99:99:99.999999999 with timestamp 0:03:00.524240787 with duration 0:00:00.500000000 (24000 samples)
0:03:04.450877347 537298 0x555b03d07060 TRACE livesync imp.rs:1018:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Waiting for clock to reach 0:00:01.500000000
0:03:04.450883899 537298 0x555b03d07060 TRACE livesync imp.rs:1026:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Clock returned Err(Early) 87721043996030
0:03:04.450905059 537298 0x555b03d07060 TRACE livesync imp.rs:1037:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Unqueueing Some(Buffer(Buffer { ptr: 0x7f3ad02abb40, pts: 0:00:00.044000000, dts: --:--:--.---------, duration: 0:00:00.020000000, size: 7680, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(DISCONT), metas: [] }, OnTime))
0:03:04.450912884 537298 0x555b03d07060 DEBUG livesync imp.rs:1258:gstlivesync::livesync::imp::LiveSync::buffer_is_early:<10-0-encoder-audio-audio-livesync> Timestamp is too early: buffer starts at 24:22:02.544320919, expected 0:00:01.500000000
0:03:04.450926129 537298 0x555b03d07060 DEBUG livesync imp.rs:1302:gstlivesync::livesync::imp::LiveSync::patch_output_buffer:<10-0-encoder-audio-audio-livesync> Repeating Buffer { ptr: 0x555b03dae5a0, pts: 0:03:00.524240787, dts: --:--:--.---------, duration: 0:00:00.500000000, size: 192000, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(GAP | TAG_MEMORY), metas: [] }
0:03:04.450939615 537298 0x555b03d07060 TRACE livesync imp.rs:1192:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Pushing Buffer { ptr: 0x555b03dae5a0, pts: 0:03:01.024240787, dts: --:--:--.---------, duration: 0:00:00.500000000, size: 192000, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(GAP | TAG_MEMORY), metas: [] }
0:03:04.450950495 537298 0x555b03d07060 LOG audiobuffersplit gstaudiobuffersplit.c:715:gst_audio_buffer_split_sink_chain:<10-0-encoder-audio-audiobuffersplit> Processing buffer at running time 99:99:99.999999999 with timestamp 0:03:01.024240787 with duration 0:00:00.500000000 (24000 samples)
0:03:04.450958511 537298 0x555b03d07060 TRACE livesync imp.rs:1018:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Waiting for clock to reach 0:00:01.500000000
0:03:04.450965404 537298 0x555b03d07060 TRACE livesync imp.rs:1026:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Clock returned Err(Early) 87721044077283
0:03:04.450979390 537298 0x555b03d07060 TRACE livesync imp.rs:1037:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Unqueueing Some(Buffer(Buffer { ptr: 0x7f3ad02abb40, pts: 0:00:00.044000000, dts: --:--:--.---------, duration: 0:00:00.020000000, size: 7680, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(DISCONT), metas: [] }, OnTime))
0:03:04.450986874 537298 0x555b03d07060 DEBUG livesync imp.rs:1258:gstlivesync::livesync::imp::LiveSync::buffer_is_early:<10-0-encoder-audio-audio-livesync> Timestamp is too early: buffer starts at 24:22:02.544320919, expected 0:00:01.500000000
0:03:04.451004538 537298 0x555b03d07060 DEBUG livesync imp.rs:1302:gstlivesync::livesync::imp::LiveSync::patch_output_buffer:<10-0-encoder-audio-audio-livesync> Repeating Buffer { ptr: 0x555b03dae5a0, pts: 0:03:01.024240787, dts: --:--:--.---------, duration: 0:00:00.500000000, size: 192000, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(GAP | TAG_MEMORY), metas: [] }
0:03:04.451017973 537298 0x555b03d07060 TRACE livesync imp.rs:1192:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Pushing Buffer { ptr: 0x555b03dae5a0, pts: 0:03:01.524240787, dts: --:--:--.---------, duration: 0:00:00.500000000, size: 192000, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(GAP | TAG_MEMORY), metas: [] }
0:03:04.451024986 537298 0x555b03d07060 LOG audiobuffersplit gstaudiobuffersplit.c:715:gst_audio_buffer_split_sink_chain:<10-0-encoder-audio-audiobuffersplit> Processing buffer at running time 99:99:99.999999999 with timestamp 0:03:01.524240787 with duration 0:00:00.500000000 (24000 samples)
0:03:04.451032320 537298 0x555b03d07060 TRACE livesync imp.rs:1018:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Waiting for clock to reach 0:00:01.500000000
0:03:04.451039253 537298 0x555b03d07060 TRACE livesync imp.rs:1026:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Clock returned Err(Early) 87721044151183
0:03:04.451053290 537298 0x555b03d07060 TRACE livesync imp.rs:1037:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Unqueueing Some(Buffer(Buffer { ptr: 0x7f3ad02abb40, pts: 0:00:00.044000000, dts: --:--:--.---------, duration: 0:00:00.020000000, size: 7680, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(DISCONT), metas: [] }, OnTime))
0:03:04.451060704 537298 0x555b03d07060 DEBUG livesync imp.rs:1258:gstlivesync::livesync::imp::LiveSync::buffer_is_early:<10-0-encoder-audio-audio-livesync> Timestamp is too early: buffer starts at 24:22:02.544320919, expected 0:00:01.500000000
0:03:04.451073769 537298 0x555b03d07060 DEBUG livesync imp.rs:1302:gstlivesync::livesync::imp::LiveSync::patch_output_buffer:<10-0-encoder-audio-audio-livesync> Repeating Buffer { ptr: 0x555b03dae5a0, pts: 0:03:01.524240787, dts: --:--:--.---------, duration: 0:00:00.500000000, size: 192000, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(GAP | TAG_MEMORY), metas: [] }
0:03:04.451087004 537298 0x555b03d07060 TRACE livesync imp.rs:1192:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Pushing Buffer { ptr: 0x555b03dae5a0, pts: 0:03:02.024240787, dts: --:--:--.---------, duration: 0:00:00.500000000, size: 192000, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(GAP | TAG_MEMORY), metas: [] }
0:03:04.451094027 537298 0x555b03d07060 LOG audiobuffersplit gstaudiobuffersplit.c:715:gst_audio_buffer_split_sink_chain:<10-0-encoder-audio-audiobuffersplit> Processing buffer at running time 99:99:99.999999999 with timestamp 0:03:02.024240787 with duration 0:00:00.500000000 (24000 samples)
0:03:04.451101461 537298 0x555b03d07060 TRACE livesync imp.rs:1018:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Waiting for clock to reach 0:00:01.500000000
```
cc @heftighttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/451Send encoded video stream with webrtcsink element2023-10-25T07:27:51ZLuis LiuSend encoded video stream with webrtcsink elementIn current latest release(1.22.6), webrtcsink only support video/x-raw capability for the sink pad. In this case, it would need great bandwith to transmit the video streams.
As per the latest doc of https://gstreamer.freedesktop.org/do...In current latest release(1.22.6), webrtcsink only support video/x-raw capability for the sink pad. In this case, it would need great bandwith to transmit the video streams.
As per the latest doc of https://gstreamer.freedesktop.org/documentation/rswebrtc/webrtcsink.html?gi-language=c, it seems that it's gonna to support video/x-vp8, video/x-vp9, video/x-h264, video/x-h265 in additional. Dose it mean webrtcsink can send encoded video streams and let the clients(like the browser) to do the decode afterwards to save some bandwidth?
If my understanding is correct, what will be the release plan?https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3069pngenc: outputs more than one frame in snapshot mode with souphttpsrc - eos i...2023-10-27T06:40:31ZNicolapngenc: outputs more than one frame in snapshot mode with souphttpsrc - eos is ignoreda pipeline like this one:
```
souphttpsrc location=... ! matroskademux ! decodebin ! videoconvert ! pngenc snapshot=1 ! fakesink silent=false
```
does not work, pngenc return GST_FLOW_EOS but souphttpsrc seems to ignore it, more than o...a pipeline like this one:
```
souphttpsrc location=... ! matroskademux ! decodebin ! videoconvert ! pngenc snapshot=1 ! fakesink silent=false
```
does not work, pngenc return GST_FLOW_EOS but souphttpsrc seems to ignore it, more than one frame is produced.
Using a pipeline like one:
```
filesrc location=... ! matroskademux ! decodebin ! videoconvert ! pngenc snapshot=1 ! fakesink silent=false
```
works as expected. I have no time to investigate more now, sorryhttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/492no way to convert from Bytes to usize2023-11-03T09:09:42ZGuillaume Desmottesno way to convert from Bytes to usizeWe don't have any way to convert from `gst::format::Bytes` to `usize`.
This is annoying as I'd like to create a sized buffer with a size returned by `AudioInfo::convert::<Option<gst::format::Bytes>>(gst::ClockTime::from_mseconds(...))` ...We don't have any way to convert from `gst::format::Bytes` to `usize`.
This is annoying as I'd like to create a sized buffer with a size returned by `AudioInfo::convert::<Option<gst::format::Bytes>>(gst::ClockTime::from_mseconds(...))` but can't.
Should we implement `From` on it?https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/450livesync: invalid output running time when changing segment2023-11-10T15:47:47ZGuillaume Desmotteslivesync: invalid output running time when changing segmentI'm running an audio live pipeline using the sytem clock with `0` as base time.
It's basically `appsrc ! livesync ! audiobuffersplit gapless=true`, my goal here is to have silence
generated if no buffers are pushed to `appsrc`.
I start ...I'm running an audio live pipeline using the sytem clock with `0` as base time.
It's basically `appsrc ! livesync ! audiobuffersplit gapless=true`, my goal here is to have silence
generated if no buffers are pushed to `appsrc`.
I start by pushing a single 0 buffer to `appsrc` with `pts=0` so `livesync` starts producing buffer.
`appsrc` generates a default segment with `base=0` and `livesync` repeats it until we receive actual audio.
Then the first buffer audio arrives, it has `pts=0` but uses a segment with `base=$now`, as buffers are synced on the
system clock. `livesync` [changes this buffer pts](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/blob/main/utils/livesync/src/livesync/imp.rs?ref_type=heads#L953)
as we can see in these logs:
```
0:00:37.169403386 377789 0x55dc81171d20 TRACE livesync imp.rs:806:gstlivesync::livesync::imp::LiveSync::sink_chain:<10-0-encoder-audio-audio-livesync> Incoming Buffer { ptr: 0x7f724c14aea0, pts: 0:00:00.394016156, dts: --:--:--.---------, duration: 0:00:00.023229167, size: 8920, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(0x0), metas: [] }
0:00:37.169428583 377789 0x55dc81171d20 DEBUG livesync imp.rs:1251:gstlivesync::livesync::imp::LiveSync::buffer_is_backwards:<10-0-encoder-audio-audio-livesync> Timestamp regresses: buffer ends at 16:25:44.387453270, expected 16:26:16.635827761
0:00:37.169447108 377789 0x55dc81171d20 DEBUG livesync imp.rs:935:gstlivesync::livesync::imp::LiveSync::sink_chain:<10-0-encoder-audio-audio-livesync> Accepting late Buffer { ptr: 0x7f7208005240, pts: 0:00:00.394016156, dts: --:--:--.---------, duration: 0:00:00.023229167, size: 8920, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(DISCONT), metas: [] }
0:00:37.169485601 377789 0x55dc81171d20 TRACE livesync imp.rs:961:gstlivesync::livesync::imp::LiveSync::sink_chain:<10-0-encoder-audio-audio-livesync> Queueing Buffer { ptr: 0x7f7208005240, pts: 16:26:15.635827761, dts: --:--:--.---------, duration: 0:00:00.023229167, size: 8920, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(DISCONT | GAP | TAG_MEMORY), metas: [] } (LateOve>
```
Problem is, this buffer is pushed **after** pushing the new segment having a new `base`:
```
0:00:37.176040705 377789 0x7f724401cf60 TRACE livesync imp.rs:1068:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Unqueueing Some(Buffer(Buffer { ptr: 0x7f7208005240, pts: 16:26:15.635827761, dts: --:--:--.---------, duration: 0:00:00.023229167, size: 8920, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(DISCONT | GAP | TAG_MEMORY), m>
0:00:37.176071102 377789 0x7f724401cf60 DEBUG livesync imp.rs:1202:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Forwarding segment: Segment { format: Time, start: 0:00:00.047891156, offset: 0:00:00.000000000, stop: 0:08:21.972891156, rate: 1.0, applied_rate: 1.0, flags: SegmentFlags(0x0), time: 0:00:00.000000000, base: 16:25:43.018099103, position: 0:00:00.047891156,>
0:00:37.176094867 377789 0x7f724401cf60 DEBUG audiobuffersplit gstaudiobuffersplit.c:830:gst_audio_buffer_split_sink_event:<10-0-encoder-audio-audiobuffersplit> Received new input segment time segment start=0:00:00.047891156, offset=0:00:00.000000000, stop=0:08:21.972891156, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=16:25:43.018099103, position 0:00:00.047891156, duration 99:99:99.>
0:00:37.176110687 377789 0x7f724401cf60 TRACE livesync imp.rs:1232:gstlivesync::livesync::imp::LiveSync::src_loop_inner:<10-0-encoder-audio-audio-livesync> Pushing Buffer { ptr: 0x7f7208005240, pts: 16:26:15.635827761, dts: --:--:--.---------, duration: 0:00:00.023229167, size: 8920, offset: 18446744073709551615, offset_end: 18446744073709551615, flags: BufferFlags(DISCONT | GAP | TAG_MEMORY), metas: [] }
```
As a result `audiobuffersplit` receives a buffer with `base~=now` and `pts~=now` (while it should be `pts=0`) resulting in an invalid running-time:
```
0:00:37.176119775 377789 0x7f724401cf60 LOG audiobuffersplit gstaudiobuffersplit.c:718:gst_audio_buffer_split_sink_chain:<10-0-encoder-audio-audiobuffersplit> Processing buffer at running time 99:99:99.999999999 with timestamp 16:26:15.635827761 with duration 0:00:00.023229167 (1115 samples)
```
@heftig : any suggestion about how this should be handled to prevent this problem?https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3067Opencv text video error2023-10-24T12:39:45Zmuhammet faikOpencv text video errorI run this code:
```cpp
#include <gst/gst.h>
#include <opencv2/opencv.hpp>
int main(int argc, char *argv[]) {
// Initialize GStreamer
gst_init(&argc, &argv);
// Create a GStreamer pipeline
GstElement *pipeline = gst_pi...I run this code:
```cpp
#include <gst/gst.h>
#include <opencv2/opencv.hpp>
int main(int argc, char *argv[]) {
// Initialize GStreamer
gst_init(&argc, &argv);
// Create a GStreamer pipeline
GstElement *pipeline = gst_pipeline_new("opencv-udp-pipeline");
GstElement *source = gst_element_factory_make("appsrc", "video-source");
GstElement *convert = gst_element_factory_make("videoconvert", "video-convert");
GstElement *capsfilter = gst_element_factory_make("capsfilter", "capsfilter");
GstElement *jpegenc = gst_element_factory_make("jpegenc", "jpeg-encoder");
GstElement *payload = gst_element_factory_make("rtpjpegpay", "rtp-payload");
GstElement *udpsink = gst_element_factory_make("udpsink", "udp-sink");
if (!pipeline || !source || !convert || !capsfilter || !jpegenc || !payload || !udpsink) {
g_print("One or more elements could not be created. Exiting.\n");
return -1;
}
// Set up the pipeline properties
//g_object_set(source, "is-live", true, "do-timestamp", true, NULL);
g_object_set(udpsink, "host", "127.0.0.1", "port", 5000, NULL); // Set your desired host and port
// Set video format (adjust as needed)
GstCaps *caps = gst_caps_new_simple("video/x-raw", "format", G_TYPE_STRING, "BGR", "width", G_TYPE_INT, 640, "height", G_TYPE_INT, 480, NULL);
g_object_set(capsfilter, "caps", caps, NULL);
gst_caps_unref(caps);
// Add elements to the pipeline
gst_bin_add_many(GST_BIN(pipeline), source,convert, capsfilter, jpegenc, payload, udpsink, NULL);
// Link elements in the pipeline
if (!gst_element_link(source, convert) ||
!gst_element_link(convert, capsfilter) ||
!gst_element_link(capsfilter, jpegenc) ||
!gst_element_link(jpegenc, payload) ||
!gst_element_link(payload, udpsink)) {
g_print("Elements could not be linked. Exiting.\n");
return -1;
}
// Set the pipeline to the playing state
GstStateChangeReturn ret1 = gst_element_set_state(pipeline, GST_STATE_PLAYING);
if (ret1 == GST_STATE_CHANGE_FAILURE) {
g_print("Unable to set the pipeline to the playing state. Exiting.\n");
return -1;
}
// Start OpenCV video capture and push frames to the GStreamer pipeline
cv::VideoCapture cap(0,cv::CAP_V4L2);
cv::Mat frame;
while (true) {
if (!cap.read(frame)) {
std::cerr << "Error: Could not read frame from OpenCV VideoCapture." << std::endl;
break;
}
std::string text = "Hello, World!";
cv::putText(frame, text, cv::Point(10, 30), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(0, 0, 255), 2);
// Send the frame to GStreamer pipeline
//cv::imshow("Video with Text", frame);
// Push the frame to GStreamer pipeline
GstBuffer *buffer;
GstFlowReturn ret;
buffer = gst_buffer_new_wrapped_full(GST_MEMORY_FLAG_READONLY, frame.data, frame.total() * frame.elemSize(), 0, frame.total() * frame.elemSize(), nullptr, nullptr);
g_signal_emit_by_name(source, "push-buffer", buffer, &ret);
gst_buffer_unref(buffer);
if (ret != GST_FLOW_OK) {
g_print("Error pushing frame to pipeline. Exiting.\n");
break;
}
if (cv::waitKey(1) >= 0) {
break;
}
}
// Clean up
gst_element_set_state(pipeline, GST_STATE_NULL);
gst_object_unref(pipeline);
return 0;
}
```
This my GST_DEBUG error in my pipeline.What's the problem in my pipeline ?
```bash
0:00:01.500470300 5991 0x56222936ff20 INFO GST_ERROR_SYSTEM gstelement.c:2145:gst_element_message_full_with_details:<video-source> posting message: Internal data stream error.
0:00:01.500523715 5991 0x56222936ff20 INFO GST_ERROR_SYSTEM gstelement.c:2172:gst_element_message_full_with_details:<video-source> posted error message: Internal data stream error.
```https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3061qsv: missing H.264 encoding capabilities?2023-10-25T06:04:48ZRobert Ayrapetyanqsv: missing H.264 encoding capabilities?On a `11th Gen Intel(R) Core(TM) i7-11700K` getting:
```plaintext
0:00:00.028963211 44 0x55698f7dc000 INFO qsvh264enc gstqsvh264enc.cpp:2166:gst_qsv_h264_enc_register: Device doesn't support H.264 encoding
0:00:00.02921...On a `11th Gen Intel(R) Core(TM) i7-11700K` getting:
```plaintext
0:00:00.028963211 44 0x55698f7dc000 INFO qsvh264enc gstqsvh264enc.cpp:2166:gst_qsv_h264_enc_register: Device doesn't support H.264 encoding
0:00:00.029219039 44 0x55698f7dc000 INFO qsvh265enc gstqsvh265enc.cpp:1494:gst_qsv_h265_enc_register: Device doesn't support H.265 encoding
```
`vainfo --display drm --device /dev/dri/renderD128` output:
```plaintext
libva info: VA-API version 1.19.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_17
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.19 (libva 2.12.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ()
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
...
```
I see some H264 Profiles there listed, so why does it fails?
@seungha.yang ^^https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3058mfh264enc caps filter error2023-10-25T23:42:44ZNadav Israelimfh264enc caps filter error### Describe your issue
On some pipeline that include caps filter and mfh264enc we get the following error:
"Output caps are unfixed: video/x-raw, width=(int)640, height=(int)480, framerate=(fraction)25/2, format=(string)I420, depth=(int...### Describe your issue
On some pipeline that include caps filter and mfh264enc we get the following error:
"Output caps are unfixed: video/x-raw, width=(int)640, height=(int)480, framerate=(fraction)25/2, format=(string)I420, depth=(int)8, heigh=(int)[ 64, 8192, 2 ]"
It seems that there is a typo in `subprojects/gst-plugins-bad/sys/mediafoundation/gstmfvideoencoder.cpp` lines 1706 and 1708
gst_caps_set_value is used with "heigh" instead of "height" (missing "t")
that leads to creation of new caps by the name of "heigh" instead of "height" on encoder source and sink
but those caps can not be negotiated with caps filter like in the above examplehttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/491gstreamer-video: new test failure on big-endian architectures with v0.21.12023-10-22T17:52:02ZFabio Valentinigstreamer-video: new test failure on big-endian architectures with v0.21.1I get a strange test failure building gstreamer-rs v0.21.1 for Fedora - tests pass on all architectures, except for s390x (our only supported big-endian architecture). From the build log:
```
failures:
---- video_format::tests::sort std...I get a strange test failure building gstreamer-rs v0.21.1 for Fedora - tests pass on all architectures, except for s390x (our only supported big-endian architecture). From the build log:
```
failures:
---- video_format::tests::sort stdout ----
thread 'video_format::tests::sort' panicked at src/video_format.rs:544:9:
assertion `left == right` failed
left: [Ayuv64, Argb64, Gbra12be, Gbra12le, A44410be, Gbra10be, A44410le, Gbra10le, A42210be, A42210le, A42010be, A42010le, Gbra, Ayuv, Rgba, Argb, Bgra, Abgr, A420, V216, Y44412be, Gbr12be, Y44412le, Gbr12le, I42212be, I42212le, I42012be, I42012le, Y44410be, Gbr10be, Y44410le, Gbr10le, R210, I42210be, I42210le, Nv1610le32, Uyvp, V210, I42010be, I42010le, P01010be, P01010le, Nv1210le32, Y444, Gbr, Nv24, V308, Iyu2, Rgbx, Xrgb, Bgrx, Xbgr, Rgb, Bgr, Y42b, Nv16, Nv61, Yuy2, Yvyu, Uyvy, Vyuy, I420, Yv12, Nv12, Nv21, Nv1264z32, Y41b, Iyu1, Yuv9, Yvu9, Bgr16, Rgb16, Bgr15, Rgb15, Rgb8p, Gray16Be, Gray16Le, Gray10Le32, Gray8]
right: [Ayuv64, Argb64, Gbra12be, Gbra12le, A44410be, Gbra10be, A44410le, Gbra10le, A42210be, A42210le, A42010be, A42010le, Gbra, Ayuv, Rgba, Argb, Bgra, Abgr, A420, V216, Y44412be, Gbr12be, Y44412le, Gbr12le, I42212be, I42212le, I42012be, I42012le, Y44410be, Gbr10be, Y44410le, Gbr10le, R210, I42210be, I42210le, Nv1610le32, Uyvp, V210, I42010be, I42010le, P01010be, Nv1210le32, P01010le, Y444, Gbr, Nv24, V308, Iyu2, Rgbx, Xrgb, Bgrx, Xbgr, Rgb, Bgr, Y42b, Nv16, Nv61, Yuy2, Yvyu, Uyvy, Vyuy, I420, Yv12, Nv12, Nv21, Nv1264z32, Y41b, Iyu1, Yuv9, Yvu9, Bgr16, Rgb16, Bgr15, Rgb15, Rgb8p, Gray16Be, Gray16Le, Gray10Le32, Gray8]
failures:
video_format::tests::sort
test result: FAILED. 25 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
error: test failed, to rerun pass `--lib`
```
The lists are identical except two adjacent elements that are swapped: `P01010le, Nv1210le32` vs. `Nv1210le32, P01010le`
It appears that this code has recently changed?
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/commit/635b31614cdbdb3bed4419ee32a5207dab80b7b7