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 |
11 #ifndef WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_ | 11 #ifndef WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_ |
12 #define WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_ | 12 #define WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_ |
13 | 13 |
14 #include <map> | 14 #include <map> |
15 #include <memory> | 15 #include <memory> |
16 #include <set> | 16 #include <set> |
17 #include <string> | 17 #include <string> |
18 #include <vector> | 18 #include <vector> |
19 | 19 |
20 #include "webrtc/base/asyncinvoker.h" | 20 #include "webrtc/base/asyncinvoker.h" |
21 #include "webrtc/base/criticalsection.h" | 21 #include "webrtc/base/criticalsection.h" |
22 #include "webrtc/base/networkroute.h" | 22 #include "webrtc/base/networkroute.h" |
23 #include "webrtc/base/thread_annotations.h" | 23 #include "webrtc/base/thread_annotations.h" |
24 #include "webrtc/base/thread_checker.h" | 24 #include "webrtc/base/thread_checker.h" |
25 #include "webrtc/media/base/videosinkinterface.h" | 25 #include "webrtc/media/base/videosinkinterface.h" |
26 #include "webrtc/media/base/videosourceinterface.h" | 26 #include "webrtc/media/base/videosourceinterface.h" |
27 #include "webrtc/call.h" | 27 #include "webrtc/call.h" |
28 #include "webrtc/media/base/mediaengine.h" | 28 #include "webrtc/media/base/mediaengine.h" |
29 #include "webrtc/media/base/videoframe.h" | |
30 #include "webrtc/media/engine/webrtcvideodecoderfactory.h" | 29 #include "webrtc/media/engine/webrtcvideodecoderfactory.h" |
31 #include "webrtc/media/engine/webrtcvideoencoderfactory.h" | 30 #include "webrtc/media/engine/webrtcvideoencoderfactory.h" |
32 #include "webrtc/transport.h" | 31 #include "webrtc/transport.h" |
| 32 #include "webrtc/video_frame.h" |
33 #include "webrtc/video_receive_stream.h" | 33 #include "webrtc/video_receive_stream.h" |
34 #include "webrtc/video_send_stream.h" | 34 #include "webrtc/video_send_stream.h" |
35 | 35 |
36 namespace webrtc { | 36 namespace webrtc { |
37 class VideoDecoder; | 37 class VideoDecoder; |
38 class VideoEncoder; | 38 class VideoEncoder; |
39 struct MediaConfig; | 39 struct MediaConfig; |
40 } | 40 } |
41 | 41 |
42 namespace rtc { | 42 namespace rtc { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 virtual ~UnsignalledSsrcHandler() = default; | 75 virtual ~UnsignalledSsrcHandler() = default; |
76 }; | 76 }; |
77 | 77 |
78 // TODO(pbos): Remove, use external handlers only. | 78 // TODO(pbos): Remove, use external handlers only. |
79 class DefaultUnsignalledSsrcHandler : public UnsignalledSsrcHandler { | 79 class DefaultUnsignalledSsrcHandler : public UnsignalledSsrcHandler { |
80 public: | 80 public: |
81 DefaultUnsignalledSsrcHandler(); | 81 DefaultUnsignalledSsrcHandler(); |
82 Action OnUnsignalledSsrc(WebRtcVideoChannel2* channel, | 82 Action OnUnsignalledSsrc(WebRtcVideoChannel2* channel, |
83 uint32_t ssrc) override; | 83 uint32_t ssrc) override; |
84 | 84 |
85 rtc::VideoSinkInterface<VideoFrame>* GetDefaultSink() const; | 85 rtc::VideoSinkInterface<webrtc::VideoFrame>* GetDefaultSink() const; |
86 void SetDefaultSink(VideoMediaChannel* channel, | 86 void SetDefaultSink(VideoMediaChannel* channel, |
87 rtc::VideoSinkInterface<VideoFrame>* sink); | 87 rtc::VideoSinkInterface<webrtc::VideoFrame>* sink); |
88 virtual ~DefaultUnsignalledSsrcHandler() = default; | 88 virtual ~DefaultUnsignalledSsrcHandler() = default; |
89 | 89 |
90 private: | 90 private: |
91 uint32_t default_recv_ssrc_; | 91 uint32_t default_recv_ssrc_; |
92 rtc::VideoSinkInterface<VideoFrame>* default_sink_; | 92 rtc::VideoSinkInterface<webrtc::VideoFrame>* default_sink_; |
93 }; | 93 }; |
94 | 94 |
95 // WebRtcVideoEngine2 is used for the new native WebRTC Video API (webrtc:1667). | 95 // WebRtcVideoEngine2 is used for the new native WebRTC Video API (webrtc:1667). |
96 class WebRtcVideoEngine2 { | 96 class WebRtcVideoEngine2 { |
97 public: | 97 public: |
98 WebRtcVideoEngine2(); | 98 WebRtcVideoEngine2(); |
99 virtual ~WebRtcVideoEngine2(); | 99 virtual ~WebRtcVideoEngine2(); |
100 | 100 |
101 // Basic video engine implementation. | 101 // Basic video engine implementation. |
102 void Init(); | 102 void Init(); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 webrtc::RtpParameters GetRtpReceiveParameters(uint32_t ssrc) const override; | 151 webrtc::RtpParameters GetRtpReceiveParameters(uint32_t ssrc) const override; |
152 bool SetRtpReceiveParameters( | 152 bool SetRtpReceiveParameters( |
153 uint32_t ssrc, | 153 uint32_t ssrc, |
154 const webrtc::RtpParameters& parameters) override; | 154 const webrtc::RtpParameters& parameters) override; |
155 bool GetSendCodec(VideoCodec* send_codec) override; | 155 bool GetSendCodec(VideoCodec* send_codec) override; |
156 bool SetSend(bool send) override; | 156 bool SetSend(bool send) override; |
157 bool SetVideoSend( | 157 bool SetVideoSend( |
158 uint32_t ssrc, | 158 uint32_t ssrc, |
159 bool enable, | 159 bool enable, |
160 const VideoOptions* options, | 160 const VideoOptions* options, |
161 rtc::VideoSourceInterface<cricket::VideoFrame>* source) override; | 161 rtc::VideoSourceInterface<webrtc::VideoFrame>* source) override; |
162 bool AddSendStream(const StreamParams& sp) override; | 162 bool AddSendStream(const StreamParams& sp) override; |
163 bool RemoveSendStream(uint32_t ssrc) override; | 163 bool RemoveSendStream(uint32_t ssrc) override; |
164 bool AddRecvStream(const StreamParams& sp) override; | 164 bool AddRecvStream(const StreamParams& sp) override; |
165 bool AddRecvStream(const StreamParams& sp, bool default_stream); | 165 bool AddRecvStream(const StreamParams& sp, bool default_stream); |
166 bool RemoveRecvStream(uint32_t ssrc) override; | 166 bool RemoveRecvStream(uint32_t ssrc) override; |
167 bool SetSink(uint32_t ssrc, | 167 bool SetSink(uint32_t ssrc, |
168 rtc::VideoSinkInterface<VideoFrame>* sink) override; | 168 rtc::VideoSinkInterface<webrtc::VideoFrame>* sink) override; |
169 bool GetStats(VideoMediaInfo* info) override; | 169 bool GetStats(VideoMediaInfo* info) override; |
170 | 170 |
171 void OnPacketReceived(rtc::CopyOnWriteBuffer* packet, | 171 void OnPacketReceived(rtc::CopyOnWriteBuffer* packet, |
172 const rtc::PacketTime& packet_time) override; | 172 const rtc::PacketTime& packet_time) override; |
173 void OnRtcpReceived(rtc::CopyOnWriteBuffer* packet, | 173 void OnRtcpReceived(rtc::CopyOnWriteBuffer* packet, |
174 const rtc::PacketTime& packet_time) override; | 174 const rtc::PacketTime& packet_time) override; |
175 void OnReadyToSend(bool ready) override; | 175 void OnReadyToSend(bool ready) override; |
176 void OnNetworkRouteChanged(const std::string& transport_name, | 176 void OnNetworkRouteChanged(const std::string& transport_name, |
177 const rtc::NetworkRoute& network_route) override; | 177 const rtc::NetworkRoute& network_route) override; |
178 void SetInterface(NetworkInterface* iface) override; | 178 void SetInterface(NetworkInterface* iface) override; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_); | 233 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_); |
234 void DeleteReceiveStream(WebRtcVideoReceiveStream* stream) | 234 void DeleteReceiveStream(WebRtcVideoReceiveStream* stream) |
235 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_); | 235 EXCLUSIVE_LOCKS_REQUIRED(stream_crit_); |
236 | 236 |
237 static std::string CodecSettingsVectorToString( | 237 static std::string CodecSettingsVectorToString( |
238 const std::vector<VideoCodecSettings>& codecs); | 238 const std::vector<VideoCodecSettings>& codecs); |
239 | 239 |
240 // Wrapper for the sender part, this is where the source is connected and | 240 // Wrapper for the sender part, this is where the source is connected and |
241 // frames are then converted from cricket frames to webrtc frames. | 241 // frames are then converted from cricket frames to webrtc frames. |
242 class WebRtcVideoSendStream | 242 class WebRtcVideoSendStream |
243 : public rtc::VideoSinkInterface<cricket::VideoFrame>, | 243 : public rtc::VideoSinkInterface<webrtc::VideoFrame>, |
244 public rtc::VideoSourceInterface<webrtc::VideoFrame>, | 244 public rtc::VideoSourceInterface<webrtc::VideoFrame>, |
245 public webrtc::LoadObserver { | 245 public webrtc::LoadObserver { |
246 public: | 246 public: |
247 WebRtcVideoSendStream( | 247 WebRtcVideoSendStream( |
248 webrtc::Call* call, | 248 webrtc::Call* call, |
249 const StreamParams& sp, | 249 const StreamParams& sp, |
250 webrtc::VideoSendStream::Config config, | 250 webrtc::VideoSendStream::Config config, |
251 const VideoOptions& options, | 251 const VideoOptions& options, |
252 WebRtcVideoEncoderFactory* external_encoder_factory, | 252 WebRtcVideoEncoderFactory* external_encoder_factory, |
253 bool enable_cpu_overuse_detection, | 253 bool enable_cpu_overuse_detection, |
254 int max_bitrate_bps, | 254 int max_bitrate_bps, |
255 const rtc::Optional<VideoCodecSettings>& codec_settings, | 255 const rtc::Optional<VideoCodecSettings>& codec_settings, |
256 const rtc::Optional<std::vector<webrtc::RtpExtension>>& rtp_extensions, | 256 const rtc::Optional<std::vector<webrtc::RtpExtension>>& rtp_extensions, |
257 const VideoSendParameters& send_params); | 257 const VideoSendParameters& send_params); |
258 virtual ~WebRtcVideoSendStream(); | 258 virtual ~WebRtcVideoSendStream(); |
259 | 259 |
260 void SetSendParameters(const ChangedSendParameters& send_params); | 260 void SetSendParameters(const ChangedSendParameters& send_params); |
261 bool SetRtpParameters(const webrtc::RtpParameters& parameters); | 261 bool SetRtpParameters(const webrtc::RtpParameters& parameters); |
262 webrtc::RtpParameters GetRtpParameters() const; | 262 webrtc::RtpParameters GetRtpParameters() const; |
263 | 263 |
264 // Implements rtc::VideoSourceInterface<webrtc::VideoFrame>. | 264 // Implements rtc::VideoSourceInterface<webrtc::VideoFrame>. |
265 // WebRtcVideoSendStream acts as a source to the webrtc::VideoSendStream | 265 // WebRtcVideoSendStream acts as a source to the webrtc::VideoSendStream |
266 // in |stream_|. The reason is that WebRtcVideoSendStream receives | 266 // in |stream_|. |
267 // cricket::VideoFrames and forwards webrtc::VideoFrames to |source_|. | |
268 // TODO(perkj, nisse): Refactor WebRtcVideoSendStream to directly connect | 267 // TODO(perkj, nisse): Refactor WebRtcVideoSendStream to directly connect |
269 // the camera input |source_| | 268 // the camera input |source_| |
270 void AddOrUpdateSink(VideoSinkInterface<webrtc::VideoFrame>* sink, | 269 void AddOrUpdateSink(VideoSinkInterface<webrtc::VideoFrame>* sink, |
271 const rtc::VideoSinkWants& wants) override; | 270 const rtc::VideoSinkWants& wants) override; |
272 void RemoveSink(VideoSinkInterface<webrtc::VideoFrame>* sink) override; | 271 void RemoveSink(VideoSinkInterface<webrtc::VideoFrame>* sink) override; |
273 | 272 |
274 void OnFrame(const cricket::VideoFrame& frame) override; | 273 void OnFrame(const webrtc::VideoFrame& frame) override; |
275 bool SetVideoSend(bool mute, | 274 bool SetVideoSend(bool mute, |
276 const VideoOptions* options, | 275 const VideoOptions* options, |
277 rtc::VideoSourceInterface<cricket::VideoFrame>* source); | 276 rtc::VideoSourceInterface<webrtc::VideoFrame>* source); |
278 void DisconnectSource(); | 277 void DisconnectSource(); |
279 | 278 |
280 void SetSend(bool send); | 279 void SetSend(bool send); |
281 | 280 |
282 // Implements webrtc::LoadObserver. | 281 // Implements webrtc::LoadObserver. |
283 void OnLoadUpdate(Load load) override; | 282 void OnLoadUpdate(Load load) override; |
284 | 283 |
285 const std::vector<uint32_t>& GetSsrcs() const; | 284 const std::vector<uint32_t>& GetSsrcs() const; |
286 VideoSenderInfo GetVideoSenderInfo(bool log_stats); | 285 VideoSenderInfo GetVideoSenderInfo(bool log_stats); |
287 void FillBandwidthEstimationInfo(BandwidthEstimationInfo* bwe_info); | 286 void FillBandwidthEstimationInfo(BandwidthEstimationInfo* bwe_info); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 // Counter used for deciding if the video resolution is currently | 359 // Counter used for deciding if the video resolution is currently |
361 // restricted by CPU usage. It is reset if |source_| is changed. | 360 // restricted by CPU usage. It is reset if |source_| is changed. |
362 int cpu_restricted_counter_; | 361 int cpu_restricted_counter_; |
363 // Total number of times resolution as been requested to be changed due to | 362 // Total number of times resolution as been requested to be changed due to |
364 // CPU adaptation. | 363 // CPU adaptation. |
365 int number_of_cpu_adapt_changes_ ACCESS_ON(&thread_checker_); | 364 int number_of_cpu_adapt_changes_ ACCESS_ON(&thread_checker_); |
366 // Total number of frames sent to |stream_|. | 365 // Total number of frames sent to |stream_|. |
367 int frame_count_ GUARDED_BY(lock_); | 366 int frame_count_ GUARDED_BY(lock_); |
368 // Total number of cpu restricted frames sent to |stream_|. | 367 // Total number of cpu restricted frames sent to |stream_|. |
369 int cpu_restricted_frame_count_ GUARDED_BY(lock_); | 368 int cpu_restricted_frame_count_ GUARDED_BY(lock_); |
370 rtc::VideoSourceInterface<cricket::VideoFrame>* source_ | 369 rtc::VideoSourceInterface<webrtc::VideoFrame>* source_ |
371 ACCESS_ON(&thread_checker_); | 370 ACCESS_ON(&thread_checker_); |
372 WebRtcVideoEncoderFactory* const external_encoder_factory_ | 371 WebRtcVideoEncoderFactory* const external_encoder_factory_ |
373 ACCESS_ON(&thread_checker_); | 372 ACCESS_ON(&thread_checker_); |
374 | 373 |
375 rtc::CriticalSection lock_; | 374 rtc::CriticalSection lock_; |
376 webrtc::VideoSendStream* stream_ ACCESS_ON(&thread_checker_); | 375 webrtc::VideoSendStream* stream_ ACCESS_ON(&thread_checker_); |
377 rtc::VideoSinkInterface<webrtc::VideoFrame>* encoder_sink_ | 376 rtc::VideoSinkInterface<webrtc::VideoFrame>* encoder_sink_ |
378 GUARDED_BY(lock_); | 377 GUARDED_BY(lock_); |
379 // Contains settings that are the same for all streams in the MediaChannel, | 378 // Contains settings that are the same for all streams in the MediaChannel, |
380 // such as codecs, header extensions, and the global bitrate limit for the | 379 // such as codecs, header extensions, and the global bitrate limit for the |
381 // entire channel. | 380 // entire channel. |
382 VideoSendStreamParameters parameters_ ACCESS_ON(&thread_checker_); | 381 VideoSendStreamParameters parameters_ ACCESS_ON(&thread_checker_); |
383 // Contains settings that are unique for each stream, such as max_bitrate. | 382 // Contains settings that are unique for each stream, such as max_bitrate. |
384 // Does *not* contain codecs, however. | 383 // Does *not* contain codecs, however. |
385 // TODO(skvlad): Move ssrcs_ and ssrc_groups_ into rtp_parameters_. | 384 // TODO(skvlad): Move ssrcs_ and ssrc_groups_ into rtp_parameters_. |
386 // TODO(skvlad): Combine parameters_ and rtp_parameters_ once we have only | 385 // TODO(skvlad): Combine parameters_ and rtp_parameters_ once we have only |
387 // one stream per MediaChannel. | 386 // one stream per MediaChannel. |
388 webrtc::RtpParameters rtp_parameters_ ACCESS_ON(&thread_checker_); | 387 webrtc::RtpParameters rtp_parameters_ ACCESS_ON(&thread_checker_); |
389 AllocatedEncoder allocated_encoder_ ACCESS_ON(&thread_checker_); | 388 AllocatedEncoder allocated_encoder_ ACCESS_ON(&thread_checker_); |
390 VideoFrameInfo last_frame_info_ GUARDED_BY(lock_); | 389 VideoFrameInfo last_frame_info_ GUARDED_BY(lock_); |
391 | 390 |
392 bool sending_ ACCESS_ON(&thread_checker_); | 391 bool sending_ ACCESS_ON(&thread_checker_); |
393 | 392 |
394 // The timestamp of the last frame received | 393 // The timestamp of the last frame received |
395 // Used to generate timestamp for the black frame when source is removed | 394 // Used to generate timestamp for the black frame when source is removed |
396 int64_t last_frame_timestamp_us_ GUARDED_BY(lock_); | 395 int64_t last_frame_timestamp_us_ GUARDED_BY(lock_); |
397 }; | 396 }; |
398 | 397 |
399 // Wrapper for the receiver part, contains configs etc. that are needed to | 398 // Wrapper for the receiver part, contains configs etc. that are needed to |
400 // reconstruct the underlying VideoReceiveStream. Also serves as a wrapper | 399 // reconstruct the underlying VideoReceiveStream. |
401 // between rtc::VideoSinkInterface<webrtc::VideoFrame> and | |
402 // rtc::VideoSinkInterface<cricket::VideoFrame>. | |
403 class WebRtcVideoReceiveStream | 400 class WebRtcVideoReceiveStream |
404 : public rtc::VideoSinkInterface<webrtc::VideoFrame> { | 401 : public rtc::VideoSinkInterface<webrtc::VideoFrame> { |
405 public: | 402 public: |
406 WebRtcVideoReceiveStream( | 403 WebRtcVideoReceiveStream( |
407 webrtc::Call* call, | 404 webrtc::Call* call, |
408 const StreamParams& sp, | 405 const StreamParams& sp, |
409 webrtc::VideoReceiveStream::Config config, | 406 webrtc::VideoReceiveStream::Config config, |
410 WebRtcVideoDecoderFactory* external_decoder_factory, | 407 WebRtcVideoDecoderFactory* external_decoder_factory, |
411 bool default_stream, | 408 bool default_stream, |
412 const std::vector<VideoCodecSettings>& recv_codecs, | 409 const std::vector<VideoCodecSettings>& recv_codecs, |
413 bool red_disabled_by_remote_side); | 410 bool red_disabled_by_remote_side); |
414 ~WebRtcVideoReceiveStream(); | 411 ~WebRtcVideoReceiveStream(); |
415 | 412 |
416 const std::vector<uint32_t>& GetSsrcs() const; | 413 const std::vector<uint32_t>& GetSsrcs() const; |
417 rtc::Optional<uint32_t> GetFirstPrimarySsrc() const; | 414 rtc::Optional<uint32_t> GetFirstPrimarySsrc() const; |
418 | 415 |
419 void SetLocalSsrc(uint32_t local_ssrc); | 416 void SetLocalSsrc(uint32_t local_ssrc); |
420 // TODO(deadbeef): Move these feedback parameters into the recv parameters. | 417 // TODO(deadbeef): Move these feedback parameters into the recv parameters. |
421 void SetFeedbackParameters(bool nack_enabled, | 418 void SetFeedbackParameters(bool nack_enabled, |
422 bool remb_enabled, | 419 bool remb_enabled, |
423 bool transport_cc_enabled, | 420 bool transport_cc_enabled, |
424 webrtc::RtcpMode rtcp_mode); | 421 webrtc::RtcpMode rtcp_mode); |
425 void SetRecvParameters(const ChangedRecvParameters& recv_params); | 422 void SetRecvParameters(const ChangedRecvParameters& recv_params); |
426 | 423 |
427 void OnFrame(const webrtc::VideoFrame& frame) override; | 424 void OnFrame(const webrtc::VideoFrame& frame) override; |
428 bool IsDefaultStream() const; | 425 bool IsDefaultStream() const; |
429 | 426 |
430 void SetSink(rtc::VideoSinkInterface<cricket::VideoFrame>* sink); | 427 void SetSink(rtc::VideoSinkInterface<webrtc::VideoFrame>* sink); |
431 | 428 |
432 VideoReceiverInfo GetVideoReceiverInfo(bool log_stats); | 429 VideoReceiverInfo GetVideoReceiverInfo(bool log_stats); |
433 | 430 |
434 // Used to disable RED/FEC when the remote description doesn't contain those | 431 // Used to disable RED/FEC when the remote description doesn't contain those |
435 // codecs. This is needed to be able to work around an RTX bug which is only | 432 // codecs. This is needed to be able to work around an RTX bug which is only |
436 // happening if the remote side doesn't send RED, but the local side is | 433 // happening if the remote side doesn't send RED, but the local side is |
437 // configured to receive RED. | 434 // configured to receive RED. |
438 // TODO(holmer): Remove this after a couple of Chrome versions, M53-54 | 435 // TODO(holmer): Remove this after a couple of Chrome versions, M53-54 |
439 // time frame. | 436 // time frame. |
440 void SetUlpfecDisabledRemotely(bool disable); | 437 void SetUlpfecDisabledRemotely(bool disable); |
(...skipping 26 matching lines...) Expand all Loading... |
467 | 464 |
468 webrtc::VideoReceiveStream* stream_; | 465 webrtc::VideoReceiveStream* stream_; |
469 const bool default_stream_; | 466 const bool default_stream_; |
470 webrtc::VideoReceiveStream::Config config_; | 467 webrtc::VideoReceiveStream::Config config_; |
471 bool red_disabled_by_remote_side_; | 468 bool red_disabled_by_remote_side_; |
472 | 469 |
473 WebRtcVideoDecoderFactory* const external_decoder_factory_; | 470 WebRtcVideoDecoderFactory* const external_decoder_factory_; |
474 std::vector<AllocatedDecoder> allocated_decoders_; | 471 std::vector<AllocatedDecoder> allocated_decoders_; |
475 | 472 |
476 rtc::CriticalSection sink_lock_; | 473 rtc::CriticalSection sink_lock_; |
477 rtc::VideoSinkInterface<cricket::VideoFrame>* sink_ GUARDED_BY(sink_lock_); | 474 rtc::VideoSinkInterface<webrtc::VideoFrame>* sink_ GUARDED_BY(sink_lock_); |
478 // Expands remote RTP timestamps to int64_t to be able to estimate how long | 475 // Expands remote RTP timestamps to int64_t to be able to estimate how long |
479 // the stream has been running. | 476 // the stream has been running. |
480 rtc::TimestampWrapAroundHandler timestamp_wraparound_handler_ | 477 rtc::TimestampWrapAroundHandler timestamp_wraparound_handler_ |
481 GUARDED_BY(sink_lock_); | 478 GUARDED_BY(sink_lock_); |
482 int64_t first_frame_timestamp_ GUARDED_BY(sink_lock_); | 479 int64_t first_frame_timestamp_ GUARDED_BY(sink_lock_); |
483 // Start NTP time is estimated as current remote NTP time (estimated from | 480 // Start NTP time is estimated as current remote NTP time (estimated from |
484 // RTCP) minus the elapsed time, as soon as remote NTP time is available. | 481 // RTCP) minus the elapsed time, as soon as remote NTP time is available. |
485 int64_t estimated_remote_start_ntp_time_ms_ GUARDED_BY(sink_lock_); | 482 int64_t estimated_remote_start_ntp_time_ms_ GUARDED_BY(sink_lock_); |
486 }; | 483 }; |
487 | 484 |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 VideoSendParameters send_params_; | 534 VideoSendParameters send_params_; |
538 VideoOptions default_send_options_; | 535 VideoOptions default_send_options_; |
539 VideoRecvParameters recv_params_; | 536 VideoRecvParameters recv_params_; |
540 bool red_disabled_by_remote_side_; | 537 bool red_disabled_by_remote_side_; |
541 int64_t last_stats_log_ms_; | 538 int64_t last_stats_log_ms_; |
542 }; | 539 }; |
543 | 540 |
544 } // namespace cricket | 541 } // namespace cricket |
545 | 542 |
546 #endif // WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_ | 543 #endif // WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_ |
OLD | NEW |