mediasoup-demo-v3中添加flexfec需要RtpStreamSend.cpp如何修改
时间: 2024-03-08 13:49:24 浏览: 145
mediasoup-demo的完整Windows版本包
要在 mediasoup-demo-v3 中添加 flexfec,需要对 RtpStreamSend.cpp 文件进行一些修改。
首先,在 RtpStreamSend.cpp 文件中找到 `RtpStreamSend::SendPacket` 函数。在该函数中,会有以下代码片段:
```cpp
if (!rtp_packet->markerBit && rtp_packet->sequenceNumber != last_sent_seq_number_ + 1)
{
// Packet loss detected.
...
}
```
在这个代码片段中,我们需要在 `if` 判断语句中添加一个条件,以便判断是否需要添加 flexfec。
可以添加以下条件:
```cpp
if (!rtp_packet->markerBit && rtp_packet->sequenceNumber != last_sent_seq_number_ + 1 && rtp_packet->payloadType == kVideoPayloadType)
{
// Packet loss detected.
...
}
```
这个条件中,我们加入了一个判断条件来检查 RTP 包的负载类型是否为视频。如果是视频,则会将包交给 flexfec。
然后,在上述代码片段的末尾,添加下面的代码来将 RTP 包传递给 flexfec:
```cpp
if (flexfec_sender_)
{
buffer_list_.PushBack(std::move(buffer));
flexfec_sender_->AddRtpPacket(std::move(rtp_packet), buffer_list_);
}
```
这段代码将 RTP 包添加到 buffer_list_ 中,并将其传递给 flexfec_sender_。
最后,在文件开头添加以下头文件:
```cpp
#include "api/call/transport.h"
#include "modules/rtp_rtcp/source/rtp_packet_received.h"
```
这些修改将允许您在 mediasoup-demo-v3 中添加 flexfec 支持。
阅读全文