Chromium Code Reviews| 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() { |