Index: webrtc/video/vie_encoder.cc |
diff --git a/webrtc/video/vie_encoder.cc b/webrtc/video/vie_encoder.cc |
index 91fc1f0db21ad80a32868185fcfba8273376f2c0..ec20ad95fdede4ff6a26737542bdd3f98e8da05e 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,12 +46,10 @@ class QMVideoSettingsCallback : public VCMQMSettingsCallback { |
}; |
ViEEncoder::ViEEncoder(uint32_t number_of_cores, |
- const std::vector<uint32_t>& ssrcs, |
ProcessThread* module_process_thread, |
SendStatisticsProxy* stats_proxy, |
OveruseFrameDetector* overuse_detector) |
: number_of_cores_(number_of_cores), |
- ssrcs_(ssrcs), |
vp_(VideoProcessing::Create()), |
qm_callback_(new QMVideoSettingsCallback(vp_.get())), |
video_sender_(Clock::GetRealTimeClock(), |
@@ -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), |
@@ -156,11 +145,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) { |
@@ -353,30 +337,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; |
} |
@@ -387,40 +347,22 @@ void ViEEncoder::SendStatistics(uint32_t bit_rate, |
stats_proxy_->OnEncoderStatsUpdate(frame_rate, bit_rate, encoder_name); |
} |
-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(size_t 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 > |
- 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); |
} |
void ViEEncoder::OnBitrateUpdated(uint32_t bitrate_bps, |
@@ -443,8 +385,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); |
} |