GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2019-07-11T15:29:40Zhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1011GStreamer OpenGL renderer creates a new texture for each frame - highly ineff...2019-07-11T15:29:40ZAdvance SoftwareGStreamer OpenGL renderer creates a new texture for each frame - highly inefficient._new_texture in gst-build/subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmemory.c
Is called once per frame. The configuration should be 2 textures of the same dimension as the video decoder output, decode into one, display from the o..._new_texture in gst-build/subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmemory.c
Is called once per frame. The configuration should be 2 textures of the same dimension as the video decoder output, decode into one, display from the other, then swap. Repeat until done.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1012nvenc: occasional floating point exception during startup2019-08-21T07:21:19ZBilly Lindemannvenc: occasional floating point exception during startup```
Thread 15 "QuartzRemoteHoo" received signal SIGFPE, Arithmetic exception.
[Switching to Thread 0x7fff9d7fe700 (LWP 62072)]
0x00007fffe2a2c301 in ?? () from /usr/lib/x86_64-linux-gnu/libnvcuvid.so.1
(gdb) back
#0 0x00007fffe2a2c301 i...```
Thread 15 "QuartzRemoteHoo" received signal SIGFPE, Arithmetic exception.
[Switching to Thread 0x7fff9d7fe700 (LWP 62072)]
0x00007fffe2a2c301 in ?? () from /usr/lib/x86_64-linux-gnu/libnvcuvid.so.1
(gdb) back
#0 0x00007fffe2a2c301 in () at /usr/lib/x86_64-linux-gnu/libnvcuvid.so.1
#1 0x00007fffe2a3c65e in () at /usr/lib/x86_64-linux-gnu/libnvcuvid.so.1
#2 0x00007fffe2a3d128 in () at /usr/lib/x86_64-linux-gnu/libnvcuvid.so.1
#3 0x00007fffe80ab377 in () at /usr/lib/x86_64-linux-gnu/libnvidia-encode.so.1
#4 0x00007fffe80a46e2 in () at /usr/lib/x86_64-linux-gnu/libnvidia-encode.so.1
#5 0x00007fffe80afc09 in () at /usr/lib/x86_64-linux-gnu/libnvidia-encode.so.1
#6 0x00007fffe85182d9 in gst_nv_base_enc_set_format (enc=<optimized out>, state=0x55555610fd20) at gstnvbaseenc.c:1263
#7 0x00007ffff56a464b in gst_video_encoder_setcaps (caps=0x7fff64004770, encoder=0x5555561ffb10) at gstvideoencoder.c:672
#8 0x00007ffff56a464b in gst_video_encoder_sink_event_default (encoder=0x5555561ffb10, event=0x7fff68006ab0) at gstvideoencoder.c:1027
#9 0x00007ffff5105d97 in gst_pad_send_event_unchecked (pad=pad@entry=0x555556343770, event=event@entry=0x7fff68006ab0, type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:5772
#10 0x00007ffff510622b in gst_pad_push_event_unchecked (pad=pad@entry=0x555556343520, event=0x7fff68006ab0, type=type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:5417
#11 0x00007ffff5106659 in push_sticky (pad=pad@entry=0x555556343520, ev=ev@entry=0x7fff9d7fbc80, user_data=user_data@entry=0x7fff9d7fbcf0) at gstpad.c:3933
#12 0x00007ffff5103fe0 in events_foreach (pad=pad@entry=0x555556343520, func=func@entry=0x7ffff51065a0 <push_sticky>, user_data=user_data@entry=0x7fff9d7fbcf0) at gstpad.c:608
#13 0x00007ffff51109cf in check_sticky (event=0x7fff68006ab0, pad=0x555556343520) at gstpad.c:3992
#14 0x00007ffff51109cf in gst_pad_push_event (pad=0x555556343520, event=0x7fff68006ab0) at gstpad.c:5548
#15 0x00005555556a4bc8 in <O as gstreamer::pad::PadExtManual>::push_event (self=0x7fff9d7fc250, event=...) at /home/billy/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/6871e50/gstreamer/src/pad.rs:422
#16 0x00005555556def60 in gsttogglerecord::togglerecord::ToggleRecord::sink_event (self=0x5555560b62d0, pad=0x7fff9d7fd618, element=0x7fff9d7fd628, event=...) at /home/billy/.cargo/git/checkouts/gst-plugins-rs-2155d1592d6bb9f7/8b4f0f9/gst-plugin-togglerecord/src/togglerecord.rs:952
#17 0x00005555556d41c9 in gsttogglerecord::togglerecord::ToggleRecord::set_pad_functions::{{closure}}::{{closure}} (togglerecord=0x5555560b62d0, element=0x7fff9d7fd628) at /home/billy/.cargo/git/checkouts/gst-plugins-rs-2155d1592d6bb9f7/8b4f0f9/gst-plugin-togglerecord/src/togglerecord.rs:198
#18 0x00005555556b1d4a in <T as gstreamer::subclass::element::ElementImplExt>::catch_panic_pad_function::{{closure}} () at /home/billy/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/6871e50/gstreamer/src/subclass/element.rs:240
#19 0x00005555556c6e43 in <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (self=..., _args=()) at /rustc/de7c4e42314c56528640e3b663aa10e0caa6bd9b/src/libstd/panic.rs:309
#20 0x00005555556ef4c7 in std::panicking::try::do_call (data=0x7fff9d7fcec0 "(\325\177\235\377\177") at /rustc/de7c4e42314c56528640e3b663aa10e0caa6bd9b/src/libstd/panicking.rs:294
#21 0x0000555555a6013a in __rust_maybe_catch_panic () at src/libpanic_unwind/lib.rs:82
#22 0x00005555556eed67 in std::panicking::try (f=...) at /rustc/de7c4e42314c56528640e3b663aa10e0caa6bd9b/src/libstd/panicking.rs:273
#23 0x00005555556c78eb in std::panic::catch_unwind (f=...) at /rustc/de7c4e42314c56528640e3b663aa10e0caa6bd9b/src/libstd/panic.rs:388
#24 0x00005555556d16d5 in <T as gstreamer::subclass::element::ElementImplExt>::catch_panic_pad_function (parent=..., fallback=..., f=...) at /home/billy/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/6871e50/gstreamer/src/subclass/error.rs:29
#25 0x00005555556d422f in gsttogglerecord::togglerecord::ToggleRecord::set_pad_functions::{{closure}} (pad=0x7fff9d7fd618, parent=..., event=...) at /home/billy/.cargo/git/checkouts/gst-plugins-rs-2155d1592d6bb9f7/8b4f0f9/gst-plugin-togglerecord/src/togglerecord.rs:195
#26 0x00005555556c53f2 in gstreamer::pad::trampoline_event_function (pad=0x5555563432d0, parent=0x5555560b63d0, event=0x7fff68006ab0) at /home/billy/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/6871e50/gstreamer/src/pad.rs:1232
#27 0x00007ffff5105d97 in gst_pad_send_event_unchecked (pad=pad@entry=0x5555563432d0, event=event@entry=0x7fff68006ab0, type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:5772
#28 0x00007ffff510622b in gst_pad_push_event_unchecked (pad=pad@entry=0x555556343080, event=0x7fff68006ab0, type=type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:5417
#29 0x00007ffff5106659 in push_sticky (pad=pad@entry=0x555556343080, ev=ev@entry=0x7fff9d7fd820, user_data=user_data@entry=0x7fff9d7fd890) at gstpad.c:3933
#30 0x00007ffff5103fe0 in events_foreach (pad=pad@entry=0x555556343080, func=func@entry=0x7ffff51065a0 <push_sticky>, user_data=user_data@entry=0x7fff9d7fd890) at gstpad.c:608
#31 0x00007ffff51109cf in check_sticky (event=0x7fff68006ab0, pad=0x555556343080) at gstpad.c:3992
#32 0x00007ffff51109cf in gst_pad_push_event (pad=0x555556343080, event=event@entry=0x7fff68006ab0) at gstpad.c:5548
#33 0x00007fffe999e0f3 in gst_queue_push_one (queue=0x555556340fe0) at gstqueue.c:1455
#34 0x00007fffe999e0f3 in gst_queue_loop (pad=<optimized out>) at gstqueue.c:1537
#35 0x00007ffff513cfe9 in gst_task_func (task=0x555556344dd0) at gsttask.c:328
#36 0x00007ffff5ca3b60 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#37 0x00007ffff5ca3195 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#38 0x00007ffff4a6a6db in start_thread (arg=0x7fff9d7fe700) at pthread_create.c:463
#39 0x00007ffff457b88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1013SRT missing from Ubuntu packages2019-07-14T16:22:22ZdanrossiSRT missing from Ubuntu packagesI was hoping for an easy install for SRT testing. I installed the packages as instructed but SRT is missing from this package.
```
WARNING: erroneous pipeline: no element "srtclientsrc"
```
```
gst-inspect-1.0 grep srt*
No such elemen...I was hoping for an easy install for SRT testing. I installed the packages as instructed but SRT is missing from this package.
```
WARNING: erroneous pipeline: no element "srtclientsrc"
```
```
gst-inspect-1.0 grep srt*
No such element or plugin 'srt*'
```
```
gst-launch-1.0 v4l2src ! video/x-raw, height=1080, width=1920 ! videoconvert ! x264enc tune=zerolatency ! video/x-h264, profile=high ! mpegtsmux ! srtserversink uri=srt://:8888/
WARNING: erroneous pipeline: no element "srtserversink"
```
Install command
```
sudo apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1017Webrtcbin: "do-nack" seems to have no effect2019-07-15T13:58:58ZNeil YoungWebrtcbin: "do-nack" seems to have no effectI admit, I might be wrong. Beforehand. To not be misunderstood.
Scenario:
- Java app based upon org.freedesktop.gstreamer:gst1-java-core:1.1.0, JDK 1.8
- Mac OS 10.14.5
- Java application just sends test-video, but fetches video from re...I admit, I might be wrong. Beforehand. To not be misunderstood.
Scenario:
- Java app based upon org.freedesktop.gstreamer:gst1-java-core:1.1.0, JDK 1.8
- Mac OS 10.14.5
- Java application just sends test-video, but fetches video from remote (no audio at all)
- Remote clients: Raspberry PI based on UV4L, browser app (Chrome, Firefox)
- Gstreamer 1.16.0 via brew
I was trying to harden the Java/Gstreamer implementation, since it has the problem, that it shows up artefacts which do not disappear, once there are packet losses downstream.
For that I was able to obtain the RTP statistics. My current solution is to issue a FIR request towards remote, once I see increasing packet losses inbound. But no more than one FIR per 5 seconds. These FIR requests are visible in the received video and counted in the remote statistics (not in a browser, but this might be a problem of the browser implementation) and basically this solution works for me.
I wanted to give the "do-nack" thing a try, which is disabled by default. I'm able to set and retrieve the value of do-nack, having done that on both streams now.
I was thinking, that a significant packet-loss on the inbound stream would force the Java/Gstreamer app to send NACKs, but I can't see them in the statistics of the remote side. And I could also not see any impact on the quality of the received video. Not sure if this expectation is true at all.
So my assumption is, that there is no effect of this setting at all.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1018webrtcbin: no profile-level-id in offer's SDP2019-07-16T07:35:41Zcodinhowebrtcbin: no profile-level-id in offer's SDPI was testing 1.17.0.1 release and found that 'profile-level-id' disappeared from offer's SDP, however, the 'packetization-mode' and 'sprop-parameter-sets' are there, this leads to stream is not playing with firefox.I was testing 1.17.0.1 release and found that 'profile-level-id' disappeared from offer's SDP, however, the 'packetization-mode' and 'sprop-parameter-sets' are there, this leads to stream is not playing with firefox.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1019Webrtcbin: Can it be possible that a YUV buffer delivered by GStreamer is big...2019-07-15T16:15:15ZNeil YoungWebrtcbin: Can it be possible that a YUV buffer delivered by GStreamer is bigger than 3*width*height/2?as subject saysas subject sayshttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1020mxfdemux: Sometimes seeks from the seeking thread in pull mode2023-05-25T16:36:32ZThibault Sauniertsaunier@igalia.commxfdemux: Sometimes seeks from the seeking thread in pull modeSeeking demuxers in pull mode should happen in the demuxer sinkpad task thread, with mxfdemux it is generally the case, but then there are cases where it start pulling data from the seeking thread, for example in
[`validate.file.playbac...Seeking demuxers in pull mode should happen in the demuxer sinkpad task thread, with mxfdemux it is generally the case, but then there are cases where it start pulling data from the seeking thread, for example in
[`validate.file.playback.seek_forward.op2b-mpeg2-wave_hd_mxf`](/uploads/16e33bcbafe2c3d18b2c517e7c95b6ea/op2b-mpeg2-wave_hd_mxf.md) (only current -validate test where I saw that happen):
```
gst_debug_get_stack_trace (gstinfo.c:2908)
gst_validate_report_new (gst-validate-report.c:746)
gst_validate_report_valist (gst-validate-reporter.c:187)
gst_validate_report (gst-validate-reporter.c:320)
gst_validate_pad_monitor_get_range_func (gst-validate-pad-monitor.c:2494)
gst_pad_get_range_unchecked (gstpad.c:4798)
gst_pad_pull_range (gstpad.c:5039)
gst_mxf_demux_pull_range (mxfdemux.c:310)
gst_mxf_demux_pull_klv_packet (mxfdemux.c:2293)
gst_mxf_demux_find_essence_element (mxfdemux.c:2933)
gst_mxf_demux_src_event (mxfdemux.c:3913)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
gst_multi_queue_src_event (gstmultiqueue.c:2656)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
gst_base_parse_src_event_default (gstbaseparse.c:4520)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
gst_video_decoder_src_event_default (gstvideodecoder.c:1473)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
event_forward_func (gstpad.c:3054)
gst_pad_forward (gstpad.c:3008)
gst_pad_event_default (gstpad.c:3105)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
event_forward_func (gstpad.c:3054)
gst_pad_forward (gstpad.c:3008)
gst_pad_event_default (gstpad.c:3105)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
gst_input_selector_event (gstinputselector.c:1559)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
event_forward_func (gstpad.c:3054)
gst_pad_forward (gstpad.c:3008)
gst_pad_event_default (gstpad.c:3105)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
event_forward_func (gstpad.c:3054)
gst_pad_forward (gstpad.c:3008)
gst_pad_event_default (gstpad.c:3105)
gst_stream_synchronizer_src_event (gststreamsynchronizer.c:204)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
event_forward_func (gstpad.c:3054)
gst_pad_forward (gstpad.c:3008)
gst_pad_event_default (gstpad.c:3105)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
gst_base_transform_src_eventfunc (gstbasetransform.c:1971)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
event_forward_func (gstpad.c:3054)
gst_pad_forward (gstpad.c:3008)
gst_pad_event_default (gstpad.c:3105)
gst_deinterlace_src_event (gstdeinterlace.c:3149)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
event_forward_func (gstpad.c:3054)
gst_pad_forward (gstpad.c:3008)
gst_pad_event_default (gstpad.c:3105)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
event_forward_func (gstpad.c:3054)
gst_pad_forward (gstpad.c:3008)
gst_pad_event_default (gstpad.c:3105)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
event_forward_func (gstpad.c:3054)
gst_pad_forward (gstpad.c:3008)
gst_pad_event_default (gstpad.c:3105)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
event_forward_func (gstpad.c:3054)
gst_pad_forward (gstpad.c:3008)
gst_pad_event_default (gstpad.c:3105)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
gst_base_transform_src_eventfunc (gstbasetransform.c:1971)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
gst_base_transform_src_eventfunc (gstbasetransform.c:1971)
gst_video_scale_src_event (gstvideoscale.c:1149)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
gst_base_transform_src_eventfunc (gstbasetransform.c:1971)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
gst_base_transform_src_eventfunc (gstbasetransform.c:1971)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
event_forward_func (gstpad.c:3054)
gst_pad_forward (gstpad.c:3008)
gst_pad_event_default (gstpad.c:3105)
gst_validate_pad_monitor_src_event_func (gst-validate-pad-monitor.c:2110)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
event_forward_func (gstpad.c:3054)
gst_pad_forward (gstpad.c:3008)
gst_pad_event_default (gstpad.c:3105)
gst_pad_send_event_unchecked (gstpad.c:5772)
gst_pad_push_event_unchecked (gstpad.c:5417)
gst_pad_push_event (gstpad.c:5554)
gst_base_sink_send_event (gstbasesink.c:4635)
gst_element_send_event (gstelement.c:1860)
gst_bin_send_event (gstbin.c:3146)
gst_element_send_event (gstelement.c:1860)
gst_bin_send_event (gstbin.c:3146)
gst_element_send_event (gstelement.c:1860)
gst_play_sink_send_event_to_sink (gstplaysink.c:4827)
gst_play_sink_send_event (gstplaysink.c:4871)
gst_element_send_event (gstelement.c:1860)
gst_element_send_event (gstelement.c:1860)
gst_validate_scenario_execute_seek (gst-validate-scenario.c:657)
_execute_seek (gst-validate-scenario.c:729)
gst_validate_execute_action (gst-validate-scenario.c:1811)
execute_next_action_full (gst-validate-scenario.c:2118)
?? (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5600.4:0x7f8f3cfa1cff)
g_main_context_dispatch (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5600.4:0x7f8f3cfa1281)
?? (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5600.4:0x7f8f3cfa164c)
g_main_loop_run (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.5600.4:0x7f8f3cfa195e)
main (gst-validate.c:529)
__libc_start_main (libc-start.c:310)
_start (/home/thiblahute/devel/gstreamer/gst-build/build/subprojects/gst-devtools/validate/tools/gst-validate-1.0:0x55791ab9f206)
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1022msdkh264dec: horizontal green translucent bar at top of image2023-10-10T21:08:13ZAaron Boxermsdkh264dec: horizontal green translucent bar at top of imageWhen decoding the image below using `msdkh264dec` element
[msdk_artifact.mkv](/uploads/00603b1784eef90b611ab24cc19b9e0d/msdk_artifact.mkv)When decoding the image below using `msdkh264dec` element
[msdk_artifact.mkv](/uploads/00603b1784eef90b611ab24cc19b9e0d/msdk_artifact.mkv)https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1023msdkh264dec: large memory leak2020-01-29T19:34:06ZAaron Boxermsdkh264dec: large memory leak`gst-launch-1.0 -v rtspsrc location="rtsp://SOME_URL" !rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! d3dvideosink`
has stable memory allocation
`gst-launch-1.0 -v rtspsrc location="rtsp://SOME_URL" !rtph264depay ! h264parse !...`gst-launch-1.0 -v rtspsrc location="rtsp://SOME_URL" !rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! d3dvideosink`
has stable memory allocation
`gst-launch-1.0 -v rtspsrc location="rtsp://SOME_URL" !rtph264depay ! h264parse ! msdkh264dec ! videoconvert ! d3dvideosink`
shows rapid constant increase in memory.
Environment: windows 10, coffee lake CPU, gst-build on latest master, MSDK 2018 SDKJulien IsorceJulien Isorcehttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1024webrtcbin: + Janus (AWS/NAT) issue2019-07-21T07:55:13ZJavier Morgadewebrtcbin: + Janus (AWS/NAT) issueI hope this is the right place to rise the issue.
I've developed a small webrtcbin wrapper (based on webrtc-sendrecv.c) for Janus-GW including basic janus stuff.
Everything works quite well whenever both Janus and webrtcbin client ru...I hope this is the right place to rise the issue.
I've developed a small webrtcbin wrapper (based on webrtc-sendrecv.c) for Janus-GW including basic janus stuff.
Everything works quite well whenever both Janus and webrtcbin client run on the same subnet. On the other hand, I cannot manage to make it work if there's any NAT in between. It doesn't look like a problem with Janus, as far as I can manage to run the js demos samples without any problem.
You can find here one gist with two logs (both situations)
1-trace_jaanus_local_NET_ok.log
2-trace_janus_aws_ko.log
https://gist.github.com/jmorgade/4e7716fd2b1c91ca6563336b22f5d567
I don't quite understand where is the problem ... trickle negation and main steps work exactly equally in both cases but it gets stacked at bellow stage when Janus is running on i.e AWS sever. Actually, it never starts the dtls handshake.
0:00:10.112729724 �[332m23713�[00m 0x1a0d5e0 �[37mTRACE �[00m �[00m webrtcbin gstwebrtcbin.c:884:_collate_peer_connection_states:<sendrecv>�[00m ICE connection state: 0x8. DTLS connection state: 0x1
0:00:10.112737291 �[332m23713�[00m 0x1a0d5e0 �[37mTRACE �[00m �[00m webrtcbin gstwebrtcbin.c:947:_collate_peer_connection_states:<sendrecv>�[00m returning new
I miss many details about gstreamer webrtc implementation so any hint or suggestion where to debug ... would be really welcomehttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1025av1enc: AV1E_SET_ROW_MT not available since libaom 1.0.02019-07-27T08:47:22ZSebastian Drögeav1enc: AV1E_SET_ROW_MT not available since libaom 1.0.0CC @wonchul
We need to conditionally enable it based on the libaom version used.CC @wonchul
We need to conditionally enable it based on the libaom version used.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1027check.gst-plugins-bad.elements_netsim.netsim_stress_delayed: Sometimes fails ...2019-08-05T13:59:27ZSebastian Drögecheck.gst-plugins-bad.elements_netsim.netsim_stress_delayed: Sometimes fails with "Got data flow before stream-start event"See https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/jobs/440022
> ``` bash
> GST_STATE_IGNORE_ELEMENTS='' GST_PLUGIN_PATH_1_0='/builds/gstreamer/gst-plugins-bad/gst-build/build' GST_PLUGIN_LOADING_WHITELIST='gstreamer:gst-plu...See https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/jobs/440022
> ``` bash
> GST_STATE_IGNORE_ELEMENTS='' GST_PLUGIN_PATH_1_0='/builds/gstreamer/gst-plugins-bad/gst-build/build' GST_PLUGIN_LOADING_WHITELIST='gstreamer:gst-plugins-base:gst-plugins-good:gst-plugins-ugly:gst-libav:gst-plugins-bad@/builds/gstreamer/gst-plugins-bad/gst-build/build' GST_PLUGIN_SYSTEM_PATH_1_0='' CK_DEFAULT_TIMEOUT='20' GST_CHECKS='netsim_stress_delayed' GST_REGISTRY='/builds/gstreamer/gst-plugins-bad/gst-build/build/subprojects/gst-plugins-bad/tests/check/elements_netsim.registry' /builds/gstreamer/gst-plugins-bad/gst-build/build/subprojects/gst-plugins-bad/tests/check/elements_netsim
> ```
>
> ## elements_netsim output
>
> ```
> Running suite(s): netsim
>
>
> Unexpected critical/warning: ../subprojects/gstreamer/gst/gstpad.c:4299:gst_pad_chain_data_unchecked:<bin0:sink> Got data flow before stream-start event
>
> Stack trace:
> gst_debug_get_stack_trace (gstinfo.c:2932)
> gst_check_log_critical_func (gstcheck.c:281)
> g_logv (gmessages.c:1350)
> g_log (gmessages.c:1413)
> gst_pad_push_data (gstpad.c:4297)
> gst_pad_push (gstpad.c:4708)
> gst_harness_stress_buffer_func (gstharness.c:2960)
> g_thread_proxy (gthread.c:784)
> start_thread (pthread_create.c:486)
> __clone (clone.S:93)
>
> 0%: Checks: 1, Failures: 1, Errors: 0
> ../subprojects/gstreamer/libs/gst/check/gstcheck.c:286:F:general:netsim_stress_delayed:0: Unexpected critical/warning: ../subprojects/gstreamer/gst/gstpad.c:4299:gst_pad_chain_data_unchecked:<bin0:sink> Got data flow before stream-start event
> Check suite netsim ran in 0.592s (tests failed: 1)
>
> ```https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1028No sound when encoding video with H2642019-08-08T19:30:28ZAdrien RouhèteNo sound when encoding video with H264Hello,
I stumbled upon a problem when changing codec from VP8 to H264. With H264 no sound is sent, while it works as expected with VP8. Also I only got this bug with Gstreamer 1.15 and above. With Gstreamer 1.14.4, I have sound both wi...Hello,
I stumbled upon a problem when changing codec from VP8 to H264. With H264 no sound is sent, while it works as expected with VP8. Also I only got this bug with Gstreamer 1.15 and above. With Gstreamer 1.14.4, I have sound both with VP8 and H264.
In order to reproduce this, I modified the [webrtc demo](https://github.com/centricular/gstwebrtc-demos) (the rust one) and changed the video source.
Here is the changes I made:
```rust
fn add_h264_video_source(&self) -> Result<(), Error> {
let videotestsrc = gst::ElementFactory::make("videotestsrc", None).unwrap();
videotestsrc.set_property_from_str("pattern", "ball");
videotestsrc.set_property("is-live", &true).unwrap();
let videoconvert = gst::ElementFactory::make("videoconvert", None).unwrap();
let videoconvertcaps = gst::Caps::new_simple("video/x-raw", &[("format", &"NV12")]);
let queue = gst::ElementFactory::make("queue", None).unwrap();
let x264enc = gst::ElementFactory::make("x264enc", None).unwrap();
x264enc.set_property_from_str("tune", "zerolatency");
x264enc.set_property_from_str("speed-preset", "superfast");
x264enc.set_property_from_str("bitrate", &"3000");
x264enc.set_property_from_str("key-int-max", &"7");
x264enc.set_property_from_str("pass", "cbr");
let x264enc_caps = gst::Caps::new_simple("video/x-h264", &[("profile", &"constrained-baseline")]);
let queue2 = gst::ElementFactory::make("queue", None).unwrap();
let h264parse = gst::ElementFactory::make("h264parse", None).unwrap();
h264parse.set_property_from_str("config-interval", "-1");
let h264parse_caps = gst::Caps::new_simple("video/x-h264", &[("split-packetized", &true)]);
let rtph264pay = gst::ElementFactory::make("rtph264pay", None).unwrap();
let queue3 = gst::ElementFactory::make("queue", None).unwrap();
self.0
.pipeline
.add_many(&[
&videotestsrc,
&videoconvert,
&queue,
&x264enc,
&queue2,
&h264parse,
&rtph264pay,
&queue3,
])
.unwrap();
videotestsrc.link(&videoconvert).unwrap();
videoconvert.link_filtered(&queue, Some(&videoconvertcaps)).unwrap();
queue.link(&x264enc).unwrap();
x264enc.link_filtered(&queue2, Some(&x264enc_caps)).unwrap();
queue2.link(&h264parse).unwrap();
h264parse.link_filtered(&rtph264pay, Some(&h264parse_caps)).unwrap();
rtph264pay.link(&queue3).unwrap();
let rtp_caps_h264 = gst::Caps::new_simple(
"application/x-rtp",
&[
("media", &"video"),
("encoding-name", &"H264"),
("payload", &96i32),
("config-interval", &-1),
("mtu", &1468),
]
);
queue3.link_filtered(&self.0.webrtcbin, Some(&rtp_caps_h264))?;
Ok(())
}
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1030[HLS] Micro-freeze issue when refreshing live playlist2022-04-05T13:27:55ZJuan Ramírez[HLS] Micro-freeze issue when refreshing live playlistI am getting "micro-freezes" (meaning video stops for a fraction of a seconds and the resumes) at regular intervals, and those intervals coincide with the length of the playlist (given that the usual .m3u8 file contains 3 .ts segments to...I am getting "micro-freezes" (meaning video stops for a fraction of a seconds and the resumes) at regular intervals, and those intervals coincide with the length of the playlist (given that the usual .m3u8 file contains 3 .ts segments totaling between 10 and 15 seconds of video). It happens with most of the HLS streams I've tested with (a list is available below).
I tried adding buffering between hlsdemux and tsdemux and managed to increase performance, but the micro-freeze issue is still present. I also tried several property values (connection-speed for hlsdemux, sizes and thresholds of the queues etc) with no improvement.
I wrote to the mailing list and got this response from Charles Turner, which I think is worth quoting here:
> This is definitely a QoS bug, which isn't that unusual for elements in gst-plugins-bad. I had a quick peek at what might be going wrong and one hunch is that adaptivedemux isn't giving itself enough time, or is somehow stalling in updates_loop during the playlist updating logic. Maybe the target_duration wait times and/or the update timer cond bits need some adjustments.
Some of the workflows I've tried are the following:
```sh
gst-launch-1.0 playbin uri=$URL
```
```sh
gst-launch-1.0 souphttpsrc location="$URL" ! hlsdemux ! queue ! tsdemux name=demux \
demux. ! queue ! aacparse ! avdec_aac ! audioconvert ! autoaudiosink \
demux. ! queue ! h264parse ! avdec_h264 ! videoconvert ! autovideosink
```
With `URL` being one of the following:
* http://video3.earthcam.com/fecnetwork/hdtimes10.flv/.m3u8
* http://video3.earthcam.com/fecnetwork/9974.flv/.m3u8
* http://dwstream4-lh.akamaihd.net/i/dwstream4_live@131329/master.m3u8 (DW)
* https://5c21f7ec1999d.streamlock.net/8054/8054/playlist.m3u8 (TC, Ecuador)
* http://video.oct.dc.gov/out/u/DCN.m3u8 (DCN, provides various streams, use connection-speed to stick to one)
* http://unlimited2-us.dps.live/nettv/nettv.smil/playlist.m3u8 (NETTV, Argentina)
Streams that are not live, for example, [the ones at bitmovin.com](https://bitmovin.com/mpeg-dash-hls-examples-sample-streams) work ok (in the worst case you just have to set the appropriate bit rate).https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1031basetsmuxjpeg2000: first demuxed frame's j2k buffer size is always 8 bytes sh...2019-11-20T12:57:05ZAaron Boxerbasetsmuxjpeg2000: first demuxed frame's j2k buffer size is always 8 bytes shorter than specified size in elementary stream headerTest pipeline:
```
videotestsrc pattern=ball ! openjpegenc ! jpeg2000parse ! mpegtsmux ! rtpmp2tpay ! rtpmp2tdepay ! tsdemux ! jpeg2000parse ! openjpegdec ! videoconvert ! ximagesink
```
This pipeline fails with error:
`Required size ...Test pipeline:
```
videotestsrc pattern=ball ! openjpegenc ! jpeg2000parse ! mpegtsmux ! rtpmp2tpay ! rtpmp2tdepay ! tsdemux ! jpeg2000parse ! openjpegdec ! videoconvert ! ximagesink
```
This pipeline fails with error:
`Required size (2375) greater than remaining size in buffer (2367)`
This only happens for the very first frame that is demuxed. For all others, required size (as specified in elementary stream header) matches actual size.
Error comes from this code block:
```
/* Check if we have enough data to create a valid buffer */
if ((stream->current_size - data_location) < (AUF[0] + AUF[1])) {
GST_ERROR ("Required size (%d) greater than remaining size in buffer (%d)",
AUF[0] + AUF[1], (stream->current_size - data_location));
goto error;
}
```
cc @bilboedhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1033mxfdemux: can't handle Canon XF705 H265 10bit MXF video2022-10-12T09:13:32ZDavid Manpearlmxfdemux: can't handle Canon XF705 H265 10bit MXF videoI have been unable to decode H265 10-bit formats from Canon XF705.
My goal is to transcode into H264 with a GStreamer pipeline something like this:
```
gst-launch-1.0 filesrc location=A003C002H1901045W_CANON.MXF ! qtdemux ! h265parse ! a...I have been unable to decode H265 10-bit formats from Canon XF705.
My goal is to transcode into H264 with a GStreamer pipeline something like this:
```
gst-launch-1.0 filesrc location=A003C002H1901045W_CANON.MXF ! qtdemux ! h265parse ! avdec_h265 ! videoconvert ! videoscale ! video/x-raw,width=1280,height=720 ! x264enc ! h264parse ! queue ! mp4mux ! filesink location=video.mp4
Setting pipeline to PAUSED, PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux0: This file is invalid and cannot be played.
Additional debug info:
qtdemux.c(747): gst_qtdemux_pull_atom (): /GstPipeline:pipeline0/GstQTDemux:qtdemux0:
atom has bogus size 101591860
ERROR: pipeline doesn't want to preroll.
```
I have had similar errors with decodebin, qtdemux, mxfdemux, and avdemux_mxf.
Example file download: https://www.dropbox.com/sh/q5m7cxgneq5z5h3/AAAh-d3FdhouZ2bFv2FajR18a?dl=0
*(note: Adobe Premiere can decode this file. Quicktime and VLC cannot)*
Here are some stats on the file:
```
gst-launch-1.0 --version
gst-launch-1.0 version 1.14.4
GStreamer 1.14.4
```
**ffprobe**:
```
ffprobe -hide_banner -show_format -show_streams -print_format json A003C002H1901045W_CANON.MXF
Metadata:
uid : 3b6f6487-8405-4901-802e-242719000075
generation_uid : 3b6f6487-8405-4903-802e-242719000075
company_name : CANON
product_name : XF705
product_version : 1.00
product_uid : 060e2b34-0401-010d-0e15-005658460400
Duration: 00:00:16.02, start: 0.000000, bitrate: 157466 kb/s
Stream #0:0: Video: none, none(progressive), 3840x2160, SAR 1:1 DAR 16:9,
9.94 fps, 59.94 tbr, 59.94 tbn, 59.94 tbc
"codec_type": "video",
"codec_tag": "0x0000",
"width": 3840,
"height": 2160,
"has_b_frames": 0,
"r_frame_rate": "60000/1001",
```
**mediainfo**:
```
mediainfo A003C002H1901045W_CANON.MXF
Format : MXF
Format version : 1.3
Format profile : OP-1a
Writing application : CANON XF705 1.00
Codec ID : 0E15000402100001-0E15000500013000
Color space : YUV
Chroma subsampling : 4:2:2
Bit depth : 10 bits
Scan type : Progressive
```
**Tim Müller suggested**:
This is what I get:
```
$ gst-play-1.0 A003C002H1901045W_CANON.MXF
WARNING No decoder available for type 'video/x-mxf-
06.0e.2b.34.04.01.01.0c.0e.15.00.04.02.10.00.01-
06.0e.2b.34.04.01.01.0c.0e.15.00.05.00.01.30.00'.
WARNING debug information: gsturidecodebin.c(921): unknown_type_cb ():
/GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0
```
[TM] "I think we're just missing mappings for H265 in mxfdemux from the looks
of it."https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1495mxfdemux: can't handle Canon XF705 H265 10bit MXF video2022-10-12T10:07:48ZDavid Manpearlmxfdemux: can't handle Canon XF705 H265 10bit MXF videoI have been unable to decode H265 10-bit formats from Canon XF705.
My goal is to transcode into H264 with a GStreamer pipeline something like this:
```
gst-launch-1.0 filesrc location=A003C002H1901045W_CANON.MXF ! qtdemux ! h265parse ! a...I have been unable to decode H265 10-bit formats from Canon XF705.
My goal is to transcode into H264 with a GStreamer pipeline something like this:
```
gst-launch-1.0 filesrc location=A003C002H1901045W_CANON.MXF ! qtdemux ! h265parse ! avdec_h265 ! videoconvert ! videoscale ! video/x-raw,width=1280,height=720 ! x264enc ! h264parse ! queue ! mp4mux ! filesink location=video.mp4
Setting pipeline to PAUSED, PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux0: This file is invalid and cannot be played.
Additional debug info:
qtdemux.c(747): gst_qtdemux_pull_atom (): /GstPipeline:pipeline0/GstQTDemux:qtdemux0:
atom has bogus size 101591860
ERROR: pipeline doesn't want to preroll.
```
I have had similar errors with decodebin, qtdemux, mxfdemux, and avdemux_mxf.
Example file download: https://www.dropbox.com/sh/q5m7cxgneq5z5h3/AAAh-d3FdhouZ2bFv2FajR18a?dl=0
*(note: Adobe Premiere can decode this file. Quicktime and VLC cannot)*
Here are some stats on the file:
```
gst-launch-1.0 --version
gst-launch-1.0 version 1.14.4
GStreamer 1.14.4
```
**ffprobe**:
```
ffprobe -hide_banner -show_format -show_streams -print_format json A003C002H1901045W_CANON.MXF
Metadata:
uid : 3b6f6487-8405-4901-802e-242719000075
generation_uid : 3b6f6487-8405-4903-802e-242719000075
company_name : CANON
product_name : XF705
product_version : 1.00
product_uid : 060e2b34-0401-010d-0e15-005658460400
Duration: 00:00:16.02, start: 0.000000, bitrate: 157466 kb/s
Stream #0:0: Video: none, none(progressive), 3840x2160, SAR 1:1 DAR 16:9,
9.94 fps, 59.94 tbr, 59.94 tbn, 59.94 tbc
"codec_type": "video",
"codec_tag": "0x0000",
"width": 3840,
"height": 2160,
"has_b_frames": 0,
"r_frame_rate": "60000/1001",
```
**mediainfo**:
```
mediainfo A003C002H1901045W_CANON.MXF
Format : MXF
Format version : 1.3
Format profile : OP-1a
Writing application : CANON XF705 1.00
Codec ID : 0E15000402100001-0E15000500013000
Color space : YUV
Chroma subsampling : 4:2:2
Bit depth : 10 bits
Scan type : Progressive
```
**Tim Müller suggested**:
This is what I get:
```
$ gst-play-1.0 A003C002H1901045W_CANON.MXF
WARNING No decoder available for type 'video/x-mxf-
06.0e.2b.34.04.01.01.0c.0e.15.00.04.02.10.00.01-
06.0e.2b.34.04.01.01.0c.0e.15.00.05.00.01.30.00'.
WARNING debug information: gsturidecodebin.c(921): unknown_type_cb ():
/GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0
```
[TM] "I think we're just missing mappings for H265 in mxfdemux from the looks
of it."https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1034openjpeg: proposal to remove support for OpenJPEG 1.X2019-07-28T18:23:49ZAaron Boxeropenjpeg: proposal to remove support for OpenJPEG 1.XVersions before `2.2` in fact are quite buggy and have significant security vulnerabilities.
Also, lossless encoding can be lossy. 1.5 is ancient.Versions before `2.2` in fact are quite buggy and have significant security vulnerabilities.
Also, lossless encoding can be lossy. 1.5 is ancient.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1035d3d11videosink: 2-3 times slower than d3dvideosink when decoding to RGBA2019-12-05T03:20:24ZAaron Boxerd3d11videosink: 2-3 times slower than d3dvideosink when decoding to RGBATest file:
[test.mkv](/uploads/4cf4fa2efc0d5282a7da4719ec720822/test.mkv)
This pipeline:
`gst-launch-1.0.exe filesrc location=test.mkv ! matroskademux ! h264parse ! avdec_h264 ! videoconvert ! d3d11videosink`
is significantly slower ...Test file:
[test.mkv](/uploads/4cf4fa2efc0d5282a7da4719ec720822/test.mkv)
This pipeline:
`gst-launch-1.0.exe filesrc location=test.mkv ! matroskademux ! h264parse ! avdec_h264 ! videoconvert ! d3d11videosink`
is significantly slower than this one:
`gst-launch-1.0.exe filesrc location=c://temp//test.mkv ! matroskademux ! h264parse ! avdec_h264 ! videoconvert ! d3dvideosink`
on Windows 10, on VM and Coffee Lake bare metal
cc @seungha.yanghttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1038Improve X11 capture with nvenc2019-08-21T07:21:19ZDan IslaImprove X11 capture with nvencWhen capturing from ximagesrc and encoding with NVENC, the RGB buffers from ximagesrc need to be converted to I420 before they can be used as a sink for the nvh264enc plugin. From what I can tell, there is no way to do this without the v...When capturing from ximagesrc and encoding with NVENC, the RGB buffers from ximagesrc need to be converted to I420 before they can be used as a sink for the nvh264enc plugin. From what I can tell, there is no way to do this without the videoconvert plugin, which is quite CPU intensive when streaming at 1080p, 60fps or better.
It looks like the NVENC API supports [ARGB and ABGR formats](https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/blob/master/sys/nvcodec/nvEncodeAPI.h#L341), is it possible to use those formats with ximagesrc and eliminate the need for videoconvert? Alternatively, is there any way to move the color-space conversion to the GPU?
NVIDIA also has a [frame buffer capture SDK (NVFBC)](https://developer.nvidia.com/capture-sdk) which can capture and encode to H.264. This would be another way to free up the CPU and possibly improve capture performance.
The capture SDK comes with an example C program, it would be great to see that functionality as a source plugin.