blob: c671de4e980b6e1c401ab24a69823319ecd3376d [file] [log] [blame]
/*
* Copyright (c) 2015 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 <string>
#include "webrtc/config.h"
namespace webrtc {
class VideoSendStream;
class Clock;
namespace test {
class VideoCapturer;
class Loopback {
public:
struct Config {
size_t width;
size_t height;
int32_t fps;
size_t min_bitrate_kbps;
size_t start_bitrate_kbps;
size_t max_bitrate_kbps;
int32_t min_transmit_bitrate_kbps;
std::string codec;
size_t num_temporal_layers;
size_t num_spatial_layers;
// Discard all temporal/spatial layers with id greater or equal the
// threshold. 0 to disable.
size_t tl_discard_threshold;
size_t sl_discard_threshold;
int32_t loss_percent;
int32_t link_capacity_kbps;
int32_t queue_size;
int32_t avg_propagation_delay_ms;
int32_t std_propagation_delay_ms;
bool logs;
};
explicit Loopback(const Config& config);
virtual ~Loopback();
void Run();
protected:
virtual VideoEncoderConfig CreateEncoderConfig();
virtual VideoCapturer* CreateCapturer(VideoSendStream* send_stream);
const Config config_;
Clock* const clock_;
};
} // namespace test
} // namespace webrtc