2021-10-16 10:52:28 +08:00
/*
2023-12-09 16:23:51 +08:00
* Copyright ( c ) 2016 - present The ZLMediaKit project authors . All Rights Reserved .
2021-10-16 10:52:28 +08:00
*
2023-12-09 16:23:51 +08:00
* This file is part of ZLMediaKit ( https : //github.com/ZLMediaKit/ZLMediaKit).
2021-10-16 10:52:28 +08:00
*
2023-12-09 16:23:51 +08:00
* Use of this source code is governed by MIT - like license that can be found in the
2021-10-16 10:52:28 +08:00
* LICENSE file in the root of the source tree . All contributing project authors
* may be found in the AUTHORS file in the root of the source tree .
*/
# include "WebRtcEchoTest.h"
2022-09-18 21:03:05 +08:00
namespace mediakit {
2021-10-16 10:52:28 +08:00
WebRtcEchoTest : : Ptr WebRtcEchoTest : : create ( const EventPoller : : Ptr & poller ) {
WebRtcEchoTest : : Ptr ret ( new WebRtcEchoTest ( poller ) , [ ] ( WebRtcEchoTest * ptr ) {
ptr - > onDestory ( ) ;
delete ptr ;
} ) ;
ret - > onCreate ( ) ;
return ret ;
}
WebRtcEchoTest : : WebRtcEchoTest ( const EventPoller : : Ptr & poller ) : WebRtcTransportImp ( poller ) { }
void WebRtcEchoTest : : onRtcConfigure ( RtcConfigure & configure ) const {
WebRtcTransportImp : : onRtcConfigure ( configure ) ;
configure . audio . direction = configure . video . direction = RtpDirection : : sendrecv ;
2022-03-26 22:11:50 +08:00
configure . audio . extmap . emplace ( RtpExtType : : sdes_mid , RtpDirection : : sendrecv ) ;
configure . video . extmap . emplace ( RtpExtType : : sdes_mid , RtpDirection : : sendrecv ) ;
2021-10-16 10:52:28 +08:00
}
void WebRtcEchoTest : : onRtp ( const char * buf , size_t len , uint64_t stamp_ms ) {
updateTicker ( ) ;
sendRtpPacket ( buf , len , true , nullptr ) ;
}
void WebRtcEchoTest : : onRtcp ( const char * buf , size_t len ) {
sendRtcpPacket ( buf , len , true , nullptr ) ;
}
2021-10-18 17:35:14 +08:00
2024-09-19 14:53:50 +08:00
// 修改mline的a=msid属性, 目的是在echo test的情况下, 如果offer和answer的msid相同, chrome会忽略远端的track [AUTO-TRANSLATED:f2e3da54]
// Modify the a=msid attribute of mline, the purpose is that in the echo test case, if the offer and answer have the same msid, chrome will ignore the remote track.
2021-10-18 17:35:14 +08:00
void WebRtcEchoTest : : onCheckSdp ( SdpType type , RtcSession & sdp ) {
if ( type = = SdpType : : answer ) {
for ( auto & m : sdp . media ) {
for ( auto & ssrc : m . rtp_rtx_ssrc ) {
2022-03-12 19:26:08 +08:00
if ( ! ssrc . msid . empty ( ) ) {
2024-04-05 22:11:50 +08:00
ssrc . msid = " zlmediakit-mslabel zlmediakit-label- " + m . mid ;
2022-03-12 19:26:08 +08:00
}
2021-10-18 17:35:14 +08:00
}
}
}
2022-09-18 21:03:05 +08:00
}
} // namespace mediakit