Removes parts of the webrtc::VoERTP_RTCP sub API as part of a clean-up operation where the goal is to remove unused APIs.
BUG=3206 R=niklas.enbom@webrtc.org, solenberg@webrtc.org Review URL: https://webrtc-codereview.appspot.com/13489005 git-svn-id: http://webrtc.googlecode.com/svn/trunk@6100 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
b9863ce6ba
commit
66021e0fa2
@ -282,22 +282,8 @@ Channel::OnIncomingSSRCChanged(int32_t id, uint32_t ssrc)
|
|||||||
"Channel::OnIncomingSSRCChanged(id=%d, SSRC=%d)",
|
"Channel::OnIncomingSSRCChanged(id=%d, SSRC=%d)",
|
||||||
id, ssrc);
|
id, ssrc);
|
||||||
|
|
||||||
int32_t channel = VoEChannelId(id);
|
|
||||||
assert(channel == _channelId);
|
|
||||||
|
|
||||||
// Update ssrc so that NTP for AV sync can be updated.
|
// Update ssrc so that NTP for AV sync can be updated.
|
||||||
_rtpRtcpModule->SetRemoteSSRC(ssrc);
|
_rtpRtcpModule->SetRemoteSSRC(ssrc);
|
||||||
|
|
||||||
if (_rtpObserver)
|
|
||||||
{
|
|
||||||
CriticalSectionScoped cs(&_callbackCritSect);
|
|
||||||
|
|
||||||
if (_rtpObserverPtr)
|
|
||||||
{
|
|
||||||
// Send new SSRC to registered observer using callback
|
|
||||||
_rtpObserverPtr->OnIncomingSSRCChanged(channel, ssrc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Channel::OnIncomingCSRCChanged(int32_t id,
|
void Channel::OnIncomingCSRCChanged(int32_t id,
|
||||||
@ -307,19 +293,6 @@ void Channel::OnIncomingCSRCChanged(int32_t id,
|
|||||||
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
|
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
|
||||||
"Channel::OnIncomingCSRCChanged(id=%d, CSRC=%d, added=%d)",
|
"Channel::OnIncomingCSRCChanged(id=%d, CSRC=%d, added=%d)",
|
||||||
id, CSRC, added);
|
id, CSRC, added);
|
||||||
|
|
||||||
int32_t channel = VoEChannelId(id);
|
|
||||||
assert(channel == _channelId);
|
|
||||||
|
|
||||||
if (_rtpObserver)
|
|
||||||
{
|
|
||||||
CriticalSectionScoped cs(&_callbackCritSect);
|
|
||||||
|
|
||||||
if (_rtpObserverPtr)
|
|
||||||
{
|
|
||||||
_rtpObserverPtr->OnIncomingCSRCChanged(channel, CSRC, added);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Channel::ResetStatistics(uint32_t ssrc) {
|
void Channel::ResetStatistics(uint32_t ssrc) {
|
||||||
@ -525,8 +498,6 @@ Channel::OnReceivedPayloadData(const uint8_t* payloadData,
|
|||||||
rtpHeader->header.payloadType,
|
rtpHeader->header.payloadType,
|
||||||
rtpHeader->type.Audio.channel);
|
rtpHeader->type.Audio.channel);
|
||||||
|
|
||||||
_lastRemoteTimeStamp = rtpHeader->header.timestamp;
|
|
||||||
|
|
||||||
if (!channel_state_.Get().playing)
|
if (!channel_state_.Get().playing)
|
||||||
{
|
{
|
||||||
// Avoid inserting into NetEQ when we are not playing. Count the
|
// Avoid inserting into NetEQ when we are not playing. Count the
|
||||||
@ -876,12 +847,10 @@ Channel::Channel(int32_t channelId,
|
|||||||
_rxVadObserverPtr(NULL),
|
_rxVadObserverPtr(NULL),
|
||||||
_oldVadDecision(-1),
|
_oldVadDecision(-1),
|
||||||
_sendFrameType(0),
|
_sendFrameType(0),
|
||||||
_rtpObserverPtr(NULL),
|
|
||||||
_rtcpObserverPtr(NULL),
|
_rtcpObserverPtr(NULL),
|
||||||
_externalPlayout(false),
|
_externalPlayout(false),
|
||||||
_externalMixing(false),
|
_externalMixing(false),
|
||||||
_mixFileWithMicrophone(false),
|
_mixFileWithMicrophone(false),
|
||||||
_rtpObserver(false),
|
|
||||||
_rtcpObserver(false),
|
_rtcpObserver(false),
|
||||||
_mute(false),
|
_mute(false),
|
||||||
_panLeft(1.0f),
|
_panLeft(1.0f),
|
||||||
@ -890,7 +859,6 @@ Channel::Channel(int32_t channelId,
|
|||||||
_playOutbandDtmfEvent(false),
|
_playOutbandDtmfEvent(false),
|
||||||
_playInbandDtmfEvent(false),
|
_playInbandDtmfEvent(false),
|
||||||
_lastLocalTimeStamp(0),
|
_lastLocalTimeStamp(0),
|
||||||
_lastRemoteTimeStamp(0),
|
|
||||||
_lastPayloadType(0),
|
_lastPayloadType(0),
|
||||||
_includeAudioLevelIndication(false),
|
_includeAudioLevelIndication(false),
|
||||||
_rtpPacketTimedOut(false),
|
_rtpPacketTimedOut(false),
|
||||||
@ -3062,48 +3030,6 @@ Channel::GetRxNsStatus(bool& enabled, NsModes& mode)
|
|||||||
|
|
||||||
#endif // #ifdef WEBRTC_VOICE_ENGINE_NR
|
#endif // #ifdef WEBRTC_VOICE_ENGINE_NR
|
||||||
|
|
||||||
int
|
|
||||||
Channel::RegisterRTPObserver(VoERTPObserver& observer)
|
|
||||||
{
|
|
||||||
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId),
|
|
||||||
"Channel::RegisterRTPObserver()");
|
|
||||||
CriticalSectionScoped cs(&_callbackCritSect);
|
|
||||||
|
|
||||||
if (_rtpObserverPtr)
|
|
||||||
{
|
|
||||||
_engineStatisticsPtr->SetLastError(
|
|
||||||
VE_INVALID_OPERATION, kTraceError,
|
|
||||||
"RegisterRTPObserver() observer already enabled");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
_rtpObserverPtr = &observer;
|
|
||||||
_rtpObserver = true;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
Channel::DeRegisterRTPObserver()
|
|
||||||
{
|
|
||||||
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
|
|
||||||
"Channel::DeRegisterRTPObserver()");
|
|
||||||
CriticalSectionScoped cs(&_callbackCritSect);
|
|
||||||
|
|
||||||
if (!_rtpObserverPtr)
|
|
||||||
{
|
|
||||||
_engineStatisticsPtr->SetLastError(
|
|
||||||
VE_INVALID_OPERATION, kTraceWarning,
|
|
||||||
"DeRegisterRTPObserver() observer already disabled");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
_rtpObserver = false;
|
|
||||||
_rtpObserverPtr = NULL;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
Channel::RegisterRTCPObserver(VoERTCPObserver& observer)
|
Channel::RegisterRTCPObserver(VoERTCPObserver& observer)
|
||||||
{
|
{
|
||||||
@ -3188,37 +3114,6 @@ Channel::GetRemoteSSRC(unsigned int& ssrc)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
Channel::GetRemoteCSRCs(unsigned int arrCSRC[15])
|
|
||||||
{
|
|
||||||
if (arrCSRC == NULL)
|
|
||||||
{
|
|
||||||
_engineStatisticsPtr->SetLastError(
|
|
||||||
VE_INVALID_ARGUMENT, kTraceError,
|
|
||||||
"GetRemoteCSRCs() invalid array argument");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
uint32_t arrOfCSRC[kRtpCsrcSize];
|
|
||||||
int32_t CSRCs(0);
|
|
||||||
CSRCs = rtp_receiver_->CSRCs(arrOfCSRC);
|
|
||||||
if (CSRCs > 0)
|
|
||||||
{
|
|
||||||
memcpy(arrCSRC, arrOfCSRC, CSRCs * sizeof(uint32_t));
|
|
||||||
for (int i = 0; i < (int) CSRCs; i++)
|
|
||||||
{
|
|
||||||
WEBRTC_TRACE(kTraceStateInfo, kTraceVoice,
|
|
||||||
VoEId(_instanceId, _channelId),
|
|
||||||
"GetRemoteCSRCs() => arrCSRC[%d]=%lu", i, arrCSRC[i]);
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
WEBRTC_TRACE(kTraceStateInfo, kTraceVoice,
|
|
||||||
VoEId(_instanceId, _channelId),
|
|
||||||
"GetRemoteCSRCs() => list is empty!");
|
|
||||||
}
|
|
||||||
return CSRCs;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Channel::SetSendAudioLevelIndicationStatus(bool enable, unsigned char id) {
|
int Channel::SetSendAudioLevelIndicationStatus(bool enable, unsigned char id) {
|
||||||
_includeAudioLevelIndication = enable;
|
_includeAudioLevelIndication = enable;
|
||||||
return SetSendRtpHeaderExtension(enable, kRtpExtensionAudioLevel, id);
|
return SetSendRtpHeaderExtension(enable, kRtpExtensionAudioLevel, id);
|
||||||
@ -3518,29 +3413,6 @@ Channel::GetRTPStatistics(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Channel::GetRemoteRTCPSenderInfo(SenderInfo* sender_info) {
|
|
||||||
if (sender_info == NULL) {
|
|
||||||
_engineStatisticsPtr->SetLastError(VE_INVALID_ARGUMENT, kTraceError,
|
|
||||||
"GetRemoteRTCPSenderInfo() invalid sender_info.");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the sender info from the latest received RTCP Sender Report.
|
|
||||||
RTCPSenderInfo rtcp_sender_info;
|
|
||||||
if (_rtpRtcpModule->RemoteRTCPStat(&rtcp_sender_info) != 0) {
|
|
||||||
_engineStatisticsPtr->SetLastError(VE_RTP_RTCP_MODULE_ERROR, kTraceError,
|
|
||||||
"GetRemoteRTCPSenderInfo() failed to read RTCP SR sender info.");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
sender_info->NTP_timestamp_high = rtcp_sender_info.NTPseconds;
|
|
||||||
sender_info->NTP_timestamp_low = rtcp_sender_info.NTPfraction;
|
|
||||||
sender_info->RTP_timestamp = rtcp_sender_info.RTPtimeStamp;
|
|
||||||
sender_info->sender_packet_count = rtcp_sender_info.sendPacketCount;
|
|
||||||
sender_info->sender_octet_count = rtcp_sender_info.sendOctetCount;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Channel::GetRemoteRTCPReportBlocks(
|
int Channel::GetRemoteRTCPReportBlocks(
|
||||||
std::vector<ReportBlock>* report_blocks) {
|
std::vector<ReportBlock>* report_blocks) {
|
||||||
if (report_blocks == NULL) {
|
if (report_blocks == NULL) {
|
||||||
|
@ -311,14 +311,11 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// VoERTP_RTCP
|
// VoERTP_RTCP
|
||||||
int RegisterRTPObserver(VoERTPObserver& observer);
|
|
||||||
int DeRegisterRTPObserver();
|
|
||||||
int RegisterRTCPObserver(VoERTCPObserver& observer);
|
int RegisterRTCPObserver(VoERTCPObserver& observer);
|
||||||
int DeRegisterRTCPObserver();
|
int DeRegisterRTCPObserver();
|
||||||
int SetLocalSSRC(unsigned int ssrc);
|
int SetLocalSSRC(unsigned int ssrc);
|
||||||
int GetLocalSSRC(unsigned int& ssrc);
|
int GetLocalSSRC(unsigned int& ssrc);
|
||||||
int GetRemoteSSRC(unsigned int& ssrc);
|
int GetRemoteSSRC(unsigned int& ssrc);
|
||||||
int GetRemoteCSRCs(unsigned int arrCSRC[15]);
|
|
||||||
int SetSendAudioLevelIndicationStatus(bool enable, unsigned char id);
|
int SetSendAudioLevelIndicationStatus(bool enable, unsigned char id);
|
||||||
int SetReceiveAudioLevelIndicationStatus(bool enable, unsigned char id);
|
int SetReceiveAudioLevelIndicationStatus(bool enable, unsigned char id);
|
||||||
int SetSendAbsoluteSenderTimeStatus(bool enable, unsigned char id);
|
int SetSendAbsoluteSenderTimeStatus(bool enable, unsigned char id);
|
||||||
@ -338,7 +335,6 @@ public:
|
|||||||
int GetRTPStatistics(unsigned int& averageJitterMs,
|
int GetRTPStatistics(unsigned int& averageJitterMs,
|
||||||
unsigned int& maxJitterMs,
|
unsigned int& maxJitterMs,
|
||||||
unsigned int& discardedPackets);
|
unsigned int& discardedPackets);
|
||||||
int GetRemoteRTCPSenderInfo(SenderInfo* sender_info);
|
|
||||||
int GetRemoteRTCPReportBlocks(std::vector<ReportBlock>* report_blocks);
|
int GetRemoteRTCPReportBlocks(std::vector<ReportBlock>* report_blocks);
|
||||||
int GetRTPStatistics(CallStatistics& stats);
|
int GetRTPStatistics(CallStatistics& stats);
|
||||||
int SetFECStatus(bool enable, int redPayloadtype);
|
int SetFECStatus(bool enable, int redPayloadtype);
|
||||||
@ -347,7 +343,6 @@ public:
|
|||||||
int StartRTPDump(const char fileNameUTF8[1024], RTPDirections direction);
|
int StartRTPDump(const char fileNameUTF8[1024], RTPDirections direction);
|
||||||
int StopRTPDump(RTPDirections direction);
|
int StopRTPDump(RTPDirections direction);
|
||||||
bool RTPDumpIsActive(RTPDirections direction);
|
bool RTPDumpIsActive(RTPDirections direction);
|
||||||
uint32_t LastRemoteTimeStamp() { return _lastRemoteTimeStamp; }
|
|
||||||
// Takes ownership of the ViENetwork.
|
// Takes ownership of the ViENetwork.
|
||||||
void SetVideoEngineBWETarget(ViENetwork* vie_network, int video_channel);
|
void SetVideoEngineBWETarget(ViENetwork* vie_network, int video_channel);
|
||||||
|
|
||||||
@ -562,13 +557,11 @@ private:
|
|||||||
VoERxVadCallback* _rxVadObserverPtr;
|
VoERxVadCallback* _rxVadObserverPtr;
|
||||||
int32_t _oldVadDecision;
|
int32_t _oldVadDecision;
|
||||||
int32_t _sendFrameType; // Send data is voice, 1-voice, 0-otherwise
|
int32_t _sendFrameType; // Send data is voice, 1-voice, 0-otherwise
|
||||||
VoERTPObserver* _rtpObserverPtr;
|
|
||||||
VoERTCPObserver* _rtcpObserverPtr;
|
VoERTCPObserver* _rtcpObserverPtr;
|
||||||
// VoEBase
|
// VoEBase
|
||||||
bool _externalPlayout;
|
bool _externalPlayout;
|
||||||
bool _externalMixing;
|
bool _externalMixing;
|
||||||
bool _mixFileWithMicrophone;
|
bool _mixFileWithMicrophone;
|
||||||
bool _rtpObserver;
|
|
||||||
bool _rtcpObserver;
|
bool _rtcpObserver;
|
||||||
// VoEVolumeControl
|
// VoEVolumeControl
|
||||||
bool _mute;
|
bool _mute;
|
||||||
@ -580,7 +573,6 @@ private:
|
|||||||
bool _playInbandDtmfEvent;
|
bool _playInbandDtmfEvent;
|
||||||
// VoeRTP_RTCP
|
// VoeRTP_RTCP
|
||||||
uint32_t _lastLocalTimeStamp;
|
uint32_t _lastLocalTimeStamp;
|
||||||
uint32_t _lastRemoteTimeStamp;
|
|
||||||
int8_t _lastPayloadType;
|
int8_t _lastPayloadType;
|
||||||
bool _includeAudioLevelIndication;
|
bool _includeAudioLevelIndication;
|
||||||
// VoENetwork
|
// VoENetwork
|
||||||
|
@ -125,24 +125,6 @@ public:
|
|||||||
// deleted.
|
// deleted.
|
||||||
virtual int Release() = 0;
|
virtual int Release() = 0;
|
||||||
|
|
||||||
// Registers an instance of a VoERTPObserver derived class for a specified
|
|
||||||
// |channel|. It will allow the user to observe callbacks related to the
|
|
||||||
// RTP protocol such as changes in the incoming SSRC.
|
|
||||||
virtual int RegisterRTPObserver(int channel, VoERTPObserver& observer) = 0;
|
|
||||||
|
|
||||||
// Deregisters an instance of a VoERTPObserver derived class for a
|
|
||||||
// specified |channel|.
|
|
||||||
virtual int DeRegisterRTPObserver(int channel) = 0;
|
|
||||||
|
|
||||||
// Registers an instance of a VoERTCPObserver derived class for a specified
|
|
||||||
// |channel|.
|
|
||||||
virtual int RegisterRTCPObserver(
|
|
||||||
int channel, VoERTCPObserver& observer) = 0;
|
|
||||||
|
|
||||||
// Deregisters an instance of a VoERTCPObserver derived class for a
|
|
||||||
// specified |channel|.
|
|
||||||
virtual int DeRegisterRTCPObserver(int channel) = 0;
|
|
||||||
|
|
||||||
// Sets the local RTP synchronization source identifier (SSRC) explicitly.
|
// Sets the local RTP synchronization source identifier (SSRC) explicitly.
|
||||||
virtual int SetLocalSSRC(int channel, unsigned int ssrc) = 0;
|
virtual int SetLocalSSRC(int channel, unsigned int ssrc) = 0;
|
||||||
|
|
||||||
@ -176,9 +158,6 @@ public:
|
|||||||
bool enable,
|
bool enable,
|
||||||
unsigned char id) = 0;
|
unsigned char id) = 0;
|
||||||
|
|
||||||
// Gets the CSRCs of the incoming RTP packets.
|
|
||||||
virtual int GetRemoteCSRCs(int channel, unsigned int arrCSRC[15]) = 0;
|
|
||||||
|
|
||||||
// Sets the RTCP status on a specific |channel|.
|
// Sets the RTCP status on a specific |channel|.
|
||||||
virtual int SetRTCPStatus(int channel, bool enable) = 0;
|
virtual int SetRTCPStatus(int channel, bool enable) = 0;
|
||||||
|
|
||||||
@ -211,11 +190,6 @@ public:
|
|||||||
// Gets RTCP statistics for a specific |channel|.
|
// Gets RTCP statistics for a specific |channel|.
|
||||||
virtual int GetRTCPStatistics(int channel, CallStatistics& stats) = 0;
|
virtual int GetRTCPStatistics(int channel, CallStatistics& stats) = 0;
|
||||||
|
|
||||||
// Gets the sender info part of the last received RTCP Sender Report (SR)
|
|
||||||
// on a specified |channel|.
|
|
||||||
virtual int GetRemoteRTCPSenderInfo(
|
|
||||||
int channel, SenderInfo* sender_info) = 0;
|
|
||||||
|
|
||||||
// Gets the report block parts of the last received RTCP Sender Report (SR),
|
// Gets the report block parts of the last received RTCP Sender Report (SR),
|
||||||
// or RTCP Receiver Report (RR) on a specified |channel|. Each vector
|
// or RTCP Receiver Report (RR) on a specified |channel|. Each vector
|
||||||
// element also contains the SSRC of the sender in addition to a report
|
// element also contains the SSRC of the sender in addition to a report
|
||||||
@ -223,11 +197,6 @@ public:
|
|||||||
virtual int GetRemoteRTCPReportBlocks(
|
virtual int GetRemoteRTCPReportBlocks(
|
||||||
int channel, std::vector<ReportBlock>* receive_blocks) = 0;
|
int channel, std::vector<ReportBlock>* receive_blocks) = 0;
|
||||||
|
|
||||||
// Sends an RTCP APP packet on a specific |channel|.
|
|
||||||
virtual int SendApplicationDefinedRTCPPacket(
|
|
||||||
int channel, unsigned char subType, unsigned int name,
|
|
||||||
const char* data, unsigned short dataLengthInBytes) = 0;
|
|
||||||
|
|
||||||
// Sets the Forward Error Correction (FEC) status on a specific |channel|.
|
// Sets the Forward Error Correction (FEC) status on a specific |channel|.
|
||||||
virtual int SetFECStatus(
|
virtual int SetFECStatus(
|
||||||
int channel, bool enable, int redPayloadtype = -1) = 0;
|
int channel, bool enable, int redPayloadtype = -1) = 0;
|
||||||
@ -262,15 +231,6 @@ public:
|
|||||||
virtual int RTPDumpIsActive(
|
virtual int RTPDumpIsActive(
|
||||||
int channel, RTPDirections direction = kRtpIncoming) = 0;
|
int channel, RTPDirections direction = kRtpIncoming) = 0;
|
||||||
|
|
||||||
// Gets the timestamp of the last RTP packet received by |channel|.
|
|
||||||
virtual int GetLastRemoteTimeStamp(int channel,
|
|
||||||
uint32_t* lastRemoteTimeStamp) = 0;
|
|
||||||
|
|
||||||
// Don't use. To be removed.
|
|
||||||
virtual int InsertExtraRTPPacket(
|
|
||||||
int channel, unsigned char payloadType, bool markerBit,
|
|
||||||
const char* payloadData, unsigned short payloadSize) { return -1; };
|
|
||||||
|
|
||||||
// Sets video engine channel to receive incoming audio packets for
|
// Sets video engine channel to receive incoming audio packets for
|
||||||
// aggregated bandwidth estimation. Takes ownership of the ViENetwork
|
// aggregated bandwidth estimation. Takes ownership of the ViENetwork
|
||||||
// interface.
|
// interface.
|
||||||
@ -279,6 +239,26 @@ public:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Will be removed. Don't use.
|
||||||
|
virtual int RegisterRTPObserver(int channel,
|
||||||
|
VoERTPObserver& observer) { return -1; };
|
||||||
|
virtual int DeRegisterRTPObserver(int channel) { return -1; };
|
||||||
|
virtual int RegisterRTCPObserver(
|
||||||
|
int channel, VoERTCPObserver& observer) { return -1; };
|
||||||
|
virtual int DeRegisterRTCPObserver(int channel) { return -1; };
|
||||||
|
virtual int GetRemoteCSRCs(int channel,
|
||||||
|
unsigned int arrCSRC[15]) { return -1; };
|
||||||
|
virtual int InsertExtraRTPPacket(
|
||||||
|
int channel, unsigned char payloadType, bool markerBit,
|
||||||
|
const char* payloadData, unsigned short payloadSize) { return -1; };
|
||||||
|
virtual int GetRemoteRTCPSenderInfo(
|
||||||
|
int channel, SenderInfo* sender_info) { return -1; };
|
||||||
|
virtual int SendApplicationDefinedRTCPPacket(
|
||||||
|
int channel, unsigned char subType, unsigned int name,
|
||||||
|
const char* data, unsigned short dataLengthInBytes) { return -1; };
|
||||||
|
virtual int GetLastRemoteTimeStamp(int channel,
|
||||||
|
uint32_t* lastRemoteTimeStamp) { return -1; };
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
VoERTP_RTCP() {}
|
VoERTP_RTCP() {}
|
||||||
virtual ~VoERTP_RTCP() {}
|
virtual ~VoERTP_RTCP() {}
|
||||||
|
@ -48,9 +48,3 @@ TEST_F(RtpRtcpBeforeStreamingTest, GetLocalSsrcObeysSetLocalSsrc) {
|
|||||||
EXPECT_EQ(0, voe_rtp_rtcp_->GetLocalSSRC(channel_, result));
|
EXPECT_EQ(0, voe_rtp_rtcp_->GetLocalSSRC(channel_, result));
|
||||||
EXPECT_EQ(1234u, result);
|
EXPECT_EQ(1234u, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(RtpRtcpBeforeStreamingTest, GetLastRemoteTimeStamp) {
|
|
||||||
uint32_t timestamp;
|
|
||||||
EXPECT_EQ(0, voe_rtp_rtcp_->GetLastRemoteTimeStamp(channel_, ×tamp));
|
|
||||||
EXPECT_EQ(0u, timestamp);
|
|
||||||
}
|
|
||||||
|
@ -153,54 +153,6 @@ TEST_F(RtpRtcpTest, DISABLED_ON_LINUX(SSRCPropagatesCorrectly)) {
|
|||||||
EXPECT_EQ(local_ssrc, ssrc);
|
EXPECT_EQ(local_ssrc, ssrc);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(RtpRtcpTest, RtcpApplicationDefinedPacketsCanBeSentAndReceived) {
|
|
||||||
RtcpAppHandler rtcp_app_handler;
|
|
||||||
EXPECT_EQ(0, voe_rtp_rtcp_->RegisterRTCPObserver(
|
|
||||||
channel_, rtcp_app_handler));
|
|
||||||
|
|
||||||
// Send data aligned to 32 bytes.
|
|
||||||
const char* data = "application-dependent data------";
|
|
||||||
unsigned short data_length = strlen(data);
|
|
||||||
unsigned int data_name = 0x41424344; // 'ABCD' in ascii
|
|
||||||
unsigned char data_subtype = 1;
|
|
||||||
|
|
||||||
EXPECT_EQ(0, voe_rtp_rtcp_->SendApplicationDefinedRTCPPacket(
|
|
||||||
channel_, data_subtype, data_name, data, data_length));
|
|
||||||
|
|
||||||
// Ensure the RTP-RTCP process gets scheduled.
|
|
||||||
Sleep(1000);
|
|
||||||
|
|
||||||
// Ensure we received the data in the callback.
|
|
||||||
ASSERT_EQ(data_length, rtcp_app_handler.length_in_bytes_);
|
|
||||||
EXPECT_EQ(0, memcmp(data, rtcp_app_handler.data_, data_length));
|
|
||||||
EXPECT_EQ(data_name, rtcp_app_handler.name_);
|
|
||||||
EXPECT_EQ(data_subtype, rtcp_app_handler.sub_type_);
|
|
||||||
|
|
||||||
EXPECT_EQ(0, voe_rtp_rtcp_->DeRegisterRTCPObserver(channel_));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(RtpRtcpTest, DisabledRtcpObserverDoesNotReceiveData) {
|
|
||||||
RtcpAppHandler rtcp_app_handler;
|
|
||||||
EXPECT_EQ(0, voe_rtp_rtcp_->RegisterRTCPObserver(
|
|
||||||
channel_, rtcp_app_handler));
|
|
||||||
|
|
||||||
// Put observer in a known state before de-registering.
|
|
||||||
rtcp_app_handler.Reset();
|
|
||||||
|
|
||||||
EXPECT_EQ(0, voe_rtp_rtcp_->DeRegisterRTCPObserver(channel_));
|
|
||||||
|
|
||||||
const char* data = "whatever";
|
|
||||||
EXPECT_EQ(0, voe_rtp_rtcp_->SendApplicationDefinedRTCPPacket(
|
|
||||||
channel_, 1, 0x41424344, data, strlen(data)));
|
|
||||||
|
|
||||||
// Ensure the RTP-RTCP process gets scheduled.
|
|
||||||
Sleep(1000);
|
|
||||||
|
|
||||||
// Ensure we received no data.
|
|
||||||
EXPECT_EQ(0u, rtcp_app_handler.name_);
|
|
||||||
EXPECT_EQ(0u, rtcp_app_handler.sub_type_);
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(xians, phoglund): Re-enable when issue 372 is resolved.
|
// TODO(xians, phoglund): Re-enable when issue 372 is resolved.
|
||||||
TEST_F(RtpRtcpTest, DISABLED_CanCreateRtpDumpFilesWithoutError) {
|
TEST_F(RtpRtcpTest, DISABLED_CanCreateRtpDumpFilesWithoutError) {
|
||||||
// Create two RTP dump files (3 seconds long). You can verify these after
|
// Create two RTP dump files (3 seconds long). You can verify these after
|
||||||
@ -220,27 +172,3 @@ TEST_F(RtpRtcpTest, DISABLED_CanCreateRtpDumpFilesWithoutError) {
|
|||||||
EXPECT_EQ(0, voe_rtp_rtcp_->StopRTPDump(channel_, webrtc::kRtpOutgoing));
|
EXPECT_EQ(0, voe_rtp_rtcp_->StopRTPDump(channel_, webrtc::kRtpOutgoing));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(RtpRtcpTest, ObserverGetsNotifiedOnSsrcChange) {
|
|
||||||
TestRtpObserver rtcp_observer;
|
|
||||||
EXPECT_EQ(0, voe_rtp_rtcp_->RegisterRTPObserver(
|
|
||||||
channel_, rtcp_observer));
|
|
||||||
|
|
||||||
unsigned int new_ssrc = 7777;
|
|
||||||
EXPECT_EQ(0, voe_base_->StopSend(channel_));
|
|
||||||
rtcp_observer.SetIncomingSsrc(new_ssrc);
|
|
||||||
EXPECT_EQ(0, voe_rtp_rtcp_->SetLocalSSRC(channel_, new_ssrc));
|
|
||||||
EXPECT_EQ(0, voe_base_->StartSend(channel_));
|
|
||||||
|
|
||||||
rtcp_observer.WaitForChangedSsrc();
|
|
||||||
|
|
||||||
// Now try another SSRC.
|
|
||||||
unsigned int newer_ssrc = 1717;
|
|
||||||
EXPECT_EQ(0, voe_base_->StopSend(channel_));
|
|
||||||
rtcp_observer.SetIncomingSsrc(newer_ssrc);
|
|
||||||
EXPECT_EQ(0, voe_rtp_rtcp_->SetLocalSSRC(channel_, newer_ssrc));
|
|
||||||
EXPECT_EQ(0, voe_base_->StartSend(channel_));
|
|
||||||
|
|
||||||
rtcp_observer.WaitForChangedSsrc();
|
|
||||||
|
|
||||||
EXPECT_EQ(0, voe_rtp_rtcp_->DeRegisterRTPObserver(channel_));
|
|
||||||
}
|
|
||||||
|
@ -50,88 +50,6 @@ VoERTP_RTCPImpl::~VoERTP_RTCPImpl()
|
|||||||
"VoERTP_RTCPImpl::~VoERTP_RTCPImpl() - dtor");
|
"VoERTP_RTCPImpl::~VoERTP_RTCPImpl() - dtor");
|
||||||
}
|
}
|
||||||
|
|
||||||
int VoERTP_RTCPImpl::RegisterRTPObserver(int channel, VoERTPObserver& observer)
|
|
||||||
{
|
|
||||||
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
|
|
||||||
"RegisterRTPObserver(channel=%d observer=0x%x)",
|
|
||||||
channel, &observer);
|
|
||||||
if (!_shared->statistics().Initialized())
|
|
||||||
{
|
|
||||||
_shared->SetLastError(VE_NOT_INITED, kTraceError);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
|
|
||||||
voe::Channel* channelPtr = ch.channel();
|
|
||||||
if (channelPtr == NULL)
|
|
||||||
{
|
|
||||||
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
|
|
||||||
"RegisterRTPObserver() failed to locate channel");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return channelPtr->RegisterRTPObserver(observer);
|
|
||||||
}
|
|
||||||
|
|
||||||
int VoERTP_RTCPImpl::DeRegisterRTPObserver(int channel)
|
|
||||||
{
|
|
||||||
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
|
|
||||||
"DeRegisterRTPObserver(channel=%d)", channel);
|
|
||||||
if (!_shared->statistics().Initialized())
|
|
||||||
{
|
|
||||||
_shared->SetLastError(VE_NOT_INITED, kTraceError);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
|
|
||||||
voe::Channel* channelPtr = ch.channel();
|
|
||||||
if (channelPtr == NULL)
|
|
||||||
{
|
|
||||||
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
|
|
||||||
"DeRegisterRTPObserver() failed to locate channel");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return channelPtr->DeRegisterRTPObserver();
|
|
||||||
}
|
|
||||||
|
|
||||||
int VoERTP_RTCPImpl::RegisterRTCPObserver(int channel, VoERTCPObserver& observer)
|
|
||||||
{
|
|
||||||
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
|
|
||||||
"RegisterRTCPObserver(channel=%d observer=0x%x)",
|
|
||||||
channel, &observer);
|
|
||||||
if (!_shared->statistics().Initialized())
|
|
||||||
{
|
|
||||||
_shared->SetLastError(VE_NOT_INITED, kTraceError);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
|
|
||||||
voe::Channel* channelPtr = ch.channel();
|
|
||||||
if (channelPtr == NULL)
|
|
||||||
{
|
|
||||||
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
|
|
||||||
"RegisterRTPObserver() failed to locate channel");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return channelPtr->RegisterRTCPObserver(observer);
|
|
||||||
}
|
|
||||||
|
|
||||||
int VoERTP_RTCPImpl::DeRegisterRTCPObserver(int channel)
|
|
||||||
{
|
|
||||||
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
|
|
||||||
"DeRegisterRTCPObserver(channel=%d)", channel);
|
|
||||||
if (!_shared->statistics().Initialized())
|
|
||||||
{
|
|
||||||
_shared->SetLastError(VE_NOT_INITED, kTraceError);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
|
|
||||||
voe::Channel* channelPtr = ch.channel();
|
|
||||||
if (channelPtr == NULL)
|
|
||||||
{
|
|
||||||
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
|
|
||||||
"DeRegisterRTCPObserver() failed to locate channel");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return channelPtr->DeRegisterRTCPObserver();
|
|
||||||
}
|
|
||||||
|
|
||||||
int VoERTP_RTCPImpl::SetLocalSSRC(int channel, unsigned int ssrc)
|
int VoERTP_RTCPImpl::SetLocalSSRC(int channel, unsigned int ssrc)
|
||||||
{
|
{
|
||||||
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
|
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
|
||||||
@ -192,26 +110,6 @@ int VoERTP_RTCPImpl::GetRemoteSSRC(int channel, unsigned int& ssrc)
|
|||||||
return channelPtr->GetRemoteSSRC(ssrc);
|
return channelPtr->GetRemoteSSRC(ssrc);
|
||||||
}
|
}
|
||||||
|
|
||||||
int VoERTP_RTCPImpl::GetRemoteCSRCs(int channel, unsigned int arrCSRC[15])
|
|
||||||
{
|
|
||||||
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
|
|
||||||
"GetRemoteCSRCs(channel=%d, arrCSRC=?)", channel);
|
|
||||||
if (!_shared->statistics().Initialized())
|
|
||||||
{
|
|
||||||
_shared->SetLastError(VE_NOT_INITED, kTraceError);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
|
|
||||||
voe::Channel* channelPtr = ch.channel();
|
|
||||||
if (channelPtr == NULL)
|
|
||||||
{
|
|
||||||
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
|
|
||||||
"GetRemoteCSRCs() failed to locate channel");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return channelPtr->GetRemoteCSRCs(arrCSRC);
|
|
||||||
}
|
|
||||||
|
|
||||||
int VoERTP_RTCPImpl::SetSendAudioLevelIndicationStatus(int channel,
|
int VoERTP_RTCPImpl::SetSendAudioLevelIndicationStatus(int channel,
|
||||||
bool enable,
|
bool enable,
|
||||||
unsigned char id)
|
unsigned char id)
|
||||||
@ -466,36 +364,6 @@ int VoERTP_RTCPImpl::GetRemoteRTCPData(
|
|||||||
fractionLost);
|
fractionLost);
|
||||||
}
|
}
|
||||||
|
|
||||||
int VoERTP_RTCPImpl::SendApplicationDefinedRTCPPacket(
|
|
||||||
int channel,
|
|
||||||
unsigned char subType,
|
|
||||||
unsigned int name,
|
|
||||||
const char* data,
|
|
||||||
unsigned short dataLengthInBytes)
|
|
||||||
{
|
|
||||||
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
|
|
||||||
"SendApplicationDefinedRTCPPacket(channel=%d, subType=%u,"
|
|
||||||
"name=%u, data=?, dataLengthInBytes=%u)",
|
|
||||||
channel, subType, name, dataLengthInBytes);
|
|
||||||
if (!_shared->statistics().Initialized())
|
|
||||||
{
|
|
||||||
_shared->SetLastError(VE_NOT_INITED, kTraceError);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
|
|
||||||
voe::Channel* channelPtr = ch.channel();
|
|
||||||
if (channelPtr == NULL)
|
|
||||||
{
|
|
||||||
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
|
|
||||||
"SendApplicationDefinedRTCPPacket() failed to locate channel");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return channelPtr->SendApplicationDefinedRTCPPacket(subType,
|
|
||||||
name,
|
|
||||||
data,
|
|
||||||
dataLengthInBytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
int VoERTP_RTCPImpl::GetRTPStatistics(int channel,
|
int VoERTP_RTCPImpl::GetRTPStatistics(int channel,
|
||||||
unsigned int& averageJitterMs,
|
unsigned int& averageJitterMs,
|
||||||
unsigned int& maxJitterMs,
|
unsigned int& maxJitterMs,
|
||||||
@ -541,24 +409,6 @@ int VoERTP_RTCPImpl::GetRTCPStatistics(int channel, CallStatistics& stats)
|
|||||||
return channelPtr->GetRTPStatistics(stats);
|
return channelPtr->GetRTPStatistics(stats);
|
||||||
}
|
}
|
||||||
|
|
||||||
int VoERTP_RTCPImpl::GetRemoteRTCPSenderInfo(int channel,
|
|
||||||
SenderInfo* sender_info) {
|
|
||||||
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
|
|
||||||
"GetRemoteRTCPSenderInfo(channel=%d)", channel);
|
|
||||||
if (!_shared->statistics().Initialized()) {
|
|
||||||
_shared->SetLastError(VE_NOT_INITED, kTraceError);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
|
|
||||||
voe::Channel* channel_ptr = ch.channel();
|
|
||||||
if (channel_ptr == NULL) {
|
|
||||||
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
|
|
||||||
"GetRemoteRTCPSenderInfo() failed to locate channel");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return channel_ptr->GetRemoteRTCPSenderInfo(sender_info);
|
|
||||||
}
|
|
||||||
|
|
||||||
int VoERTP_RTCPImpl::GetRemoteRTCPReportBlocks(
|
int VoERTP_RTCPImpl::GetRemoteRTCPReportBlocks(
|
||||||
int channel, std::vector<ReportBlock>* report_blocks) {
|
int channel, std::vector<ReportBlock>* report_blocks) {
|
||||||
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
|
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
|
||||||
@ -720,27 +570,6 @@ int VoERTP_RTCPImpl::RTPDumpIsActive(int channel, RTPDirections direction)
|
|||||||
return channelPtr->RTPDumpIsActive(direction);
|
return channelPtr->RTPDumpIsActive(direction);
|
||||||
}
|
}
|
||||||
|
|
||||||
int VoERTP_RTCPImpl::GetLastRemoteTimeStamp(int channel,
|
|
||||||
uint32_t* timestamp) {
|
|
||||||
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
|
|
||||||
"GetLastRemoteTimeStamp(channel=%d, timestamp=?)", channel);
|
|
||||||
if (!_shared->statistics().Initialized())
|
|
||||||
{
|
|
||||||
_shared->SetLastError(VE_NOT_INITED, kTraceError);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
|
|
||||||
voe::Channel* channelPtr = ch.channel();
|
|
||||||
if (channelPtr == NULL)
|
|
||||||
{
|
|
||||||
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
|
|
||||||
"GetLastRemoteTimeStamp() failed to locate channel");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
*timestamp = channelPtr->LastRemoteTimeStamp();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int VoERTP_RTCPImpl::SetVideoEngineBWETarget(int channel,
|
int VoERTP_RTCPImpl::SetVideoEngineBWETarget(int channel,
|
||||||
ViENetwork* vie_network,
|
ViENetwork* vie_network,
|
||||||
int video_channel) {
|
int video_channel) {
|
||||||
|
@ -20,15 +20,6 @@ namespace webrtc {
|
|||||||
class VoERTP_RTCPImpl : public VoERTP_RTCP
|
class VoERTP_RTCPImpl : public VoERTP_RTCP
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Registration of observers for RTP and RTCP callbacks
|
|
||||||
virtual int RegisterRTPObserver(int channel, VoERTPObserver& observer);
|
|
||||||
|
|
||||||
virtual int DeRegisterRTPObserver(int channel);
|
|
||||||
|
|
||||||
virtual int RegisterRTCPObserver(int channel, VoERTCPObserver& observer);
|
|
||||||
|
|
||||||
virtual int DeRegisterRTCPObserver(int channel);
|
|
||||||
|
|
||||||
// RTCP
|
// RTCP
|
||||||
virtual int SetRTCPStatus(int channel, bool enable);
|
virtual int SetRTCPStatus(int channel, bool enable);
|
||||||
|
|
||||||
@ -48,13 +39,6 @@ public:
|
|||||||
unsigned int* jitter = NULL,
|
unsigned int* jitter = NULL,
|
||||||
unsigned short* fractionLost = NULL);
|
unsigned short* fractionLost = NULL);
|
||||||
|
|
||||||
virtual int SendApplicationDefinedRTCPPacket(
|
|
||||||
int channel,
|
|
||||||
unsigned char subType,
|
|
||||||
unsigned int name,
|
|
||||||
const char* data,
|
|
||||||
unsigned short dataLengthInBytes);
|
|
||||||
|
|
||||||
// SSRC
|
// SSRC
|
||||||
virtual int SetLocalSSRC(int channel, unsigned int ssrc);
|
virtual int SetLocalSSRC(int channel, unsigned int ssrc);
|
||||||
|
|
||||||
@ -78,9 +62,6 @@ public:
|
|||||||
bool enable,
|
bool enable,
|
||||||
unsigned char id);
|
unsigned char id);
|
||||||
|
|
||||||
// CSRC
|
|
||||||
virtual int GetRemoteCSRCs(int channel, unsigned int arrCSRC[15]);
|
|
||||||
|
|
||||||
// Statistics
|
// Statistics
|
||||||
virtual int GetRTPStatistics(int channel,
|
virtual int GetRTPStatistics(int channel,
|
||||||
unsigned int& averageJitterMs,
|
unsigned int& averageJitterMs,
|
||||||
@ -89,8 +70,6 @@ public:
|
|||||||
|
|
||||||
virtual int GetRTCPStatistics(int channel, CallStatistics& stats);
|
virtual int GetRTCPStatistics(int channel, CallStatistics& stats);
|
||||||
|
|
||||||
virtual int GetRemoteRTCPSenderInfo(int channel, SenderInfo* sender_info);
|
|
||||||
|
|
||||||
virtual int GetRemoteRTCPReportBlocks(
|
virtual int GetRemoteRTCPReportBlocks(
|
||||||
int channel, std::vector<ReportBlock>* report_blocks);
|
int channel, std::vector<ReportBlock>* report_blocks);
|
||||||
|
|
||||||
@ -117,8 +96,6 @@ public:
|
|||||||
virtual int RTPDumpIsActive(int channel,
|
virtual int RTPDumpIsActive(int channel,
|
||||||
RTPDirections direction = kRtpIncoming);
|
RTPDirections direction = kRtpIncoming);
|
||||||
|
|
||||||
virtual int GetLastRemoteTimeStamp(int channel,
|
|
||||||
uint32_t* lastRemoteTimeStamp);
|
|
||||||
virtual int SetVideoEngineBWETarget(int channel, ViENetwork* vie_network,
|
virtual int SetVideoEngineBWETarget(int channel, ViENetwork* vie_network,
|
||||||
int video_channel);
|
int video_channel);
|
||||||
protected:
|
protected:
|
||||||
|
Loading…
Reference in New Issue
Block a user