1 /*
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 #ifndef WEBRTC_TEST_LAYER_FILTERING_TRANSPORT_H_
11 #define WEBRTC_TEST_LAYER_FILTERING_TRANSPORT_H_
12 
13 #include "webrtc/call/call.h"
14 #include "webrtc/test/direct_transport.h"
15 #include "webrtc/test/fake_network_pipe.h"
16 
17 #include <map>
18 
19 namespace webrtc {
20 
21 namespace test {
22 
23 class LayerFilteringTransport : public test::DirectTransport {
24  public:
25   LayerFilteringTransport(const FakeNetworkPipe::Config& config,
26                           Call* send_call,
27                           uint8_t vp8_video_payload_type,
28                           uint8_t vp9_video_payload_type,
29                           int selected_tl,
30                           int selected_sl);
31   bool DiscardedLastPacket() const;
32   bool SendRtp(const uint8_t* data,
33                size_t length,
34                const PacketOptions& options) override;
35 
36  private:
37   // Used to distinguish between VP8 and VP9.
38   const uint8_t vp8_video_payload_type_;
39   const uint8_t vp9_video_payload_type_;
40   // Discard or invalidate all temporal/spatial layers with id greater than the
41   // selected one. -1 to disable filtering.
42   const int selected_tl_;
43   const int selected_sl_;
44   bool discarded_last_packet_;
45 };
46 
47 }  // namespace test
48 }  // namespace webrtc
49 
50 #endif  // WEBRTC_TEST_LAYER_FILTERING_TRANSPORT_H_
51