
Reasons for revert: 1. glaznev discovered potentially related problems using the Android AppRTCDemo. 2. We're trying to do an M41 webrtc roll in Chromium, and this CL is risky. > Support associated payload type when registering Rtx payload type. > > Major changes include, > - Add associated payload type for SetRtxSendPayloadType & SetRtxReceivePayloadType. > - Receiver: Restore RTP packets by the new RTX-APT map. > - Sender: Send RTP packets by checking RTX-APT map. > - Add RTX payload type for RED in the default codec list. > > BUG=4024 > R=pbos@webrtc.org, stefan@webrtc.org > TBR=mflodman@webrtc.org > > Review URL: https://webrtc-codereview.appspot.com/26259004 > > Patch from Changbin Shao <changbin.shao@intel.com>. TBR=pbos@webrtc.org, stefan@webrtc.org Review URL: https://webrtc-codereview.appspot.com/33829004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@8033 4adac7df-926f-26a2-2b94-8c16560cd09d
127 lines
3.8 KiB
C++
127 lines
3.8 KiB
C++
/*
|
|
* Copyright (c) 2014 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.
|
|
*/
|
|
#ifndef WEBRTC_TEST_COMMON_CALL_TEST_H_
|
|
#define WEBRTC_TEST_COMMON_CALL_TEST_H_
|
|
|
|
#include <vector>
|
|
|
|
#include "webrtc/call.h"
|
|
#include "webrtc/system_wrappers/interface/scoped_vector.h"
|
|
#include "webrtc/test/fake_decoder.h"
|
|
#include "webrtc/test/fake_encoder.h"
|
|
#include "webrtc/test/frame_generator_capturer.h"
|
|
#include "webrtc/test/rtp_rtcp_observer.h"
|
|
|
|
namespace webrtc {
|
|
namespace test {
|
|
|
|
class BaseTest;
|
|
|
|
class CallTest : public ::testing::Test {
|
|
public:
|
|
CallTest();
|
|
~CallTest();
|
|
|
|
static const size_t kNumSsrcs = 3;
|
|
|
|
static const unsigned int kDefaultTimeoutMs;
|
|
static const unsigned int kLongTimeoutMs;
|
|
static const uint8_t kSendPayloadType;
|
|
static const uint8_t kSendRtxPayloadType;
|
|
static const uint8_t kFakeSendPayloadType;
|
|
static const uint8_t kRedPayloadType;
|
|
static const uint8_t kUlpfecPayloadType;
|
|
static const uint32_t kSendRtxSsrcs[kNumSsrcs];
|
|
static const uint32_t kSendSsrcs[kNumSsrcs];
|
|
static const uint32_t kReceiverLocalSsrc;
|
|
static const int kNackRtpHistoryMs;
|
|
|
|
protected:
|
|
void RunBaseTest(BaseTest* test);
|
|
|
|
void CreateCalls(const Call::Config& sender_config,
|
|
const Call::Config& receiver_config);
|
|
void CreateSenderCall(const Call::Config& config);
|
|
void CreateReceiverCall(const Call::Config& config);
|
|
|
|
void CreateSendConfig(size_t num_streams);
|
|
void CreateMatchingReceiveConfigs();
|
|
|
|
void CreateFrameGeneratorCapturer();
|
|
|
|
void CreateStreams();
|
|
void Start();
|
|
void Stop();
|
|
void DestroyStreams();
|
|
|
|
Clock* const clock_;
|
|
|
|
scoped_ptr<Call> sender_call_;
|
|
VideoSendStream::Config send_config_;
|
|
VideoEncoderConfig encoder_config_;
|
|
VideoSendStream* send_stream_;
|
|
|
|
scoped_ptr<Call> receiver_call_;
|
|
std::vector<VideoReceiveStream::Config> receive_configs_;
|
|
std::vector<VideoReceiveStream*> receive_streams_;
|
|
|
|
scoped_ptr<test::FrameGeneratorCapturer> frame_generator_capturer_;
|
|
test::FakeEncoder fake_encoder_;
|
|
ScopedVector<VideoDecoder> allocated_decoders_;
|
|
};
|
|
|
|
class BaseTest : public RtpRtcpObserver {
|
|
public:
|
|
explicit BaseTest(unsigned int timeout_ms);
|
|
BaseTest(unsigned int timeout_ms, const FakeNetworkPipe::Config& config);
|
|
virtual ~BaseTest();
|
|
|
|
virtual void PerformTest() = 0;
|
|
virtual bool ShouldCreateReceivers() const = 0;
|
|
|
|
virtual size_t GetNumStreams() const;
|
|
|
|
virtual Call::Config GetSenderCallConfig();
|
|
virtual Call::Config GetReceiverCallConfig();
|
|
virtual void OnCallsCreated(Call* sender_call, Call* receiver_call);
|
|
|
|
virtual void ModifyConfigs(
|
|
VideoSendStream::Config* send_config,
|
|
std::vector<VideoReceiveStream::Config>* receive_configs,
|
|
VideoEncoderConfig* encoder_config);
|
|
virtual void OnStreamsCreated(
|
|
VideoSendStream* send_stream,
|
|
const std::vector<VideoReceiveStream*>& receive_streams);
|
|
|
|
virtual void OnFrameGeneratorCapturerCreated(
|
|
FrameGeneratorCapturer* frame_generator_capturer);
|
|
};
|
|
|
|
class SendTest : public BaseTest {
|
|
public:
|
|
explicit SendTest(unsigned int timeout_ms);
|
|
SendTest(unsigned int timeout_ms, const FakeNetworkPipe::Config& config);
|
|
|
|
virtual bool ShouldCreateReceivers() const OVERRIDE;
|
|
};
|
|
|
|
class EndToEndTest : public BaseTest {
|
|
public:
|
|
explicit EndToEndTest(unsigned int timeout_ms);
|
|
EndToEndTest(unsigned int timeout_ms, const FakeNetworkPipe::Config& config);
|
|
|
|
virtual bool ShouldCreateReceivers() const OVERRIDE;
|
|
};
|
|
|
|
} // namespace test
|
|
} // namespace webrtc
|
|
|
|
#endif // WEBRTC_TEST_COMMON_CALL_TEST_H_
|