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