tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

rtx_receive_stream.h (2261B)


      1 /*
      2 *  Copyright (c) 2017 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 #ifndef CALL_RTX_RECEIVE_STREAM_H_
     12 #define CALL_RTX_RECEIVE_STREAM_H_
     13 
     14 #include <cstdint>
     15 #include <map>
     16 
     17 #include "api/sequence_checker.h"
     18 #include "call/rtp_packet_sink_interface.h"
     19 #include "rtc_base/system/no_unique_address.h"
     20 #include "rtc_base/thread_annotations.h"
     21 
     22 namespace webrtc {
     23 
     24 class ReceiveStatistics;
     25 
     26 // This class is responsible for RTX decapsulation. The resulting media packets
     27 // are passed on to a sink representing the associated media stream.
     28 class RtxReceiveStream : public RtpPacketSinkInterface {
     29 public:
     30  RtxReceiveStream(RtpPacketSinkInterface* media_sink,
     31                   std::map<int, int> associated_payload_types,
     32                   uint32_t media_ssrc,
     33                   // TODO(nisse): Delete this argument, and
     34                   // corresponding member variable, by moving the
     35                   // responsibility for rtcp feedback to
     36                   // RtpStreamReceiverController.
     37                   ReceiveStatistics* rtp_receive_statistics = nullptr);
     38  ~RtxReceiveStream() override;
     39 
     40  // Update payload types post construction. Must be called from the same
     41  // calling context as `OnRtpPacket` is called on.
     42  void SetAssociatedPayloadTypes(std::map<int, int> associated_payload_types);
     43 
     44  // RtpPacketSinkInterface.
     45  void OnRtpPacket(const RtpPacketReceived& packet) override;
     46 
     47 private:
     48  RTC_NO_UNIQUE_ADDRESS SequenceChecker packet_checker_;
     49  RtpPacketSinkInterface* const media_sink_;
     50  // Map from rtx payload type -> media payload type.
     51  std::map<int, int> associated_payload_types_ RTC_GUARDED_BY(&packet_checker_);
     52  // TODO(nisse): Ultimately, the media receive stream shouldn't care about the
     53  // ssrc, and we should delete this.
     54  const uint32_t media_ssrc_;
     55  ReceiveStatistics* const rtp_receive_statistics_;
     56 };
     57 
     58 }  // namespace webrtc
     59 
     60 #endif  // CALL_RTX_RECEIVE_STREAM_H_