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 |