// Copyright 2021 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CAST_STREAMING_IMPL_RECEIVER_BASE_H_ #define CAST_STREAMING_IMPL_RECEIVER_BASE_H_ #include <chrono> #include "cast/streaming/public/encoded_frame.h" #include "cast/streaming/impl/session_config.h" #include "cast/streaming/ssrc.h" #include "platform/api/time.h" #include "platform/base/span.h" namespace openscreen::cast { // The Cast Streaming Receiver, a peer corresponding to some Cast Streaming // Sender at the other end of a network link. // // Cast Streaming is a transport protocol which divides up the frames for one // media stream (e.g., audio or video) into multiple RTP packets containing an // encrypted payload. The Receiver is the peer responsible for collecting the // RTP packets, decrypting the payload, and re-assembling a frame that can be // passed to a decoder and played out. // // A Sender ↔ Receiver pair is used to transport each media stream. Typically, // there are two pairs in a normal system, one for the audio stream and one for // video stream. A local player is responsible for synchronizing the playout of // the frames of each stream to achieve lip-sync. See the discussion in // encoded_frame.h for how the |reference_time| and |rtp_timestamp| of the // EncodedFrames are used to achieve this. class ReceiverBase { … }; } // namespace openscreen::cast #endif // CAST_STREAMING_IMPL_RECEIVER_BASE_H_