Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(306)

Unified Diff: webrtc/media/engine/fakewebrtccall.cc

Issue 2351633002: Let ViEEncoder handle resolution changes. (Closed)
Patch Set: Fix perf test Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/media/engine/fakewebrtccall.cc
diff --git a/webrtc/media/engine/fakewebrtccall.cc b/webrtc/media/engine/fakewebrtccall.cc
index 9437fa0fbaec234ec1d81d6815e0da795a84240f..4c0268eaa777fae0c2ef4f6e230d959cfe85cbcd 100644
--- a/webrtc/media/engine/fakewebrtccall.cc
+++ b/webrtc/media/engine/fakewebrtccall.cc
@@ -123,8 +123,9 @@ const webrtc::VideoEncoderConfig& FakeVideoSendStream::GetEncoderConfig()
return encoder_config_;
}
-std::vector<webrtc::VideoStream> FakeVideoSendStream::GetVideoStreams() {
- return encoder_config_.streams;
+const std::vector<webrtc::VideoStream>& FakeVideoSendStream::GetVideoStreams()
+ const {
+ return video_streams_;
}
bool FakeVideoSendStream::IsSending() const {
@@ -170,6 +171,13 @@ int64_t FakeVideoSendStream::GetLastTimestamp() const {
void FakeVideoSendStream::OnFrame(const webrtc::VideoFrame& frame) {
++num_swapped_frames_;
+ if (frame.width() != last_frame_.width() ||
+ frame.height() != last_frame_.height() ||
+ frame.rotation() != last_frame_.rotation()) {
+ video_streams_ =
+ encoder_config_.encoder_stream_factory->CreateEncoderStreams(
+ frame.width(), frame.height(), encoder_config_);
+ }
last_frame_.ShallowCopy(frame);
}
@@ -184,29 +192,31 @@ webrtc::VideoSendStream::Stats FakeVideoSendStream::GetStats() {
void FakeVideoSendStream::ReconfigureVideoEncoder(
webrtc::VideoEncoderConfig config) {
+ video_streams_ = config.encoder_stream_factory->CreateEncoderStreams(
+ last_frame_.width(), last_frame_.height(), config);
+ encoder_config_ = std::move(config);
+ codec_settings_set_ = config.encoder_specific_settings != NULL;
sprang_webrtc 2016/09/22 13:06:16 nit: nullptr
perkj_webrtc 2016/09/26 12:09:42 Done.
+ ++num_encoder_reconfigurations_;
if (config.encoder_specific_settings != NULL) {
if (config_.encoder_settings.payload_name == "VP8") {
vpx_settings_.vp8 = *reinterpret_cast<const webrtc::VideoCodecVP8*>(
config.encoder_specific_settings);
- if (!config.streams.empty()) {
+ if (!video_streams_.empty()) {
vpx_settings_.vp8.numberOfTemporalLayers = static_cast<unsigned char>(
- config.streams.back().temporal_layer_thresholds_bps.size() + 1);
+ video_streams_.back().temporal_layer_thresholds_bps.size() + 1);
}
} else if (config_.encoder_settings.payload_name == "VP9") {
vpx_settings_.vp9 = *reinterpret_cast<const webrtc::VideoCodecVP9*>(
- config.encoder_specific_settings);
- if (!config.streams.empty()) {
+ config.encoder_specific_settings);
+ if (!video_streams_.empty()) {
vpx_settings_.vp9.numberOfTemporalLayers = static_cast<unsigned char>(
- config.streams.back().temporal_layer_thresholds_bps.size() + 1);
+ video_streams_.back().temporal_layer_thresholds_bps.size() + 1);
}
} else {
ADD_FAILURE() << "Unsupported encoder payload: "
<< config_.encoder_settings.payload_name;
}
}
- encoder_config_ = std::move(config);
- codec_settings_set_ = config.encoder_specific_settings != NULL;
- ++num_encoder_reconfigurations_;
}
void FakeVideoSendStream::Start() {

Powered by Google App Engine
This is Rietveld 408576698