| Index: webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestSenderReceiver.cc
|
| diff --git a/webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestSenderReceiver.cc b/webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestSenderReceiver.cc
|
| deleted file mode 100644
|
| index 34dcfc42996d78eda5f987e0c8d4a385d1f8b4a3..0000000000000000000000000000000000000000
|
| --- a/webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestSenderReceiver.cc
|
| +++ /dev/null
|
| @@ -1,408 +0,0 @@
|
| -/*
|
| - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license
|
| - * that can be found in the LICENSE file in the root of the source
|
| - * tree. An additional intellectual property rights grant can be found
|
| - * in the file PATENTS. All contributing project authors may
|
| - * be found in the AUTHORS file in the root of the source tree.
|
| - */
|
| -
|
| -#include "webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestSenderReceiver.h"
|
| -
|
| -#include <stdio.h>
|
| -#include <stdlib.h>
|
| -
|
| -#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h"
|
| -#include "webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestLoadGenerator.h"
|
| -#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
|
| -#include "webrtc/system_wrappers/include/event_wrapper.h"
|
| -#include "webrtc/system_wrappers/include/tick_util.h"
|
| -#include "webrtc/test/channel_transport/udp_transport.h"
|
| -
|
| -#define NR_OF_SOCKET_BUFFERS 500
|
| -
|
| -
|
| -bool ProcThreadFunction(void *obj)
|
| -{
|
| - if (obj == NULL)
|
| - {
|
| - return false;
|
| - }
|
| - TestSenderReceiver *theObj = static_cast<TestSenderReceiver *>(obj);
|
| -
|
| - return theObj->ProcLoop();
|
| -}
|
| -
|
| -
|
| -TestSenderReceiver::TestSenderReceiver (void)
|
| -:
|
| -_critSect(CriticalSectionWrapper::CreateCriticalSection()),
|
| -_eventPtr(NULL),
|
| -_procThread(ProcThreadFunction, this, "TestSenderReceiver"),
|
| -_running(false),
|
| -_payloadType(0),
|
| -_loadGenerator(NULL),
|
| -_isSender(false),
|
| -_isReceiver(false),
|
| -_sendRecCB(NULL),
|
| -_lastBytesReceived(0),
|
| -_lastTime(-1)
|
| -{
|
| - // RTP/RTCP module
|
| - _rtp = RtpRtcp::CreateRtpRtcp(0, false);
|
| - if (!_rtp)
|
| - {
|
| - throw "Could not create RTP/RTCP module";
|
| - exit(1);
|
| - }
|
| -
|
| - if (_rtp->InitReceiver() != 0)
|
| - {
|
| - throw "_rtp->InitReceiver()";
|
| - exit(1);
|
| - }
|
| -
|
| - if (_rtp->InitSender() != 0)
|
| - {
|
| - throw "_rtp->InitSender()";
|
| - exit(1);
|
| - }
|
| -
|
| - // SocketTransport module
|
| - uint8_t numberOfThreads = 1;
|
| - _transport = UdpTransport::Create(0, numberOfThreads);
|
| - if (!_transport)
|
| - {
|
| - throw "Could not create transport module";
|
| - exit(1);
|
| - }
|
| -}
|
| -
|
| -TestSenderReceiver::~TestSenderReceiver (void)
|
| -{
|
| -
|
| - Stop(); // N.B. without critSect
|
| -
|
| - _critSect->Enter();
|
| -
|
| - if (_rtp)
|
| - {
|
| - RtpRtcp::DestroyRtpRtcp(_rtp);
|
| - _rtp = NULL;
|
| - }
|
| -
|
| - if (_transport)
|
| - {
|
| - UdpTransport::Destroy(_transport);
|
| - _transport = NULL;
|
| - }
|
| -
|
| - delete _critSect;
|
| -
|
| -}
|
| -
|
| -
|
| -int32_t TestSenderReceiver::InitReceiver (const uint16_t rtpPort,
|
| - const uint16_t rtcpPort,
|
| - const int8_t payloadType /*= 127*/)
|
| -{
|
| - CriticalSectionScoped cs(_critSect);
|
| -
|
| - // init transport
|
| - if (_transport->InitializeReceiveSockets(this, rtpPort/*, 0, NULL, 0, true*/) != 0)
|
| - {
|
| - throw "_transport->InitializeReceiveSockets";
|
| - exit(1);
|
| - }
|
| -
|
| - if (_rtp->RegisterIncomingRTPCallback(this) != 0)
|
| - {
|
| - throw "_rtp->RegisterIncomingRTPCallback";
|
| - exit(1);
|
| - }
|
| -
|
| - if (_rtp->RegisterIncomingDataCallback(this) != 0)
|
| - {
|
| - throw "_rtp->RegisterIncomingRTPCallback";
|
| - exit(1);
|
| - }
|
| -
|
| - if (_rtp->SetRTCPStatus(RtcpMode::kReducedSize) != 0) {
|
| - throw "_rtp->SetRTCPStatus";
|
| - exit(1);
|
| - }
|
| -
|
| - if (_rtp->SetTMMBRStatus(true) != 0)
|
| - {
|
| - throw "_rtp->SetTMMBRStatus";
|
| - exit(1);
|
| - }
|
| -
|
| - if (_rtp->RegisterReceivePayload("I420", payloadType, 90000) != 0)
|
| - {
|
| - throw "_rtp->RegisterReceivePayload";
|
| - exit(1);
|
| - }
|
| -
|
| - _isReceiver = true;
|
| -
|
| - return (0);
|
| -}
|
| -
|
| -
|
| -int32_t TestSenderReceiver::Start()
|
| -{
|
| - CriticalSectionScoped cs(_critSect);
|
| -
|
| - _eventPtr = EventWrapper::Create();
|
| -
|
| - if (_rtp->SetSendingStatus(true) != 0)
|
| - {
|
| - throw "_rtp->SetSendingStatus";
|
| - exit(1);
|
| - }
|
| -
|
| - _running = true;
|
| -
|
| - if (_isReceiver)
|
| - {
|
| - if (_transport->StartReceiving(NR_OF_SOCKET_BUFFERS) != 0)
|
| - {
|
| - throw "_transport->StartReceiving";
|
| - exit(1);
|
| - }
|
| - }
|
| -
|
| - _procThread.Start();
|
| - _procThread.SetPriority(rtc::kRealtimePriority);
|
| -
|
| - return 0;
|
| -
|
| -}
|
| -
|
| -
|
| -int32_t TestSenderReceiver::Stop ()
|
| -{
|
| - CriticalSectionScoped cs(_critSect);
|
| -
|
| - _transport->StopReceiving();
|
| -
|
| - if (_running)
|
| - {
|
| - _running = false;
|
| - _eventPtr->Set();
|
| -
|
| - _procThread.Stop();
|
| -
|
| - delete _eventPtr;
|
| - }
|
| -
|
| - return (0);
|
| -}
|
| -
|
| -
|
| -bool TestSenderReceiver::ProcLoop(void)
|
| -{
|
| -
|
| - // process RTP/RTCP module
|
| - _rtp->Process();
|
| -
|
| - // process SocketTransport module
|
| - _transport->Process();
|
| -
|
| - // no critSect
|
| - while (_running)
|
| - {
|
| - // ask RTP/RTCP module for wait time
|
| - int32_t rtpWait = _rtp->TimeUntilNextProcess();
|
| -
|
| - // ask SocketTransport module for wait time
|
| - int32_t tpWait = _transport->TimeUntilNextProcess();
|
| -
|
| - int32_t minWait = (rtpWait < tpWait) ? rtpWait: tpWait;
|
| - minWait = (minWait > 0) ? minWait : 0;
|
| - // wait
|
| - _eventPtr->Wait(minWait);
|
| -
|
| - // process RTP/RTCP module
|
| - _rtp->Process();
|
| -
|
| - // process SocketTransport module
|
| - _transport->Process();
|
| -
|
| - }
|
| -
|
| - return true;
|
| -}
|
| -
|
| -
|
| -int32_t TestSenderReceiver::ReceiveBitrateKbps ()
|
| -{
|
| - size_t bytesSent;
|
| - uint32_t packetsSent;
|
| - size_t bytesReceived;
|
| - uint32_t packetsReceived;
|
| -
|
| - if (_rtp->DataCountersRTP(&bytesSent, &packetsSent, &bytesReceived, &packetsReceived) == 0)
|
| - {
|
| - int64_t now = TickTime::MillisecondTimestamp();
|
| - int32_t kbps = 0;
|
| - if (now > _lastTime)
|
| - {
|
| - if (_lastTime > 0)
|
| - {
|
| - // 8 * bytes / ms = kbps
|
| - kbps = static_cast<int32_t>(
|
| - (8 * (bytesReceived - _lastBytesReceived)) / (now - _lastTime));
|
| - }
|
| - _lastTime = now;
|
| - _lastBytesReceived = bytesReceived;
|
| - }
|
| - return (kbps);
|
| - }
|
| -
|
| - return (-1);
|
| -}
|
| -
|
| -
|
| -int32_t TestSenderReceiver::SetPacketTimeout(const uint32_t timeoutMS)
|
| -{
|
| - return (_rtp->SetPacketTimeout(timeoutMS, 0 /* RTCP timeout */));
|
| -}
|
| -
|
| -
|
| -int32_t TestSenderReceiver::OnReceivedPayloadData(const uint8_t* payloadData,
|
| - const size_t payloadSize,
|
| - const webrtc::WebRtcRTPHeader* rtpHeader)
|
| -{
|
| - //printf("OnReceivedPayloadData\n");
|
| - return (0);
|
| -}
|
| -
|
| -
|
| -void TestSenderReceiver::IncomingRTPPacket(const int8_t* incomingRtpPacket,
|
| - const size_t rtpPacketLength,
|
| - const int8_t* fromIP,
|
| - const uint16_t fromPort)
|
| -{
|
| - _rtp->IncomingPacket((uint8_t *) incomingRtpPacket, rtpPacketLength);
|
| -}
|
| -
|
| -
|
| -
|
| -void TestSenderReceiver::IncomingRTCPPacket(const int8_t* incomingRtcpPacket,
|
| - const size_t rtcpPacketLength,
|
| - const int8_t* fromIP,
|
| - const uint16_t fromPort)
|
| -{
|
| - _rtp->IncomingPacket((uint8_t *) incomingRtcpPacket, rtcpPacketLength);
|
| -}
|
| -
|
| -
|
| -
|
| -
|
| -
|
| -///////////////////
|
| -
|
| -
|
| -int32_t TestSenderReceiver::InitSender (const uint32_t startBitrateKbps,
|
| - const int8_t* ipAddr,
|
| - const uint16_t rtpPort,
|
| - const uint16_t rtcpPort /*= 0*/,
|
| - const int8_t payloadType /*= 127*/)
|
| -{
|
| - CriticalSectionScoped cs(_critSect);
|
| -
|
| - _payloadType = payloadType;
|
| -
|
| - // check load generator valid
|
| - if (_loadGenerator)
|
| - {
|
| - _loadGenerator->SetBitrate(startBitrateKbps);
|
| - }
|
| -
|
| - if (_rtp->RegisterSendTransport(_transport) != 0)
|
| - {
|
| - throw "_rtp->RegisterSendTransport";
|
| - exit(1);
|
| - }
|
| - if (_rtp->RegisterSendPayload("I420", _payloadType, 90000) != 0)
|
| - {
|
| - throw "_rtp->RegisterSendPayload";
|
| - exit(1);
|
| - }
|
| -
|
| - if (_rtp->RegisterIncomingVideoCallback(this) != 0)
|
| - {
|
| - throw "_rtp->RegisterIncomingVideoCallback";
|
| - exit(1);
|
| - }
|
| -
|
| - if (_rtp->SetRTCPStatus(RtcpMode::kReducedSize) != 0) {
|
| - throw "_rtp->SetRTCPStatus";
|
| - exit(1);
|
| - }
|
| -
|
| - if (_rtp->SetSendBitrate(startBitrateKbps*1000, 0, MAX_BITRATE_KBPS) != 0)
|
| - {
|
| - throw "_rtp->SetSendBitrate";
|
| - exit(1);
|
| - }
|
| -
|
| -
|
| - // SocketTransport
|
| - if (_transport->InitializeSendSockets(ipAddr, rtpPort, rtcpPort))
|
| - {
|
| - throw "_transport->InitializeSendSockets";
|
| - exit(1);
|
| - }
|
| -
|
| - _isSender = true;
|
| -
|
| - return (0);
|
| -}
|
| -
|
| -
|
| -
|
| -int32_t
|
| -TestSenderReceiver::SendOutgoingData(const uint32_t timeStamp,
|
| - const uint8_t* payloadData,
|
| - const size_t payloadSize,
|
| - const webrtc::FrameType frameType /*= webrtc::kVideoFrameDelta*/)
|
| -{
|
| - return (_rtp->SendOutgoingData(frameType, _payloadType, timeStamp, payloadData, payloadSize));
|
| -}
|
| -
|
| -
|
| -int32_t TestSenderReceiver::SetLoadGenerator(TestLoadGenerator *generator)
|
| -{
|
| - CriticalSectionScoped cs(_critSect);
|
| -
|
| - _loadGenerator = generator;
|
| - return(0);
|
| -
|
| -}
|
| -
|
| -void TestSenderReceiver::OnNetworkChanged(const int32_t id,
|
| - const uint32_t minBitrateBps,
|
| - const uint32_t maxBitrateBps,
|
| - const uint8_t fractionLost,
|
| - const uint16_t roundTripTimeMs,
|
| - const uint16_t bwEstimateKbitMin,
|
| - const uint16_t bwEstimateKbitMax)
|
| -{
|
| - if (_loadGenerator)
|
| - {
|
| - _loadGenerator->SetBitrate(maxBitrateBps/1000);
|
| - }
|
| -
|
| - if (_sendRecCB)
|
| - {
|
| - _sendRecCB->OnOnNetworkChanged(maxBitrateBps,
|
| - fractionLost,
|
| - roundTripTimeMs,
|
| - bwEstimateKbitMin,
|
| - bwEstimateKbitMax);
|
| - }
|
| -}
|
|
|