I have the following pipeline to send video to a Webex meeting. It works fine:
PEER_V=$2 PEER_IP=x.x.x.x\
SELF_V=1112 SELF_VSSRC=112233 \
bash -c 'gst-launch-1.0 -e \
rtpsession name=r rtp-profile=avpf sdes="application/x-rtp-source-sdes,cname=(string)\"user\@
example.com\"" \
videotestsrc \
! videoconvert ! x264enc tune=zerolatency \
! rtph264pay \
! "application/x-rtp,payload=(int)99,clock-rate=(int)90000,ssrc=(uint)$SELF_VSSRC" \
! r.send_rtp_sink \
r.send_rtp_src \
! udpsink host=$PEER_IP port=$PEER_V bind-port=$SELF_V \
r.send_rtcp_src \
! udpsink host=$PEER_IP port=$((PEER_V+1)) bind-port=$((SELF_V+1)) sync=false async=false \
udpsrc port=$((SELF_V+1)) \
! tee name=t \
t. ! queue ! r.recv_rtcp_sink \
t. ! queue ! fakesink dump=true async=false'
and here is my pipeline for receiving video from Webex:
PEER_V=$2 PEER_IP=x.x.x.x \
SELF_V=1112 SELF_VSSRC=112233 \
CAPS_V="media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)99,rtcp-fb-nack-pli=(int)1" \
bash -c 'gst-launch-1.0 -e \
rtpsession name=r rtp-profile=avpf sdes="application/x-rtp-source-sdes,cname=(string)\"example\@
webex.com\"" \
udpsrc port=$SELF_V \
! "application/x-rtp,$CAPS_V" \
! r.recv_rtp_sink \
r.recv_rtp_src \
! rtpjitterbuffer \
! rtph264depay \
! decodebin \
! autovideosink \
udpsrc port=$((SELF_V+1)) \
! r.recv_rtcp_sink \
r.send_rtcp_src \
! udpsink host=$PEER_IP port=$((PEER_V+1)) bind-port=$((SELF_V+1)) sync=false async=false'
If I send a SIP INFO request containing "picture fast update", Webex will send a keyframe and the pipeline start working.
But I expect that the RTCP FIR request would send from this pipeline and there is no need to send a SIP INFO request. From Wireshark, I can confirm that the pipeline does not send any RTCP FIR requests. Just send RTCP RR request. Also, I can confirm that the Webex sends RTCP FIR request when I want to send video to it(previous pipeline)
Am I missing something? (by the way, I am using Symmetric RTP/RTCP)