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() { |