Index: webrtc/media/engine/webrtcvideoengine.cc |
diff --git a/webrtc/media/engine/webrtcvideoengine.cc b/webrtc/media/engine/webrtcvideoengine.cc |
index 852fa3944e9e275b24a9b09106516ed8464b0a5c..81ef29e2d702a3dcccaa9bbfec9c47e608b26c9f 100644 |
--- a/webrtc/media/engine/webrtcvideoengine.cc |
+++ b/webrtc/media/engine/webrtcvideoengine.cc |
@@ -286,69 +286,6 @@ int GetDefaultVp9TemporalLayers() { |
} |
return 1; |
} |
- |
-class EncoderStreamFactory |
- : public webrtc::VideoEncoderConfig::VideoStreamFactoryInterface { |
- public: |
- EncoderStreamFactory(std::string codec_name, |
- int max_qp, |
- int max_framerate, |
- bool is_screencast, |
- bool conference_mode) |
- : codec_name_(codec_name), |
- max_qp_(max_qp), |
- max_framerate_(max_framerate), |
- is_screencast_(is_screencast), |
- conference_mode_(conference_mode) {} |
- |
- private: |
- std::vector<webrtc::VideoStream> CreateEncoderStreams( |
- int width, |
- int height, |
- const webrtc::VideoEncoderConfig& encoder_config) override { |
- if (is_screencast_ && |
- (!conference_mode_ || !cricket::UseSimulcastScreenshare())) { |
- RTC_DCHECK_EQ(1, encoder_config.number_of_streams); |
- } |
- if (encoder_config.number_of_streams > 1 || |
- (CodecNamesEq(codec_name_, kVp8CodecName) && is_screencast_ && |
- conference_mode_)) { |
- return GetSimulcastConfig(encoder_config.number_of_streams, width, height, |
- encoder_config.max_bitrate_bps, max_qp_, |
- max_framerate_, is_screencast_); |
- } |
- |
- // For unset max bitrates set default bitrate for non-simulcast. |
- int max_bitrate_bps = |
- (encoder_config.max_bitrate_bps > 0) |
- ? encoder_config.max_bitrate_bps |
- : GetMaxDefaultVideoBitrateKbps(width, height) * 1000; |
- |
- webrtc::VideoStream stream; |
- stream.width = width; |
- stream.height = height; |
- stream.max_framerate = max_framerate_; |
- stream.min_bitrate_bps = kMinVideoBitrateKbps * 1000; |
- stream.target_bitrate_bps = stream.max_bitrate_bps = max_bitrate_bps; |
- stream.max_qp = max_qp_; |
- |
- if (CodecNamesEq(codec_name_, kVp9CodecName) && !is_screencast_) { |
- stream.temporal_layer_thresholds_bps.resize( |
- GetDefaultVp9TemporalLayers() - 1); |
- } |
- |
- std::vector<webrtc::VideoStream> streams; |
- streams.push_back(stream); |
- return streams; |
- } |
- |
- const std::string codec_name_; |
- const int max_qp_; |
- const int max_framerate_; |
- const bool is_screencast_; |
- const bool conference_mode_; |
-}; |
- |
} // namespace |
// Constants defined in webrtc/media/engine/constants.h |
@@ -2678,4 +2615,55 @@ WebRtcVideoChannel::MapCodecs(const std::vector<VideoCodec>& codecs) { |
return video_codecs; |
} |
+EncoderStreamFactory::EncoderStreamFactory(std::string codec_name, |
+ int max_qp, |
+ int max_framerate, |
+ bool is_screencast, |
+ bool conference_mode) |
+ : codec_name_(codec_name), |
+ max_qp_(max_qp), |
+ max_framerate_(max_framerate), |
+ is_screencast_(is_screencast), |
+ conference_mode_(conference_mode) {} |
+ |
+std::vector<webrtc::VideoStream> EncoderStreamFactory::CreateEncoderStreams( |
+ int width, |
+ int height, |
+ const webrtc::VideoEncoderConfig& encoder_config) { |
+ if (is_screencast_ && |
+ (!conference_mode_ || !cricket::UseSimulcastScreenshare())) { |
+ RTC_DCHECK_EQ(1, encoder_config.number_of_streams); |
+ } |
+ if (encoder_config.number_of_streams > 1 || |
+ (CodecNamesEq(codec_name_, kVp8CodecName) && is_screencast_ && |
+ conference_mode_)) { |
+ return GetSimulcastConfig(encoder_config.number_of_streams, width, height, |
+ encoder_config.max_bitrate_bps, max_qp_, |
+ max_framerate_, is_screencast_); |
+ } |
+ |
+ // For unset max bitrates set default bitrate for non-simulcast. |
+ int max_bitrate_bps = |
+ (encoder_config.max_bitrate_bps > 0) |
+ ? encoder_config.max_bitrate_bps |
+ : GetMaxDefaultVideoBitrateKbps(width, height) * 1000; |
+ |
+ webrtc::VideoStream stream; |
+ stream.width = width; |
+ stream.height = height; |
+ stream.max_framerate = max_framerate_; |
+ stream.min_bitrate_bps = kMinVideoBitrateKbps * 1000; |
+ stream.target_bitrate_bps = stream.max_bitrate_bps = max_bitrate_bps; |
+ stream.max_qp = max_qp_; |
+ |
+ if (CodecNamesEq(codec_name_, kVp9CodecName) && !is_screencast_) { |
+ stream.temporal_layer_thresholds_bps.resize(GetDefaultVp9TemporalLayers() - |
+ 1); |
+ } |
+ |
+ std::vector<webrtc::VideoStream> streams; |
+ streams.push_back(stream); |
+ return streams; |
+} |
+ |
} // namespace cricket |