OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 // The VideoEncoder may redistribute bitrates over the temporal layers so a | 118 // The VideoEncoder may redistribute bitrates over the temporal layers so a |
119 // bitrate threshold of 100k and an estimate of 105k does not imply that we | 119 // bitrate threshold of 100k and an estimate of 105k does not imply that we |
120 // get 100k in one temporal layer and 5k in the other, just that the bitrate | 120 // get 100k in one temporal layer and 5k in the other, just that the bitrate |
121 // in the first temporal layer should not exceed 100k. | 121 // in the first temporal layer should not exceed 100k. |
122 // TODO(pbos): Apart from a special case for two-layer screencast these | 122 // TODO(pbos): Apart from a special case for two-layer screencast these |
123 // thresholds are not propagated to the VideoEncoder. To be implemented. | 123 // thresholds are not propagated to the VideoEncoder. To be implemented. |
124 std::vector<int> temporal_layer_thresholds_bps; | 124 std::vector<int> temporal_layer_thresholds_bps; |
125 }; | 125 }; |
126 | 126 |
127 struct VideoEncoderConfig { | 127 struct VideoEncoderConfig { |
128 public: | |
129 enum class ContentType { | 128 enum class ContentType { |
130 kRealtimeVideo, | 129 kRealtimeVideo, |
131 kScreen, | 130 kScreen, |
132 }; | 131 }; |
133 | 132 |
134 VideoEncoderConfig& operator=(VideoEncoderConfig&&) = default; | |
135 VideoEncoderConfig& operator=(const VideoEncoderConfig&) = delete; | |
136 | |
137 // Mostly used by tests. Avoid creating copies if you can. | |
138 VideoEncoderConfig Copy() const { return VideoEncoderConfig(*this); } | |
139 | |
140 VideoEncoderConfig(); | 133 VideoEncoderConfig(); |
141 VideoEncoderConfig(VideoEncoderConfig&&) = default; | |
142 ~VideoEncoderConfig(); | 134 ~VideoEncoderConfig(); |
143 std::string ToString() const; | 135 std::string ToString() const; |
144 | 136 |
145 std::vector<VideoStream> streams; | 137 std::vector<VideoStream> streams; |
146 std::vector<SpatialLayer> spatial_layers; | 138 std::vector<SpatialLayer> spatial_layers; |
147 ContentType content_type; | 139 ContentType content_type; |
148 void* encoder_specific_settings; | 140 void* encoder_specific_settings; |
149 | 141 |
150 // Padding will be used up to this bitrate regardless of the bitrate produced | 142 // Padding will be used up to this bitrate regardless of the bitrate produced |
151 // by the encoder. Padding above what's actually produced by the encoder helps | 143 // by the encoder. Padding above what's actually produced by the encoder helps |
152 // maintaining a higher bitrate estimate. Padding will however not be sent | 144 // maintaining a higher bitrate estimate. Padding will however not be sent |
153 // unless the estimated bandwidth indicates that the link can handle it. | 145 // unless the estimated bandwidth indicates that the link can handle it. |
154 int min_transmit_bitrate_bps; | 146 int min_transmit_bitrate_bps; |
155 bool expect_encode_from_texture; | 147 bool expect_encode_from_texture; |
156 | |
157 private: | |
158 // Access to the copy constructor is private to force use of the Copy() | |
159 // method for those exceptional cases where we do use it. | |
160 VideoEncoderConfig(const VideoEncoderConfig&) = default; | |
161 }; | 148 }; |
162 | 149 |
163 struct VideoDecoderH264Settings { | 150 struct VideoDecoderH264Settings { |
164 std::string sprop_parameter_sets; | 151 std::string sprop_parameter_sets; |
165 }; | 152 }; |
166 | 153 |
167 class DecoderSpecificSettings { | 154 class DecoderSpecificSettings { |
168 public: | 155 public: |
169 virtual ~DecoderSpecificSettings() {} | 156 virtual ~DecoderSpecificSettings() {} |
170 rtc::Optional<VideoDecoderH264Settings> h264_extra_settings; | 157 rtc::Optional<VideoDecoderH264Settings> h264_extra_settings; |
(...skipping 24 matching lines...) Expand all Loading... |
195 struct VoicePacing { | 182 struct VoicePacing { |
196 VoicePacing() : enabled(false) {} | 183 VoicePacing() : enabled(false) {} |
197 explicit VoicePacing(bool value) : enabled(value) {} | 184 explicit VoicePacing(bool value) : enabled(value) {} |
198 static const ConfigOptionID identifier = ConfigOptionID::kVoicePacing; | 185 static const ConfigOptionID identifier = ConfigOptionID::kVoicePacing; |
199 bool enabled; | 186 bool enabled; |
200 }; | 187 }; |
201 | 188 |
202 } // namespace webrtc | 189 } // namespace webrtc |
203 | 190 |
204 #endif // WEBRTC_CONFIG_H_ | 191 #endif // WEBRTC_CONFIG_H_ |
OLD | NEW |