| 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 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 uint8_t pl_type, | 159 uint8_t pl_type, |
| 160 bool internal_source) { | 160 bool internal_source) { |
| 161 if (vcm_->RegisterExternalEncoder(encoder, pl_type, internal_source) != | 161 if (vcm_->RegisterExternalEncoder(encoder, pl_type, internal_source) != |
| 162 VCM_OK) { | 162 VCM_OK) { |
| 163 return -1; | 163 return -1; |
| 164 } | 164 } |
| 165 return 0; | 165 return 0; |
| 166 } | 166 } |
| 167 | 167 |
| 168 int32_t ViEEncoder::DeRegisterExternalEncoder(uint8_t pl_type) { | 168 int32_t ViEEncoder::DeRegisterExternalEncoder(uint8_t pl_type) { |
| 169 if (vcm_->RegisterExternalEncoder(NULL, pl_type) != VCM_OK) { | 169 if (vcm_->RegisterExternalEncoder(nullptr, pl_type) != VCM_OK) { |
| 170 return -1; | 170 return -1; |
| 171 } | 171 } |
| 172 return 0; | 172 return 0; |
| 173 } | 173 } |
| 174 void ViEEncoder::SetEncoder(const webrtc::VideoCodec& video_codec, | 174 void ViEEncoder::SetEncoder(const webrtc::VideoCodec& video_codec, |
| 175 int min_transmit_bitrate_bps) { | 175 int min_transmit_bitrate_bps) { |
| 176 RTC_DCHECK(send_payload_router_ != NULL); | 176 RTC_DCHECK(send_payload_router_); |
| 177 // Setting target width and height for VPM. | 177 // Setting target width and height for VPM. |
| 178 RTC_CHECK_EQ(VPM_OK, | 178 RTC_CHECK_EQ(VPM_OK, |
| 179 vp_->SetTargetResolution(video_codec.width, video_codec.height, | 179 vp_->SetTargetResolution(video_codec.width, video_codec.height, |
| 180 video_codec.maxFramerate)); | 180 video_codec.maxFramerate)); |
| 181 | 181 |
| 182 // Cache codec before calling AddBitrateObserver (which calls OnBitrateUpdated | 182 // Cache codec before calling AddBitrateObserver (which calls OnBitrateUpdated |
| 183 // that makes use of the number of simulcast streams configured). | 183 // that makes use of the number of simulcast streams configured). |
| 184 { | 184 { |
| 185 rtc::CritScope lock(&data_cs_); | 185 rtc::CritScope lock(&data_cs_); |
| 186 encoder_config_ = video_codec; | 186 encoder_config_ = video_codec; |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 return; | 327 return; |
| 328 } | 328 } |
| 329 TraceFrameDropEnd(); | 329 TraceFrameDropEnd(); |
| 330 codec_type = encoder_config_.codecType; | 330 codec_type = encoder_config_.codecType; |
| 331 } | 331 } |
| 332 | 332 |
| 333 TRACE_EVENT_ASYNC_STEP0("webrtc", "Video", video_frame.render_time_ms(), | 333 TRACE_EVENT_ASYNC_STEP0("webrtc", "Video", video_frame.render_time_ms(), |
| 334 "Encode"); | 334 "Encode"); |
| 335 const VideoFrame* frame_to_send = &video_frame; | 335 const VideoFrame* frame_to_send = &video_frame; |
| 336 // TODO(wuchengli): support texture frames. | 336 // TODO(wuchengli): support texture frames. |
| 337 if (video_frame.native_handle() == NULL) { | 337 if (!video_frame.native_handle()) { |
| 338 // Pass frame via preprocessor. | 338 // Pass frame via preprocessor. |
| 339 frame_to_send = vp_->PreprocessFrame(video_frame); | 339 frame_to_send = vp_->PreprocessFrame(video_frame); |
| 340 if (!frame_to_send) { | 340 if (!frame_to_send) { |
| 341 // Drop this frame, or there was an error processing it. | 341 // Drop this frame, or there was an error processing it. |
| 342 return; | 342 return; |
| 343 } | 343 } |
| 344 } | 344 } |
| 345 | 345 |
| 346 // If we haven't resampled the frame and we have a FrameCallback, we need to | 346 // If we haven't resampled the frame and we have a FrameCallback, we need to |
| 347 // make a deep copy of |video_frame|. | 347 // make a deep copy of |video_frame|. |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 | 405 |
| 406 void ViEEncoder::OnSetRates(uint32_t bitrate_bps, int framerate) { | 406 void ViEEncoder::OnSetRates(uint32_t bitrate_bps, int framerate) { |
| 407 if (stats_proxy_) | 407 if (stats_proxy_) |
| 408 stats_proxy_->OnSetRates(bitrate_bps, framerate); | 408 stats_proxy_->OnSetRates(bitrate_bps, framerate); |
| 409 } | 409 } |
| 410 | 410 |
| 411 int32_t ViEEncoder::SendData(const uint8_t payload_type, | 411 int32_t ViEEncoder::SendData(const uint8_t payload_type, |
| 412 const EncodedImage& encoded_image, | 412 const EncodedImage& encoded_image, |
| 413 const RTPFragmentationHeader* fragmentation_header, | 413 const RTPFragmentationHeader* fragmentation_header, |
| 414 const RTPVideoHeader* rtp_video_hdr) { | 414 const RTPVideoHeader* rtp_video_hdr) { |
| 415 RTC_DCHECK(send_payload_router_ != NULL); | 415 RTC_DCHECK(send_payload_router_); |
| 416 | 416 |
| 417 { | 417 { |
| 418 rtc::CritScope lock(&data_cs_); | 418 rtc::CritScope lock(&data_cs_); |
| 419 time_of_last_frame_activity_ms_ = TickTime::MillisecondTimestamp(); | 419 time_of_last_frame_activity_ms_ = TickTime::MillisecondTimestamp(); |
| 420 } | 420 } |
| 421 | 421 |
| 422 if (stats_proxy_ != NULL) | 422 if (stats_proxy_) |
| 423 stats_proxy_->OnSendEncodedImage(encoded_image, rtp_video_hdr); | 423 stats_proxy_->OnSendEncodedImage(encoded_image, rtp_video_hdr); |
| 424 | 424 |
| 425 bool success = send_payload_router_->RoutePayload( | 425 bool success = send_payload_router_->RoutePayload( |
| 426 encoded_image._frameType, payload_type, encoded_image._timeStamp, | 426 encoded_image._frameType, payload_type, encoded_image._timeStamp, |
| 427 encoded_image.capture_time_ms_, encoded_image._buffer, | 427 encoded_image.capture_time_ms_, encoded_image._buffer, |
| 428 encoded_image._length, fragmentation_header, rtp_video_hdr); | 428 encoded_image._length, fragmentation_header, rtp_video_hdr); |
| 429 overuse_detector_->FrameSent(encoded_image._timeStamp); | 429 overuse_detector_->FrameSent(encoded_image._timeStamp); |
| 430 return success ? 0 : -1; | 430 return success ? 0 : -1; |
| 431 } | 431 } |
| 432 | 432 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 478 } | 478 } |
| 479 RTC_NOTREACHED() << "Should not receive keyframe requests on unknown SSRCs."; | 479 RTC_NOTREACHED() << "Should not receive keyframe requests on unknown SSRCs."; |
| 480 } | 480 } |
| 481 | 481 |
| 482 void ViEEncoder::OnBitrateUpdated(uint32_t bitrate_bps, | 482 void ViEEncoder::OnBitrateUpdated(uint32_t bitrate_bps, |
| 483 uint8_t fraction_lost, | 483 uint8_t fraction_lost, |
| 484 int64_t round_trip_time_ms) { | 484 int64_t round_trip_time_ms) { |
| 485 LOG(LS_VERBOSE) << "OnBitrateUpdated, bitrate" << bitrate_bps | 485 LOG(LS_VERBOSE) << "OnBitrateUpdated, bitrate" << bitrate_bps |
| 486 << " packet loss " << static_cast<int>(fraction_lost) | 486 << " packet loss " << static_cast<int>(fraction_lost) |
| 487 << " rtt " << round_trip_time_ms; | 487 << " rtt " << round_trip_time_ms; |
| 488 RTC_DCHECK(send_payload_router_ != NULL); | 488 RTC_DCHECK(send_payload_router_); |
| 489 vcm_->SetChannelParameters(bitrate_bps, fraction_lost, round_trip_time_ms); | 489 vcm_->SetChannelParameters(bitrate_bps, fraction_lost, round_trip_time_ms); |
| 490 bool video_is_suspended = vcm_->VideoSuspended(); | 490 bool video_is_suspended = vcm_->VideoSuspended(); |
| 491 bool video_suspension_changed; | 491 bool video_suspension_changed; |
| 492 VideoCodec send_codec; | 492 VideoCodec send_codec; |
| 493 { | 493 { |
| 494 rtc::CritScope lock(&data_cs_); | 494 rtc::CritScope lock(&data_cs_); |
| 495 last_observed_bitrate_bps_ = bitrate_bps; | 495 last_observed_bitrate_bps_ = bitrate_bps; |
| 496 video_suspension_changed = video_suspended_ != video_is_suspended; | 496 video_suspension_changed = video_suspended_ != video_is_suspended; |
| 497 video_suspended_ = video_is_suspended; | 497 video_suspended_ = video_is_suspended; |
| 498 send_codec = encoder_config_; | 498 send_codec = encoder_config_; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 530 const uint32_t width, | 530 const uint32_t width, |
| 531 const uint32_t height) { | 531 const uint32_t height) { |
| 532 return vp_->SetTargetResolution(width, height, frame_rate); | 532 return vp_->SetTargetResolution(width, height, frame_rate); |
| 533 } | 533 } |
| 534 | 534 |
| 535 void QMVideoSettingsCallback::SetTargetFramerate(int frame_rate) { | 535 void QMVideoSettingsCallback::SetTargetFramerate(int frame_rate) { |
| 536 vp_->SetTargetFramerate(frame_rate); | 536 vp_->SetTargetFramerate(frame_rate); |
| 537 } | 537 } |
| 538 | 538 |
| 539 } // namespace webrtc | 539 } // namespace webrtc |
| OLD | NEW |