@@ -294,6 +294,7 @@ typedef struct WHIPContext {
294294 /* The SRTP send context, to encrypt outgoing packets. */
295295 SRTPContext srtp_audio_send ;
296296 SRTPContext srtp_video_send ;
297+ SRTPContext srtp_video_rtx_send ;
297298 SRTPContext srtp_rtcp_send ;
298299 /* The SRTP receive context, to decrypt incoming packets. */
299300 SRTPContext srtp_recv ;
@@ -717,11 +718,11 @@ static int generate_sdp_offer(AVFormatContext *s)
717718 "a=rtcp-fb:%u nack\r\n"
718719 "a=rtpmap:%u rtx/90000\r\n"
719720 "a=fmtp:%u apt=%u\r\n"
721+ "a=ssrc-group:FID %u %u\r\n"
720722 "a=ssrc:%u cname:FFmpeg\r\n"
721723 "a=ssrc:%u msid:FFmpeg video\r\n"
722724 "a=ssrc:%u cname:FFmpeg\r\n"
723- "a=ssrc:%u msid:FFmpeg video\r\n"
724- "a=ssrc-group:FID %u %u\r\n" ,
725+ "a=ssrc:%u msid:FFmpeg video\r\n" ,
725726 whip -> video_payload_type ,
726727 whip -> rtx_payload_type ,
727728 whip -> ice_ufrag_local ,
@@ -738,10 +739,10 @@ static int generate_sdp_offer(AVFormatContext *s)
738739 whip -> rtx_payload_type ,
739740 whip -> video_payload_type ,
740741 whip -> video_ssrc ,
741- whip -> video_ssrc ,
742- whip -> video_rtx_ssrc ,
743742 whip -> video_rtx_ssrc ,
744743 whip -> video_ssrc ,
744+ whip -> video_ssrc ,
745+ whip -> video_rtx_ssrc ,
745746 whip -> video_rtx_ssrc );
746747 }
747748
@@ -1442,6 +1443,12 @@ static int setup_srtp(AVFormatContext *s)
14421443 goto end ;
14431444 }
14441445
1446+ ret = ff_srtp_set_crypto (& whip -> srtp_video_rtx_send , suite , buf );
1447+ if (ret < 0 ) {
1448+ av_log (whip , AV_LOG_ERROR , "WHIP: Failed to set crypto for video rtx send\n" );
1449+ goto end ;
1450+ }
1451+
14451452 ret = ff_srtp_set_crypto (& whip -> srtp_rtcp_send , suite , buf );
14461453 if (ret < 0 ) {
14471454 av_log (whip , AV_LOG_ERROR , "Failed to set crypto for rtcp send\n" );
@@ -1583,7 +1590,7 @@ static int send_rtx_packet(AVFormatContext *s, const uint8_t * orig_pkt, int ori
15831590 new_size = orig_size + 2 ;
15841591
15851592 /* Encrypt by SRTP and send out. */
1586- cipher_size = ff_srtp_encrypt (& whip -> srtp_video_send , whip -> buf , new_size , whip -> buf , sizeof (whip -> buf ));
1593+ cipher_size = ff_srtp_encrypt (& whip -> srtp_video_rtx_send , whip -> buf , new_size , whip -> buf , sizeof (whip -> buf ));
15871594 if (cipher_size <= 0 || cipher_size < new_size ) {
15881595 av_log (whip , AV_LOG_WARNING , "WHIP: Failed to encrypt packet=%dB, cipher=%dB\n" , new_size , cipher_size );
15891596 return 0 ;
0 commit comments