Chromium Code Reviews| Index: webrtc/video/vie_encoder.cc |
| diff --git a/webrtc/video/vie_encoder.cc b/webrtc/video/vie_encoder.cc |
| index 89cbb5285f9c43030605705f80827001ce5d20a9..e4054839253b242f5e8ac54c1e8160377608e583 100644 |
| --- a/webrtc/video/vie_encoder.cc |
| +++ b/webrtc/video/vie_encoder.cc |
| @@ -17,26 +17,18 @@ |
| #include "webrtc/base/checks.h" |
| #include "webrtc/base/logging.h" |
| #include "webrtc/base/trace_event.h" |
| -#include "webrtc/common_video/include/frame_callback.h" |
| -#include "webrtc/common_video/include/video_image.h" |
| -#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" |
| #include "webrtc/modules/pacing/paced_sender.h" |
| -#include "webrtc/modules/utility/include/process_thread.h" |
| -#include "webrtc/modules/video_coding/include/video_codec_interface.h" |
| #include "webrtc/modules/video_coding/include/video_coding.h" |
| #include "webrtc/modules/video_coding/include/video_coding_defines.h" |
| -#include "webrtc/system_wrappers/include/clock.h" |
| #include "webrtc/system_wrappers/include/metrics.h" |
| #include "webrtc/system_wrappers/include/tick_util.h" |
| #include "webrtc/video/overuse_frame_detector.h" |
| -#include "webrtc/video/payload_router.h" |
| #include "webrtc/video/send_statistics_proxy.h" |
| #include "webrtc/video_frame.h" |
| namespace webrtc { |
| static const float kStopPaddingThresholdMs = 2000; |
| -static const int kMinKeyFrameRequestIntervalMs = 300; |
| class QMVideoSettingsCallback : public VCMQMSettingsCallback { |
| public: |
| @@ -54,14 +46,12 @@ class QMVideoSettingsCallback : public VCMQMSettingsCallback { |
| }; |
| ViEEncoder::ViEEncoder(uint32_t number_of_cores, |
| - const std::vector<uint32_t>& ssrcs, |
| ProcessThread* module_process_thread, |
| SendStatisticsProxy* stats_proxy, |
| rtc::VideoSinkInterface<VideoFrame>* pre_encode_callback, |
| OveruseFrameDetector* overuse_detector, |
| PacedSender* pacer) |
| : number_of_cores_(number_of_cores), |
| - ssrcs_(ssrcs), |
| vp_(VideoProcessing::Create()), |
| qm_callback_(new QMVideoSettingsCallback(vp_.get())), |
| video_sender_(Clock::GetRealTimeClock(), this, this, qm_callback_.get()), |
| @@ -76,7 +66,6 @@ ViEEncoder::ViEEncoder(uint32_t number_of_cores, |
| network_is_transmitting_(true), |
| encoder_paused_(true), |
| encoder_paused_and_dropped_frame_(false), |
| - time_last_intra_request_ms_(ssrcs.size(), -1), |
| module_process_thread_(module_process_thread), |
| has_received_sli_(false), |
| picture_id_sli_(0), |
| @@ -169,11 +158,6 @@ void ViEEncoder::SetEncoder(const webrtc::VideoCodec& video_codec, |
| } |
| if (stats_proxy_) { |
| - // Clear stats for disabled layers. |
| - for (size_t i = video_codec.numberOfSimulcastStreams; i < ssrcs_.size(); |
| - ++i) { |
| - stats_proxy_->OnInactiveSsrc(ssrcs_[i]); |
| - } |
| VideoEncoderConfig::ContentType content_type = |
| VideoEncoderConfig::ContentType::kRealtimeVideo; |
| switch (video_codec.mode) { |
| @@ -376,30 +360,6 @@ int32_t ViEEncoder::Encoded(const EncodedImage& encoded_image, |
| } |
| overuse_detector_->FrameSent(encoded_image._timeStamp); |
| - if (kEnableFrameRecording) { |
| - int layer = codec_specific_info->codecType == kVideoCodecVP8 |
| - ? codec_specific_info->codecSpecific.VP8.simulcastIdx |
| - : 0; |
| - IvfFileWriter* file_writer; |
| - { |
| - rtc::CritScope lock(&data_cs_); |
| - if (file_writers_[layer] == nullptr) { |
| - std::ostringstream oss; |
| - oss << "send_bitstream_ssrc"; |
| - for (uint32_t ssrc : ssrcs_) |
| - oss << "_" << ssrc; |
| - oss << "_layer" << layer << ".ivf"; |
| - file_writers_[layer] = |
| - IvfFileWriter::Open(oss.str(), codec_specific_info->codecType); |
| - } |
| - file_writer = file_writers_[layer].get(); |
| - } |
| - if (file_writer) { |
| - bool ok = file_writer->WriteFrame(encoded_image); |
| - RTC_DCHECK(ok); |
| - } |
| - } |
| - |
| return success; |
| } |
| @@ -410,40 +370,23 @@ int32_t ViEEncoder::SendStatistics(const uint32_t bit_rate, |
| return 0; |
| } |
| -void ViEEncoder::OnReceivedSLI(uint32_t /*ssrc*/, |
| - uint8_t picture_id) { |
| +void ViEEncoder::OnReceivedSLI(uint8_t picture_id) { |
| rtc::CritScope lock(&data_cs_); |
| picture_id_sli_ = picture_id; |
| has_received_sli_ = true; |
| } |
| -void ViEEncoder::OnReceivedRPSI(uint32_t /*ssrc*/, |
| - uint64_t picture_id) { |
| +void ViEEncoder::OnReceivedRPSI(uint64_t picture_id) { |
| rtc::CritScope lock(&data_cs_); |
| picture_id_rpsi_ = picture_id; |
| has_received_rpsi_ = true; |
| } |
| -void ViEEncoder::OnReceivedIntraFrameRequest(uint32_t ssrc) { |
| +void ViEEncoder::OnReceivedIntraFrameRequest(int stream_index) { |
| // Key frame request from remote side, signal to VCM. |
| TRACE_EVENT0("webrtc", "OnKeyFrameRequest"); |
| - |
| - for (size_t i = 0; i < ssrcs_.size(); ++i) { |
| - if (ssrcs_[i] != ssrc) |
| - continue; |
| - int64_t now_ms = TickTime::MillisecondTimestamp(); |
| - { |
| - rtc::CritScope lock(&data_cs_); |
| - if (time_last_intra_request_ms_[i] + kMinKeyFrameRequestIntervalMs > |
|
pbos-webrtc
2016/05/02 01:05:27
Is this logic handled somewhere else as well or is
perkj_webrtc
2016/05/03 10:22:40
no- unintentinonally actually. I misread what this
|
| - now_ms) { |
| - return; |
| - } |
| - time_last_intra_request_ms_[i] = now_ms; |
| - } |
| - video_sender_.IntraFrameRequest(static_cast<int>(i)); |
| - return; |
| - } |
| - RTC_NOTREACHED() << "Should not receive keyframe requests on unknown SSRCs."; |
| + video_sender_.IntraFrameRequest(stream_index); |
| + return; |
|
pbos-webrtc
2016/05/02 01:05:27
remove
|
| } |
| void ViEEncoder::OnBitrateUpdated(uint32_t bitrate_bps, |
| @@ -466,8 +409,8 @@ void ViEEncoder::OnBitrateUpdated(uint32_t bitrate_bps, |
| if (!video_suspension_changed) |
| return; |
| // Video suspend-state changed, inform codec observer. |
| - LOG(LS_INFO) << "Video suspend state changed " << video_is_suspended |
| - << " for ssrc " << ssrcs_[0]; |
| + LOG(LS_INFO) << "Video suspend state changed " << video_is_suspended; |
| + |
| if (stats_proxy_) |
| stats_proxy_->OnSuspendChange(video_is_suspended); |
| } |