rtpsession: NACKs are not being sent
GStreamer version: 1.21.0.1, commit: 8aeb8ea5
Hi, I'm trying to enable NACK between Pion (sender) and GStreamer (receiver).
udpsrc = MakeElement("udpsrc");
rtpsession = MakeElement("rtpsession");
auto rtprtxreceive = MakeElement("rtprtxreceive");
auto rtpjitterbuffer = MakeElement("rtpjitterbuffer");
auto rtph264depay = MakeElement("rtph264depay");
auto h264parse = MakeElement("h264parse");
auto avdec_h264 = MakeElement("avdec_h264");
tee = MakeElement("tee");
auto udpsink = MakeElement("udpsink", "rtcp_udpsink");
recv_rtp_sink = gst_element_request_pad_simple(rtpsession, "recv_rtp_sink");
auto udpsrc_src = gst_element_get_static_pad(udpsrc, "src");
gst_pad_link(udpsrc_src, recv_rtp_sink);
gst_object_unref(udpsrc_src);
auto recv_src = gst_element_get_static_pad(rtpsession, "recv_rtp_src");
auto rtprtxreceive_sink = gst_element_get_static_pad(rtprtxreceive, "sink");
gst_pad_link(recv_src, rtprtxreceive_sink);
gst_object_unref(recv_src);
gst_object_unref(rtprtxreceive_sink);
send_rtcp_src = gst_element_request_pad_simple(rtpsession, "send_rtcp_src");
auto udpsink_sink = gst_element_get_static_pad(udpsink, "sink");
gst_pad_link(send_rtcp_src, udpsink_sink);
gst_object_unref(udpsink_sink);
gst_element_link_many(rtprtxreceive,
rtpjitterbuffer,
rtph264depay,
h264parse,
avdec_h264,
tee,
NULL);
g_object_set(udpsrc, "port", 0, NULL);
g_object_set(udpsink,
"host", sink_hostname.c_str(),
"port", sink_rtcp_port,
"sync", false,
"async", false, NULL);
g_object_set(rtpjitterbuffer, "do-retransmission", true, NULL);
...
But on Pion side the only RTCP packets I'm receiving are ReceiverReport and Source Description:
2022/08/18 17:19:24 common.go:105: [debug] ReceiverReport from 4a2ce4ea
SSRC Lost LastSequence
9e484bbf 40/60 18680
Profile Extension Data: []
2022/08/18 17:19:24 common.go:105: [debug] Source Description:
4a2ce4ea: [{CNAME user539376885@host-6e049b7d} {TOOL GStreamer}]
What am I doing wrong?
I've checked recv_rtp_src pad and there are GstRTPRetransmissionRequest events incoming.
So the line that actually fails is here, not sure why it happens though
Edited by David Grinberg