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 16 matching lines...) Expand all Loading... |
27 #include "webrtc/media/engine/webrtcvideoencoderfactory.h" | 27 #include "webrtc/media/engine/webrtcvideoencoderfactory.h" |
28 #include "webrtc/transport.h" | 28 #include "webrtc/transport.h" |
29 #include "webrtc/video_frame.h" | 29 #include "webrtc/video_frame.h" |
30 #include "webrtc/video_receive_stream.h" | 30 #include "webrtc/video_receive_stream.h" |
31 #include "webrtc/video_renderer.h" | 31 #include "webrtc/video_renderer.h" |
32 #include "webrtc/video_send_stream.h" | 32 #include "webrtc/video_send_stream.h" |
33 | 33 |
34 namespace webrtc { | 34 namespace webrtc { |
35 class VideoDecoder; | 35 class VideoDecoder; |
36 class VideoEncoder; | 36 class VideoEncoder; |
| 37 struct MediaConfig; |
37 } | 38 } |
38 | 39 |
39 namespace rtc { | 40 namespace rtc { |
40 class Thread; | 41 class Thread; |
41 } // namespace rtc | 42 } // namespace rtc |
42 | 43 |
43 namespace cricket { | 44 namespace cricket { |
44 | 45 |
45 class VideoCapturer; | 46 class VideoCapturer; |
46 class VideoFrame; | 47 class VideoFrame; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 // WebRtcVideoEngine2 is used for the new native WebRTC Video API (webrtc:1667). | 92 // WebRtcVideoEngine2 is used for the new native WebRTC Video API (webrtc:1667). |
92 class WebRtcVideoEngine2 { | 93 class WebRtcVideoEngine2 { |
93 public: | 94 public: |
94 WebRtcVideoEngine2(); | 95 WebRtcVideoEngine2(); |
95 ~WebRtcVideoEngine2(); | 96 ~WebRtcVideoEngine2(); |
96 | 97 |
97 // Basic video engine implementation. | 98 // Basic video engine implementation. |
98 void Init(); | 99 void Init(); |
99 | 100 |
100 WebRtcVideoChannel2* CreateChannel(webrtc::Call* call, | 101 WebRtcVideoChannel2* CreateChannel(webrtc::Call* call, |
| 102 const MediaConfig& config, |
101 const VideoOptions& options); | 103 const VideoOptions& options); |
102 | 104 |
103 const std::vector<VideoCodec>& codecs() const; | 105 const std::vector<VideoCodec>& codecs() const; |
104 RtpCapabilities GetCapabilities() const; | 106 RtpCapabilities GetCapabilities() const; |
105 | 107 |
106 // Set a WebRtcVideoDecoderFactory for external decoding. Video engine does | 108 // Set a WebRtcVideoDecoderFactory for external decoding. Video engine does |
107 // not take the ownership of |decoder_factory|. The caller needs to make sure | 109 // not take the ownership of |decoder_factory|. The caller needs to make sure |
108 // that |decoder_factory| outlives the video engine. | 110 // that |decoder_factory| outlives the video engine. |
109 void SetExternalDecoderFactory(WebRtcVideoDecoderFactory* decoder_factory); | 111 void SetExternalDecoderFactory(WebRtcVideoDecoderFactory* decoder_factory); |
110 // Set a WebRtcVideoEncoderFactory for external encoding. Video engine does | 112 // Set a WebRtcVideoEncoderFactory for external encoding. Video engine does |
(...skipping 12 matching lines...) Expand all Loading... |
123 WebRtcVideoDecoderFactory* external_decoder_factory_; | 125 WebRtcVideoDecoderFactory* external_decoder_factory_; |
124 WebRtcVideoEncoderFactory* external_encoder_factory_; | 126 WebRtcVideoEncoderFactory* external_encoder_factory_; |
125 rtc::scoped_ptr<WebRtcVideoEncoderFactory> simulcast_encoder_factory_; | 127 rtc::scoped_ptr<WebRtcVideoEncoderFactory> simulcast_encoder_factory_; |
126 }; | 128 }; |
127 | 129 |
128 class WebRtcVideoChannel2 : public VideoMediaChannel, | 130 class WebRtcVideoChannel2 : public VideoMediaChannel, |
129 public webrtc::Transport, | 131 public webrtc::Transport, |
130 public webrtc::LoadObserver { | 132 public webrtc::LoadObserver { |
131 public: | 133 public: |
132 WebRtcVideoChannel2(webrtc::Call* call, | 134 WebRtcVideoChannel2(webrtc::Call* call, |
| 135 const MediaConfig& config, |
133 const VideoOptions& options, | 136 const VideoOptions& options, |
134 const std::vector<VideoCodec>& recv_codecs, | 137 const std::vector<VideoCodec>& recv_codecs, |
135 WebRtcVideoEncoderFactory* external_encoder_factory, | 138 WebRtcVideoEncoderFactory* external_encoder_factory, |
136 WebRtcVideoDecoderFactory* external_decoder_factory); | 139 WebRtcVideoDecoderFactory* external_decoder_factory); |
137 ~WebRtcVideoChannel2() override; | 140 ~WebRtcVideoChannel2() override; |
138 | 141 |
139 // VideoMediaChannel implementation | 142 // VideoMediaChannel implementation |
| 143 rtc::DiffServCodePoint PreferredDscp() const override; |
| 144 |
140 bool SetSendParameters(const VideoSendParameters& params) override; | 145 bool SetSendParameters(const VideoSendParameters& params) override; |
141 bool SetRecvParameters(const VideoRecvParameters& params) override; | 146 bool SetRecvParameters(const VideoRecvParameters& params) override; |
142 bool GetSendCodec(VideoCodec* send_codec) override; | 147 bool GetSendCodec(VideoCodec* send_codec) override; |
143 bool SetSend(bool send) override; | 148 bool SetSend(bool send) override; |
144 bool SetVideoSend(uint32_t ssrc, | 149 bool SetVideoSend(uint32_t ssrc, |
145 bool mute, | 150 bool mute, |
146 const VideoOptions* options) override; | 151 const VideoOptions* options) override; |
147 bool AddSendStream(const StreamParams& sp) override; | 152 bool AddSendStream(const StreamParams& sp) override; |
148 bool RemoveSendStream(uint32_t ssrc) override; | 153 bool RemoveSendStream(uint32_t ssrc) override; |
149 bool AddRecvStream(const StreamParams& sp) override; | 154 bool AddRecvStream(const StreamParams& sp) override; |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 | 477 |
473 uint32_t rtcp_receiver_report_ssrc_; | 478 uint32_t rtcp_receiver_report_ssrc_; |
474 bool sending_; | 479 bool sending_; |
475 webrtc::Call* const call_; | 480 webrtc::Call* const call_; |
476 | 481 |
477 uint32_t default_send_ssrc_; | 482 uint32_t default_send_ssrc_; |
478 | 483 |
479 DefaultUnsignalledSsrcHandler default_unsignalled_ssrc_handler_; | 484 DefaultUnsignalledSsrcHandler default_unsignalled_ssrc_handler_; |
480 UnsignalledSsrcHandler* const unsignalled_ssrc_handler_; | 485 UnsignalledSsrcHandler* const unsignalled_ssrc_handler_; |
481 | 486 |
| 487 const bool signal_cpu_adaptation_; |
| 488 const bool disable_prerenderer_smoothing_; |
| 489 |
482 // Separate list of set capturers used to signal CPU adaptation. These should | 490 // Separate list of set capturers used to signal CPU adaptation. These should |
483 // not be locked while calling methods that take other locks to prevent | 491 // not be locked while calling methods that take other locks to prevent |
484 // lock-order inversions. | 492 // lock-order inversions. |
485 rtc::CriticalSection capturer_crit_; | 493 rtc::CriticalSection capturer_crit_; |
486 bool signal_cpu_adaptation_ GUARDED_BY(capturer_crit_); | |
487 std::map<uint32_t, VideoCapturer*> capturers_ GUARDED_BY(capturer_crit_); | 494 std::map<uint32_t, VideoCapturer*> capturers_ GUARDED_BY(capturer_crit_); |
488 | 495 |
489 rtc::CriticalSection stream_crit_; | 496 rtc::CriticalSection stream_crit_; |
490 // Using primary-ssrc (first ssrc) as key. | 497 // Using primary-ssrc (first ssrc) as key. |
491 std::map<uint32_t, WebRtcVideoSendStream*> send_streams_ | 498 std::map<uint32_t, WebRtcVideoSendStream*> send_streams_ |
492 GUARDED_BY(stream_crit_); | 499 GUARDED_BY(stream_crit_); |
493 std::map<uint32_t, WebRtcVideoReceiveStream*> receive_streams_ | 500 std::map<uint32_t, WebRtcVideoReceiveStream*> receive_streams_ |
494 GUARDED_BY(stream_crit_); | 501 GUARDED_BY(stream_crit_); |
495 std::set<uint32_t> send_ssrcs_ GUARDED_BY(stream_crit_); | 502 std::set<uint32_t> send_ssrcs_ GUARDED_BY(stream_crit_); |
496 std::set<uint32_t> receive_ssrcs_ GUARDED_BY(stream_crit_); | 503 std::set<uint32_t> receive_ssrcs_ GUARDED_BY(stream_crit_); |
497 | 504 |
498 rtc::Optional<VideoCodecSettings> send_codec_; | 505 rtc::Optional<VideoCodecSettings> send_codec_; |
499 std::vector<webrtc::RtpExtension> send_rtp_extensions_; | 506 std::vector<webrtc::RtpExtension> send_rtp_extensions_; |
500 | 507 |
501 WebRtcVideoEncoderFactory* const external_encoder_factory_; | 508 WebRtcVideoEncoderFactory* const external_encoder_factory_; |
502 WebRtcVideoDecoderFactory* const external_decoder_factory_; | 509 WebRtcVideoDecoderFactory* const external_decoder_factory_; |
503 std::vector<VideoCodecSettings> recv_codecs_; | 510 std::vector<VideoCodecSettings> recv_codecs_; |
504 std::vector<webrtc::RtpExtension> recv_rtp_extensions_; | 511 std::vector<webrtc::RtpExtension> recv_rtp_extensions_; |
505 webrtc::Call::Config::BitrateConfig bitrate_config_; | 512 webrtc::Call::Config::BitrateConfig bitrate_config_; |
506 VideoOptions options_; | 513 VideoOptions options_; |
507 // TODO(deadbeef): Don't duplicate information between | 514 // TODO(deadbeef): Don't duplicate information between |
508 // send_params/recv_params, rtp_extensions, options, etc. | 515 // send_params/recv_params, rtp_extensions, options, etc. |
509 VideoSendParameters send_params_; | 516 VideoSendParameters send_params_; |
510 VideoRecvParameters recv_params_; | 517 VideoRecvParameters recv_params_; |
511 }; | 518 }; |
512 | 519 |
513 } // namespace cricket | 520 } // namespace cricket |
514 | 521 |
515 #endif // WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_ | 522 #endif // WEBRTC_MEDIA_ENGINE_WEBRTCVIDEOENGINE2_H_ |
OLD | NEW |