Thanks for the suggestion!
I am indeed noticing a difference. Here are the logs with 3 different pipelines.
All of the logs are captured by the receiver using GST_DEBUG=*:2,rtpjitterbuffer:4
gst-launch-1.0 videotestsrc ! webrtcsink video-caps=video/x-vp8
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
0:00:00.245734701 32366 0x7f1774000d70 WARN GST_PADS gstpad.c:4392:gst_pad_peer_query:<nicesrc0:src> could not send sticky events
0:00:00.246163338 32366 0x7f1764089a90 ERROR webrtcbin gstwebrtcbin.c:7169:gst_webrtc_bin_get_transceiver:<webrtcbin0> No transceiver for idx 0
0:00:00.246181585 32366 0x7f1764089a90 WARN webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:854:gstrswebrtc::webrtcsrc::imp::Session::remote_description_set::{{closure}}: Transceiver for idx 0 does not exist, GStreamer <= 1.24, adding it ourself
Redistribute latency...
0:00:00.350891632 32366 0x7f1774000f90 INFO rtpjitterbuffer rtpjitterbuffer.c:874:rtp_jitter_buffer_calculate_pts: resync to time 0:00:00.311674016, rtptime 26:18:27.229622222
0:00:00.549393338 32366 0x7f1748000ca0 INFO rtpjitterbuffer gstrtpjitterbuffer.c:4381:do_deadline_timeout:<rtpjitterbuffer0> got deadline timeout
Got context from element 'vavp8dec0': gst.va.display.handle=context, gst-display=(GstObject)"\(GstVaDisplayDrm\)\ vadisplaydrm1", description=(string)"Intel\(R\)\ Gen\ Graphics", path=(string)/dev/dri/renderD128;
Redistribute latency...
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:01:47.281356003
Setting pipeline to NULL ...
0:01:47.329166695 32366 0x55e3fbab4720 WARN webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1483:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::end_session:<webrtcsrc0> failed to send EOS on video_6cdbeac2-471a-41eb-ad39-ad63879c721d_0
0:01:47.369040324 32366 0x55e3fbab4720 WARN webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1362:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::start_session::{{closure}}:<webrtcsrc0> session "6cdbeac2-471a-41eb-ad39-ad63879c721d" not found
0:01:47.372071627 32366 0x55e3fbab4720 ERROR webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1414:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::start_session::{{closure}}:<webrtcsrc0> session "6cdbeac2-471a-41eb-ad39-ad63879c721d" not found
Freeing pipeline ...
gst-launch-1.0 uridecodebin uri=file:/filelocation ! videoconvert ! webrtcsink video-caps=video/x-vp8
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
0:00:00.281378061 34707 0x7f9984000d70 WARN GST_PADS gstpad.c:4392:gst_pad_peer_query:<nicesrc0:src> could not send sticky events
0:00:00.281798484 34707 0x7f9980089a90 ERROR webrtcbin gstwebrtcbin.c:7169:gst_webrtc_bin_get_transceiver:<webrtcbin0> No transceiver for idx 0
0:00:00.281816311 34707 0x7f9980089a90 WARN webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:854:gstrswebrtc::webrtcsrc::imp::Session::remote_description_set::{{closure}}: Transceiver for idx 0 does not exist, GStreamer <= 1.24, adding it ourself
Redistribute latency...
0:00:00.557997563 34707 0x7f9984000f90 INFO rtpjitterbuffer rtpjitterbuffer.c:874:rtp_jitter_buffer_calculate_pts: resync to time 0:00:00.517165081, rtptime 23:45:53.408122222
0:00:00.756984280 34707 0x7f995c006170 INFO rtpjitterbuffer gstrtpjitterbuffer.c:4381:do_deadline_timeout:<rtpjitterbuffer0> got deadline timeout
Got context from element 'vavp8dec0': gst.va.display.handle=context, gst-display=(GstObject)"\(GstVaDisplayDrm\)\ vadisplaydrm1", description=(string)"Intel\(R\)\ Gen\ Graphics", path=(string)/dev/dri/renderD128;
0:00:00.858174174 34707 0x560a36f51ad0 WARN rtpsession rtpsession.c:4072:session_nack: Removing 2 expired NACKS
Redistribute latency...
0:00:00.889451796 34707 0x7f9984002510 WARN videodecoder gstvideodecoder.c:3662:gst_video_decoder_clip_and_push_buf:<vavp8dec0> Dropping frame due to QoS. start:0:00:00.617165081 deadline:0:00:00.617165081 earliest_time:0:00:00.679746311
0:00:00.897493569 34707 0x7f9984002510 WARN videodecoder gstvideodecoder.c:3662:gst_video_decoder_clip_and_push_buf:<vavp8dec0> Dropping frame due to QoS. start:0:00:00.650498414 deadline:0:00:00.650498414 earliest_time:0:00:00.679746311
0:00:01.095219134 34707 0x560a36f51ad0 WARN rtpsession rtpsession.c:4072:session_nack: Removing 11 expired NACKS
0:00:01.169993486 34707 0x7f99840022d0 ERROR rtpvp8depay gstrtpvp8depay.c:212:send_last_lost_event:<rtpvp8depay0> Sending the last stopped lost event: custom-downstream event: 0x7f9918002bd0, time 99:99:99.999999999, seq-num 429, GstRTPPacketLost, timestamp=(guint64)917165080, duration=(guint64)33333333, retry=(uint)1, might-have-been-fec=(boolean)true;
0:00:01.332302496 34707 0x560a36f51ad0 WARN rtpsession rtpsession.c:4072:session_nack: Removing 15 expired NACKS
0:00:01.569359367 34707 0x560a36f51ad0 WARN rtpsession rtpsession.c:4072:session_nack: Removing 4 expired NACKS
0:00:03.465835061 34707 0x560a36f51ad0 WARN rtpsession rtpsession.c:4072:session_nack: Removing 1 expired NACKS
0:00:22.316990493 34707 0x7f9984002510 ERROR webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:553:gstrswebrtc::webrtcsrc::imp::Session::handle_webrtc_src_pad::{{closure}}:<webrtcsrc0> session "ecb09d46-37b4-4ea0-8c57-b493afd27ed2" does not exist
0:00:22.322631210 34707 0x7f9980092680 ERROR webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1414:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::start_session::{{closure}}:<webrtcsrc0> session "ecb09d46-37b4-4ea0-8c57-b493afd27ed2" not found
0:00:22.324467782 34707 0x7f9980092680 WARN webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1362:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::start_session::{{closure}}:<webrtcsrc0> session "ecb09d46-37b4-4ea0-8c57-b493afd27ed2" not found
Got EOS from element "pipeline0".
Execution ended after 0:00:22.383546870
Setting pipeline to NULL ...
Freeing pipeline ...
With the browser as sender (getDisplayMedia())
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
0:00:00.249456070 30993 0x7f7688000d70 WARN GST_PADS gstpad.c:4392:gst_pad_peer_query:<nicesrc0:src> could not send sticky events
0:00:00.250412158 30993 0x7f7680089a90 ERROR webrtcbin gstwebrtcbin.c:7169:gst_webrtc_bin_get_transceiver:<webrtcbin0> No transceiver for idx 0
0:00:00.250451046 30993 0x7f7680089a90 WARN webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:854:gstrswebrtc::webrtcsrc::imp::Session::remote_description_set::{{closure}}: Transceiver for idx 0 does not exist, GStreamer <= 1.24, adding it ourself
Redistribute latency...
0:00:00.337284859 30993 0x7f7688000f90 INFO rtpjitterbuffer rtpjitterbuffer.c:874:rtp_jitter_buffer_calculate_pts: resync to time 0:00:00.297963260, rtptime 26:01:08.977066666
0:00:00.537233182 30993 0x563f72bc56c0 INFO rtpjitterbuffer gstrtpjitterbuffer.c:4381:do_deadline_timeout:<rtpjitterbuffer0> got deadline timeout
Got context from element 'vavp8dec0': gst.va.display.handle=context, gst-display=(GstObject)"\(GstVaDisplayDrm\)\ vadisplaydrm1", description=(string)"Intel\(R\)\ Gen\ Graphics", path=(string)/dev/dri/renderD128;
Redistribute latency...
0:00:01.874072445 30993 0x7f76880015f0 WARN videodecoder gstvideodecoder.c:3662:gst_video_decoder_clip_and_push_buf:<vavp8dec0> Dropping frame due to QoS. start:0:00:01.642886250 deadline:0:00:01.642886250 earliest_time:0:00:01.646903826
0:00:05.800482120 30993 0x563f72bc5ad0 WARN rtpsession rtpsession.c:4072:session_nack: Removing 10 expired NACKS
0:00:05.948604216 30993 0x563f72bc5ad0 WARN rtpsession rtpsession.c:4072:session_nack: Removing 7 expired NACKS
0:00:08.684676798 30993 0x563f72bc5ad0 WARN rtpsession rtpsession.c:4072:session_nack: Removing 5 expired NACKS
0:00:08.854526829 30993 0x563f72bc5ad0 WARN rtpsession rtpsession.c:4072:session_nack: Removing 16 expired NACKS
0:00:12.123144036 30993 0x563f72bc5ad0 WARN rtpsession rtpsession.c:4072:session_nack: Removing 6 expired NACKS
0:00:15.024812589 30993 0x563f72bc5ad0 WARN rtpsession rtpsession.c:4072:session_nack: Removing 2 expired NACKS
0:00:15.064609317 30993 0x563f72bc5ad0 WARN rtpsession rtpsession.c:4072:session_nack: Removing 6 expired NACKS
0:00:15.106249311 30993 0x7f7688000f90 WARN rtpjitterbuffer rtpjitterbuffer.c:836:rtp_jitter_buffer_calculate_pts: backward timestamps: ignore rtx packet
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:27.797395113
Setting pipeline to NULL ...
0:00:27.855660855 30993 0x563f72b9f720 WARN webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1483:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::end_session:<webrtcsrc0> failed to send EOS on video_0c01e0e8-a0f4-4d6b-a89c-f7ca9b04515b_0
0:00:27.897383664 30993 0x563f72b9f720 WARN webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1362:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::start_session::{{closure}}:<webrtcsrc0> session "0c01e0e8-a0f4-4d6b-a89c-f7ca9b04515b" not found
0:00:27.897867017 30993 0x563f72b9f720 ERROR webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1414:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::start_session::{{closure}}:<webrtcsrc0> session "0c01e0e8-a0f4-4d6b-a89c-f7ca9b04515b" not found
Freeing pipeline ...
I’m observing artifcating with the uridecodebin and the screen sharing from the browser, whereas with videotestsrc, I’m not seeing any artifacting.
The logs seems to be consistent with it.
What I don’t understand is that despite all of them being run on the same machine (loopback), why is there packet loss?