| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 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 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 std::string ToString(const std::vector<int>& counters) const; | 210 std::string ToString(const std::vector<int>& counters) const; |
| 211 int Count(const std::vector<int>& counters) const; | 211 int Count(const std::vector<int>& counters) const; |
| 212 void MoveCount(std::vector<int>* counters, int from_reason); | 212 void MoveCount(std::vector<int>* counters, int from_reason); |
| 213 | 213 |
| 214 // Degradation counters holding number of framerate/resolution reductions | 214 // Degradation counters holding number of framerate/resolution reductions |
| 215 // per adapt reason. | 215 // per adapt reason. |
| 216 std::vector<int> fps_counters_; | 216 std::vector<int> fps_counters_; |
| 217 std::vector<int> resolution_counters_; | 217 std::vector<int> resolution_counters_; |
| 218 }; | 218 }; |
| 219 | 219 |
| 220 AdaptCounter& GetAdaptCounter() RUN_ON(&encoder_queue_); | 220 AdaptCounter& GetAdaptCounter() RTC_RUN_ON(&encoder_queue_); |
| 221 const AdaptCounter& GetConstAdaptCounter() RUN_ON(&encoder_queue_); | 221 const AdaptCounter& GetConstAdaptCounter() RTC_RUN_ON(&encoder_queue_); |
| 222 void UpdateAdaptationStats(AdaptReason reason) RUN_ON(&encoder_queue_); | 222 void UpdateAdaptationStats(AdaptReason reason) RTC_RUN_ON(&encoder_queue_); |
| 223 AdaptCounts GetActiveCounts(AdaptReason reason) RUN_ON(&encoder_queue_); | 223 AdaptCounts GetActiveCounts(AdaptReason reason) RTC_RUN_ON(&encoder_queue_); |
| 224 | 224 |
| 225 rtc::Event shutdown_event_; | 225 rtc::Event shutdown_event_; |
| 226 | 226 |
| 227 const uint32_t number_of_cores_; | 227 const uint32_t number_of_cores_; |
| 228 // Counts how many frames we've dropped in the initial rampup phase. | 228 // Counts how many frames we've dropped in the initial rampup phase. |
| 229 int initial_rampup_; | 229 int initial_rampup_; |
| 230 | 230 |
| 231 const std::unique_ptr<VideoSourceProxy> source_proxy_; | 231 const std::unique_ptr<VideoSourceProxy> source_proxy_; |
| 232 EncoderSink* sink_; | 232 EncoderSink* sink_; |
| 233 const VideoSendStream::Config::EncoderSettings settings_; | 233 const VideoSendStream::Config::EncoderSettings settings_; |
| 234 const VideoCodecType codec_type_; | 234 const VideoCodecType codec_type_; |
| 235 | 235 |
| 236 vcm::VideoSender video_sender_ ACCESS_ON(&encoder_queue_); | 236 vcm::VideoSender video_sender_ RTC_ACCESS_ON(&encoder_queue_); |
| 237 std::unique_ptr<OveruseFrameDetector> overuse_detector_ | 237 std::unique_ptr<OveruseFrameDetector> overuse_detector_ |
| 238 ACCESS_ON(&encoder_queue_); | 238 RTC_ACCESS_ON(&encoder_queue_); |
| 239 std::unique_ptr<QualityScaler> quality_scaler_ ACCESS_ON(&encoder_queue_); | 239 std::unique_ptr<QualityScaler> quality_scaler_ RTC_ACCESS_ON(&encoder_queue_); |
| 240 | 240 |
| 241 SendStatisticsProxy* const stats_proxy_; | 241 SendStatisticsProxy* const stats_proxy_; |
| 242 rtc::VideoSinkInterface<VideoFrame>* const pre_encode_callback_; | 242 rtc::VideoSinkInterface<VideoFrame>* const pre_encode_callback_; |
| 243 ProcessThread* module_process_thread_; | 243 ProcessThread* module_process_thread_; |
| 244 rtc::ThreadChecker module_process_thread_checker_; | 244 rtc::ThreadChecker module_process_thread_checker_; |
| 245 // |thread_checker_| checks that public methods that are related to lifetime | 245 // |thread_checker_| checks that public methods that are related to lifetime |
| 246 // of VideoStreamEncoder are called on the same thread. | 246 // of VideoStreamEncoder are called on the same thread. |
| 247 rtc::ThreadChecker thread_checker_; | 247 rtc::ThreadChecker thread_checker_; |
| 248 | 248 |
| 249 VideoEncoderConfig encoder_config_ ACCESS_ON(&encoder_queue_); | 249 VideoEncoderConfig encoder_config_ RTC_ACCESS_ON(&encoder_queue_); |
| 250 std::unique_ptr<VideoBitrateAllocator> rate_allocator_ | 250 std::unique_ptr<VideoBitrateAllocator> rate_allocator_ |
| 251 ACCESS_ON(&encoder_queue_); | 251 RTC_ACCESS_ON(&encoder_queue_); |
| 252 // The maximum frame rate of the current codec configuration, as determined | 252 // The maximum frame rate of the current codec configuration, as determined |
| 253 // at the last ReconfigureEncoder() call. | 253 // at the last ReconfigureEncoder() call. |
| 254 int max_framerate_ ACCESS_ON(&encoder_queue_); | 254 int max_framerate_ RTC_ACCESS_ON(&encoder_queue_); |
| 255 | 255 |
| 256 // Set when ConfigureEncoder has been called in order to lazy reconfigure the | 256 // Set when ConfigureEncoder has been called in order to lazy reconfigure the |
| 257 // encoder on the next frame. | 257 // encoder on the next frame. |
| 258 bool pending_encoder_reconfiguration_ ACCESS_ON(&encoder_queue_); | 258 bool pending_encoder_reconfiguration_ RTC_ACCESS_ON(&encoder_queue_); |
| 259 rtc::Optional<VideoFrameInfo> last_frame_info_ ACCESS_ON(&encoder_queue_); | 259 rtc::Optional<VideoFrameInfo> last_frame_info_ RTC_ACCESS_ON(&encoder_queue_); |
| 260 int crop_width_ ACCESS_ON(&encoder_queue_); | 260 int crop_width_ RTC_ACCESS_ON(&encoder_queue_); |
| 261 int crop_height_ ACCESS_ON(&encoder_queue_); | 261 int crop_height_ RTC_ACCESS_ON(&encoder_queue_); |
| 262 uint32_t encoder_start_bitrate_bps_ ACCESS_ON(&encoder_queue_); | 262 uint32_t encoder_start_bitrate_bps_ RTC_ACCESS_ON(&encoder_queue_); |
| 263 size_t max_data_payload_length_ ACCESS_ON(&encoder_queue_); | 263 size_t max_data_payload_length_ RTC_ACCESS_ON(&encoder_queue_); |
| 264 bool nack_enabled_ ACCESS_ON(&encoder_queue_); | 264 bool nack_enabled_ RTC_ACCESS_ON(&encoder_queue_); |
| 265 uint32_t last_observed_bitrate_bps_ ACCESS_ON(&encoder_queue_); | 265 uint32_t last_observed_bitrate_bps_ RTC_ACCESS_ON(&encoder_queue_); |
| 266 bool encoder_paused_and_dropped_frame_ ACCESS_ON(&encoder_queue_); | 266 bool encoder_paused_and_dropped_frame_ RTC_ACCESS_ON(&encoder_queue_); |
| 267 Clock* const clock_; | 267 Clock* const clock_; |
| 268 // Counters used for deciding if the video resolution or framerate is | 268 // Counters used for deciding if the video resolution or framerate is |
| 269 // currently restricted, and if so, why, on a per degradation preference | 269 // currently restricted, and if so, why, on a per degradation preference |
| 270 // basis. | 270 // basis. |
| 271 // TODO(sprang): Replace this with a state holding a relative overuse measure | 271 // TODO(sprang): Replace this with a state holding a relative overuse measure |
| 272 // instead, that can be translated into suitable down-scale or fps limit. | 272 // instead, that can be translated into suitable down-scale or fps limit. |
| 273 std::map<const VideoSendStream::DegradationPreference, AdaptCounter> | 273 std::map<const VideoSendStream::DegradationPreference, AdaptCounter> |
| 274 adapt_counters_ ACCESS_ON(&encoder_queue_); | 274 adapt_counters_ RTC_ACCESS_ON(&encoder_queue_); |
| 275 // Set depending on degradation preferences. | 275 // Set depending on degradation preferences. |
| 276 VideoSendStream::DegradationPreference degradation_preference_ | 276 VideoSendStream::DegradationPreference degradation_preference_ |
| 277 ACCESS_ON(&encoder_queue_); | 277 RTC_ACCESS_ON(&encoder_queue_); |
| 278 | 278 |
| 279 struct AdaptationRequest { | 279 struct AdaptationRequest { |
| 280 // The pixel count produced by the source at the time of the adaptation. | 280 // The pixel count produced by the source at the time of the adaptation. |
| 281 int input_pixel_count_; | 281 int input_pixel_count_; |
| 282 // Framerate received from the source at the time of the adaptation. | 282 // Framerate received from the source at the time of the adaptation. |
| 283 int framerate_fps_; | 283 int framerate_fps_; |
| 284 // Indicates if request was to adapt up or down. | 284 // Indicates if request was to adapt up or down. |
| 285 enum class Mode { kAdaptUp, kAdaptDown } mode_; | 285 enum class Mode { kAdaptUp, kAdaptDown } mode_; |
| 286 }; | 286 }; |
| 287 // Stores a snapshot of the last adaptation request triggered by an AdaptUp | 287 // Stores a snapshot of the last adaptation request triggered by an AdaptUp |
| 288 // or AdaptDown signal. | 288 // or AdaptDown signal. |
| 289 rtc::Optional<AdaptationRequest> last_adaptation_request_ | 289 rtc::Optional<AdaptationRequest> last_adaptation_request_ |
| 290 ACCESS_ON(&encoder_queue_); | 290 RTC_ACCESS_ON(&encoder_queue_); |
| 291 | 291 |
| 292 rtc::RaceChecker incoming_frame_race_checker_ | 292 rtc::RaceChecker incoming_frame_race_checker_ |
| 293 GUARDED_BY(incoming_frame_race_checker_); | 293 RTC_GUARDED_BY(incoming_frame_race_checker_); |
| 294 Atomic32 posted_frames_waiting_for_encode_; | 294 Atomic32 posted_frames_waiting_for_encode_; |
| 295 // Used to make sure incoming time stamp is increasing for every frame. | 295 // Used to make sure incoming time stamp is increasing for every frame. |
| 296 int64_t last_captured_timestamp_ GUARDED_BY(incoming_frame_race_checker_); | 296 int64_t last_captured_timestamp_ RTC_GUARDED_BY(incoming_frame_race_checker_); |
| 297 // Delta used for translating between NTP and internal timestamps. | 297 // Delta used for translating between NTP and internal timestamps. |
| 298 const int64_t delta_ntp_internal_ms_ GUARDED_BY(incoming_frame_race_checker_); | 298 const int64_t delta_ntp_internal_ms_ |
| 299 RTC_GUARDED_BY(incoming_frame_race_checker_); |
| 299 | 300 |
| 300 int64_t last_frame_log_ms_ GUARDED_BY(incoming_frame_race_checker_); | 301 int64_t last_frame_log_ms_ RTC_GUARDED_BY(incoming_frame_race_checker_); |
| 301 int captured_frame_count_ ACCESS_ON(&encoder_queue_); | 302 int captured_frame_count_ RTC_ACCESS_ON(&encoder_queue_); |
| 302 int dropped_frame_count_ ACCESS_ON(&encoder_queue_); | 303 int dropped_frame_count_ RTC_ACCESS_ON(&encoder_queue_); |
| 303 | 304 |
| 304 VideoBitrateAllocationObserver* bitrate_observer_ ACCESS_ON(&encoder_queue_); | 305 VideoBitrateAllocationObserver* bitrate_observer_ |
| 305 rtc::Optional<int64_t> last_parameters_update_ms_ ACCESS_ON(&encoder_queue_); | 306 RTC_ACCESS_ON(&encoder_queue_); |
| 307 rtc::Optional<int64_t> last_parameters_update_ms_ |
| 308 RTC_ACCESS_ON(&encoder_queue_); |
| 306 | 309 |
| 307 // All public methods are proxied to |encoder_queue_|. It must must be | 310 // All public methods are proxied to |encoder_queue_|. It must must be |
| 308 // destroyed first to make sure no tasks are run that use other members. | 311 // destroyed first to make sure no tasks are run that use other members. |
| 309 rtc::TaskQueue encoder_queue_; | 312 rtc::TaskQueue encoder_queue_; |
| 310 | 313 |
| 311 RTC_DISALLOW_COPY_AND_ASSIGN(VideoStreamEncoder); | 314 RTC_DISALLOW_COPY_AND_ASSIGN(VideoStreamEncoder); |
| 312 }; | 315 }; |
| 313 | 316 |
| 314 } // namespace webrtc | 317 } // namespace webrtc |
| 315 | 318 |
| 316 #endif // WEBRTC_VIDEO_VIDEO_STREAM_ENCODER_H_ | 319 #endif // WEBRTC_VIDEO_VIDEO_STREAM_ENCODER_H_ |
| OLD | NEW |