| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | 
							- /*
 
-  *  Copyright 2018 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 PC_SIMULCAST_DESCRIPTION_H_
 
- #define PC_SIMULCAST_DESCRIPTION_H_
 
- #include <string>
 
- #include <vector>
 
- namespace cricket {
 
- // Describes a Simulcast Layer.
 
- // Each simulcast layer has a rid as the identifier and a paused flag.
 
- // See also: https://tools.ietf.org/html/draft-ietf-mmusic-rid-15 for
 
- // an explanation about rids.
 
- struct SimulcastLayer final {
 
-   SimulcastLayer(const std::string& rid, bool is_paused);
 
-   SimulcastLayer(const SimulcastLayer& other) = default;
 
-   SimulcastLayer& operator=(const SimulcastLayer& other) = default;
 
-   bool operator==(const SimulcastLayer& other) const;
 
-   std::string rid;
 
-   bool is_paused;
 
- };
 
- // Describes a list of Simulcast layers.
 
- // Simulcast layers are specified in order of preference.
 
- // Each layer can have a list of alternatives (in order of preference).
 
- // https://tools.ietf.org/html/draft-ietf-mmusic-sdp-simulcast-13#section-5.1
 
- // Example Usage:
 
- //   To populate a list that specifies the following:
 
- //     1. Layer 1 or Layer 2
 
- //     2. Layer 3
 
- //     3. Layer 4 or Layer 5
 
- //   Use the following code:
 
- //     SimulcastLayerList list;
 
- //     list.AddLayerWithAlternatives(
 
- //            {SimulcastLayer("1", false), SimulcastLayer("2", false});
 
- //     list.AddLayer("3");
 
- //     list.AddLayerWithAlternatives(
 
- //            {SimulcastLayer("4", false), SimulcastLayer("5", false});
 
- class SimulcastLayerList final {
 
-  public:
 
-   // Type definitions required by a container.
 
-   typedef size_t size_type;
 
-   typedef std::vector<SimulcastLayer> value_type;
 
-   typedef std::vector<std::vector<SimulcastLayer>>::const_iterator
 
-       const_iterator;
 
-   // Use to add a layer when there will be no alternatives.
 
-   void AddLayer(const SimulcastLayer& layer);
 
-   // Use to add a list of alternatives.
 
-   // The alternatives should be specified in order of preference.
 
-   void AddLayerWithAlternatives(const std::vector<SimulcastLayer>& layers);
 
-   // Read-only access to the contents.
 
-   // Note: This object does not allow removal of layers.
 
-   const_iterator begin() const { return list_.begin(); }
 
-   const_iterator end() const { return list_.end(); }
 
-   const std::vector<SimulcastLayer>& operator[](size_t index) const;
 
-   size_t size() const { return list_.size(); }
 
-   bool empty() const { return list_.empty(); }
 
-   // Provides access to all the layers in the simulcast without their
 
-   // association into groups of alternatives.
 
-   std::vector<SimulcastLayer> GetAllLayers() const;
 
-  private:
 
-   // TODO(amithi, bugs.webrtc.org/10075):
 
-   // Validate that rids do not repeat in the list.
 
-   std::vector<std::vector<SimulcastLayer>> list_;
 
- };
 
- // Describes the simulcast options of a video media section.
 
- // This will list the send and receive layers (along with their alternatives).
 
- // Each simulcast layer has an identifier (rid) and can optionally be paused.
 
- // The order of the layers (as well as alternates) indicates user preference
 
- // from first to last (most preferred to least preferred).
 
- // https://tools.ietf.org/html/draft-ietf-mmusic-sdp-simulcast-13#section-5.1
 
- class SimulcastDescription final {
 
-  public:
 
-   const SimulcastLayerList& send_layers() const { return send_layers_; }
 
-   SimulcastLayerList& send_layers() { return send_layers_; }
 
-   const SimulcastLayerList& receive_layers() const { return receive_layers_; }
 
-   SimulcastLayerList& receive_layers() { return receive_layers_; }
 
-   bool empty() const;
 
-  private:
 
-   // TODO(amithi, bugs.webrtc.org/10075):
 
-   // Validate that rids do not repeat in send and receive layers.
 
-   SimulcastLayerList send_layers_;
 
-   SimulcastLayerList receive_layers_;
 
- };
 
- }  // namespace cricket
 
- #endif  // PC_SIMULCAST_DESCRIPTION_H_
 
 
  |