Bug 1337468: pass RID values via RTP configuration r=ng

MozReview-Commit-ID: Gl5TdZkJIZ8

--HG--
extra : rebase_source : 296d74fcfee7535b052e8f97ba65f0c67afbb129
This commit is contained in:
Nils Ohlmeier [:drno] 2017-02-08 21:37:13 -08:00
Родитель d03b7e603e
Коммит 30a3f082fd
6 изменённых файлов: 28 добавлений и 19 удалений

Просмотреть файл

@ -578,6 +578,7 @@ WebrtcVideoConduit::ConfigureSendMediaCodec(const VideoCodecConfig* codecConfig)
video_stream.max_qp = kQpMax;
simulcast_config.jsScaleDownBy = simulcastEncoding.constraints.scaleDownBy;
simulcast_config.jsMaxBitrate = simulcastEncoding.constraints.maxBr; // bps
mSendStreamConfig.rtp.rids.push_back(simulcastEncoding.rid);
if (codecConfig->mName == "H264") {
if (codecConfig->mEncodingConstraints.maxMbps > 0) {

Просмотреть файл

@ -204,6 +204,10 @@ RTPSender::~RTPSender() {
delete it->second;
payload_type_map_.erase(it);
}
if (rid_) {
delete[] rid_;
}
}
void RTPSender::SetTargetBitrate(uint32_t bitrate) {

Просмотреть файл

@ -185,7 +185,8 @@ VideoSendStream::VideoSendStream(
} else if (extension == RtpExtension::kTransportSequenceNumber) {
RTC_CHECK_EQ(0, vie_channel_->SetSendTransportSequenceNumber(true, id));
} else if (extension == RtpExtension::kRtpStreamId) {
RTC_CHECK_EQ(0, vie_channel_->SetSendRtpStreamId(true,id));
RTC_CHECK_EQ(ssrcs.size(), config_.rtp.rids.size());
RTC_CHECK_EQ(0, vie_channel_->SetSendRtpStreamId(true,id,config_.rtp.rids));
} else {
RTC_NOTREACHED() << "Registering unsupported RTP extension.";
}

Просмотреть файл

@ -655,23 +655,24 @@ int ViEChannel::SetReceiveTransportSequenceNumber(bool enable, int id) {
return vie_receiver_.SetReceiveTransportSequenceNumber(enable, id) ? 0 : -1;
}
int ViEChannel::SetSendRtpStreamId(bool enable, int id) { //}, const char *rid)
CriticalSectionScoped cs(crit_.get());
int ViEChannel::SetSendRtpStreamId(bool enable, int id,
std::vector<std::string> rids) {
for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) {
rtp_rtcp->DeregisterSendRtpHeaderExtension(
kRtpExtensionRtpStreamId);
}
if (!enable) {
return 0;
}
int error = 0;
if (enable) {
// Enable the extension, but disable possible old id to avoid errors.
for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) {
rtp_rtcp->DeregisterSendRtpHeaderExtension(
kRtpExtensionRtpStreamId);
error = rtp_rtcp->RegisterSendRtpHeaderExtension(
kRtpExtensionRtpStreamId, id);
}
// NOTE: simulcast streams must be set via the SetSendCodec() API
} else {
// Disable the extension.
for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) {
rtp_rtcp->DeregisterSendRtpHeaderExtension(
kRtpExtensionRtpStreamId);
unsigned long i = 0;
// Enable the extension
// NOTE: simulcast streams must be set via the SetSendCodec() API
for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) {
error |= rtp_rtcp->RegisterSendRtpHeaderExtension(
kRtpExtensionRtpStreamId, id);
if (rids.size() > i) {
rtp_rtcp->SetRID(rids[i++].c_str());
}
}
return error;

Просмотреть файл

@ -113,8 +113,8 @@ class ViEChannel : public VCMFrameTypeCallback,
int SetReceiveVideoRotationStatus(bool enable, int id);
int SetSendTransportSequenceNumber(bool enable, int id);
int SetReceiveTransportSequenceNumber(bool enable, int id);
int SetSendRtpStreamId(bool enable, int id); // RtpStreamId (RID)
int SetReceiveRtpStreamId(bool enable, int id); // RtpStreamId (RID)
int SetSendRtpStreamId(bool enable, int id, std::vector<std::string> rids);
int SetReceiveRtpStreamId(bool enable, int id);
void SetRtcpXrRrtrStatus(bool enable);
void EnableTMMBR(bool enable);

Просмотреть файл

@ -130,6 +130,8 @@ class VideoSendStream : public SendStream {
// RTCP CNAME, see RFC 3550.
std::string c_name;
std::vector<std::string> rids;
} rtp;
// Transport for outgoing packets.