blob: d0aa591b4cba113dce0eb014b9489f1495a8c4d6 [file] [log] [blame]
sprang@webrtc.org131bea82015-02-18 12:46:06 +00001/*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include <string>
12
13#include "webrtc/config.h"
14
15namespace webrtc {
16
17class VideoSendStream;
18class Clock;
19
20namespace test {
21
22class VideoCapturer;
23
24class Loopback {
25 public:
26 struct Config {
27 size_t width;
28 size_t height;
29 int32_t fps;
30 size_t min_bitrate_kbps;
31 size_t start_bitrate_kbps;
32 size_t max_bitrate_kbps;
33 int32_t min_transmit_bitrate_kbps;
34 std::string codec;
35 int32_t loss_percent;
36 int32_t link_capacity_kbps;
37 int32_t queue_size;
38 int32_t avg_propagation_delay_ms;
39 int32_t std_propagation_delay_ms;
40 bool logs;
41 };
42
43 explicit Loopback(const Config& config);
44 virtual ~Loopback();
45
46 void Run();
47
48 protected:
49 virtual VideoEncoderConfig CreateEncoderConfig();
50 virtual VideoCapturer* CreateCapturer(VideoSendStream* send_stream);
51
52 const Config config_;
53 Clock* const clock_;
54};
55
56} // namespace test
57} // namespace webrtc