/* * Copyright (c) 2020 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. */ #ifndef API_VOIP_VOIP_NETWORK_H_ #define API_VOIP_VOIP_NETWORK_H_ #include "api/array_view.h" #include "api/voip/voip_base.h" namespace webrtc { // VoipNetwork interface provides any network related interfaces such as // processing received RTP/RTCP packet from remote endpoint. This interface // requires a ChannelId created via VoipBase interface. Note that using invalid // (previously released) ChannelId will silently fail these API calls as it // would have released underlying audio components. It's anticipated that caller // may be using different thread for network I/O where released channel id is // still used to input incoming RTP packets in which case we should silently // ignore. The interface is subjected to expand as needed in near future. class VoipNetwork { public: // The data received from the network including RTP header is passed here. virtual void ReceivedRTPPacket(ChannelId channel_id, rtc::ArrayView rtp_packet) = 0; // The data received from the network including RTCP header is passed here. virtual void ReceivedRTCPPacket( ChannelId channel_id, rtc::ArrayView rtcp_packet) = 0; protected: virtual ~VoipNetwork() = default; }; } // namespace webrtc #endif // API_VOIP_VOIP_NETWORK_H_