| Index: webrtc/common_types.h | 
| diff --git a/webrtc/common_types.h b/webrtc/common_types.h | 
| index 24ba00a8450e4e9869c544f772c774105af0100c..77c009cd9d807bf129ea6bc55ad1510d04f156a3 100644 | 
| --- a/webrtc/common_types.h | 
| +++ b/webrtc/common_types.h | 
| @@ -18,6 +18,7 @@ | 
| #include <string> | 
| #include <vector> | 
|  | 
| +#include "webrtc/base/optional.h" | 
| #include "webrtc/common_video/rotation.h" | 
| #include "webrtc/typedefs.h" | 
|  | 
| @@ -522,7 +523,7 @@ struct VideoCodecVP8 { | 
| bool automaticResizeOn; | 
| bool frameDroppingOn; | 
| int keyFrameInterval; | 
| -  const TemporalLayersFactory* tl_factory; | 
| +  TemporalLayersFactory* tl_factory; | 
| }; | 
|  | 
| // VP9 specific. | 
| @@ -563,6 +564,10 @@ enum VideoCodecType { | 
| kVideoCodecUnknown | 
| }; | 
|  | 
| +// Translates from name of codec to codec type and vice versa. | 
| +rtc::Optional<std::string> CodecTypeToPayloadName(VideoCodecType type); | 
| +rtc::Optional<VideoCodecType> PayloadNameToCodecType(const std::string& name); | 
| + | 
| union VideoCodecUnion { | 
| VideoCodecVP8 VP8; | 
| VideoCodecVP9 VP9; | 
| @@ -639,6 +644,35 @@ class VideoCodec { | 
| VideoCodecUnion codecSpecific; | 
| }; | 
|  | 
| +class BitrateAllocation { | 
| + public: | 
| +  static const uint32_t kMaxBitrateBps; | 
| +  BitrateAllocation(); | 
| + | 
| +  bool SetBitrate(size_t spatial_index, | 
| +                  size_t temporal_index, | 
| +                  uint32_t bitrate_bps); | 
| + | 
| +  uint32_t GetBitrate(size_t spatial_index, size_t temporal_index) const; | 
| + | 
| +  // Get the sum of all the temporal layer for a specific spatial layer. | 
| +  uint32_t GetSpatialLayerSum(size_t spatial_index) const; | 
| + | 
| +  uint32_t get_sum_bps() const { return sum_; }  // Sum of all bitrates. | 
| +  uint32_t get_sum_kbps() const { return (sum_ + 500) / 1000; } | 
| + | 
| +  inline bool operator==(const BitrateAllocation& other) const { | 
| +    return memcmp(bitrates_, other.bitrates_, sizeof(bitrates_)) == 0; | 
| +  } | 
| +  inline bool operator!=(const BitrateAllocation& other) const { | 
| +    return !(*this == other); | 
| +  } | 
| + | 
| + private: | 
| +  uint32_t sum_; | 
| +  uint32_t bitrates_[kMaxSpatialLayers][kMaxTemporalStreams]; | 
| +}; | 
| + | 
| // Bandwidth over-use detector options.  These are used to drive | 
| // experimentation with bandwidth estimation parameters. | 
| // See modules/remote_bitrate_estimator/overuse_detector.h | 
|  |