OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2014 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 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 private: | 190 private: |
191 class WebRtcVideoReceiveStream; | 191 class WebRtcVideoReceiveStream; |
192 struct VideoCodecSettings { | 192 struct VideoCodecSettings { |
193 VideoCodecSettings(); | 193 VideoCodecSettings(); |
194 | 194 |
195 bool operator==(const VideoCodecSettings& other) const; | 195 bool operator==(const VideoCodecSettings& other) const; |
196 bool operator!=(const VideoCodecSettings& other) const; | 196 bool operator!=(const VideoCodecSettings& other) const; |
197 | 197 |
198 VideoCodec codec; | 198 VideoCodec codec; |
199 webrtc::UlpfecConfig ulpfec; | 199 webrtc::UlpfecConfig ulpfec; |
| 200 webrtc::FlexfecConfig flexfec; |
200 int rtx_payload_type; | 201 int rtx_payload_type; |
201 }; | 202 }; |
202 | 203 |
203 struct ChangedSendParameters { | 204 struct ChangedSendParameters { |
204 // These optionals are unset if not changed. | 205 // These optionals are unset if not changed. |
205 rtc::Optional<VideoCodecSettings> codec; | 206 rtc::Optional<VideoCodecSettings> codec; |
206 rtc::Optional<std::vector<webrtc::RtpExtension>> rtp_header_extensions; | 207 rtc::Optional<std::vector<webrtc::RtpExtension>> rtp_header_extensions; |
207 rtc::Optional<int> max_bandwidth_bps; | 208 rtc::Optional<int> max_bandwidth_bps; |
208 rtc::Optional<bool> conference_mode; | 209 rtc::Optional<bool> conference_mode; |
209 rtc::Optional<webrtc::RtcpMode> rtcp_mode; | 210 rtc::Optional<webrtc::RtcpMode> rtcp_mode; |
210 }; | 211 }; |
211 | 212 |
212 struct ChangedRecvParameters { | 213 struct ChangedRecvParameters { |
213 // These optionals are unset if not changed. | 214 // These optionals are unset if not changed. |
214 rtc::Optional<std::vector<VideoCodecSettings>> codec_settings; | 215 rtc::Optional<std::vector<VideoCodecSettings>> codec_settings; |
215 rtc::Optional<std::vector<webrtc::RtpExtension>> rtp_header_extensions; | 216 rtc::Optional<std::vector<webrtc::RtpExtension>> rtp_header_extensions; |
216 }; | 217 }; |
217 | 218 |
218 bool GetChangedSendParameters(const VideoSendParameters& params, | 219 bool GetChangedSendParameters(const VideoSendParameters& params, |
219 ChangedSendParameters* changed_params) const; | 220 ChangedSendParameters* changed_params) const; |
220 bool GetChangedRecvParameters(const VideoRecvParameters& params, | 221 bool GetChangedRecvParameters(const VideoRecvParameters& params, |
221 ChangedRecvParameters* changed_params) const; | 222 ChangedRecvParameters* changed_params) const; |
222 | 223 |
223 void SetMaxSendBandwidth(int bps); | 224 void SetMaxSendBandwidth(int bps); |
224 | 225 |
225 void ConfigureReceiverRtp(webrtc::VideoReceiveStream::Config* config, | 226 void ConfigureReceiverRtp(webrtc::VideoReceiveStream::Config* config, |
| 227 webrtc::FlexfecConfig* flexfec_config, |
226 const StreamParams& sp) const; | 228 const StreamParams& sp) const; |
227 bool ValidateSendSsrcAvailability(const StreamParams& sp) const | 229 bool ValidateSendSsrcAvailability(const StreamParams& sp) const |
228 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_); | 230 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_); |
229 bool ValidateReceiveSsrcAvailability(const StreamParams& sp) const | 231 bool ValidateReceiveSsrcAvailability(const StreamParams& sp) const |
230 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_); | 232 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_); |
231 void DeleteReceiveStream(WebRtcVideoReceiveStream* stream) | 233 void DeleteReceiveStream(WebRtcVideoReceiveStream* stream) |
232 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_); | 234 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_); |
233 | 235 |
234 static std::string CodecSettingsVectorToString( | 236 static std::string CodecSettingsVectorToString( |
235 const std::vector<VideoCodecSettings>& codecs); | 237 const std::vector<VideoCodecSettings>& codecs); |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 // reconstruct the underlying VideoReceiveStream. | 381 // reconstruct the underlying VideoReceiveStream. |
380 class WebRtcVideoReceiveStream | 382 class WebRtcVideoReceiveStream |
381 : public rtc::VideoSinkInterface<webrtc::VideoFrame> { | 383 : public rtc::VideoSinkInterface<webrtc::VideoFrame> { |
382 public: | 384 public: |
383 WebRtcVideoReceiveStream( | 385 WebRtcVideoReceiveStream( |
384 webrtc::Call* call, | 386 webrtc::Call* call, |
385 const StreamParams& sp, | 387 const StreamParams& sp, |
386 webrtc::VideoReceiveStream::Config config, | 388 webrtc::VideoReceiveStream::Config config, |
387 WebRtcVideoDecoderFactory* external_decoder_factory, | 389 WebRtcVideoDecoderFactory* external_decoder_factory, |
388 bool default_stream, | 390 bool default_stream, |
389 const std::vector<VideoCodecSettings>& recv_codecs); | 391 const std::vector<VideoCodecSettings>& recv_codecs, |
| 392 webrtc::FlexfecConfig flexfec_config); |
390 ~WebRtcVideoReceiveStream(); | 393 ~WebRtcVideoReceiveStream(); |
391 | 394 |
392 const std::vector<uint32_t>& GetSsrcs() const; | 395 const std::vector<uint32_t>& GetSsrcs() const; |
393 rtc::Optional<uint32_t> GetFirstPrimarySsrc() const; | 396 rtc::Optional<uint32_t> GetFirstPrimarySsrc() const; |
394 | 397 |
395 void SetLocalSsrc(uint32_t local_ssrc); | 398 void SetLocalSsrc(uint32_t local_ssrc); |
396 // TODO(deadbeef): Move these feedback parameters into the recv parameters. | 399 // TODO(deadbeef): Move these feedback parameters into the recv parameters. |
397 void SetFeedbackParameters(bool nack_enabled, | 400 void SetFeedbackParameters(bool nack_enabled, |
398 bool remb_enabled, | 401 bool remb_enabled, |
399 bool transport_cc_enabled, | 402 bool transport_cc_enabled, |
(...skipping 29 matching lines...) Expand all Loading... |
429 void ClearDecoders(std::vector<AllocatedDecoder>* allocated_decoders); | 432 void ClearDecoders(std::vector<AllocatedDecoder>* allocated_decoders); |
430 | 433 |
431 std::string GetCodecNameFromPayloadType(int payload_type); | 434 std::string GetCodecNameFromPayloadType(int payload_type); |
432 | 435 |
433 webrtc::Call* const call_; | 436 webrtc::Call* const call_; |
434 StreamParams stream_params_; | 437 StreamParams stream_params_; |
435 | 438 |
436 webrtc::VideoReceiveStream* stream_; | 439 webrtc::VideoReceiveStream* stream_; |
437 const bool default_stream_; | 440 const bool default_stream_; |
438 webrtc::VideoReceiveStream::Config config_; | 441 webrtc::VideoReceiveStream::Config config_; |
| 442 webrtc::FlexfecConfig flexfec_config_; |
| 443 webrtc::FlexfecReceiveStream* flexfec_stream_; |
439 | 444 |
440 WebRtcVideoDecoderFactory* const external_decoder_factory_; | 445 WebRtcVideoDecoderFactory* const external_decoder_factory_; |
441 std::vector<AllocatedDecoder> allocated_decoders_; | 446 std::vector<AllocatedDecoder> allocated_decoders_; |
442 | 447 |
443 rtc::CriticalSection sink_lock_; | 448 rtc::CriticalSection sink_lock_; |
444 rtc::VideoSinkInterface<webrtc::VideoFrame>* sink_ GUARDED_BY(sink_lock_); | 449 rtc::VideoSinkInterface<webrtc::VideoFrame>* sink_ GUARDED_BY(sink_lock_); |
445 // Expands remote RTP timestamps to int64_t to be able to estimate how long | 450 // Expands remote RTP timestamps to int64_t to be able to estimate how long |
446 // the stream has been running. | 451 // the stream has been running. |
447 rtc::TimestampWrapAroundHandler timestamp_wraparound_handler_ | 452 rtc::TimestampWrapAroundHandler timestamp_wraparound_handler_ |
448 GUARDED_BY(sink_lock_); | 453 GUARDED_BY(sink_lock_); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
508 // send_params/recv_params, rtp_extensions, options, etc. | 513 // send_params/recv_params, rtp_extensions, options, etc. |
509 VideoSendParameters send_params_; | 514 VideoSendParameters send_params_; |
510 VideoOptions default_send_options_; | 515 VideoOptions default_send_options_; |
511 VideoRecvParameters recv_params_; | 516 VideoRecvParameters recv_params_; |
512 int64_t last_stats_log_ms_; | 517 int64_t last_stats_log_ms_; |
513 }; | 518 }; |
514 | 519 |
515 } // namespace cricket | 520 } // namespace cricket |
516 | 521 |
517 #endif // WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_ | 522 #endif // WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_ |
OLD | NEW |