Adds support to change transport routes in Scenario tests.
This CL makes it possible to change transport routes while running a scenario based test. To make this possible in a consistent manner, the scenario test framework is modified to only allow shared transport for all streams between two CallClients. This is what typically is done in practice and it is quite complex to even reason about the implications of using mixed transports for a single call. Bug: webrtc:9718 Change-Id: Ib836928feed98aa2bbbe0295e158157a6518348b Reviewed-on: https://webrtc-review.googlesource.com/c/107200 Commit-Queue: Sebastian Jansson <srte@webrtc.org> Reviewed-by: Björn Terelius <terelius@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25287}
This commit is contained in:
committed by
Commit Bot
parent
8d33c0c104
commit
800e121dca
@ -25,7 +25,7 @@ namespace webrtc {
|
||||
namespace test {
|
||||
// SendVideoStream provides an interface for changing parameters and retrieving
|
||||
// states at run time.
|
||||
class SendVideoStream : public NetworkReceiverInterface {
|
||||
class SendVideoStream {
|
||||
public:
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(SendVideoStream);
|
||||
~SendVideoStream();
|
||||
@ -43,9 +43,6 @@ class SendVideoStream : public NetworkReceiverInterface {
|
||||
SendVideoStream(CallClient* sender,
|
||||
VideoStreamConfig config,
|
||||
Transport* send_transport);
|
||||
bool TryDeliverPacket(rtc::CopyOnWriteBuffer packet,
|
||||
uint64_t receiver,
|
||||
Timestamp at_time) override;
|
||||
|
||||
std::vector<uint32_t> ssrcs_;
|
||||
std::vector<uint32_t> rtx_ssrcs_;
|
||||
@ -55,10 +52,12 @@ class SendVideoStream : public NetworkReceiverInterface {
|
||||
std::unique_ptr<VideoEncoderFactory> encoder_factory_;
|
||||
std::unique_ptr<TestVideoCapturer> video_capturer_;
|
||||
FrameGeneratorCapturer* frame_generator_ = nullptr;
|
||||
int next_local_network_id_ = 0;
|
||||
int next_remote_network_id_ = 0;
|
||||
};
|
||||
|
||||
// ReceiveVideoStream represents a video receiver. It can't be used directly.
|
||||
class ReceiveVideoStream : public NetworkReceiverInterface {
|
||||
class ReceiveVideoStream {
|
||||
public:
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(ReceiveVideoStream);
|
||||
~ReceiveVideoStream();
|
||||
@ -71,9 +70,7 @@ class ReceiveVideoStream : public NetworkReceiverInterface {
|
||||
SendVideoStream* send_stream,
|
||||
size_t chosen_stream,
|
||||
Transport* feedback_transport);
|
||||
bool TryDeliverPacket(rtc::CopyOnWriteBuffer packet,
|
||||
uint64_t receiver,
|
||||
Timestamp at_time) override;
|
||||
|
||||
VideoReceiveStream* receive_stream_ = nullptr;
|
||||
FlexfecReceiveStream* flecfec_stream_ = nullptr;
|
||||
std::unique_ptr<rtc::VideoSinkInterface<webrtc::VideoFrame>> renderer_;
|
||||
@ -95,18 +92,10 @@ class VideoStreamPair {
|
||||
private:
|
||||
friend class Scenario;
|
||||
VideoStreamPair(CallClient* sender,
|
||||
std::vector<NetworkNode*> send_link,
|
||||
uint64_t send_receiver_id,
|
||||
CallClient* receiver,
|
||||
std::vector<NetworkNode*> return_link,
|
||||
uint64_t return_receiver_id,
|
||||
VideoStreamConfig config);
|
||||
|
||||
const VideoStreamConfig config_;
|
||||
std::vector<NetworkNode*> send_link_;
|
||||
std::vector<NetworkNode*> return_link_;
|
||||
NetworkNodeTransport send_transport_;
|
||||
NetworkNodeTransport return_transport_;
|
||||
|
||||
SendVideoStream send_stream_;
|
||||
ReceiveVideoStream receive_stream_;
|
||||
|
||||
Reference in New Issue
Block a user