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?