how webrtcbin support qos methods just like pli and fir and nack ,pakcet losts causes badly performance.
webrtcbin
supports pli and nack in the same way that a rtpbin
pipeline would.
For PLI’s they are transformed to/from GstForceKeyUnit
events. This can then be acted on by e.g. an encoder or some other method to produce a encoded sync point.
For NACK, if you have RTX enabled, then webrtcbin
will construct the pipeline so that rtx elements are used to handle (or produce) the NACK events.
i had fored the rtx in the code gstwebrtcbin.c in function {static WebRTCTransceiver *
_create_webrtc_transceiver (GstWebRTCBin * webrtc,
GstWebRTCRTPTransceiverDirection direction, guint mline, GstWebRTCKind kind,
GstCaps * codec_preferences)} add line (trans->do_nack = TRUE;)
it does enable nack,but when the lose rate up to move than %10(%11…),it works not stable,nack does work at the begining,but after some lost packets,it crashes,nack seems no more taking effect.any idea?
You should set the do-nack
property on each webrtcbin
transceiver
to TRUE
rather than modifying the source to enable NACK.
If you can get a crash with an unmodified source (but setting the transceiver property do-nack=TRUE) using a recent version of GStreamer (>= 1.22.x), then please provide a reproducible test case in a gitlab issue.
10% packet loss is rather large though and other mitigation methods may need to be performed in that scenario.