GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2023-08-23T09:25:20Zhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2924gstreamer-1.16.3 seeking not respond2023-08-23T09:25:20Zchunqi gugstreamer-1.16.3 seeking not respond[log.txt](/uploads/e120db2ae6eab3eb20c45cf6132b1326/log.txt)[log.txt](/uploads/e120db2ae6eab3eb20c45cf6132b1326/log.txt)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2923win32ipcvideosink: dangling named pipe2023-08-23T18:01:40ZAlina Nagornayawin32ipcvideosink: dangling named pipe### Describe your issue
_win32ipcvideosink_ doesn't close a named pipe until I close an app using _win32ipcvideosink_.
<details><summary>Not very related broad context</summary>
I use GStreamer in Unreal Engine via <a href="https://git...### Describe your issue
_win32ipcvideosink_ doesn't close a named pipe until I close an app using _win32ipcvideosink_.
<details><summary>Not very related broad context</summary>
I use GStreamer in Unreal Engine via <a href="https://github.com/wongfei/ue4-gstreamer">this UE plug-in</a>. I have two pipelines: one with <i>win32ipcvideosink</i> inside UE and another one with <i>win32ipcvideosrc</i> outside UE. When I start the UE's pipeline for the 1st time, the other pipeline works fine. After I restart the UE's pipeline, the other pipeline becomes unstable and I have to restart it many times to get it working. Restarting UE helps me.
</details>
In order to localize the issue, I've modified [basic tutorial 1](https://gstreamer.freedesktop.org/documentation/tutorials/basic/hello-world.html?gi-language=c) and confirmed that `\\.\\pipe\\gst.win32.ipc.video` stays alive until this program closes.
#### Expected Behavior
_win32ipcvideosink_ closes a named pipe when GST_STATE_PLAYING ⇒ GST_STATE_NULL.
#### Observed Behavior
_win32ipcvideosink_ doesn't close a named pipe when GST_STATE_PLAYING ⇒ GST_STATE_NULL so it becomes dangling.
#### Setup
- **Operating System:** Windows 10
- **GStreamer Version:** 1.22.2
- **Command line:** `videotestsrc ! videoconvert ! video/x-raw,format=(string)BGRx,width=1920,height=1080,framerate=60/1 ! win32ipcvideosink` inside an app
### Steps to reproduce the bug
1. Compile and run the following code.
```
#include <gst/gst.h>
#include <chrono>
#include <thread>
#include <iostream>
void sleep(int x)
{
std::this_thread::sleep_for(std::chrono::seconds(x));
}
int
main (int argc, char *argv[])
{
GstElement *pipeline;
/* Initialize GStreamer */
gst_init (&argc, &argv);
/* Build the pipeline */
pipeline =
gst_parse_launch
("videotestsrc ! videoconvert ! video/x-raw,format=(string)BGRx,width=1920,height=1080,framerate=60/1 ! win32ipcvideosink",
NULL);
/* Start playing */
gst_element_set_state (pipeline, GST_STATE_PLAYING);
sleep(5);
std::cout << "before gst_element_set_state" << std::endl;
gst_element_set_state (pipeline, GST_STATE_NULL);
sleep(3);
std::cout << "before gst_object_unref" << std::endl;
gst_object_unref (pipeline);
sleep(3);
std::cout << "before return" << std::endl;
sleep(3);
return 0;
}
```
2. Check `[System.IO.Directory]::GetFiles("\\.\\pipe\\") | findstr -I -N gst` in PowerShell after each print-out.
### How reproducible is the bug?
Alwayshttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2922Pooling VAEncCodedBufferType?2023-08-23T11:51:03ZDaniel AlmeidaPooling VAEncCodedBufferType?@vjaquez @He_Junyan
Hey, I have been running `vah264enc` with `LIBVA_TRACE` enabled, and I noticed that a new `VAEncCodedBufferType` gets created per encoded frame through `vaCreateBuffer`. As we pool `VASurface`s, I wonder whether we ...@vjaquez @He_Junyan
Hey, I have been running `vah264enc` with `LIBVA_TRACE` enabled, and I noticed that a new `VAEncCodedBufferType` gets created per encoded frame through `vaCreateBuffer`. As we pool `VASurface`s, I wonder whether we should pool `VAEncCodedBufferType` for the same reasons? Or is it not that important vs Surfaces?https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2921Segfault in FLAC encoder if .wav cue chunk has > 128 entries2023-10-04T18:15:04ZAlcaroSegfault in FLAC encoder if .wav cue chunk has > 128 entries### Describe your issue
Telling gst-launch-1.0 to encode a FLAC from a WAV with > 128 cue segments segfaults
For example, [here's one with 512 cue segments](/uploads/93b289371791d3216c0f8ebf43b6d4e2/kaboom.wav)
#### Expected Behavior
G...### Describe your issue
Telling gst-launch-1.0 to encode a FLAC from a WAV with > 128 cue segments segfaults
For example, [here's one with 512 cue segments](/uploads/93b289371791d3216c0f8ebf43b6d4e2/kaboom.wav)
#### Expected Behavior
Give me a flac file. Preferably including the cue segment, but if libflac doesn't support large cue segments (I can't quite make sense of FLAC__metadata_object_cuesheet_track_insert_index track_num, FLAC__metadata_object_cuesheet_track_insert_index index_num, and FLAC__StreamMetadata_CueSheet_Track number), drop or truncate it with a warning.
#### Observed Behavior
Caught SIGSEGV
#0 0x00007ff9bccf603f in __GI___poll (fds=0x557b07f1ffe0, nfds=2, timeout=94) at ../sysdeps/unix/sysv/linux/poll.c:29
\#1 0x00007ff9bce8e9ae in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#### Setup
- **Operating System:** Debian 12
- **Device:** A perfectly normal x86_64 computer
- **GStreamer Version:** 1.22.0
- **Command line:** gst-launch-1.0 filesrc location=kaboom.wav ! decodebin ! flacenc ! filesink location=kaboom.flac
### Steps to reproduce the bug
- Download [this file](/uploads/93b289371791d3216c0f8ebf43b6d4e2/kaboom.wav)
- gst-launch-1.0 filesrc location=kaboom.wav ! decodebin ! flacenc ! filesink location=kaboom.flac
### How reproducible is the bug?
Always
### Screenshots if relevant
Not relevant for terminal tools
### Solutions you have tried
I guess I could remove or truncate the cue chunk from the wav
### Related non-duplicate issues
Can't find any
### Additional Information
Asking Valgrind for help returns
==1307514== Thread 4 wavparse0:sink:
==1307514== Invalid read of size 8
==1307514== at 0x484A4B0: memmove (vg_replace_strmem.c:1382)
==1307514== by 0x6630C7E: FLAC__metadata_object_cuesheet_insert_track (in /usr/lib/x86_64-linux-gnu/libFLAC.so.12.0.0)
==1307514== by 0x485C0B6: ??? (in /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstflac.so)
I've also seen a few
(gst-launch-1.0:1307557): GStreamer-WARNING **: 12:02:50.316: ../gst/gstpad.c:5366:store_sticky_event:\<flacenc0\:src> Sticky event misordering, got 'segment' before 'caps'
(gst-launch-1.0:1307557): GStreamer-WARNING **: 12:02:50.317: ../gst/gstpad.c:5366:store_sticky_event:\<filesink0\:sink> Sticky event misordering, got 'segment' before 'caps'
while reducing this bug, but I think that's unrelated and harmless.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2920Update transcodebin docs to not mention the old static srcpad2023-08-21T16:52:28ZJan SchmidtUpdate transcodebin docs to not mention the old static srcpadThe following discussion from !5187 should be addressed:
- [ ] @thiblahute started a [discussion](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5187#note_2044022): (+2 comments)
> Why did you change the linki...The following discussion from !5187 should be addressed:
- [ ] @thiblahute started a [discussion](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5187#note_2044022): (+2 comments)
> Why did you change the linking to the filesink?https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/1028error using v4l2 with userptr and gstreamer2023-08-21T20:19:45ZLiz Lizerror using v4l2 with userptr and gstreamershort:
I wrote an app that captures frames from video device using v4l2.
the app should support all i-o modes.
I am mostly interested in userptr mode.
when i run the code with physical camera it works (with userptr mode).
when i run the...short:
I wrote an app that captures frames from video device using v4l2.
the app should support all i-o modes.
I am mostly interested in userptr mode.
when i run the code with physical camera it works (with userptr mode).
when i run the same code with v4l2loopback camera and gstreamer, it fails.
calling VIDIOC_REQBUFS with V4L2_MEMEORY_USERPTR returns not supported.
Questions:
1.has anyone got that scenario working ?
2.I have found this link: https://developer.ridgerun.com/wiki/index.php/GStreamer1.0_and_V4L2_UserPtr.
it suggests calling " ./configure --without-libv4l2".
I am nit sure how to call this " ./configure --without-libv4l2". any idea ?
BTW, gstreamer indeed has the code metioned in the ink above
(see: https://github.com/operasoftware/gstreamer/blob/master/gst-plugins-good/sys/v4l2/v4l2_calls.h)
3.does this link means the feature is not supported ?
https://github.com/umlaeute/v4l2loopback/issues/146
4.any other alternatives to v4l2sink ?
5.any other alternatives for gstreamer or v4l2loopback ?
6.any idea why this feature is not supported ?
what are the main challanged updating v4l2sink to supprot the userptr mode ?https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2919Deploying and using gstreamer 22 with qt app on linux2023-08-22T04:57:13ZDeymos sDeploying and using gstreamer 22 with qt app on linuxHello, I built gstreamer 22 and I want to make my application stand-alone so that it works with 22 gstreamer both on debian and on different versions of ubuntu, so that there are no problems related to the fact that different distributio...Hello, I built gstreamer 22 and I want to make my application stand-alone so that it works with 22 gstreamer both on debian and on different versions of ubuntu, so that there are no problems related to the fact that different distributions have different gstreamer.
After I built gstreamer 22 in docker (so that the system gstreamer would not interfere with the build), I moved the build to another PC, the symlinks broke, restored manually.
That's how I linking:
```
QT_CONFIG -= no-pkg-config
CONFIG += link_pkgconfig
PKGCONFIG = \
gstreamer-1.0 \
gstreamer-video-1.0 \
gstreamer-gl-1.0 \
gstreamer-base-1.0 \
glib-2.0 \
gobject-2.0 \
gstreamer-app-1.0
INCLUDEPATH += $$PWD/include \
/mnt/include \
/mnt/include/gstreamer-1.0
```
and PKG_CONFIG_PATH=/mnt/lib/x86_64-linux-gnu/pkgconfig/
I launched the binary, it started, and I saw in the logs:
`Failed to load plugin '/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstqmlgl.so': /lib/x86_64-linux-gnu/libQt5WaylandClient.so.5: undefined symbol: _ZTI27QPlatformServiceColorPicker, version Qt_5_PRIVATE_API`
Apparently, after all, the application takes some parts of gstreamer from the system.
After all, I have 3 ways:
- To build completely statically, but then I will have to link statically all dependencies except libxcb, libX11, libwayland*, libGL and libEGL. But then I'm afraid that the binary file will be too huge, and it's not a fact that it will work.
- Make a folder with libraries, but then I'll probably have to register path, qt.conf for the path of plugins, well, quirks for other libraries with plugins.
- Wait for ubuntu 23 with gstreamer 22 in flatpack and build a flatpack package.
As a result, my question is: is it possible, and if so, how to deploy and carry own gstreamer 22 on different linux distributions and not depend on the system gstreamer?
I would be grateful if you would provide a guide on how to use and deploy your gstreamer along with a qt application.
On windows, this is done easily, I built gstreamer, added it to the path and everything works, but linux does not want it in any way.
Sorry if this is not the place for such questions, I did not receive an answer on mailing list :disappointed:https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2918Deadlock when setting pipeline to NULL while appsrc is pushing a segment2023-08-21T08:34:13ZGuillaume DesmottesDeadlock when setting pipeline to NULL while appsrc is pushing a segmentI hit a fun deadlock in my app. This is with `1.22.5`.
There are two objects involved:
- `appsrc` : `0x55f3fbbf36e0`
- its `pipeline` : `0x7fbc64008a40`
On one thread we have `appsrc` trying to push a segment:
- `appsrc` is holding its...I hit a fun deadlock in my app. This is with `1.22.5`.
There are two objects involved:
- `appsrc` : `0x55f3fbbf36e0`
- its `pipeline` : `0x7fbc64008a40`
On one thread we have `appsrc` trying to push a segment:
- `appsrc` is holding its object lock (`gst_base_src_push_segment`)
- `appsrc` is holding `appsrc->mutex` (not relevant here)
- `pipeline` is waiting on its object lock
```
Thread 143 (Thread 0x7fbb457fa640 (LWP 122693)):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007fbd6b13911c in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007fbd6b271f0d in gst_object_get_parent (object=0x7fbc64008a40) at ../subprojects/gstreamer/gst/gstobject.c:759
#3 0x00007fbd6b27208d in gst_object_dispatch_properties_changed (object=0x7fb730ad5850, n_pspecs=1, pspecs=0x7fbb457f8e80) at ../subprojects/gstreamer/gst/gstobject.c:480
#4 0x00007fbd6b1f405a in g_object_notify_by_pspec () at /lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5 0x00007fbd6b2bc2cd in store_sticky_event (pad=pad@entry=0x7fb730ad5850, event=event@entry=0x7fbbec003270) at ../subprojects/gstreamer/gst/gstpad.c:5394
#6 0x00007fbd6b2c718c in gst_pad_push_event (pad=pad@entry=0x7fb730ad5850, event=0x7fbbec003270) at ../subprojects/gstreamer/gst/gstpad.c:5691
#7 0x00007fbd6b3d6c48 in gst_pad_set_caps (caps=0x7fb93407db20, pad=0x7fb730ad5850) at ../subprojects/gstreamer/gst/gstcompat.h:59
#8 gst_base_transform_setcaps (trans=trans@entry=0x55f3fbbea8d0, pad=<optimized out>, incaps=0x7fb93407db20) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1346
#9 0x00007fbd6b3d823a in gst_base_transform_sink_eventfunc (trans=0x55f3fbbea8d0, event=0x7fbbec003200) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1951
#10 0x00007fbcc6b66c23 in gst_video_rate_sink_event (trans=0x55f3fbbea8d0, event=0x7fbbec003200) at ../subprojects/gst-plugins-base/gst/videorate/gstvideorate.c:1119
#11 0x00007fbd6b2bd854 in gst_pad_send_event_unchecked (pad=pad@entry=0x7fb730ad5cf0, event=event@entry=0x7fbbec003200, type=<optimized out>) at ../subprojects/gstreamer/gst/gstpad.c:5939
#12 0x00007fbd6b2c7591 in gst_pad_send_event (pad=0x7fb730ad5cf0, event=0x7fbbec003200) at ../subprojects/gstreamer/gst/gstpad.c:6109
#13 0x00007fbcc6b6703a in gst_video_rate_sink_event (trans=0x55f3fbbea8d0, event=0x7fbaec0a22d0) at ../subprojects/gst-plugins-base/gst/videorate/gstvideorate.c:991
#14 0x00007fbd6b2bd854 in gst_pad_send_event_unchecked (pad=pad@entry=0x7fb730ad5cf0, event=event@entry=0x7fbaec0a22d0, type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at ../subprojects/gstreamer/gst/gstpad.c:5939
#15 0x00007fbd6b2bdf04 in gst_pad_push_event_unchecked (pad=pad@entry=0x55f3fbf99da0, event=0x7fbaec0a22d0, type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at ../subprojects/gstreamer/gst/gstpad.c:5572
#16 0x00007fbd6b2be418 in push_sticky (pad=pad@entry=0x55f3fbf99da0, ev=ev@entry=0x7fbb457f94f0, user_data=user_data@entry=0x7fbb457f9560) at ../subprojects/gstreamer/gst/gstevent.h:430
#17 0x00007fbd6b2baff7 in events_foreach (pad=pad@entry=0x55f3fbf99da0, func=func@entry=0x7fbd6b2be330 <push_sticky>, user_data=user_data@entry=0x7fbb457f9560) at ../subprojects/gstreamer/gst/gstpad.c:613
#18 0x00007fbd6b2c73a3 in check_sticky (event=0x7fbaec0a22d0, pad=0x55f3fbf99da0) at ../subprojects/gstreamer/gst/gstpad.c:4116
#19 gst_pad_push_event (pad=0x55f3fbf99da0, event=event@entry=0x7fbaec0a22d0) at ../subprojects/gstreamer/gst/gstpad.c:5705
#20 0x00007fbd6b3d25d4 in gst_base_src_push_segment (src=src@entry=0x55f3fbbf36e0, segment=0x7fb6c4001e30) at ../subprojects/gstreamer/libs/gst/base/gstbasesrc.c:4198
#21 0x00007fbd6ade6fb8 in gst_app_src_create (bsrc=0x55f3fbbf36e0, offset=<optimized out>, size=4096, buf=0x7fbb457f96e8) at ../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsrc.c:1790
#22 0x00007fbd6b3cb1ed in gst_base_src_get_range (src=src@entry=0x55f3fbbf36e0, offset=offset@entry=18446744073709551615, length=<optimized out>, length@entry=4096, buf=buf@entry=0x7fbb457f97c0) at ../subprojects/gstreamer/libs/gst/base/gstbasesrc.c:2592
#23 0x00007fbd6b3ce2ac in gst_base_src_loop (pad=0x55f3fbf99da0) at ../subprojects/gstreamer/libs/gst/base/gstbasesrc.c:2916
#24 0x00007fbd6b2f6107 in gst_task_func (task=0x7fb79443a4d0) at ../subprojects/gstreamer/gst/gsttask.c:384
#25 0x00007fbd6b11c6a4 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#26 0x00007fbd6b119a41 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#27 0x00007fbd6a7dfb43 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#28 0x00007fbd6a871a00 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
```
On the other thread the application is trying to set `pipeline` to `NULL`:
- `pipeline` is holding its state lock (not relevant here)
- `pipeline` is holding its object lock (`gst_bin_iterate_sorted`)
- `appsrc` is waiting on its object lock
```
Thread 155 (Thread 0x7fbca1ffb640 (LWP 124686)):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007fbd6b13911c in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007fbd6b278a50 in reset_degree (element=0x55f3fbbf36e0, bit=0x7fbafeea4cb0) at ../subprojects/gstreamer/gst/gstbin.c:2191
#3 0x00007fbd6b0e4f60 in g_list_foreach () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4 0x00007fbd6b275f7b in gst_bin_sort_iterator_resync (bit=bit@entry=0x7fbafeea4cb0) at ../subprojects/gstreamer/gst/gstbin.c:2370
#5 0x00007fbd6b27603b in gst_bin_sort_iterator_new (bin=bin@entry=0x7fbc64008a40) at ../subprojects/gstreamer/gst/gstbin.c:2412
#6 0x00007fbd6b27c437 in gst_bin_iterate_sorted (bin=0x7fbc64008a40) at ../subprojects/gstreamer/gst/gstbin.c:2438
#7 0x00007fbd6b27c67f in gst_bin_change_state_func (element=0x7fbc64008a40, transition=GST_STATE_CHANGE_PLAYING_TO_PAUSED) at ../subprojects/gstreamer/gst/gstbin.c:2906
#8 0x00007fbd6b2cb606 in gst_pipeline_change_state (element=0x7fbc64008a40, transition=GST_STATE_CHANGE_PLAYING_TO_PAUSED) at ../subprojects/gstreamer/gst/gstpipeline.c:529
#9 0x00007fbd6b2a0062 in gst_element_change_state (element=element@entry=0x7fbc64008a40, transition=transition@entry=GST_STATE_CHANGE_PLAYING_TO_PAUSED) at ../subprojects/gstreamer/gst/gstelement.c:3093
#10 0x00007fbd6b2a07a9 in gst_element_set_state_func (element=0x7fbc64008a40, state=GST_STATE_NULL) at ../subprojects/gstreamer/gst/gstelement.c:3047
#11 0x00007fbd6b29b3b2 in gst_element_call_async_func (data=0x55f3fbeeb510, user_data=<optimized out>) at ../subprojects/gstreamer/gst/gstelement.c:3832
#12 0x00007fbd6b11c6a4 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#13 0x00007fbd6b119a41 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#14 0x00007fbd6a7dfb43 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#15 0x00007fbd6a871a00 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
```
As a result we have a deadlock between `appsrc` and `pipeline` object locks.
I suppose `basesrc` should release the object lock before pushing the segment?https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/1027Reading rtsp flux freezes randomly2023-10-12T15:43:30ZGuillaume AyoubReading rtsp flux freezes randomlyWhen reading a rtsp flux, rendering freezes after random time (both sound and video, generally after 0-5 minutes). It probably happens when network is less stable, as I can easily reproduce by physically moving my laptop with WiFi connec...When reading a rtsp flux, rendering freezes after random time (both sound and video, generally after 0-5 minutes). It probably happens when network is less stable, as I can easily reproduce by physically moving my laptop with WiFi connection. I have the same behaviour using gst-launch, Totem or GTK4’s Video widget.
There’s no error in console. With gtk-launch, the timer in console stops.
The flux works well with ffmpeg.
I don’t know how to give more useful debug information, but I can provide more if you tell me what could be interesting for you.https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/408cmafmux and h2652023-08-21T06:57:33ZFlavio Ribeirocmafmux and h265I successfully leveraged [this example](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/blob/main/mux/fmp4/examples/hls_live.rs) to generate playable fmp4/hls streams using h264. I'm trying to iterate over it and generate h265 ...I successfully leveraged [this example](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/blob/main/mux/fmp4/examples/hls_live.rs) to generate playable fmp4/hls streams using h264. I'm trying to iterate over it and generate h265 outputs, but for some reason, although [it looks to be supported](https://gstreamer.freedesktop.org/documentation/fmp4/cmafmux.html?gi-language=c#sink), cmafmux is not linking with the caps I'm using:
```
$ gst-launch-1.0 videotestsrc num-buffers=2500 ! timecodestamper ! video/x-raw,format=I420,width=1280,height=720,framerate=30/1 ! timeoverlay ! x265enc tune=zerolatency bitrate=2048 ! video/x-h265,profile=main,stream-format=hvc1 ! cmafmux fragment-duration=2 header-update-mode=update write-mehd=true ! appsink name=sink
WARNING: erroneous pipeline: could not link x265enc0 to cmafmux0, x265enc0 can't handle caps video/x-h265, profile=(string)main, stream-format=(string)hvc1
```
It also doesn't work if I simplify the caps to just `video/x-h265`. What am I doing wrong? :)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2916Rtsp bad request with specific password2023-08-21T00:57:29Zkeivan moazamiRtsp bad request with specific password### Describe your issue
When use "@" character in password, rtsp src return bad request(400) error.
sample location="rtsp://admin:1qaz@WSX3edc@192.168.5.147/onvif-media/media.amp?profile=profile_1_h264&sessiontimeout=60&streamtype=unicas...### Describe your issue
When use "@" character in password, rtsp src return bad request(400) error.
sample location="rtsp://admin:1qaz@WSX3edc@192.168.5.147/onvif-media/media.amp?profile=profile_1_h264&sessiontimeout=60&streamtype=unicast"
#### Setup
- **Operating System:** windows server 2019
- **GStreamer Version:** 1.22.5
### Steps to reproduce the bug
<!-- please fill in exact steps which reproduce the bug on your system, for example: -->
1. set rtsp password in camera with "@" character
2. run this command with gst-launch "uridecodebin uri=rtsp://admin:1qaz@WSX3edc@192.168.5.147/... ! videoconvert ! autovideosink"https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/482docs are missing v0.212023-10-03T16:50:58ZIvan Molodetskikhdocs are missing v0.21https://gstreamer.pages.freedesktop.org/gstreamer-rs/https://gstreamer.pages.freedesktop.org/gstreamer-rs/https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/407Can't contribute: you've reached your project limit (can't fork)2023-08-20T14:53:59ZRobert AyrapetyanCan't contribute: you've reached your project limit (can't fork)When trying to fork this project, "Fork" button at the top right corner is grayed out, hovering mouse over it displays: "you've reached your project limit".When trying to fork this project, "Fork" button at the top right corner is grayed out, hovering mouse over it displays: "you've reached your project limit".https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/406webrtcsink: panics on create_from_uri(RTP_TWCC_URI).unwrap()2023-09-05T08:42:17ZRobert Ayrapetyanwebrtcsink: panics on create_from_uri(RTP_TWCC_URI).unwrap()When doing:
```
GST_DEBUG=3 gst-launch-1.0 videotestsrc ! agingtv ! webrtcsink enable-data-channel-navigation=true meta="meta,name=native-stream"
```
webrtcsink panics at:
```
let twcc_extension = gst_rtp::RTPHeaderExtension::create_from...When doing:
```
GST_DEBUG=3 gst-launch-1.0 videotestsrc ! agingtv ! webrtcsink enable-data-channel-navigation=true meta="meta,name=native-stream"
```
webrtcsink panics at:
```
let twcc_extension = gst_rtp::RTPHeaderExtension::create_from_uri(RTP_TWCC_URI).unwrap();
```
with:
```
thread 'tokio-runtime-worker' panicked at 'called `Option::unwrap()` on a `None` value', net/webrtc/src/webrtcsink/imp.rs:681:76
```
That's expected as "create_from_uri" is not guaranteed to return non-null values.
I see create_from_uri is trying to get something from gst_registry, but this "URL" is not there in my registry...
Any advice of how to check/add this URI? Thanks.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2915vtdec: Frames will not be ordered correctly if no PTS present2023-08-21T18:21:46ZPiotr Brzezińskivtdec: Frames will not be ordered correctly if no PTS presentAs noticed in a review for https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5163#note_2038221 - currently vtdec will not be able to output correctly ordered frames if PTS is missing. Quote @slomo:
```
The solution her...As noticed in a review for https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5163#note_2038221 - currently vtdec will not be able to output correctly ordered frames if PTS is missing. Quote @slomo:
```
The solution here would be to actually parse the H264 bitstream to correctly reorder frames and calculate the PTS from the DTS.
There's code for that in the libgstcodecs library (for the stateless codecs), but that's probably not directly re-usable.
There's also such code in the h264timestamper element.
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/405no element "webrtcsink"2023-08-21T06:31:18ZBenjamin Samno element "webrtcsink"Hi. When I run "gst-launch-1.0 webrtcsink name=ws meta="meta,name=gst-stream" videotestsrc ! ws. audiotestsrc ! ws." command from webrtc's README, I get the following warning and nothing happen when I run this command.
WARNING: erroneou...Hi. When I run "gst-launch-1.0 webrtcsink name=ws meta="meta,name=gst-stream" videotestsrc ! ws. audiotestsrc ! ws." command from webrtc's README, I get the following warning and nothing happen when I run this command.
WARNING: erroneous pipeline: no element "webrtcsink"
I would be thankful if you could help me.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2914gstreamer-plugins-base 1.22.2: test suite validate.videorate.fill_segment_aft...2023-08-18T14:51:11ZVishesh Saxenagstreamer-plugins-base 1.22.2: test suite validate.videorate.fill_segment_after_caps_changed_before_eos timeout after 30 minutesTest suite is getting timeout after 30 minutes.
> Summary of Failures:
```
195/531 gst-plugins-base / elements_glimagesink FAIL 5.15s exit status 1
216/531 gst-plugins-base / vali...Test suite is getting timeout after 30 minutes.
> Summary of Failures:
```
195/531 gst-plugins-base / elements_glimagesink FAIL 5.15s exit status 1
216/531 gst-plugins-base / validate.videorate.change_rate_reverse_playback ERROR 0.19s exit status 18
224/531 gst-plugins-base / validate.videorate.fill_segment_after_caps_changed_before_eos TIMEOUT 1800.01s killed by signal 15 SIGTERM
531/531 gst-editing-services / pythontests FAIL 0.18s exit status 1
515/531 gst-editing-services / nle_nleoperation FAIL 67.32s exit status 1
```
Ok: 521
Expected Fail: 0
Fail: 3
Unexpected Pass: 0
Skipped: 4
Timeout: 1
`meson-logs/testlog.txt`
Details here:
<details><summary>Click to expand</summary>
```
================================== 195/531 ===================================
test: gst-plugins-base / elements_glimagesink
start time: 11:57:00
duration: 5.15s
result: exit status 1
command: GST_PLUGIN_LOADING_WHITELIST=gstreamer:gst-plugins-base@/mnt/gstreamer.build/subprojects/gst-plugins-base LD_LIBRARY_PATH=/mnt/gstreamer.build/subprojects/gstreamer/libs/gst/net:/mnt/gstreamer.build/subprojects/gstreamer/libs/gst/base:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/fft:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/riff:/mnt/gstreamer.build/subprojects/gstreamer/gst:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/pbutils:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/sdp:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/video:/mnt/gstreamer.build/subprojects/gstreamer/libs/gst/check:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/app:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/audio:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/rtp:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/gl:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/tag:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/rtsp:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/allocators:/opt/scorer/lib:/opt/miniconda/lib:/usr/local/cuda/lib64 GST_PLUGIN_SYSTEM_PATH_1_0='' GST_PLUGIN_SCANNER_1_0=/mnt/gstreamer.build/subprojects/gstreamer/libs/gst/helpers/gst-plugin-scanner MALLOC_PERTURB_=12 GST_STATE_IGNORE_ELEMENTS='cdio cdparanoiasrc libvisual_ alsasrc alsasink' GST_TAG_LICENSE_TRANSLATIONS_DICT=/mnt/gstreamer/subprojects/gst-plugins-base/gst-libs/gst/tag/license-translations.dict GST_REGISTRY=/mnt/gstreamer.build/subprojects/gst-plugins-base/tests/check/elements_glimagesink.registry GST_PLUGIN_PATH_1_0=/mnt/gstreamer.build CK_DEFAULT_TIMEOUT=20 /mnt/gstreamer.build/subprojects/gst-plugins-base/tests/check/elements_glimagesink
----------------------------------- stdout -----------------------------------
Running suite(s): glimagesink
0%: Checks: 1, Failures: 0, Errors: 1
../gstreamer/subprojects/gst-plugins-base/tests/check/elements/glimagesink.c:142:E:general:test_query_drain:0: (after this point) Test timeout expired
Check suite glimagesink ran in 5.002s (tests failed: 1)
----------------------------------- stderr -----------------------------------
error: XDG_RUNTIME_DIR not set in the environment.
==============================================================================
================================== 216/531 ===================================
test: gst-plugins-base / validate.videorate.change_rate_reverse_playback
start time: 11:57:05
duration: 0.19s
result: exit status 18
command: GST_REGISTRY=/mnt/gstreamer.build/subprojects/gst-plugins-base/tests/validate/validate.registry GST_PLUGIN_SYSTEM_PATH_1_0='' GST_VALIDATE_LOGSDIR=/mnt/gstreamer.build/subprojects/gst-plugins-base/tests/validate/validate.videorate.change_rate_reverse_playback MALLOC_PERTURB_=38 GST_PLUGIN_SCANNER_1_0=/mnt/gstreamer.build/subprojects/gstreamer/libs/gst/helpers/gst-plugin-scanner GST_PLUGIN_LOADING_WHITELIST=gstreamer:gst-validate:gst-plugins-base@/mnt/gstreamer.build/subprojects/gst-plugins-base GST_PLUGIN_PATH_1_0=/mnt/gstreamer.build /mnt/gstreamer.build/subprojects/gstreamer/tests/validate/gst-tester-1.0 /mnt/gstreamer/subprojects/gst-plugins-base/tests/validate/videorate/change_rate_reverse_playback.validatetest --use-fakesinks
----------------------------------- stdout -----------------------------------
# Running from meson subproject /mnt/gstreamer.build/subprojects/gst-devtools/validate/tools/gst-validate-1.0
1..1
# **-> Checking expectations file: '/mnt/gstreamer/subprojects/gst-plugins-base/tests/validate/videorate/change_rate_reverse_playback/flow-expectations/log-videorate-sink-expected'**
# **-> Checking expectations file: '/mnt/gstreamer/subprojects/gst-plugins-base/tests/validate/videorate/change_rate_reverse_playback/flow-expectations/log-videorate-src-expected'**
# **-> Pipeline: 'videotestsrc ! video/x-raw,format=I420,framerate=10/1,width=320,height=240 ! videorate name=videorate ! fakesink sync=true qos=true'**
# **-> Running scenario /mnt/gstreamer/subprojects/gst-plugins-base/tests/validate/videorate/change_rate_reverse_playback.validatetest on pipeline pipeline0**
# **-> Starting pipeline**
# Prerolling...
**-> Pipeline started**
# Executing `seek` at change_rate_reverse_playback.validatetest:14 (
# - start=0
# - stop=5
# - flags=accurate+flush
# - rate=-1
# )
# ? Action `seek` at change_rate_reverse_playback.validatetest:14 done 'ASYNC' (duration: 0:00:00.001057017)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:17 (
# - expected-time=0
# )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:17 done 'OK' (duration: 0:00:00.000005459)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:18 [repeat=0/4] (
# - expected-elapsed-time=0.10000000000000001
# )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:18 done 'OK' [0/4] (duration: 0:00:00.000493932)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:18 [repeat=1/4] (
# - expected-elapsed-time=0.10000000000000001
# )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:18 done 'OK' [1/4] (duration: 0:00:00.000445163)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:18 [repeat=2/4] (
# - expected-elapsed-time=0.10000000000000001
# )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:18 done 'OK' [2/4] (duration: 0:00:00.000334325)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:18 [repeat=3/4] (
# - expected-elapsed-time=0.10000000000000001
# )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:18 done 'OK' [3/4] (duration: 0:00:00.000318828)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:19 (
# - expected-time=0.5
# )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:19 done 'OK' (duration: 0:00:00.000338402)
#
# Executing `wait` at change_rate_reverse_playback.validatetest:22 (
# - on-clock=true
# )
# ? Action `wait` at change_rate_reverse_playback.validatetest:22 done 'OK' (duration: 0:00:00.000634049)
#
# Executing `checkpoint` at change_rate_reverse_playback.validatetest:25 (
# - text="Setting\ videorate.rate\=0.5"
# )
# ? Action `checkpoint` at change_rate_reverse_playback.validatetest:25 done 'OK' (duration: 0:00:00.000001411)
#
# Executing `set-property` at change_rate_reverse_playback.validatetest:26 (
# - playback-time=99
# - target-element-name=videorate
# - property-name=rate
# - property-value=0.5
# )
# ? Action `set-property` at change_rate_reverse_playback.validatetest:26 done 'OK' (duration: 0:00:00.000023922)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:29 [repeat=0/5] (
# - expected-elapsed-time=0.10000000000000001
# )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:29 done 'OK' [0/5] (duration: 0:00:00.000002925)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:29 [repeat=1/5] (
# - expected-elapsed-time=0.10000000000000001
# )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:29 done 'OK' [1/5] (duration: 0:00:00.000348417)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:29 [repeat=2/5] (
# - expected-elapsed-time=0.10000000000000001
# )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:29 done 'OK' [2/5] (duration: 0:00:00.000338242)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:29 [repeat=3/5] (
# - expected-elapsed-time=0.10000000000000001
# )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:29 done 'OK' [3/5] (duration: 0:00:00.000001523)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:29 [repeat=4/5] (
# - expected-elapsed-time=0.10000000000000001
# )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:29 done 'OK' [4/5] (duration: 0:00:00.000001949)
#
# Executing `wait` at change_rate_reverse_playback.validatetest:30 (
# - on-clock=true
# )
# ? Action `wait` at change_rate_reverse_playback.validatetest:30 done 'OK' (duration: 0:00:00.000334631)
#
# Executing `check-position` at change_rate_reverse_playback.validatetest:31 (
# - expected-position=4
# )
# ? Action `check-position` at change_rate_reverse_playback.validatetest:31 done 'OK' (duration: 0:00:00.000007173)
#
# Executing `set-vars` at change_rate_reverse_playback.validatetest:33 (
# - rate=0.1
# )
# ? Action `set-vars` at change_rate_reverse_playback.validatetest:33 done 'OK' (duration: 0:00:00.000004017)
#
# Executing `checkpoint` at change_rate_reverse_playback.validatetest:34 (
# - text="Setting\ videorate.rate\=0.1"
# )
# ? Action `checkpoint` at change_rate_reverse_playback.validatetest:34 done 'OK' (duration: 0:00:00.000001716)
#
# Executing `set-property` at change_rate_reverse_playback.validatetest:35 (
# - playback-time=99
# - target-element-name=videorate
# - property-name=rate
# - property-value=0.10000000000000001
# )
# ? Action `set-property` at change_rate_reverse_playback.validatetest:35 done 'OK' (duration: 0:00:00.000014890)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=0/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [0/20] (duration: 0:00:00.000002007)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=1/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [1/20] (duration: 0:00:00.000902218)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=2/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [2/20] (duration: 0:00:00.000002031)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=3/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [3/20] (duration: 0:00:00.000001422)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=4/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [4/20] (duration: 0:00:00.000001312)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=5/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [5/20] (duration: 0:00:00.000001617)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=6/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [6/20] (duration: 0:00:00.000002112)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=7/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [7/20] (duration: 0:00:00.000506404)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=8/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [8/20] (duration: 0:00:00.000001996)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=9/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [9/20] (duration: 0:00:00.000002707)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=10/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [10/20] (duration: 0:00:00.000001889)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=11/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [11/20] (duration: 0:00:00.000001299)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=12/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [12/20] (duration: 0:00:00.000002159)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=13/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [13/20] (duration: 0:00:00.000001641)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=14/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [14/20] (duration: 0:00:00.000002098)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=15/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [15/20] (duration: 0:00:00.000001360)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=16/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [16/20] (duration: 0:00:00.000001379)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=17/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [17/20] (duration: 0:00:00.000431045)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=18/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [18/20] (duration: 0:00:00.000001904)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:36 [repeat=19/20] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:36 done 'OK' [19/20] (duration: 0:00:00.000001778)
#
# Executing `wait` at change_rate_reverse_playback.validatetest:37 (
# - on-clock=true
# )
# ? Action `wait` at change_rate_reverse_playback.validatetest:37 done 'OK' (duration: 0:00:00.000001981)
#
# Executing `check-position` at change_rate_reverse_playback.validatetest:38 (
# - expected-position=2
# )
# ? Action `check-position` at change_rate_reverse_playback.validatetest:38 done 'OK' (duration: 0:00:00.000007297)
#
# Executing `checkpoint` at change_rate_reverse_playback.validatetest:41 (
# - text="Setting\ videorate.rate\=2.0"
# )
# ? Action `checkpoint` at change_rate_reverse_playback.validatetest:41 done 'OK' (duration: 0:00:00.000001409)
#
# Executing `set-property` at change_rate_reverse_playback.validatetest:42 (
# - playback-time=-1
# - target-element-name=videorate
# - property-name=rate
# - property-value=2
# )
# ? Action `set-property` at change_rate_reverse_playback.validatetest:42 done 'OK' (duration: 0:00:00.000013542)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:43 [repeat=0/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:43 done 'OK' [0/10] (duration: 0:00:00.000001835)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:43 [repeat=1/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:43 done 'OK' [1/10] (duration: 0:00:00.006006011)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:43 [repeat=2/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:43 done 'OK' [2/10] (duration: 0:00:00.007471210)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:43 [repeat=3/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:43 done 'OK' [3/10] (duration: 0:00:00.006770133)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:43 [repeat=4/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:43 done 'OK' [4/10] (duration: 0:00:00.006578431)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:43 [repeat=5/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:43 done 'OK' [5/10] (duration: 0:00:00.006750976)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:43 [repeat=6/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:43 done 'OK' [6/10] (duration: 0:00:00.006490264)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:43 [repeat=7/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:43 done 'OK' [7/10] (duration: 0:00:00.007414469)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:43 [repeat=8/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:43 done 'OK' [8/10] (duration: 0:00:00.006760714)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:43 [repeat=9/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:43 done 'OK' [9/10] (duration: 0:00:00.006708204)
#
# Executing `wait` at change_rate_reverse_playback.validatetest:44 (
# - on-clock=true
# )
# ? Action `wait` at change_rate_reverse_playback.validatetest:44 done 'OK' (duration: 0:00:00.006204532)
#
# Executing `checkpoint` at change_rate_reverse_playback.validatetest:47 (
# - text="Filling\ up\ segment\ with\ last\ buffer"
# )
# ? Action `checkpoint` at change_rate_reverse_playback.validatetest:47 done 'OK' (duration: 0:00:00.000014147)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:48 [repeat=0/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:48 done 'OK' [0/10] (duration: 0:00:00.000003845)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:48 [repeat=1/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:48 done 'OK' [1/10] (duration: 0:00:00.006956187)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:48 [repeat=2/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:48 done 'OK' [2/10] (duration: 0:00:00.006670522)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:48 [repeat=3/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:48 done 'OK' [3/10] (duration: 0:00:00.006826368)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:48 [repeat=4/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:48 done 'OK' [4/10] (duration: 0:00:00.006756635)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:48 [repeat=5/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:48 done 'OK' [5/10] (duration: 0:00:00.005868601)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:48 [repeat=6/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:48 done 'OK' [6/10] (duration: 0:00:00.004554005)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:48 [repeat=7/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:48 done 'OK' [7/10] (duration: 0:00:00.004437322)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:48 [repeat=8/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:48 done 'OK' [8/10] (duration: 0:00:00.004238794)
#
# Executing `crank-clock` at change_rate_reverse_playback.validatetest:48 [repeat=9/10] ( )
# ? Action `crank-clock` at change_rate_reverse_playback.validatetest:48 done 'OK' [9/10] (duration: 0:00:00.004017650)
#
# <position: 0:00:00.000000000 duration: 99:99:99.999999999 speed: -1.000000 />
# Executing `stop` at change_rate_reverse_playback.validatetest:50 (
# - on-message=eos
# )
# ? Action `stop` at change_rate_reverse_playback.validatetest:50 done 'OK' (duration: 0:00:00.000008887)
#
#
# change_rate_reverse_playback.validatetest --> State change request NULL, quitting mainloop
#
# validateflowoverride0 --> Checking that flow /mnt/gstreamer/subprojects/gst-plugins-base/tests/validate/videorate/change_rate_reverse_playback/flow-expectations/log-videorate-sink-expected matches expected flow /mnt/gstreamer.build/subprojects/gst-plugins-base/tests/validate/validate.videorate.change_rate_reverse_playback/change_rate_reverse_playback/log-videorate-sink-actual
#
# validateflowoverride0 --> OK
#
# validateflowoverride1 --> Checking that flow /mnt/gstreamer/subprojects/gst-plugins-base/tests/validate/videorate/change_rate_reverse_playback/flow-expectations/log-videorate-src-expected matches expected flow /mnt/gstreamer.build/subprojects/gst-plugins-base/tests/validate/validate.videorate.change_rate_reverse_playback/change_rate_reverse_playback/log-videorate-src-actual
#
# validateflowoverride1 --> OK
# warning : a serialized event received should be pushed in the same 'time' as it was received
# Detected on <videorate:src>
# Description : serialized events should be pushed in the same order they are received and serialized with buffers. If an event is received after a buffer with timestamp end 'X', it should be pushed right after buffers with timestamp end 'X'
#
# critical : We got a g_log critical issue
# Detected on <pipeline0>
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# Details : gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
# dotfile : no dotfile produced as GST_DEBUG_DUMP_DOT_DIR is not set.
# backtrace :
# gst_debug_get_stack_trace (0x18)
# gst_validate_report_new (0x378)
# gst_validate_report_valist (0x212)
# gst_validate_report (0x155)
# g_logv (0x538)
# g_log (0x147)
# gst_base_transform_src_eventfun (0x197)
# gst_validate_pad_monitor_src_ev (0x452)
# gst_pad_send_event_unchecked (0x2363)
# gst_pad_push_event_unchecked (0x874)
# gst_pad_push_event (0x606)
# gst_validate_pad_monitor_src_ev (0x452)
# gst_pad_send_event_unchecked (0x2363)
# gst_pad_push_event_unchecked (0x874)
# gst_pad_push_event (0x606)
# gst_base_sink_chain_unlocked.co (0x6814)
# gst_base_sink_chain (0x252)
# gst_validate_pad_monitor_chain_ (0x812)
# gst_pad_chain_data_unchecked (0x1117)
# gst_pad_push_data (0x2059)
# gst_pad_push (0x219)
# gst_video_rate_transform_ip (0x5070)
# default_generate_output (0x341)
# gst_base_transform_chain (0x174)
# gst_validate_pad_monitor_chain_ (0x812)
# gst_pad_chain_data_unchecked (0x1117)
# gst_pad_push_data (0x2059)
# gst_pad_push (0x219)
# gst_base_transform_chain (0x383)
# gst_validate_pad_monitor_chain_ (0x812)
# gst_pad_chain_data_unchecked (0x1117)
# gst_pad_push_data (0x2059)
# gst_pad_push (0x219)
# gst_base_src_loop (0x2509)
# gst_task_func (0x385)
# g_thread_pool_unprocessed (0x404)
# g_thread_unref (0x193)
# pthread_condattr_setpshared (0x1299)
# clone (0x68)
#
#
# Issues found: 19
# Returning 18 as errors were found
#
# =======> Test FAILED (Return value: 18)
#
not ok 1 /mnt/gstreamer/subprojects/gst-plugins-base/tests/validate/videorate/change_rate_reverse_playback.validatetest # Got a critical report
----------------------------------- stderr -----------------------------------
**Got criticals. Return value set to 18**:
* critical error gst_base_transform_update_qos: assertion 'GST_CLOCK_TIME_IS_VALID (timestamp)' failed
(test program exited with status code 18)
==============================================================================
================================== 224/531 ===================================
test: gst-plugins-base / validate.videorate.fill_segment_after_caps_changed_before_eos
start time: 11:57:05
duration: 1800.01s
result: killed by signal 15 SIGTERM
command: MALLOC_PERTURB_=13 GST_REGISTRY=/mnt/gstreamer.build/subprojects/gst-plugins-base/tests/validate/validate.registry GST_PLUGIN_SYSTEM_PATH_1_0='' GST_VALIDATE_LOGSDIR=/mnt/gstreamer.build/subprojects/gst-plugins-base/tests/validate/validate.videorate.fill_segment_after_caps_changed_before_eos GST_PLUGIN_SCANNER_1_0=/mnt/gstreamer.build/subprojects/gstreamer/libs/gst/helpers/gst-plugin-scanner GST_PLUGIN_LOADING_WHITELIST=gstreamer:gst-validate:gst-plugins-base@/mnt/gstreamer.build/subprojects/gst-plugins-base GST_PLUGIN_PATH_1_0=/mnt/gstreamer.build /mnt/gstreamer.build/subprojects/gstreamer/tests/validate/gst-tester-1.0 /mnt/gstreamer/subprojects/gst-plugins-base/tests/validate/videorate/fill_segment_after_caps_changed_before_eos.validatetest --use-fakesinks
----------------------------------- stdout -----------------------------------
# Running from meson subproject /mnt/gstreamer.build/subprojects/gst-devtools/validate/tools/gst-validate-1.0
1..1
==============================================================================
================================== 515/531 ===================================
test: gst-editing-services / nle_nleoperation
start time: 12:29:24
duration: 67.32s
result: exit status 1
command: GST_STATE_IGNORE_ELEMENTS='' GST_PLUGIN_PATH_1_0=/mnt/gstreamer.build MALLOC_PERTURB_=70 LD_LIBRARY_PATH=/mnt/gstreamer.build/subprojects/gstreamer/libs/gst/base:/mnt/gstreamer.build/subprojects/gstreamer/gst:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/pbutils:/mnt/gstreamer.build/subprojects/gstreamer/libs/gst/controller:/mnt/gstreamer.build/subprojects/gst-editing-services/ges:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/video:/mnt/gstreamer.build/subprojects/gstreamer/libs/gst/check:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/audio:/mnt/gstreamer.build/subprojects/gst-plugins-base/gst-libs/gst/tag:/mnt/gstreamer.build/subprojects/gst-devtools/validate/gst/validate:/opt/scorer/lib:/opt/miniconda/lib:/usr/local/cuda/lib64 GST_PLUGIN_SYSTEM_PATH_1_0='' CK_DEFAULT_TIMEOUT=20 GST_REGISTRY=/mnt/gstreamer.build/subprojects/gst-editing-services/tests/check/nle_nleoperation.registry /mnt/gstreamer.build/subprojects/gst-editing-services/tests/check/nle_nleoperation
----------------------------------- stdout -----------------------------------
Running suite(s): nleoperation
83%: Checks: 6, Failures: 0, Errors: 1
../gstreamer/subprojects/gst-editing-services/tests/check/nle/common.c:163:E:nleoperation:test_pyramid_operations:0: (after this point) Test timeout expired
Check suite gnonlin ran in 66.462s (tests failed: 1)
----------------------------------- stderr -----------------------------------
(nle_nleoperation:33592): GStreamer-WARNING **: 12:29:24.421: External plugin loader failed. This most likely means that the plugin loader helper binary was not found or could not be run. You might need to set the GST_PLUGIN_SCANNER environment variable if your setup is unusual. This should normally not be required though.
==============================================================================
```
</details>https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2913splitmuxsrc: If set range the splitmuxsrc, This output file cannot be played ...2023-09-04T08:40:14ZShigeharu Kamiyasplitmuxsrc: If set range the splitmuxsrc, This output file cannot be played with VLC Player.Hello.
I am Kamiya.
I posted the following to the mailling list.
But it may be bug, so I posted here, too.
-------------------------------------------------------------------------
I tried the followin pipeline with C++ coding (Proper...Hello.
I am Kamiya.
I posted the following to the mailling list.
But it may be bug, so I posted here, too.
-------------------------------------------------------------------------
I tried the followin pipeline with C++ coding (Properties are omitted).
`pipeline1 : splitmuxsrc ! h264parse ! queue ! qtmux ! filesink`
The created media file can be played correctly with any player.
But, if I changed range "start" to bigger than 0 with gst_event_new_seek,
the VLC player could not play the created media file.
It's movie stopped after a few seconds playing, but only the player's slider is moving to the last.
The first of buffer is not GST_BUFFER_FLAG_DELTA_UNIT.
On the other hand, in the case of the following pipeline without splitmuxsrc,
The created media file can be played correctly with any player contains the VLC,
even ifI changed range "start" to bigger than 0 with gst_event_new_seek.
`pipeline2 : filesrc ! qtdemux ! h264parse ! queue ! qtmux ! filesink`
I tried the pipeline1 which changed H.265.
The result was the same, but the following error occurred in gst-discover analysis.
```
ERROR libav :0:: Duplicate POC in a sequence: 3.
ERROR libav :0:: Duplicate POC in a sequence: 4.
```
I would like to combine some media files. So I hope pipeline1.
I don't know what the problem is and how the next action is.
please help me.
Best regards,
Kamiya.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2912Disabling receiver end stream in sendrecv2023-08-18T06:55:23ZNiraj LahoriDisabling receiver end stream in sendrecvHello All,
We are using C program in sendrecv example for displaying stream on the browser successfully. But we also receive another stream in the separate window as a Linux OS process. In our use case we only need to send the stream to...Hello All,
We are using C program in sendrecv example for displaying stream on the browser successfully. But we also receive another stream in the separate window as a Linux OS process. In our use case we only need to send the stream to the browser and don't need to receive another stream. I am working on closing that another stream but so far I am unable to find any way to close the stream. Can anyone here provide me with relevant guidance on how to implement this use-case ?
Thank you for your time and consideration.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2911splitmuxsrc: The return type of format-location signal seems to be GStrv, not...2024-01-15T23:57:25ZShigeharu Kamiyasplitmuxsrc: The return type of format-location signal seems to be GStrv, not GStrv*About splitmuxsrc, the return type of format-location signal seems to be GStrv, not GStrv*.
I tried with the return code "GStrv*", but does not success.
On the other hand, I have success following code (return code is GStrv).
```
stat...About splitmuxsrc, the return type of format-location signal seems to be GStrv, not GStrv*.
I tried with the return code "GStrv*", but does not success.
On the other hand, I have success following code (return code is GStrv).
```
static GStrv formatLocationHandler(GstElement *src, gpointer udata)
{
GStrv locations = (GStrv)g_new0(gchar*, 4);
locations[0] = g_strdup("C:/Rec/2023/07/26/1808_28911.mp4");
locations[1] = g_strdup("C:/Rec/2023/07/26/1808_38919.mp4");
locations[2] = g_strdup("C:/Rec/2023/07/26/1808_47902.mp4");
locations[3] = nullptr;
return locations;
}
```
The difinition in gstsplitmuxsrc.c is G_TYPE_STRV.
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/subprojects/gst-plugins-good/gst/multifile/gstsplitmuxsrc.c#L250
If the return code is GStrv, the following document and the gst-inspect of splitmuxsrc seems incorrect.
https://gstreamer.freedesktop.org/documentation/multifile/splitmuxsrc.html