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.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