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 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 static const bool kEnableFrameRecording = false; | 131 static const bool kEnableFrameRecording = false; |
132 static const int kMaxLayers = 3; | 132 static const int kMaxLayers = 3; |
133 std::unique_ptr<IvfFileWriter> file_writers_[kMaxLayers]; | 133 std::unique_ptr<IvfFileWriter> file_writers_[kMaxLayers]; |
134 | 134 |
135 rtc::PlatformThread encoder_thread_; | 135 rtc::PlatformThread encoder_thread_; |
136 rtc::Event encoder_wakeup_event_; | 136 rtc::Event encoder_wakeup_event_; |
137 volatile int stop_encoder_thread_; | 137 volatile int stop_encoder_thread_; |
138 rtc::CriticalSection encoder_settings_crit_; | 138 rtc::CriticalSection encoder_settings_crit_; |
139 std::unique_ptr<EncoderSettings> pending_encoder_settings_ | 139 std::unique_ptr<EncoderSettings> pending_encoder_settings_ |
140 GUARDED_BY(encoder_settings_crit_); | 140 GUARDED_BY(encoder_settings_crit_); |
| 141 |
| 142 enum class State { |
| 143 kStopped, // VideoSendStream::Start has not yet been called. |
| 144 kStarted, // VideoSendStream::Start has been called. |
| 145 // VideoSendStream::Start has been called but the encoder have timed out. |
| 146 kEncoderTimedOut, |
| 147 }; |
| 148 rtc::Optional<State> pending_state_change_ GUARDED_BY(encoder_settings_crit_); |
| 149 |
141 // Only used on the encoder thread. | 150 // Only used on the encoder thread. |
142 bool send_stream_registered_as_observer_; | 151 rtc::ThreadChecker encoder_thread_checker_; |
143 std::unique_ptr<EncoderSettings> current_encoder_settings_; | 152 State state_ ACCESS_ON(&encoder_thread_checker_); |
| 153 std::unique_ptr<EncoderSettings> current_encoder_settings_ |
| 154 ACCESS_ON(&encoder_thread_checker_); |
144 | 155 |
145 OveruseFrameDetector overuse_detector_; | 156 OveruseFrameDetector overuse_detector_; |
146 ViEEncoder vie_encoder_; | 157 ViEEncoder vie_encoder_; |
147 EncoderStateFeedback encoder_feedback_; | 158 EncoderStateFeedback encoder_feedback_; |
148 ProtectionBitrateCalculator protection_bitrate_calculator_; | 159 ProtectionBitrateCalculator protection_bitrate_calculator_; |
149 | 160 |
150 vcm::VideoSender* const video_sender_; | 161 vcm::VideoSender* const video_sender_; |
151 | 162 |
152 const std::unique_ptr<RtcpBandwidthObserver> bandwidth_observer_; | 163 const std::unique_ptr<RtcpBandwidthObserver> bandwidth_observer_; |
153 // RtpRtcp modules, declared here as they use other members on construction. | 164 // RtpRtcp modules, declared here as they use other members on construction. |
154 const std::vector<RtpRtcp*> rtp_rtcp_modules_; | 165 const std::vector<RtpRtcp*> rtp_rtcp_modules_; |
155 PayloadRouter payload_router_; | 166 PayloadRouter payload_router_; |
156 VideoCaptureInput input_; | 167 VideoCaptureInput input_; |
157 }; | 168 }; |
158 } // namespace internal | 169 } // namespace internal |
159 } // namespace webrtc | 170 } // namespace webrtc |
160 | 171 |
161 #endif // WEBRTC_VIDEO_VIDEO_SEND_STREAM_H_ | 172 #endif // WEBRTC_VIDEO_VIDEO_SEND_STREAM_H_ |
OLD | NEW |