Repo created
This commit is contained in:
parent
81b91f4139
commit
f8c34fa5ee
22732 changed files with 4815320 additions and 2 deletions
115
TMessagesProj/jni/voip/webrtc/pc/simulcast_description.h
Normal file
115
TMessagesProj/jni/voip/webrtc/pc/simulcast_description.h
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
/*
|
||||
* 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 <stddef.h>
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
|
||||
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(absl::string_view 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_
|
||||
Loading…
Add table
Add a link
Reference in a new issue