GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2024-02-19T06:11:56Zhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1247gstreamer-vaapi: elements_vaapipostproc test failing2024-02-19T06:11:56ZJeremy Bichagstreamer-vaapi: elements_vaapipostproc test failing#### Setup
- Debian Unstable or Ubuntu 22.04 LTS
- **GStreamer Version:** 1.20.2
### Steps to reproduce the bug
From **gstreamer-vappi**:
1. `meson test`
### Additional Information
I'd like to run the build tests at build time. Any id...#### Setup
- Debian Unstable or Ubuntu 22.04 LTS
- **GStreamer Version:** 1.20.2
### Steps to reproduce the bug
From **gstreamer-vappi**:
1. `meson test`
### Additional Information
I'd like to run the build tests at build time. Any idea why the test is failing in the minimal Debian/Ubuntu build environment?
https://buildd.debian.org/status/logs.php?pkg=gstreamer-vaapi1.0&arch=amd64
```
1/2 elements_vaapipostproc FAIL 0.33s exit status 3
08:40:28 GST_REGISTRY=/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/tests/check/elements_vaapipostproc.registry
GST_PLUGIN_SYSTEM_PATH_1_0=''
GST_PLUGIN_PATH_1_0=/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu/gstreamer-1.0
CK_DEFAULT_TIMEOUT=20 MALLOC_PERTURB_=215 /<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/tests/check/elements_vaapipostproc
----------------------------------- output -----------------------------------
Running suite(s): vaapipostproc
0%: Checks: 3, Failures: 3, Errors: 0
../tests/check/elements/vaapipostproc.c:57:F:general:test_make:0: Failed to create vaapipostproc element
../tests/check/elements/vaapipostproc.c:79:F:general:test_crop_mouse_events:0: Failed to create vaapipostproc element
../tests/check/elements/vaapipostproc.c:79:F:general:test_orientation_mouse_events:0: Failed to create vaapipostproc element
Check suite vaapipostproc ran in 0.010s (tests failed: 3)
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/205Build error: shutil.move(...) in cargo_wrapper.py results in AttributeError2022-08-30T06:13:28ZKlaas Jan RusscherBuild error: shutil.move(...) in cargo_wrapper.py results in AttributeErrorThe last line of cargo_wrapper.py is `shutil.move(f, uninstalled)`. For Python3.8 this results in the error:
```
Traceback (most recent call last):
File "/home/user/temp/gstreamer/subprojects/gst-plugins-rs/cargo_wrapper.py", line 140,...The last line of cargo_wrapper.py is `shutil.move(f, uninstalled)`. For Python3.8 this results in the error:
```
Traceback (most recent call last):
File "/home/user/temp/gstreamer/subprojects/gst-plugins-rs/cargo_wrapper.py", line 140, in <module>
shutil.move(f, uninstalled)
File "/usr/lib/python3.8/shutil.py", line 787, in move
real_dst = os.path.join(dst, _basename(src))
File "/usr/lib/python3.8/shutil.py", line 750, in _basename
return os.path.basename(path.rstrip(sep))
AttributeError: 'PosixPath' object has no attribute 'rstrip'
```
The reason in that `shutil.move(...)` supports path copies from Python 3.9 on, and I am using Python3.8 for which `shutil.move(..)` only supports string arguments (see [shutil.move(...) documentation](https://docs.python.org/3/library/shutil.html#shutil.move)).
I will upload a commit shortly that checks the python version and that uses `shutil.move(str(f), str(uninstalled))` for Python3.8 and older.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1245gst-libav: generic_plugin_test fails2022-09-22T07:03:02ZJeremy Bichagst-libav: generic_plugin_test fails#### Setup
- Debian Unstable or Ubuntu 22.04 LTS
- **GStreamer Version:** 1.20.2
### Steps to reproduce the bug
From **gst-libav**:
1. `meson test`
### Additional Information
https://buildd.debian.org/status/logs.php?pkg=gst-libav1.0&...#### Setup
- Debian Unstable or Ubuntu 22.04 LTS
- **GStreamer Version:** 1.20.2
### Steps to reproduce the bug
From **gst-libav**:
1. `meson test`
### Additional Information
https://buildd.debian.org/status/logs.php?pkg=gst-libav1.0&arch=amd64
```
5/6 generic_plugin_test FAIL 0.49s exit status 1
08:50:52 GST_PLUGIN_SYSTEM_PATH_1_0='' GST_PLUGIN_LOADING_WHITELIST=gstreamer:gst-plugins-base:gst-libav@/
<<PKGBUILDDIR>>/obj-x86_64-linux-gnu MALLOC_PERTURB_=19 GST_PLUGIN_PATH_1_0=/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu:
/usr/lib/x86_64-linux-gnu/gstreamer-1.0:/usr/lib/x86_64-linux-gnu/gstreamer-1.0
GST_REGISTRY=/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/tests/check/generic_plugin_test.registry
GST_PLUGIN_SCANNER_1_0=/usr/libexec/gstreamer-1.0/gst-plugin-scanner CK_DEFAULT_TIMEOUT=20 GSETTINGS_BACKEND=memory
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/tests/check/generic_plugin_test
----------------------------------- output -----------------------------------
stdout:
Running suite(s): Plugin
Unexpected critical/warning: 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.
Stack trace:
gst_debug_get_stack_trace (/usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0.2001.0:0x7f5123a2380b)
?? (/usr/lib/x86_64-linux-gnu/libgstcheck-1.0.so.0.2001.0:0x7f5123856aa7)
g_logv (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.1:0x7f51238cc989)
g_log (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.1:0x7f51238ccc6b)
?? (/usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0.2001.0:0x7f5123a4f9b6)
?? (/usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0.2001.0:0x7f5123a50a2d)
?? (/usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0.2001.0:0x7f5123a50bac)
gst_update_registry (/usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0.2001.0:0x7f5123a521c0)
test_libav_update_reg (plugin-test.c:61)
srunner_run_tagged (/usr/lib/x86_64-linux-gnu/libgstcheck-1.0.so.0.2001.0:0x7f51238642e5)
gst_check_run_suite (/usr/lib/x86_64-linux-gnu/libgstcheck-1.0.so.0.2001.0:0x7f5123857f8b)
main (plugin-test.c:98)
__libc_start_main (/lib/x86_64-linux-gnu/libc-2.33.so:0x7f51236957f9)
_start (/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/tests/check/generic_plugin_test:0x56105143f2a6)
50%: Checks: 2, Failures: 1, Errors: 0
../libs/gst/check/gstcheck.c:286:F:existence:test_libav_update_reg:0: Unexpected critical/warning:
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.
Check suite plugin_test ran in 0.059s (tests failed: 1)
stderr:
(generic_plugin_test): GStreamer-WARNING **: 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/gstreamer/-/issues/1241va: encoders: Generate dynamically the rate-control property2022-10-10T11:05:17ZVíctor Manuel Jáquez Lealva: encoders: Generate dynamically the rate-control propertyThe available rate control depends on the profile, but nowadays all the rate controls are exposed in the property, leading to frustration to users.
Ideally the rate-control should be generated in run-time. A difficulty is that an encode...The available rate control depends on the profile, but nowadays all the rate controls are exposed in the property, leading to frustration to users.
Ideally the rate-control should be generated in run-time. A difficulty is that an encoder element, before downstream negotiation, supports several profiles.
A proposal is to add a helper function in GstVaFilter pasing the codec and getting back the GParamSpec with all the rate controls supported by all the profiles available for that codec.https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/388Differencies of ParamSpecULong in different architectures2022-08-30T06:00:35ZMattia ADifferencies of ParamSpecULong in different architecturesI receive a mistype error if I run this code on an aarch64 architecture.
I compiled the code directly on the aarch64 machine, while on the x64 machine no error was raised.
The error:
**thread 'main' panicked at 'called `Result::unwrap(...I receive a mistype error if I run this code on an aarch64 architecture.
I compiled the code directly on the aarch64 machine, while on the x64 machine no error was raised.
The error:
**thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value:ValueTypeMismatchError { actual: gulong, requested: guint64 }', src/utils/converter.rs:192:44**
```
pub fn details_from_param_specs(param: &ParamSpec, element: &gst::Element) -> Detail {
let val = element.try_property_value(param.name());
let val = match val.is_ok(){
true => val.unwrap(),
false => param.default_value().clone(),
};
return match val.value_type() {
Type::BOOL =>
Detail::Boolean(BooleanDetails{
default: val.get::<bool>().unwrap_or_default()
}),
Type::STRING =>
Detail::String(StringDetails{
default: val.get::<String>().unwrap_or_default()
}),
Type::U_LONG => {
let ulong_param = param.downcast_ref::<ParamSpecULong>().unwrap();
let default = val.get::<c_ulong>().unwrap();
let range = (ulong_param.minimum() as c_ulong, ulong_param.maximum() as c_ulong);
return Detail::ULong(ULongDetail {
default, range
});
},
...
```https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/387Using glupload on windows with glutin and glow2022-09-15T11:43:56ZHenrique PerigoUsing glupload on windows with glutin and glowHello, I’m trying to build an app using `glutin` `glow` and `gstreamer` on Windows
I’m using as a reference the [glupload](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/blob/main/examples/src/glupload.rs) example, I’m able to ...Hello, I’m trying to build an app using `glutin` `glow` and `gstreamer` on Windows
I’m using as a reference the [glupload](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/blob/main/examples/src/glupload.rs) example, I’m able to compile the app but I’m running in this runtime error:
```jsx
0:00:23.651939000 11680 00000182A2FD4D80 WARN glcontext gstglcontext.c:1257:gst_gl_context_create_thread:<glcontextwgl0> Failed to create context
0:00:23.654347000 11680 00000182A2FD4D00 WARN glbasefilter gstglbasefilter.c:608:gst_gl_base_filter_find_gl_context_unlocked:<gluploadelement0> error: failed to share contexts through wglShareLists 0xaa
0:00:25.927844000 11680 00000182A2FD4DC0 WARN glcontext gstglcontext.c:1257:gst_gl_context_create_thread:<glcontextwgl1> Failed to create context
0:00:25.929047000 11680 00000182A2FD4D00 WARN glbasefilter gstglbasefilter.c:608:gst_gl_base_filter_find_gl_context_unlocked:<glcolorconvertelement0> error: failed to share contexts through wglShareLists 0xaa
0:00:31.059709000 11680 00000182A2FD4E00 WARN glcontext gstglcontext.c:1257:gst_gl_context_create_thread:<glcontextwgl2> Failed to create context
0:00:31.061391000 11680 00000182A2FD4D00 WARN glbasefilter gstglbasefilter.c:608:gst_gl_base_filter_find_gl_context_unlocked:<gluploadelement0> error: failed to share contexts through wglShareLists 0xaa
(pira-gst.exe:11680): GStreamer-CRITICAL **: 06:55:10.974: gst_caps_is_subset: assertion 'subset != NULL' failed
0:00:33.962252000 11680 00000182A2FD4D00 ERROR basetransform gstbasetransform.c:485:gst_base_transform_transform_caps:<gluploadelement0> transform_caps returned caps (NULL) which are not a real subset of the filter caps video/x-raw, format=(string){ AYUV64, ARGB64, GBRA_12LE, GBRA_12BE, Y412_LE, Y412_BE, A444_10LE, GBRA_10LE, A444_10BE, GBRA_10BE, A422_10LE, A422_10BE, A420_10LE, A420_10BE, RGB10A2_LE, BGR10A2_LE, Y410, GBRA, ABGR, VUYA, BGRA, AYUV, ARGB, RGBA, A420, Y444_16LE, Y444_16BE, v216, P016_LE, P016_BE, Y444_12LE, GBR_12LE, Y444_12BE, GBR_12BE, I422_12LE, I422_12BE, Y212_LE, Y212_BE, I420_12LE, I420_12BE, P012_LE, P012_BE, Y444_10LE, GBR_10LE, Y444_10BE, GBR_10BE, r210, I422_10LE, I422_10BE, NV16_10LE32, Y210, v210, UYVP, I420_10LE, I420_10BE, P010_10LE, NV12_10LE32, NV12_10LE40, P010_10BE, Y444, GBR, NV24, xBGR, BGRx, xRGB, RGBx, BGR, IYU2, v308, RGB, Y42B, NV61, NV16, VYUY, UYVY, YVYU, YUY2, I420, YV12, NV21, NV12, NV12_64Z32, NV12_4L4, NV12_32L32, Y41B, IYU1, YVU9, YUV9, RGB16, BGR16, RGB15, BGR15, RGB8P, GRAY16_LE, GRAY16_BE, GRAY10_LE32, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], multiview-mode=(string){ mono, left, right }; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], multiview-mode=(string){ mono, left, right }
** (pira-gst.exe:11680): WARNING **: 06:55:10.977: gluploadelement0: transform_caps returned caps which are not a real subset of the filter caps
(pira-gst.exe:11680): GStreamer-CRITICAL **: 06:55:10.977: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps2)' failed
(pira-gst.exe:11680): GStreamer-CRITICAL **: 06:55:10.977: gst_mini_object_unref: assertion 'mini_object != NULL' failed
(pira-gst.exe:11680): GStreamer-CRITICAL **: 06:55:10.977: gst_mini_object_unref: assertion 'mini_object != NULL' failed
(pira-gst.exe:11680): GStreamer-CRITICAL **: 06:55:10.977: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps2)' failed
(pira-gst.exe:11680): GStreamer-CRITICAL **: 06:55:10.977: gst_caps_is_empty: assertion 'GST_IS_CAPS (caps)' failed
(pira-gst.exe:11680): GStreamer-CRITICAL **: 06:55:10.977: gst_caps_intersect_full: assertion 'GST_IS_CAPS (caps1)' failed
(pira-gst.exe:11680): GStreamer-CRITICAL **: 06:55:10.978: gst_mini_object_unref: assertion 'mini_object != NULL' failed
(pira-gst.exe:11680): GStreamer-CRITICAL **: 06:55:10.978: gst_mini_object_unref: assertion 'mini_object != NULL' failed
0:00:33.966942000 11680 00000182A2FD4D00 WARN GST_CAPS gstpad.c:5702:pre_eventfunc_check:<glsinkbin0:sink> caps video/x-raw, format=(string)AYUV64, width=(int)320, height=(int)240, framerate=(fraction)30/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive not accepted
0:00:33.968752000 11680 00000182A2FD4D00 WARN GST_CAPS gstpad.c:5702:pre_eventfunc_check:<glsinkbin0:sink> caps video/x-raw, format=(string)AYUV64, width=(int)320, height=(int)240, framerate=(fraction)30/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive not accepted
0:00:33.969730000 11680 00000182A2FD4D00 WARN GST_PADS gstpad.c:4303:gst_pad_peer_query:<videotestsrc0:src> could not send sticky events
0:00:33.971674000 11680 00000182A2FD4D00 WARN GST_CAPS gstpad.c:5702:pre_eventfunc_check:<glsinkbin0:sink> caps video/x-raw, format=(string)AYUV64, width=(int)320, height=(int)240, framerate=(fraction)30/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progress0:00:33.973723000 11680 00000182A2FD4D00 WARN basesrc gstbasesrc.c:3127:gst_base_src_loop:<videotestsrc0> error: Internal data stream error.
0:00:33.974315000 11680 00000182A2FD4D00 WARN basesrc gstbasesrc.c:3127:gst_base_src_loop:<videotestsrc0> error: streaming stopped, reason not-negotiated (-4)
0:00:33.975122000 11680 00000182A2FD4D00 WARN GST_CAPS gstpad.c:5702:pre_eventfunc_check:<glsinkbin0:sink> caps video/x-raw, format=(string)AYUV64, width=(int)320, height=(int)240, framerate=(fraction)30/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive not accepted
0:00:33.975815000 11680 00000182A2FD4D00 WARN GST_CAPS gstpad.c:5702:pre_eventfunc_check:<glsinkbin0:sink> caps video/x-raw, format=(string)AYUV64, width=(int)320, height=(int)240, framerate=(fraction)30/1, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive not accepted
0:00:33.976519000 11680 00000182A2FD4D00 WARN GST_CAPS gstpad.c:5702:pre_eventfunc_check:<glsinkbin0:sink> caps video/x-raw, format=(string)AYUive not accepted
```
Here's how I'm creating the gl context:
```
let gl_display = gst_gl::GLDisplay::new();
let mut shared_ctx_opt = None;
match unsafe { app.context.context().raw_handle() } {
piralib::glutin::platform::windows::RawHandle::Wgl(wgl_handle) => {
println!("WGL");
unsafe {
let raw_handle = wgl_handle as libc::uintptr_t;
shared_ctx_opt = gst_gl::GLContext::new_wrapped(
&gl_display,
raw_handle,
gst_gl::GLPlatform::WGL,
gst_gl::GLAPI::OPENGL3,
)
};
}
_ => (),
};
```
Here’s the code for reference if someone wants to see [https://github.com/Hperigo/pira-gst/blob/main/src/main.rs#L147](https://github.com/Hperigo/pira-gst/blob/main/src/main.rs#L147)https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/386StreamProducer does not forward tag events to consumers2023-04-04T08:07:55ZJimmi ChristensenStreamProducer does not forward tag events to consumersSeems like most events are actually not forwarded from the `StreamProducer`. One of the important ones to forward is tags. We have this patch locally to support this, but it does not seem like the cleanest solution:
```diff
@@ -147,11 +...Seems like most events are actually not forwarded from the `StreamProducer`. One of the important ones to forward is tags. We have this patch locally to support this, but it does not seem like the cleanest solution:
```diff
@@ -147,11 +147,25 @@ impl<'a> From<&'a gst_app::AppSink> for StreamProducer {
.new_sample(move |appsink| {
let mut consumers = consumers_clone.lock().unwrap();
- let sample = match appsink.pull_sample() {
- Ok(sample) => sample,
- Err(_err) => {
- return Err(gst::FlowError::Flushing);
+ let mut sample = None;
+ let mut events = vec![];
+ while let Ok(obj) = appsink.pull_object() {
+ let obj = match obj.downcast::<gst::Event>() {
+ Ok(event) => {
+ events.push(event);
+ continue;
+ }
+ Err(obj) => obj,
+ };
+ if let Ok(sam) = obj.downcast::<gst::Sample>() {
+ sample = Some(sam);
+ break;
}
+ }
+
+ let sample = match sample {
+ Some(sample) => sample,
+ None => return Err(gst::FlowError::Flushing),
};
if consumers.discard {
@@ -205,6 +219,11 @@ impl<'a> From<&'a gst_app::AppSink> for StreamProducer {
drop(consumers);
for consumer in current_consumers {
+ for event in &events {
+ let src_pad = consumer.static_pad("src").unwrap();
+ src_pad.push_event(event.clone());
+ }
+
let _ = consumer.push_sample(&sample);
}
```https://gitlab.freedesktop.org/gstreamer/meson-ports/x264/-/issues/9Failed to get the next NALu in H264 payload2022-05-24T00:34:23ZPRFailed to get the next NALu in H264 payloadTrying to write a h264 video and read, stream using gstreamer but getting error after 1 frame as Failed to get the next NALu in H264 payload.
Pipeline used to generate/ write video
gst-launch-1.0 videotestsrc pattern=ball num-buffers=500...Trying to write a h264 video and read, stream using gstreamer but getting error after 1 frame as Failed to get the next NALu in H264 payload.
Pipeline used to generate/ write video
gst-launch-1.0 videotestsrc pattern=ball num-buffers=500 ! timeoverlay ! videoconvert ! video/x-raw,format=NV12,width=640,height=480,framerate=25/1 ! queue ! x264enc speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! filesink location="trail.h264"
Pipeline used to stream,
"filesrc location=./trail.h264 ! queue ! video/x-h264, stream-format=byte-stream, alignment=au, profile=baseline ! appsink sync=TRUE emit-signals=TRUE name=appsink-video"
It seems like storing NALU for 1st frame but other frame, how can we fix this ?https://gitlab.freedesktop.org/gstreamer/meson-ports/x264/-/issues/8Failed to get the next NALu in H264 payload2022-05-23T17:22:00ZPRFailed to get the next NALu in H264 payloadTrying to write a h264 video and read, stream using gstreamer but getting error after 1 frame as Failed to get the next NALu in H264 payload.
Pipeline used to generate/ write video
gst-launch-1.0 videotestsrc pattern=ball num-buffers=500...Trying to write a h264 video and read, stream using gstreamer but getting error after 1 frame as Failed to get the next NALu in H264 payload.
Pipeline used to generate/ write video
gst-launch-1.0 videotestsrc pattern=ball num-buffers=500 ! timeoverlay ! videoconvert ! video/x-raw,format=NV12,width=640,height=480,framerate=25/1 ! queue ! x264enc speed-preset=veryfast bitrate=512 byte-stream=TRUE tune=zerolatency ! video/x-h264,stream-format=byte-stream,alignment=au,profile=baseline ! filesink location="trail.h264"
Pipeline used to stream,
"filesrc location=./trail.h264 ! queue ! video/x-h264, stream-format=byte-stream, alignment=au, profile=baseline ! appsink sync=TRUE emit-signals=TRUE name=appsink-video"
It seems like storing NALU for 1st frame but other frame, how can we fix this ?https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/204spotify: implement URIHandlerImpl2022-10-18T08:52:23ZNick Steelspotify: implement URIHandlerImplIt'd be great to support the URI Handler interface to make spotifyaudiosrc easier to use in existing codebase that utilise uridecoder/playbin/player etc.
My personal use-case for this is to start using `spotifyaudiosrc` for playback in ...It'd be great to support the URI Handler interface to make spotifyaudiosrc easier to use in existing codebase that utilise uridecoder/playbin/player etc.
My personal use-case for this is to start using `spotifyaudiosrc` for playback in [Mopidy-Spotify](https://github.com/mopidy/mopidy-spotify) following the death of libspotify. And as part of that we'd like to get rid of all our special-case code and just set a uri on our playbin, like we do for all other sources.
As well as the track's URI, we also need to set the account credentials. Either the username/password or a path to a cached credentials directory. These properties could be set in `source-setup` but that requires https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1241, which is in GStreamer v1.20 and might not be available to some of our users yet (e.g. Debian stable users).
An alternative (suggested by slomo on IRC) is to set the user/pass in the URI's authority e.g. `spotify://my_username:my_password@track/id`. However, that isn't ideal because:
1. That's different to the existing `spotify:track:id` scheme in place and it's a bit weird to have both.
2. Doesn't provide a nice way to set the cached credentials instead (which is the better was as Spotify send you a "New login detected" email every time you login using username + password).
So maybe it's better to support `spotify:track:id?username=my_username&password=my_password` instead? And then we could have `spotify:track:id?cache-credentials=%2Fhome%2Fnick%2Fmy_spotify_creds` also?
I've implemented both versions in https://gitlab.freedesktop.org/kingosticks/gst-plugins-rs/-/tree/spotify-uri-handler but not sure which one to go with. Any thoughts?https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/385found issue with brew install gstreamer2022-05-25T05:20:18ZJason Shenfound issue with brew install gstreamerwhen create fdkaacenc i get this panic
```
panicked at 'Could not create fdkaacenc element: BoolError { message: "Failed to create element from factory name", filename: "/Users/jason/.cargo/registry/src/github.com-1ecc6299db9ec823/gstrea...when create fdkaacenc i get this panic
```
panicked at 'Could not create fdkaacenc element: BoolError { message: "Failed to create element from factory name", filename: "/Users/jason/.cargo/registry/src/github.com-1ecc6299db9ec823/gstreamer-0.18.8/src/auto/element_factory.rs", function: "gstreamer::auto::element_factory", line: 152 }', src/examples/rtmp/rtmp-uri.rs:17:6
```
i did look through the error logs i think this is the issue, its the linking is not right here
```
0:00:00.455538000 16095 0x14d61a400 DEBUG GST_PLUGIN_LOADING gstplugin.c:1693:gst_plugin_ext_dep_scan_dir_and_match_names:<plugin114> g_dir_open(/Users/jason/.frei0r-1/lib) failed: Error opening directory “/Users/jason/.frei0r-1/lib”: No such file or directory
0:00:00.455547000 16095 0x14d61a400 DEBUG GST_PLUGIN_LOADING gstplugin.c:1693:gst_plugin_ext_dep_scan_dir_and_match_names:<plugin114> g_dir_open(/opt/homebrew/Cellar/gst-plugins-bad/1.20.2/lib/frei0r-1) failed: Error opening directory “/opt/homebrew/Cellar/gst-plugins-bad/1.20.2/lib/frei0r-1”: No such file or directory
```
[new-Log_at_2022-05-21_8-34-13_PM.txt](/uploads/43772f5643c331c2400e9b952d5dd249/new-Log_at_2022-05-21_8-34-13_PM.txt)
i have attached the logs
any help would be great
cheers
Jasonhttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/384error when set_property on flvmux2022-05-20T06:41:33ZJason Shenerror when set_property on flvmuxthis is what i did
```rust
flvmux.set_property_from_str("streamable", "ture");
```
then i get a panic error
```javascript
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: BoolError { message: "Failed to de...this is what i did
```rust
flvmux.set_property_from_str("streamable", "ture");
```
then i get a panic error
```javascript
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: BoolError { message: "Failed to deserialize value", filename: "/Users/jason/.cargo/registry/src/github.com-1ecc6299db9ec823/gstreamer-0.18.8/src/value.rs", function: "gstreamer::value", line: 1175 }', /Users/jason/.cargo/registry/src/github.com-1ecc6299db9ec823/gstreamer-0.18.8/src/gobject.rs:39:53
```
looks like something happens badly when deserialize
wonder if anyone else experience this
cheers
Jasonhttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/383autovideosink on mac not showing2022-05-19T09:10:25ZJason Shenautovideosink on mac not showinghaving an issue, audovideosink is not popup the code compiles fine and audoaudiosink works, as i can hear the audio,
but no video popup.
the os is macos 12.3.1
gstreamer is install via brew, so its the latest available
i have attache...having an issue, audovideosink is not popup the code compiles fine and audoaudiosink works, as i can hear the audio,
but no video popup.
the os is macos 12.3.1
gstreamer is install via brew, so its the latest available
i have attached a log as well
any help would be awesome
thanks advance[Log_at_2022-05-19_4-30-30_PM.txt](/uploads/793dcab2217594fdfbe81db53cdd1b73/Log_at_2022-05-19_4-30-30_PM.txt)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1230Mopiy-Iris with gstreamer doesn't play old MP3 files2022-05-19T14:07:05ZJoël MüllerMopiy-Iris with gstreamer doesn't play old MP3 files### Describe your issue
<!-- a clear and concise summary of the bug. -->
<!-- For any GStreamer usage question, please contact the community using the #gstreamer channel on IRC https://www.oftc.net/ or the mailing list on https://gstream...### Describe your issue
<!-- a clear and concise summary of the bug. -->
<!-- For any GStreamer usage question, please contact the community using the #gstreamer channel on IRC https://www.oftc.net/ or the mailing list on https://gstreamer.freedesktop.org/lists/ -->
#### Expected Behavior
Play the MP3
#### Observed Behavior
No sound
#### Setup
- Arch Linux Mainline 5.17.7-arch1-2
- Computer
- GStreamer Version: 0.10
### Steps to reproduce the bug
<!-- please fill in exact steps which reproduce the bug on your system, for example: -->
1. Install Mopidy and Mopidy-Iris from AUR (aur.archlinux.org)
2. Import your MP3 Files
3. Play a old MP3 from www.themixingbowl.org (Essential Mix)
### How reproducible is the bug?
Every time with the same files other are working
### Screenshots if relevant
### Solutions you have tried
Play with VLC
### Related non-duplicate issues
### Additional Informationhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1229Compile issue with pangocairo with native msvc vs2022 build2022-05-18T09:54:55ZRares BraniciCompile issue with pangocairo with native msvc vs2022 buildI'm using Windows 11, Visual Studio 2022.
Cloned GStreamer main branch.
Ran "meson out\bad" and "meson compile -C out\bad"
Compilation fails with
```
[502/3806] Compiling C object subprojects/gst-plugins-base/ext/pango/gstpango.dll.p/gs...I'm using Windows 11, Visual Studio 2022.
Cloned GStreamer main branch.
Ran "meson out\bad" and "meson compile -C out\bad"
Compilation fails with
```
[502/3806] Compiling C object subprojects/gst-plugins-base/ext/pango/gstpango.dll.p/gsttextrender.c.obj
FAILED: subprojects/gst-plugins-base/ext/pango/gstpango.dll.p/gsttextrender.c.obj
"cl" "-Isubprojects\gst-plugins-base\ext\pango\gstpango.dll.p" "-Isubprojects\gst-plugins-base\ext\pango" "-I..\..\subprojects\gst-plugins-base\ext\pango" "-Isubprojects\gst-plugins-base" "-I..\..\subprojects\gst-plugins-base" "-Isubprojects\gst-plugins-base\gst-libs" "-I..\..\subprojects\gst-plugins-base\gst-libs" "-Isubprojects\gstreamer\libs" "-I..\..\subprojects\gstreamer\libs" "-Isubprojects\gstreamer" "-I..\..\subprojects\gstreamer" "-Isubprojects\orc" "-I..\..\subprojects\orc" "-Isubprojects\gst-plugins-base\gst-libs\gst\video" "-Isubprojects\gstreamer\gst" "-Ic:/projects/repos/cerbero.git/1.20/build/dist/msvc_x86_64/include/pango-1.0" "-IC:/gstreamer/1.0/msvc_x86_64/include/harfbuzz" "-IC:/gstreamer/1.0/msvc_x86_64/include" "-IC:/gstreamer/1.0/msvc_x86_64/include/fribidi" "-IC:/gstreamer/1.0/msvc_x86_64/include/glib-2.0" "-IC:/gstreamer/1.0/msvc_x86_64/lib/glib-2.0/include" "-IC:/gstreamer/1.0/msvc_x86_64/include/cairo" "-Ic:/projects/repos/cerbero.git/1.20/build/dist/msvc_x86_64/include/freetype2" "-IC:/gstreamer/1.0/msvc_x86_64/include/libpng16" "-IC:/gstreamer/1.0/msvc_x86_64/include/pixman-1" "/MD" "/nologo" "/showIncludes" "/utf-8" "/W2" "/O2" "/Zi" "/wd4018" "/wd4146" "/wd4244" "/wd4305" "/utf-8" "/we4002" "/we4003" "/we4013" "/we4020" "/we4027" "/we4029" "/we4033" "/we4045" "/we4047" "/we4053" "/we4062" "/we4098" "/we4101" "/we4189" "-DG_DISABLE_DEPRECATED" "/utf-8" "-DHAVE_CONFIG_H" "/Fdsubprojects\gst-plugins-base\ext\pango\gstpango.dll.p\gsttextrender.c.pdb" /Fosubprojects/gst-plugins-base/ext/pango/gstpango.dll.p/gsttextrender.c.obj "/c" ../../subprojects/gst-plugins-base/ext/pango/gsttextrender.c
C:\work\dev\public\gstreamer\subprojects\gst-plugins-base\ext\pango\gsttextrender.h(5): fatal error C1083: Cannot open include file: 'pango/pangocairo.h': No such file or directory
```
[meson-log.zip](/uploads/9a7e9050b3f6639d137b20f58197ed3d/meson-log.zip)https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/969Compile issue with pangocairo2022-05-18T09:24:32ZRares BraniciCompile issue with pangocairoI'm using Windows 11, Visual Studio 2022.
Cloned GStreamer main branch.
Ran "meson out\bad" and "meson compile -C out\bad"
Compilation fails with
[502/3806] Compiling C object subprojects/gst-plugins-base/ext/pango/gstpango.dll.p/gstte...I'm using Windows 11, Visual Studio 2022.
Cloned GStreamer main branch.
Ran "meson out\bad" and "meson compile -C out\bad"
Compilation fails with
[502/3806] Compiling C object subprojects/gst-plugins-base/ext/pango/gstpango.dll.p/gsttextrender.c.obj
FAILED: subprojects/gst-plugins-base/ext/pango/gstpango.dll.p/gsttextrender.c.obj
"cl" "-Isubprojects\gst-plugins-base\ext\pango\gstpango.dll.p" "-Isubprojects\gst-plugins-base\ext\pango" "-I..\..\subprojects\gst-plugins-base\ext\pango" "-Isubprojects\gst-plugins-base" "-I..\..\subprojects\gst-plugins-base" "-Isubprojects\gst-plugins-base\gst-libs" "-I..\..\subprojects\gst-plugins-base\gst-libs" "-Isubprojects\gstreamer\libs" "-I..\..\subprojects\gstreamer\libs" "-Isubprojects\gstreamer" "-I..\..\subprojects\gstreamer" "-Isubprojects\orc" "-I..\..\subprojects\orc" "-Isubprojects\gst-plugins-base\gst-libs\gst\video" "-Isubprojects\gstreamer\gst" "-Ic:/projects/repos/cerbero.git/1.20/build/dist/msvc_x86_64/include/pango-1.0" "-IC:/gstreamer/1.0/msvc_x86_64/include/harfbuzz" "-IC:/gstreamer/1.0/msvc_x86_64/include" "-IC:/gstreamer/1.0/msvc_x86_64/include/fribidi" "-IC:/gstreamer/1.0/msvc_x86_64/include/glib-2.0" "-IC:/gstreamer/1.0/msvc_x86_64/lib/glib-2.0/include" "-IC:/gstreamer/1.0/msvc_x86_64/include/cairo" "-Ic:/projects/repos/cerbero.git/1.20/build/dist/msvc_x86_64/include/freetype2" "-IC:/gstreamer/1.0/msvc_x86_64/include/libpng16" "-IC:/gstreamer/1.0/msvc_x86_64/include/pixman-1" "/MD" "/nologo" "/showIncludes" "/utf-8" "/W2" "/O2" "/Zi" "/wd4018" "/wd4146" "/wd4244" "/wd4305" "/utf-8" "/we4002" "/we4003" "/we4013" "/we4020" "/we4027" "/we4029" "/we4033" "/we4045" "/we4047" "/we4053" "/we4062" "/we4098" "/we4101" "/we4189" "-DG_DISABLE_DEPRECATED" "/utf-8" "-DHAVE_CONFIG_H" "/Fdsubprojects\gst-plugins-base\ext\pango\gstpango.dll.p\gsttextrender.c.pdb" /Fosubprojects/gst-plugins-base/ext/pango/gstpango.dll.p/gsttextrender.c.obj "/c" ../../subprojects/gst-plugins-base/ext/pango/gsttextrender.c
C:\work\dev\public\gstreamer\subprojects\gst-plugins-base\ext\pango\gsttextrender.h(5): fatal error C1083: Cannot open include file: 'pango/pangocairo.h': No such file or directory
[meson-log.zip](/uploads/d944b8453d3004f016330ba747cb3715/meson-log.zip)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1228gstreamer and gnuradio2022-05-18T10:21:45Zrouba zeitoungstreamer and gnuradioI am currently working on a project that consists of sending live stream video from one SDR to another with GNURadio. I am also using Gstreamer to create a pipeline between 2 computers.
Unfortunately, I am repetitively facing the same p...I am currently working on a project that consists of sending live stream video from one SDR to another with GNURadio. I am also using Gstreamer to create a pipeline between 2 computers.
Unfortunately, I am repetitively facing the same problem where after 30 sec a message pops up
" WARNING debug information: gstbasesink.c(2902): gst_base_sink_is_too_late (): /GstPlayBin:playbin/GstPlaySink:playsink/GstBin:vbin/GstXvImageSink:xvimagesink0:
There may be a timestamping problem, or this computer is too slow "
and the receiver stops receiving the video. I tried decreasing the bitrate which allowed longer sending time but it still stops after a while.
What advice can you give me to solve this problem?
the commands i used on terminals are:
for Tx: gst-launch-1.0 -v v4l2src device="/dev/video0" ! videoconvert ! x264enc tune=zerolatency bitrate=300 ! mpegtsmux ! filesink location=video1.ts
for Rx: gst-play-1.0 video3.tshttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1227jpegdec: Segfault in libgstjpeg gst_jpeg_dec_handle_frame2022-05-25T05:50:35ZJames Hilliardjpegdec: Segfault in libgstjpeg gst_jpeg_dec_handle_frame### Describe your issue
<!-- a clear and concise summary of the bug. -->
<!-- For any GStreamer usage question, please contact the community using the #gstreamer channel on IRC https://www.oftc.net/ or the mailing list on https://gstream...### Describe your issue
<!-- a clear and concise summary of the bug. -->
<!-- For any GStreamer usage question, please contact the community using the #gstreamer channel on IRC https://www.oftc.net/ or the mailing list on https://gstreamer.freedesktop.org/lists/ -->
Capturing a mjpeg stream through pipewire from a uvc camera has visual glitching and crashes with a segfault in libgstjpeg.
I am using libjpeg-turbo.
#### Setup
- **Operating System:** buildroot
- **Device:** Computer
- **GStreamer Version:** 1.20.1
- **Command line:** N/A
### Steps to reproduce the bug
<!-- please fill in exact steps which reproduce the bug on your system, for example: -->
1. open mjpeg camera stream in wpewebkit
### How reproducible is the bug?
<!-- The reproducibility of the bug is Always/Intermittent/Only once after doing a very specific set of steps-->
Within minutes
### Related non-duplicate issues
#1118 #1121 #1122
### Additional Information
<!-- Any other information such as logs. Make use of <details> for long output -->
```c
(gdb) bt
#0 gst_jpeg_dec_handle_frame (bdec=0x7f5e2c1e9a00, frame=0x7f5e80089a00) at ../ext/jpeg/gstjpegdec.c:1352
#1 0x00007f5ef8259977 in gst_video_decoder_decode_frame (decoder=decoder@entry=0x7f5e2c1e9a00, frame=frame@entry=0x7f5e80089a00) at ../gst-libs/gst/video/gstvideodecoder.c:4003
#2 0x00007f5ef8259d6c in gst_video_decoder_chain_forward (decoder=decoder@entry=0x7f5e2c1e9a00, buf=buf@entry=0x7f5e30122d80, at_eos=at_eos@entry=0) at ../gst-libs/gst/video/gstvideodecoder.c:2489
#3 0x00007f5ef825bd67 in gst_video_decoder_chain (pad=<optimized out>, parent=0x7f5e2c1e9a00, buf=0x7f5e30122d80) at ../gst-libs/gst/video/gstvideodecoder.c:2831
#4 0x00007f5efaf27a18 in gst_pad_chain_data_unchecked (pad=pad@entry=0x5646094e0c10, type=type@entry=4112, data=data@entry=0x7f5e30122d80) at ../gst/gstpad.c:4447
#5 0x00007f5efaf2935e in gst_pad_push_data (pad=pad@entry=0x5646094e0520, type=type@entry=4112, data=data@entry=0x7f5e30122d80) at ../gst/gstpad.c:4711
#6 0x00007f5efaf2e377 in gst_pad_push (pad=pad@entry=0x5646094e0520, buffer=buffer@entry=0x7f5e30122d80) at ../gst/gstpad.c:4830
#7 0x00007f5e8af381b9 in gst_single_queue_push_one (allow_drop=<synthetic pointer>, object=0x7f5e30122d80, sq=0x7f5e301326e0, mq=0x564609480730) at ../plugins/elements/gstmultiqueue.c:1941
#8 gst_multi_queue_loop (pad=<optimized out>) at ../plugins/elements/gstmultiqueue.c:2270
#9 0x00007f5efaf4ddf4 in gst_task_func (task=0x7f5e30122710) at ../gst/gsttask.c:384
#10 0x00007f5efb0b16db in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:354
#11 0x00007f5efb0b1044 in g_thread_proxy (data=0x7f5eac09b120) at ../glib/gthread.c:827
#12 0x00007f5efab2d0e6 in start_thread (arg=<optimized out>) at pthread_create.c:442
#13 0x00007f5efab93fec in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
(gdb) bt full
#0 gst_jpeg_dec_handle_frame (bdec=0x7f5e2c1e9a00, frame=0x7f5e80089a00) at ../ext/jpeg/gstjpegdec.c:1352
ret = GST_FLOW_OK
dec = 0x7f5e2c1e9a00
vframe = {info = {finfo = 0x7f5ef82bb8a8 <formats+488>, interlace_mode = GST_VIDEO_INTERLACE_MODE_PROGRESSIVE, flags = GST_VIDEO_FLAG_NONE, width = 1280, height = 720, size = 1382400, views = 1,
chroma_site = GST_VIDEO_CHROMA_SITE_NONE, colorimetry = {range = GST_VIDEO_COLOR_RANGE_0_255, matrix = GST_VIDEO_COLOR_MATRIX_BT601, transfer = GST_VIDEO_TRANSFER_UNKNOWN,
primaries = GST_VIDEO_COLOR_PRIMARIES_UNKNOWN}, par_n = 1, par_d = 1, fps_n = 30, fps_d = 1, offset = {0, 921600, 1152000, 0}, stride = {1280, 640, 640, 0}, ABI = {abi = {
multiview_mode = GST_VIDEO_MULTIVIEW_MODE_MONO, multiview_flags = GST_VIDEO_MULTIVIEW_FLAGS_NONE, field_order = GST_VIDEO_FIELD_ORDER_UNKNOWN}, _gst_reserved = {0x0, 0x0, 0x0, 0x0}}},
flags = GST_VIDEO_FRAME_FLAG_NONE, buffer = 0x7f5e9009fa20, meta = 0x0, id = -1, data = {0x7f5dd9600078, 0x7f5dd96e1078, 0x7f5dd9719478, 0x7f5e897dcdc7}, map = {{memory = 0x7f5dd9600000,
flags = (GST_MAP_READ | GST_MAP_WRITE),
data = 0x7f5dd9600078 "RPNMMMOQVZ^_^\\\\]][WSPQUZ`_]ZXXYZZYXXXYYYYWWZ\\\\\\^^\\\\]]\\[[XXZ\\^`aa`aa_\\[[ZZZYWUSRRSSSRSVY\\^]\\[[[[[\\[YXVUX[^^__^]\\\\\\]^``a``a_][[ZZYZ[[[[^aaa`__]\\]_aa_]^`aa__`bcbabb`^]\\]_`cdda__bcfeccdcb``cgkmllkiijjjiii"..., size = 1382400, maxsize = 1382400, user_data = {0x481482b536055200, 0x7f5ef829b08b, 0x7f5efafb59e0 <_gst_debug_min>, 0x56460940d6e0}, _gst_reserved = {
0x7f5efaf1eb38 <gst_debug_log_valist+77>, 0x7f5dddd095e0, 0x7f5efaf76fbb, 0x7f5e857205e0}}, {memory = 0x7f5e857205e0, flags = (unknown: 740203288),
data = 0x7f5efb0ceb03 <g_private_get+6> "\213\070Z\351\025\307\371\377H\203\354\030H\211t$\b\350\327\373\377\377H\213t$\b\213\070\350;\322\371\377\205\300t\016\211\307H\215\065\242\203\006", size = 0,
maxsize = 5193919985072034304, user_data = {0x7f5dddd095a0, 0x7f5dddd09780, 0x7f5eac091800, 0x3010}, _gst_reserved = {0x7f5dddd098a0, 0x7f5dddd09780, 0x30101, 0x7f5efaf1ec66 <gst_debug_log+139>}}, {
memory = 0x7f5efaf76fbb, flags = (unknown: 3721434592), data = 0x3000000030 <error: Cannot access memory at address 0x3000000030>, size = 140045913811768, maxsize = 140041130120832, user_data = {
0x7f5ef8299d3b, 0x18, 0x5646094e0c10, 0x4b1e}, _gst_reserved = {0x7f5e857205e0, 0x7f5efafb59e0 <_gst_debug_min>, 0x481482b536055200, 0x3}}, {memory = 0x7f5e2c1e9800, flags = (unknown: 2148047360),
data = 0x7f5e2c1e9a00 "\240\337\v,^\177", size = 140045914429920, maxsize = 0, user_data = {0x31, 0x7f5efaf1ec66 <gst_debug_log+139>, 0x7f5ef8299d3b, 0x7f5dddd09680}, _gst_reserved = {0x3000000030,
0x7f5dddd09768, 0x7f5ef8299d3b, 0x0}}}, _gst_reserved = {0x7f5e80089a00, 0x7f5e2c1e9a00, 0x7f5efafb59e0 <_gst_debug_min>, 0x7f5efb0ceb03 <g_private_get+6>}}
num_fields = <optimized out>
output_height = <optimized out>
height = <optimized out>
width = <optimized out>
code = <optimized out>
need_unmap = 1
state = 0x0
release_frame = 1
has_eoi = <optimized out>
data = 0x7f5dcced4078 "\377\330\377", <incomplete sequence \333>
nbytes = 180540
__func__ = "gst_jpeg_dec_handle_frame"
_g_boolean_var_ = <optimized out>
_g_boolean_var_ = <optimized out>
_g_boolean_var_ = <optimized out>
#1 0x00007f5ef8259977 in gst_video_decoder_decode_frame (decoder=decoder@entry=0x7f5e2c1e9a00, frame=frame@entry=0x7f5e80089a00) at ../gst-libs/gst/video/gstvideodecoder.c:4003
priv = 0x7f5e2c1e9800
decoder_class = 0x7f5e2c0bdfa0
ret = GST_FLOW_OK
__func__ = "gst_video_decoder_decode_frame"
#2 0x00007f5ef8259d6c in gst_video_decoder_chain_forward (decoder=decoder@entry=0x7f5e2c1e9a00, buf=buf@entry=0x7f5e30122d80, at_eos=at_eos@entry=0) at ../gst-libs/gst/video/gstvideodecoder.c:2489
frame = 0x7f5e80089a00
was_keyframe = 1
priv = 0x7f5e2c1e9800
klass = <optimized out>
ret = GST_FLOW_OK
__func__ = "gst_video_decoder_chain_forward"
#3 0x00007f5ef825bd67 in gst_video_decoder_chain (pad=<optimized out>, parent=0x7f5e2c1e9a00, buf=0x7f5e30122d80) at ../gst-libs/gst/video/gstvideodecoder.c:2831
decoder = 0x7f5e2c1e9a00
ret = GST_FLOW_OK
__func__ = "gst_video_decoder_chain"
#4 0x00007f5efaf27a18 in gst_pad_chain_data_unchecked (pad=pad@entry=0x5646094e0c10, type=type@entry=4112, data=data@entry=0x7f5e30122d80) at ../gst/gstpad.c:4447
chainfunc = 0x7f5ef825ba83 <gst_video_decoder_chain>
ret = <optimized out>
parent = 0x7f5e2c1e9a00
handled = 0
__func__ = "gst_pad_chain_data_unchecked"
_g_boolean_var_ = <optimized out>
_g_boolean_var_ = <optimized out>
_g_boolean_var_ = <optimized out>
#5 0x00007f5efaf2935e in gst_pad_push_data (pad=pad@entry=0x5646094e0520, type=type@entry=4112, data=data@entry=0x7f5e30122d80) at ../gst/gstpad.c:4711
peer = 0x5646094e0c10
ret = <optimized out>
handled = 0
__func__ = "gst_pad_push_data"
_g_boolean_var_ = <optimized out>
#6 0x00007f5efaf2e377 in gst_pad_push (pad=pad@entry=0x5646094e0520, buffer=buffer@entry=0x7f5e30122d80) at ../gst/gstpad.c:4830
res = <optimized out>
#7 0x00007f5e8af381b9 in gst_single_queue_push_one (allow_drop=<synthetic pointer>, object=0x7f5e30122d80, sq=0x7f5e301326e0, mq=0x564609480730) at ../plugins/elements/gstmultiqueue.c:1941
buffer = 0x7f5e30122d80
timestamp = 2998952533066
duration = <optimized out>
_g_boolean_var_ = <optimized out>
result = GST_FLOW_OK
srcpad = 0x5646094e0520
result = <optimized out>
srcpad = <optimized out>
__func__ = "gst_single_queue_push_one"
_g_boolean_var_ = <optimized out>
buffer = <optimized out>
timestamp = <optimized out>
duration = <optimized out>
_g_boolean_var_ = <optimized out>
_g_boolean_var_ = <optimized out>
_g_boolean_var_ = <optimized out>
event = <optimized out>
_g_boolean_var_ = <optimized out>
_g_boolean_var_ = <optimized out>
_g_boolean_var_ = <optimized out>
_g_boolean_var_ = <optimized out>
_g_boolean_var_ = <optimized out>
_g_boolean_var_ = <optimized out>
query = <optimized out>
res = <optimized out>
_g_boolean_var_ = <optimized out>
_g_boolean_var_ = <optimized out>
#8 gst_multi_queue_loop (pad=<optimized out>) at ../plugins/elements/gstmultiqueue.c:2270
sq = 0x7f5e301326e0
item = <optimized out>
sitem = 0x7f5eb00bcad0
mq = 0x564609480730
object = 0x7f5e30122d80
newid = 597
result = <optimized out>
next_time = <optimized out>
is_buffer = 1
is_query = 0
do_update_buffering = 0
dropping = <optimized out>
srcpad = 0x5646094e0520
__func__ = "gst_multi_queue_loop"
#9 0x00007f5efaf4ddf4 in gst_task_func (task=0x7f5e30122710) at ../gst/gsttask.c:384
lock = 0x5646094e0590
tself = 0x7f5eac09b120
priv = 0x7f5e301226c0
__func__ = "gst_task_func"
_g_boolean_var_ = <optimized out>
#10 0x00007f5efb0b16db in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:354
task = 0x7f5e9805d8c0
pool = 0x5646090ca7a0
#11 0x00007f5efb0b1044 in g_thread_proxy (data=0x7f5eac09b120) at ../glib/gthread.c:827
thread = 0x7f5eac09b120
__func__ = "g_thread_proxy"
_g_boolean_var_ = <optimized out>
#12 0x00007f5efab2d0e6 in start_thread (arg=<optimized out>) at pthread_create.c:442
ret = <optimized out>
pd = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140041219197144, -8403116295774794287, 140041130124864, -160, 0, 8387712, 8491987764563938769, 8493743978443574737}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
#13 0x00007f5efab93fec in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
No locals.
```https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/374glib no longer picks up gio modules automatically on macOS2022-08-03T00:28:36ZNirbheek Chauhannirbheek.chauhan@gmail.comglib no longer picks up gio modules automatically on macOSEver since we moved to a relocatable prefix, glib is no longer picking up GIO modules automatically. The following is needed:
```
$ export GIO_EXTRA_MODULES=/Library/Frameworks/GStreamer.framework/Libraries/gio/modules/
```
This probab...Ever since we moved to a relocatable prefix, glib is no longer picking up GIO modules automatically. The following is needed:
```
$ export GIO_EXTRA_MODULES=/Library/Frameworks/GStreamer.framework/Libraries/gio/modules/
```
This probably requires a patch to gio to understand relocatable prefixes on macOS, similar to Windows.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1223va: Fix/add buffer stride/offset validation2022-11-25T12:36:33ZNicolas Dufresneva: Fix/add buffer stride/offset validationOn my system, Vega64, VA element tries P010 decoding and exporting that to DMABuf, and that goes terribly wrong and fail.
```
0:08:13.958544331 410736 0x7fff840990c0 ERROR videometa gstvideometa.c:242:default_map: plane 1, ...On my system, Vega64, VA element tries P010 decoding and exporting that to DMABuf, and that goes terribly wrong and fail.
```
0:08:13.958544331 410736 0x7fff840990c0 ERROR videometa gstvideometa.c:242:default_map: plane 1, no memory at offset 16588800
0:08:13.958598383 410736 0x7fff840990c0 ERROR default video-frame.c:168:gst_video_frame_map_id: failed to map video frame plane 1
```
While debugging that, I've stumbled what looks like driver bug, but also pretty much dislike the sloppiness of the dmabuf exporting code (gst_va_dmabuf_allocator_setup_buffer_full()). This function is partially implemented and is missing any kind of validation. Here's the prime descriptor that I'm getting:
```
$4 = {
fourcc = 808530000,
width = 3840,
height = 2160,
num_objects = 2,
objects = {{
fd = 28,
size = 8294400,
drm_format_modifier = 0
}, {
fd = 29,
size = 8294400,
drm_format_modifier = 0
}, {
fd = 0,
size = 0,
drm_format_modifier = 0
}, {
fd = 0,
size = 0,
drm_format_modifier = 0
}},
num_layers = 2,
layers = {{
drm_format = 540422482,
num_planes = 1,
object_index = {0, 0, 0, 0},
offset = {0, 0, 0, 0},
pitch = {7680, 0, 0, 0}
}, {
drm_format = 842224199,
num_planes = 1,
object_index = {1, 0, 0, 0},
offset = {16588800, 0, 0, 0},
pitch = {7680, 0, 0, 0}
}, {
drm_format = 0,
num_planes = 0,
object_index = {0, 0, 0, 0},
offset = {0, 0, 0, 0},
pitch = {0, 0, 0, 0}
}, {
drm_format = 0,
num_planes = 0,
object_index = {0, 0, 0, 0},
offset = {0, 0, 0, 0},
pitch = {0, 0, 0, 0}
}}
}
```
So basically two DMABuf and 2 layers. That makes sense, more of less, I'm a little surprise that the offset aren't relative to the object starts here if you see what I mean. But perhaps this is documented somewhere ? In short, first bug, the size of the first DMABuf should have been at least 16588800 (which matches the offset), but has been set to 8294400. The pitch looks fine, the second dmabuf size is fine, since its sub-sampled. We should be able to fail early and cleanly on this type of driver error imho.
cc @He_Junyan @vjaquez