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

Unified Diff: webrtc/config.h

Issue 2351633002: Let ViEEncoder handle resolution changes. (Closed)
Patch Set: rebased Created 4 years, 2 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/call/rampup_tests.cc ('k') | webrtc/config.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/config.h
diff --git a/webrtc/config.h b/webrtc/config.h
index 0e8b769b69701febc27edd524cfcf77703dca170..0231cb56827500331329a8d4e6a5ecd2e3e0abfc 100644
--- a/webrtc/config.h
+++ b/webrtc/config.h
@@ -125,7 +125,7 @@ struct VideoStream {
std::vector<int> temporal_layer_thresholds_bps;
};
-struct VideoEncoderConfig {
+class VideoEncoderConfig {
public:
// These are reference counted to permit copying VideoEncoderConfig and be
// kept alive until all encoder_specific_settings go out of scope.
@@ -143,14 +143,13 @@ struct VideoEncoderConfig {
virtual void FillVideoCodecH264(VideoCodecH264* h264_settings) const;
private:
virtual ~EncoderSpecificSettings() {}
- friend struct VideoEncoderConfig;
+ friend class VideoEncoderConfig;
};
class H264EncoderSpecificSettings : public EncoderSpecificSettings {
public:
explicit H264EncoderSpecificSettings(const VideoCodecH264& specifics);
- virtual void FillVideoCodecH264(
- VideoCodecH264* h264_settings) const override;
+ void FillVideoCodecH264(VideoCodecH264* h264_settings) const override;
private:
VideoCodecH264 specifics_;
@@ -159,7 +158,7 @@ struct VideoEncoderConfig {
class Vp8EncoderSpecificSettings : public EncoderSpecificSettings {
public:
explicit Vp8EncoderSpecificSettings(const VideoCodecVP8& specifics);
- virtual void FillVideoCodecVp8(VideoCodecVP8* vp8_settings) const override;
+ void FillVideoCodecVp8(VideoCodecVP8* vp8_settings) const override;
private:
VideoCodecVP8 specifics_;
@@ -168,7 +167,7 @@ struct VideoEncoderConfig {
class Vp9EncoderSpecificSettings : public EncoderSpecificSettings {
public:
explicit Vp9EncoderSpecificSettings(const VideoCodecVP9& specifics);
- virtual void FillVideoCodecVp9(VideoCodecVP9* vp9_settings) const override;
+ void FillVideoCodecVp9(VideoCodecVP9* vp9_settings) const override;
private:
VideoCodecVP9 specifics_;
@@ -179,6 +178,21 @@ struct VideoEncoderConfig {
kScreen,
};
+ class VideoStreamFactoryInterface : public rtc::RefCountInterface {
+ public:
+ // An implementation should return a std::vector<VideoStream> with the
+ // wanted VideoStream settings for the given video resolution.
+ // The size of the vector may not be larger than
+ // |encoder_config.number_of_streams|.
+ virtual std::vector<VideoStream> CreateEncoderStreams(
+ int width,
+ int height,
+ const VideoEncoderConfig& encoder_config) = 0;
+
+ protected:
+ virtual ~VideoStreamFactoryInterface() {}
+ };
+
VideoEncoderConfig& operator=(VideoEncoderConfig&&) = default;
VideoEncoderConfig& operator=(const VideoEncoderConfig&) = delete;
@@ -190,7 +204,7 @@ struct VideoEncoderConfig {
~VideoEncoderConfig();
std::string ToString() const;
- std::vector<VideoStream> streams;
+ rtc::scoped_refptr<VideoStreamFactoryInterface> video_stream_factory;
std::vector<SpatialLayer> spatial_layers;
ContentType content_type;
rtc::scoped_refptr<const EncoderSpecificSettings> encoder_specific_settings;
@@ -200,7 +214,10 @@ struct VideoEncoderConfig {
// maintaining a higher bitrate estimate. Padding will however not be sent
// unless the estimated bandwidth indicates that the link can handle it.
int min_transmit_bitrate_bps;
- bool expect_encode_from_texture;
+ int max_bitrate_bps;
+
+ // Max number of encoded VideoStreams to produce.
+ size_t number_of_streams;
private:
// Access to the copy constructor is private to force use of the Copy()
« no previous file with comments | « webrtc/call/rampup_tests.cc ('k') | webrtc/config.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698