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

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

Issue 2936393002: Add cropping to VIEEncoder to match simulcast streams resolution (Closed)
Patch Set: Fix typo Created 3 years, 6 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
« no previous file with comments | « webrtc/media/engine/webrtcvideoengine.h ('k') | webrtc/video/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « webrtc/media/engine/webrtcvideoengine.h ('k') | webrtc/video/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698