diff --git a/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c b/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c index 0d72d581d8..a173b87b5e 100644 --- a/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c +++ b/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c @@ -7866,6 +7866,7 @@ jitter_buffer_set_retransmission (SsrcMapItem * item, { GstWebRTCRTPTransceiver *trans; gboolean do_nack; + GObjectClass *jb_class; if (item->media_idx == -1) return TRUE; @@ -7876,13 +7877,23 @@ jitter_buffer_set_retransmission (SsrcMapItem * item, return TRUE; } + jb_class = G_OBJECT_GET_CLASS (G_OBJECT (data->jitterbuffer)); do_nack = WEBRTC_TRANSCEIVER (trans)->do_nack; - /* We don't set do-retransmission on rtpbin as we want per-session control */ - GST_LOG_OBJECT (data->webrtc, "setting do-nack=%s for transceiver %" - GST_PTR_FORMAT " with transport %" GST_PTR_FORMAT - " rtp session %u ssrc %u", do_nack ? "true" : "false", trans, - data->stream, data->stream->session_id, data->ssrc); - g_object_set (data->jitterbuffer, "do-retransmission", do_nack, NULL); + if (g_object_class_find_property (jb_class, "do-retransmission")) { + /* We don't set do-retransmission on rtpbin as we want per-session control */ + GST_LOG_OBJECT (data->webrtc, "setting do-nack=%s for transceiver %" + GST_PTR_FORMAT " with transport %" GST_PTR_FORMAT + " rtp session %u ssrc %u", do_nack ? "true" : "false", trans, + data->stream, data->stream->session_id, data->ssrc); + g_object_set (data->jitterbuffer, "do-retransmission", do_nack, NULL); + } else if (do_nack) { + GST_WARNING_OBJECT (data->webrtc, "Not setting do-nack for transceiver %" + GST_PTR_FORMAT " with transport %" GST_PTR_FORMAT + " rtp session %u ssrc %u" + " as its jitterbuffer does not have a do-retransmission property", + trans, data->stream, data->stream->session_id, data->ssrc); + } + g_weak_ref_set (&item->rtpjitterbuffer, data->jitterbuffer); diff --git a/subprojects/gst-plugins-good/gst/rtpmanager/gstrtpbin.c b/subprojects/gst-plugins-good/gst/rtpmanager/gstrtpbin.c index d5adf0f64a..29c6f47250 100644 --- a/subprojects/gst-plugins-good/gst/rtpmanager/gstrtpbin.c +++ b/subprojects/gst-plugins-good/gst/rtpmanager/gstrtpbin.c @@ -1967,8 +1967,8 @@ create_stream (GstRtpBinSession * session, guint32 ssrc) g_object_set_data (G_OBJECT (buffer), "GstRTPBin.stream", stream); /* configure latency and packet lost */ - g_object_set (buffer, "latency", rtpbin->latency_ms, NULL); - + if (g_object_class_find_property (jb_class, "latency")) + g_object_set (buffer, "latency", rtpbin->latency_ms, NULL); if (g_object_class_find_property (jb_class, "drop-on-latency")) g_object_set (buffer, "drop-on-latency", rtpbin->drop_on_latency, NULL); if (g_object_class_find_property (jb_class, "do-lost"))