GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2023-08-08T12:51:45Zhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/1003taginject tags property is not readable2023-08-08T12:51:45ZMiguel Ángel Cabrera Miñagorritaginject tags property is not readableTrying to read the tags from a taginject component using the python bindings I find the following error:
```
TypeError: property tags is not readable
```
However, the [docs](https://gstreamer.freedesktop.org/documentation/debug/taginjec...Trying to read the tags from a taginject component using the python bindings I find the following error:
```
TypeError: property tags is not readable
```
However, the [docs](https://gstreamer.freedesktop.org/documentation/debug/taginject.html?gi-language=c#taginject:tags) clearly state the `tags` property should be readable.
The following is how I try to get the tags:
```
tags = taginject.get_property("tags")
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/1002playbin3,decodebin3: Select wrong stream type with gapless flag2023-08-08T06:28:44Zchinn zamplaybin3,decodebin3: Select wrong stream type with gapless flagI have three mp4 files:
1.mp4 with both audio and video stream
2.mp4 with video stream only
3.mp4 with both audio and video stream
Testing cmd:
gst-play-1.0 --gapless --use-playbin3 1.mp4 2.mp4 3.mp4
**The 3.mp4 will only play the ...I have three mp4 files:
1.mp4 with both audio and video stream
2.mp4 with video stream only
3.mp4 with both audio and video stream
Testing cmd:
gst-play-1.0 --gapless --use-playbin3 1.mp4 2.mp4 3.mp4
**The 3.mp4 will only play the audio, but the video is gone**
The dot file of 1.mp4:
![image](/uploads/ab7e41738b99f868dc009b717adac5c0/image.png)
The dot file of 2.mp4:
![image](/uploads/d4cb4ad01f2a4d760d799dfcbf0bde68/image.png)
The dot file of 3.mp4:
![image](/uploads/dc08dae491d971bfd38424253c81175c/image.png)
As the png files shows, when playing 3.mp4, the decodebin will create a new audio stream (now there are two audio streams and one video stream in total), but the 3.mp4 only have two streams, so the playbin only check the type of the first two streams which is both audio type, than the video stream is not selected:
``` shell
0:00:07.147435095 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2248:gst_play_bin3_handle_message:<playbin> selected s
tream types changed, reconfiguring output
0:00:07.147449387 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2812:reconfigure_output:<playbin> selected_stream_type
s : audio
0:00:07.147463388 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2814:reconfigure_output:<playbin> active_stream_types
: audio video
0:00:07.147478263 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2829:reconfigure_output:<playbin> Stream type status:
'audio' selected active
0:00:07.147490513 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2836:reconfigure_output:<playbin> Stream type 'audio'
already active
0:00:07.147504222 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2829:reconfigure_output:<playbin> Stream type status:
'video' NOT selected active
0:00:07.147516472 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2839:reconfigure_output:<playbin> Stream type 'video'
is no longer requested
0:00:07.159008628 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2487:remove_combiner:<playbin> No combiner element to
remove
0:00:07.159033128 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2829:reconfigure_output:<playbin> Stream type status:
'text' NOT selected NOT active
0:00:07.159066087 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2896:reconfigure_output:<playbin> selected_stream_type
s : audio
0:00:07.159081546 3331 0x7f4000aaa0 DEBUG playbin3 gstplaybin3.c:2898:reconfigure_output:<playbin> active_stream_types
: audio
```
My gstreamer version is 1.22.0.
I don't know if what I described is detailed, please let me know if you need more infomations.
Best Wishes.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2883arch isn't picking up liblc32023-08-09T00:26:38ZSolarAquarionarch isn't picking up liblc3Arch has the pkgconfig file as lc3 and not liblc3, so despite it being there it's not being picked up
Similarly with webrtc-audio-processing-1 it has it as webrtc-audio-processingArch has the pkgconfig file as lc3 and not liblc3, so despite it being there it's not being picked up
Similarly with webrtc-audio-processing-1 it has it as webrtc-audio-processinghttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/478Fix builds on docs.rs and document all features2023-08-08T08:09:12ZpentamassivFix builds on docs.rs and document all featuresGir no longer generates a dox feature for building the documentation without linking the libraries. Because of that the entry for `[package.metadata.docs.rs]` in the `Cargo.toml` file needs to be changed a little bit for the builds to su...Gir no longer generates a dox feature for building the documentation without linking the libraries. Because of that the entry for `[package.metadata.docs.rs]` in the `Cargo.toml` file needs to be changed a little bit for the builds to succeed. Even though gstreamer itself does not use docs.rs for its documentation, many smaller projects do. If the builds fail for gstreamer on docs.rs, all builds from crates that depend on gstreamer also fail and they would not be able to use docs.rs.
This is what the correct entry in the Cargo.toml usually should look like ([source](https://gtk-rs.org/gir/book/tutorial/high_level_rust_api.html)):
```
[package.metadata.docs.rs]
all-features = true
# For build.rs scripts
rustc-args = ["--cfg", "docsrs"]
# For rustdoc
rustdoc-args = ["--cfg", "docsrs"]
```
Since https://github.com/gtk-rs/gir/pull/1487 was merged, all you have to do for the -sys crates to have the correct entry, is to remove `features = []` from `[package.metadata.docs.rs]`. Gir will then replace it with `all-features=true` and activate the required rustc args and rustdoc args.
The Cargo.toml file of the safe wrapper crates will not be changed by gir, so they need to be changed manually.https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/477Fix last remaining line containing dox2023-08-08T08:09:12ZpentamassivFix last remaining line containing doxDuring the removal of the dox feature, you must have missed one line. Unfortunately I can't fork the project to open a PR, but you can easily find it.
The line
`#[cfg(any(feature = "v1_18", feature = "dox"))]`
should be changed to
`#[cf...During the removal of the dox feature, you must have missed one line. Unfortunately I can't fork the project to open a PR, but you can easily find it.
The line
`#[cfg(any(feature = "v1_18", feature = "dox"))]`
should be changed to
`#[cfg(feature = "v1_18")]`
Thank youhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2882Windows example playbin error2023-08-08T08:40:06ZBruce ClayWindows example playbin errorI downloaded and installed the latest gstreamer for windows and installed it then I downloaded and installed the latest gstreamer dev for windows.
I rebooted the computer as suggested in the instructions. I built one of the basic exampl...I downloaded and installed the latest gstreamer for windows and installed it then I downloaded and installed the latest gstreamer dev for windows.
I rebooted the computer as suggested in the instructions. I built one of the basic examples. When I run the example, gst_parse_launch returns a null pipeline and the error returned is "no element \"playbin\". When I run gst-inspect, playbin is listed. when I run gst-inspect playbin several parameters are shown. If I run gst-launch playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm from the command line the video shows and I hear good audio. because the returned pipeline is null the rest of the calls also fail.
The example source I used follows
//#include <string>
#include <gst/gst.h>
int
main (int argc, char *argv[])
{
GstElement *pipeline;
GstBus *bus;
GstMessage *msg;
GError* err = NULL;
/* Initialize GStreamer */
gst_init (NULL, NULL);
/* Build the pipeline */
pipeline =
gst_parse_launch(
"playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm",
&err);
char* errStr = err->message;
//std::string errMsg = err->message;
/* Start playing */
gst_element_set_state (pipeline, GST_STATE_PLAYING);
/* Wait until error or EOS */
bus = gst_element_get_bus (pipeline);
msg =
gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE,
GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
/* Free resources */
if (msg != NULL)
gst_message_unref (msg);
gst_object_unref (bus);
gst_element_set_state (pipeline, GST_STATE_NULL);
gst_object_unref (pipeline);
return 0;
}
Any guidance would be appreciated.
Brucehttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2881webrtcbin: no offer is being sent2023-08-09T09:20:29ZHugo Svirakwebrtcbin: no offer is being sentOur usual flow as follows:
1. on-negotiation-needed is invoked
2. application invokes "create-offer"
3. application invokes "set-local-description" with offer
4. application sends offer to the other party via signalling server
However,...Our usual flow as follows:
1. on-negotiation-needed is invoked
2. application invokes "create-offer"
3. application invokes "set-local-description" with offer
4. application sends offer to the other party via signalling server
However, the local description is sometimes (randomly) already set and therefore on-negotiation-needed is not invoked and flow is not executed. How can local-description be already set when checking if negotiation is needed? The webrtcbin is sendonly.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2879Although source element is paused or source video data is blocked, sink eleme...2023-08-03T19:21:39Z永井知明Although source element is paused or source video data is blocked, sink element keeps rendering and writing data to a fileI wonder why the autovideosink element keeps displaying and filesink element keeps writing the last input frame even though source element is paused and the video data is not flowing.
When the source element is paused, I think that sink...I wonder why the autovideosink element keeps displaying and filesink element keeps writing the last input frame even though source element is paused and the video data is not flowing.
When the source element is paused, I think that sink element displaying or writing blank frame is correct behavior.
I tried to insert valve element which drops frame buffer between source element and sink element, but the result was the same.
An example source code which keeps displaying last input frame even though video source element is paused shown below.
For some additional context, this is running in a Windows 11 and Gstreamer version 1.22.4.
```c++
#include <gst/gst.h>
#include <cstdio>
enum class STATE
{
WAITING,
RECORDING,
PAUSING,
};
typedef struct _CustomData
{
GstElement* pipeline;
GstElement* src;
GstElement* rendersink;
GMainLoop* loop;
STATE state;
} CustomData;
static gboolean handle_keyboard(GIOChannel* source, GIOCondition cond, CustomData* data)
{
gchar* str = NULL;
GstBus* bus = NULL;
GstMessage* msg = NULL;
if (g_io_channel_read_line(source, &str, NULL, NULL,NULL) != G_IO_STATUS_NORMAL) {
return TRUE;
}
switch (g_ascii_tolower(str[0])) {
case 'p':
if (data->state == STATE::RECORDING)
{
g_print("Setting state to %s\n", "PAUSE");
data->state = STATE::PAUSING;
gst_element_set_state(data->src, GST_STATE_PAUSED);
}
else if (data->state == STATE::PAUSING)
{
g_print("Setting state to %s\n", "PLAYING");
data->state = STATE::RECORDING;
gst_element_set_state(data->src, GST_STATE_PLAYING);
}
break;
case 'q':
g_print("Finish\n");
g_main_loop_quit(data->loop);
break;
default:
break;
}
g_free(str);
return TRUE;
}
int main(int argc, char* argv[])
{
CustomData data;
GstStateChangeReturn ret;
gst_init(&argc, &argv);
data.pipeline = gst_pipeline_new("pipeline");
data.src = gst_element_factory_make("dshowvideosrc", "src");
data.rendersink = gst_element_factory_make("autovideosink", "autovideosink");
if (!data.pipeline || !data.src || !data.rendersink)
{
g_printerr("Failed to create elements\n");
return -1;
}
gst_bin_add_many(GST_BIN(data.pipeline), data.src, data.rendersink, NULL);
g_object_set(G_OBJECT(data.src), "device-index", 0, "do-timestamp", true, NULL);
if (!gst_element_link_filtered(data.src, data.rendersink, gst_caps_new_simple("video/x-raw",
"width", G_TYPE_INT, 1920,
"height", G_TYPE_INT, 1080,
"framerate", GST_TYPE_FRACTION, 30, 1,
NULL))) {
g_printerr("Failed to link src1 and comp\n");
gst_object_unref(data.pipeline);
return -1;
}
g_print("USAGE: Choose one of the following options, then press enter:\n"
" 'P' to toggle between PAUSE and PLAY\n"
" 'Q' to quit\n");
GIOChannel* io_stdin = g_io_channel_unix_new(_fileno(stdin));
g_io_add_watch(io_stdin, G_IO_IN, (GIOFunc)handle_keyboard, &data);
ret = gst_element_set_state(data.pipeline, GST_STATE_PLAYING);
data.state = STATE::RECORDING;
data.loop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(data.loop);
gst_element_set_state(data.pipeline, GST_STATE_NULL);
gst_object_unref(data.pipeline);
return 0;
}
```https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/440Cannot find dll.a for plugins2023-08-02T10:16:35Zdayo7116Cannot find dll.a for pluginshttps://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/395video/gtk: not compatible with gtk4-rs 0.72023-08-08T08:48:25ZJan Lukas Gernertvideo/gtk: not compatible with gtk4-rs 0.7```
error: failed to select a version for `gtk4-sys`.
... required by package `gtk4 v0.6.0`
... which satisfies dependency `gtk = "^0.6"` of package `gst-plugin-gtk4 v0.10.0`
versions that meet the requirements `^0.6` are: 0.6.3,...```
error: failed to select a version for `gtk4-sys`.
... required by package `gtk4 v0.6.0`
... which satisfies dependency `gtk = "^0.6"` of package `gst-plugin-gtk4 v0.10.0`
versions that meet the requirements `^0.6` are: 0.6.3, 0.6.2, 0.6.0
the package `gtk4-sys` links to the native library `gtk-4`, but it conflicts with a previous package which links to `gtk-4` as well:
package `gtk4-sys v0.7.0`
... which satisfies dependency `ffi = "^0.7"` of package `gtk4 v0.7.1`
... which satisfies dependency `gtk = "^0.7"` of package `libadwaita v0.5.2`
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/1024Although source element is paused or source video data is blocked, sink eleme...2023-08-03T06:42:12Z永井知明Although source element is paused or source video data is blocked, sink element keeps rendering and writing data to a file.I wonder why the autovideosink element keeps displaying and filesink element keeps writing the last input frame even though source element is paused and the video data is not flowing.
When the source element is paused, I think that sink...I wonder why the autovideosink element keeps displaying and filesink element keeps writing the last input frame even though source element is paused and the video data is not flowing.
When the source element is paused, I think that sink element displaying or writing blank frame is correct behavior.
I tried to insert valve element which drops frame buffer between source element and sink element, but the result was the same.
An example source code which keeps displaying last input frame even though video source element is paused shown below.
For some additional context, this is running in a Windows 11 and Gstreamer version 1.22.4.
```
#include <gst/gst.h>
#include <cstdio>
enum class STATE
{
WAITING,
RECORDING,
PAUSING,
};
typedef struct _CustomData
{
GstElement* pipeline;
GstElement* src;
GstElement* rendersink;
GMainLoop* loop;
STATE state;
} CustomData;
static gboolean handle_keyboard(GIOChannel* source, GIOCondition cond, CustomData* data)
{
gchar* str = NULL;
GstBus* bus = NULL;
GstMessage* msg = NULL;
if (g_io_channel_read_line(source, &str, NULL, NULL,NULL) != G_IO_STATUS_NORMAL) {
return TRUE;
}
switch (g_ascii_tolower(str[0])) {
case 'p':
if (data->state == STATE::RECORDING)
{
g_print("Setting state to %s\n", "PAUSE");
data->state = STATE::PAUSING;
gst_element_set_state(data->src, GST_STATE_PAUSED);
}
else if (data->state == STATE::PAUSING)
{
g_print("Setting state to %s\n", "PLAYING");
data->state = STATE::RECORDING;
gst_element_set_state(data->src, GST_STATE_PLAYING);
}
break;
case 'q':
g_print("Finish\n");
g_main_loop_quit(data->loop);
break;
default:
break;
}
g_free(str);
return TRUE;
}
int main(int argc, char* argv[])
{
CustomData data;
GstStateChangeReturn ret;
gst_init(&argc, &argv);
data.pipeline = gst_pipeline_new("pipeline");
data.src = gst_element_factory_make("dshowvideosrc", "src");
data.rendersink = gst_element_factory_make("autovideosink", "autovideosink");
if (!data.pipeline || !data.src || !data.rendersink)
{
g_printerr("Failed to create elements\n");
return -1;
}
gst_bin_add_many(GST_BIN(data.pipeline), data.src, data.rendersink, NULL);
g_object_set(G_OBJECT(data.src), "device-index", 0, "do-timestamp", true, NULL);
if (!gst_element_link_filtered(data.src, data.rendersink, gst_caps_new_simple("video/x-raw",
"width", G_TYPE_INT, 1920,
"height", G_TYPE_INT, 1080,
"framerate", GST_TYPE_FRACTION, 30, 1,
NULL))) {
g_printerr("Failed to link src1 and comp\n");
gst_object_unref(data.pipeline);
return -1;
}
g_print("USAGE: Choose one of the following options, then press enter:\n"
" 'P' to toggle between PAUSE and PLAY\n"
" 'Q' to quit\n");
GIOChannel* io_stdin = g_io_channel_unix_new(_fileno(stdin));
g_io_add_watch(io_stdin, G_IO_IN, (GIOFunc)handle_keyboard, &data);
ret = gst_element_set_state(data.pipeline, GST_STATE_PLAYING);
data.state = STATE::RECORDING;
data.loop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(data.loop);
gst_element_set_state(data.pipeline, GST_STATE_NULL);
gst_object_unref(data.pipeline);
return 0;
}
```https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg/-/issues/37avfilter build issues with ffmpeg 6.02023-08-08T21:43:13ZJonas Kvingeavfilter build issues with ffmpeg 6.0I'm getting the following error when trying to build from the meson-6.0 branch in GitHub actions with Windows 2022 and Visual Studio 2022
C compiler for the host machine: cl (msvc 19.36.32537 "Microsoft (R) C/C++ Optimizing Compiler Vers...I'm getting the following error when trying to build from the meson-6.0 branch in GitHub actions with Windows 2022 and Visual Studio 2022
C compiler for the host machine: cl (msvc 19.36.32537 "Microsoft (R) C/C++ Optimizing Compiler Version 19.36.32537 for x64")
C linker for the host machine: link link 14.36.32537.0
```
FAILED: libavfilter-static.a.p/libavfilter_vf_mcdeint.c.obj
"cl" "-Ilibavfilter-static.a.p" "-I." "-I.." "-I..\compat\atomics\win32" "/MD" "/nologo" "/showIncludes" "/utf-8" "/W2" "/O2" "/Zi" "/wo4005" "/wd4018" "/wd4146" "/wd4244" "/wd4305" "/wd4554" "/wd4114" "/wd4028" "/wd4090" "/wd4133" "/utf-8" "-D_ISOC99_SOURCE" "-D_GNU_SOURCE" "-D_LARGEFILE_SOURCE" "-DPIC" "-D_USE_MATH_DEFINES" "-D_CRT_SECURE_NO_WARNINGS" "-D_CRT_NONSTDC_NO_WARNINGS" "-D_WIN32_WINNT=0x0600" "-DHAVE_AV_CONFIG_H" "-DBUILDING_avfilter" "/Fdlibavfilter-static.a.p\libavfilter_vf_mcdeint.c.pdb" /Folibavfilter-static.a.p/libavfilter_vf_mcdeint.c.obj "/c" ../libavfilter/vf_mcdeint.c
../libavfilter/vf_mcdeint.c(185): error C2039: 'coded_frame': is not a member of 'AVCodecContext'
D:\a\strawberry-msvc-dependencies\strawberry-msvc-dependencies\sources\ffmpeg\libavcodec/avcodec.h(426): note: see declaration of 'AVCodecContext'
[2074/2263] Compiling C object libavfilter-static.a.p/libavfilter_af_mcompand.c.obj
[2075/2263] Compiling C object libavfilter-static.a.p/libavfilter_vf_median.c.obj
```
Full error: https://github.com/strawberrymusicplayer/strawberry-msvc-dependencies/actions/runs/5729015819/job/15524855218?pr=202
ffmpeg built here:
https://github.com/strawberrymusicplayer/strawberry-msvc-dependencies/blob/8577c77676ac3cf9ca5389058a3ffc48d2898636/.github/workflows/build.yml#L1914
I'm getting the following error when building on Windows 10 with Visual Studio 2022
C compiler for the host machine: cl (msvc 19.36.32537 "Microsoft (R) C/C++ Optimizing Compiler Version 19.36.32537 for x64")
C linker for the host machine: link link 14.36.32537.0
Basically the same Visual Studio version as in GitHub actions, but a different error. If I pass -Davfilter=disabled I'm getting the same error as in Github Actions.
```
[1761/2263] Generating 'libavfilter-static.a.p\\vf_nlmeans.asm.o'.
FAILED: libavfilter-static.a.p/vf_nlmeans.asm.o
"C:\Program Files\NASM\nasm.EXE" "-DPIC" "-g" "-f" "win64" "-i" "C:/Data/Projects/strawberry/msvc_/build_debug/ffmpeg/" "-i" "C:/Data/Projects/strawberry/msvc_/build_debug/ffmpeg/build/" "-i" "C:/Data/Projects/strawberry/msvc_/build_debug/ffmpeg/libavfilter/x86/" "-P" "C:/Data/Projects/strawberry/msvc_/build_debug/ffmpeg/build/config.asm" "../libavfilter/x86/vf_nlmeans.asm" "-o" "libavfilter-static.a.p/vf_nlmeans.asm.o"
panic: ../libavfilter/x86/vf_nlmeans.asm: assertion cv8_state.source_files != NULL failed at output/codeview.c:512
[1770/2263] Generating 'libavfilter-static.a.p\\colorspacedsp.asm.o'.
ninja: build stopped: subcommand failed.
```
No issues with the meson-4.4.4 branch.amysparkamysparkhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2877pluginloader: Generates invalid path to gst-plugin-scanner2024-03-12T16:59:20ZPhilippe Normandpluginloader: Generates invalid path to gst-plugin-scanner```
0:00:00.001820402 780747 0xab7130 LOG GST_PLUGIN_LOADING gstpluginloader.c:565:gst_plugin_loader_spawn: Trying installed plugin scanner
0:00:00.001858012 7...```
0:00:00.001820402 780747 0xab7130 LOG GST_PLUGIN_LOADING gstpluginloader.c:565:gst_plugin_loader_spawn: Trying installed plugin scanner
0:00:00.001858012 780747 0xab7130 DEBUG GST_PLUGIN_LOADING gstpluginloader.c:579:gst_plugin_loader_spawn: found libgstreamer-1.0 library at /lib64
0:00:00.001870889 780747 0xab7130 DEBUG GST_PLUGIN_LOADING gstpluginloader.c:595:gst_plugin_loader_spawn: constructing path to system plugin scanner using plugin dir: 'lib64', plugin scanner dir: 'libexec'
0:00:00.001882588 780747 0xab7130 DEBUG GST_PLUGIN_LOADING gstpluginloader.c:609:gst_plugin_loader_spawn: using system plugin scanner at /lib64/../libexec/gstreamer-1.0/gst-plugin-scanner
0:00:00.001892724 780747 0xab7130 LOG GST_PLUGIN_LOADING gstpluginloader.c:433:gst_plugin_loader_try_helper: Trying to spawn gst-plugin-scanner helper at /lib64/../libexec/gstreamer-1.0/gst-plugin-scanner
0:00:00.005849675 780747 0xab7130 ERROR GST_PLUGIN_LOADING gstpluginloader.c:442:gst_plugin_loader_try_helper: Spawning gst-plugin-scanner helper failed: Failed to execute child process “/lib64/../libexec/gstreamer-1.0/gst-plugin-scanner” (No such file or directory)
0:00:00.005865887 780747 0xab7130 INFO GST_PLUGIN_LOADING gstpluginloader.c:617:gst_plugin_loader_spawn: No gst-plugin-scanner available, or not working
(WPEWebProcess:780747): GStreamer-WARNING **: 16:13:57.144: 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.
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1781wasapi2sink: No volume sync from system volume2023-08-01T14:38:46ZJonas Kvingewasapi2sink: No volume sync from system volumeWhen setting volume on wasapi2sink, it syncs to the system volume, but when connecting notify::volume, no event is received when the system volume is changed.When setting volume on wasapi2sink, it syncs to the system volume, but when connecting notify::volume, no event is received when the system volume is changed.https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/1023gstv4l2bufferpool: Problems when checking for truncated buffer2023-08-01T10:19:41ZMatthias Fendgstv4l2bufferpool: Problems when checking for truncated bufferWhile writing a v4l2 capture driver for a special hardware capture IP block, I ran into a problem with gstreamer when using the data_offset field of the multiplanar API.
The IP core uses a special mechanism to transfer frames in hardware...While writing a v4l2 capture driver for a special hardware capture IP block, I ran into a problem with gstreamer when using the data_offset field of the multiplanar API.
The IP core uses a special mechanism to transfer frames in hardware to a specific physical address.
For certain hardware reasons, the frame starts with some kind of header data that is written to the destination memory, but must be ignored for further processing.
To describe such a scenario, the data_offset field of v4l2_plane can be used. The driver implements the multiplanar capture API and dmabuf memory buffers.
But whhen I want to test the driver with gstreamer, the requested buffers are all discarded with this message:
v4l2bufferpool gstv4l2bufferpool.c:2163:gst_v4l2_buffer_pool_process:<v4l2src0:pool0:src> Dropping truncated buffer, this is likely a driver bug
If I use a data_offset of zero, everything works fine.
If I omit the reported check, everything works as expected as well. Even the data_offset seems to be handled correctly.
Since I actually expected a driver error, I tried the same setup with vivid and found that it is the same here.
As the vivid driver uses a data_offset of 128 bytes when the YUYV format is selected, this module can be used to reproduce this behavior.
```
export GST_DEBUG=*v4l2*:4
modprobe vivid num_inputs=1 multiplanar=2
gst-launch-1.0 -v v4l2src device=/dev/videoN io-mode=4 ! video/x-raw,format=YUY2,width=320,height=180 ! fakesink
```
So if I didn't misunderstand anything, the check should also consider the data_offset.
Tested with version 1.22.4.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2871getting compilation error in macOS2023-07-31T07:56:46ZJaiv Shahgetting compilation error in macOSI am on Mac OS Ventura, I have tried to install with brew install gstreamer (along with gst-plugins-common,gst-plugins-good). I then try to compile the first example at https://gstreamer.freedesktop.org/documentation/tutorials/basic/hell...I am on Mac OS Ventura, I have tried to install with brew install gstreamer (along with gst-plugins-common,gst-plugins-good). I then try to compile the first example at https://gstreamer.freedesktop.org/documentation/tutorials/basic/hello-world.html?gi-language=c
and I am getting compilation error:
#include <gst/gst.h>
^~~~~~~~~~~
1 error generated.
I tiered uninstalling gstreamer and re-installed using the .pkg files but I am still getting same issueshttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2870wasapi2sink: Choppy / stuttering audio2024-02-24T12:48:20ZJonas Kvingewasapi2sink: Choppy / stuttering audioA lot of users are reporting choppy / stuttering audio with wasapi2sink, while there are no issues using directsoundsink and wasapisink with the same pipeline (https://github.com/strawberrymusicplayer/strawberry/issues/1227). I'm unable ...A lot of users are reporting choppy / stuttering audio with wasapi2sink, while there are no issues using directsoundsink and wasapisink with the same pipeline (https://github.com/strawberrymusicplayer/strawberry/issues/1227). I'm unable to reproduce this myself.
When Auto is selected, wasapi2sink is picked first because it is ranked as primary. Even though directsoundsink is part of good it is ranked as secondary, and wasapisink and wasapi2sink, part of bad is ranked primary, both having issues.https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/-/issues/177Retrieve path string in mounts through GstRTSPClient2023-08-08T08:53:45ZTianyi LuRetrieve path string in mounts through GstRTSPClientHi, I am playing with `Gstreamer-rtsp-server`. Currently, I am using `gst_rtsp_mount_points_remove_factory()` to remove the factory with associated path in mount if the one of the client is closing (I know it sounds whacky, but ultimatel...Hi, I am playing with `Gstreamer-rtsp-server`. Currently, I am using `gst_rtsp_mount_points_remove_factory()` to remove the factory with associated path in mount if the one of the client is closing (I know it sounds whacky, but ultimately, I will detect if the current closing client is the last one). To achieve that, I connect the `GstRTSPClient::close` signal and implement a callback like this,
```
static void testClientClosed(GstRTSPClient* client, gpointer userdata)
{
GstRTSPMountPoints* mounts = gst_rtsp_client_get_mount_points(client);
gchar* matchedPath = NULL;
for (auto path : mountPaths)
{
GstRTSPMediaFactory* factory = gst_rtsp_mount_points_match(mounts, path, NULL);
if (factory)
{
matchedPath = path;
break;
}
}
....
gst_rtsp_mount_points_remove_factory(mounts, matchedPath);
....
}
```
My question is, is there any methods to retrieve the client mount path instead of doing the iteration? Thanks in advance.https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/394Canceller implementation issue with webrtchttp2023-08-04T12:09:05ZSanchayan Maitysanchayan@sanchayanmaity.netCanceller implementation issue with webrtchttpCommit 08b6251 added the check to ensure only one canceller at a time for `net/webrtc`.
In `whipsink` and since `whipwebrtcsink` picked up the same implementation, there exists a bug around the use of canceller.
`whipsink` calls `wait_...Commit 08b6251 added the check to ensure only one canceller at a time for `net/webrtc`.
In `whipsink` and since `whipwebrtcsink` picked up the same implementation, there exists a bug around the use of canceller.
`whipsink` calls `wait_async` while passing the canceller as an argument. The path `send_offer -> do_post -> parse_endpoint_response` results in the canceller being replaced in each call to `wait_async`. Since the `wait_async` call in `whipsink` does not ensure one canceller, with the async call the use of canceller/abort is subtly broken.
Similarly, for `whepsrc`.
CC: @arun @tkanakamallahttps://gitlab.freedesktop.org/gstreamer/gst-docs/-/issues/124Adding Properties / cryptic PROP_02023-07-28T11:47:08ZVitaly IvanovAdding Properties / cryptic PROP_0I find Adding Properties (https://gstreamer.freedesktop.org/documentation/plugin-development/basics/args.html?gi-language=c) extremely rudimentary and unhelpful. I've spent more time trying to figure out (unsuccessfully) why there's unus...I find Adding Properties (https://gstreamer.freedesktop.org/documentation/plugin-development/basics/args.html?gi-language=c) extremely rudimentary and unhelpful. I've spent more time trying to figure out (unsuccessfully) why there's unused PROP_0 in the properties enum, which also presents in at least some Base GST elements (https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/subprojects/gst-plugins-base/gst/audiotestsrc/gstaudiotestsrc.c#L117).
Neither Google nor chatGPT know anything about that, there's nothing in the docs, nothing in comments in the source code. Is it really required? Is property_id = 0 a reserved value?