From: Andreas Pehrson Date: Tue, 28 Jan 2025 21:45:00 +0000 Subject: Bug 1938047 - Hook up VideoStreamFactory with EncoderInfo like the libwebrtc factory. r=webrtc-reviewers,dbaker This is necessary for the factory to factor in the encoder's resolution alignment requirements when calculating stream resolutions. Differential Revision: https://phabricator.services.mozilla.com/D235702 Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/8b5653392e88ccd0c2b0675c761bb22733364225 --- video/config/video_encoder_config.h | 4 ++++ video/video_stream_encoder.cc | 1 + 2 files changed, 5 insertions(+) diff --git a/video/config/video_encoder_config.h b/video/config/video_encoder_config.h index 7fda03ffa8..8ca8462dd0 100644 --- a/video/config/video_encoder_config.h +++ b/video/config/video_encoder_config.h @@ -26,6 +26,7 @@ #include "api/video_codecs/sdp_video_format.h" #include "api/video_codecs/spatial_layer.h" #include "api/video_codecs/video_codec.h" +#include "api/video_codecs/video_encoder.h" namespace webrtc { @@ -153,6 +154,9 @@ class VideoEncoderConfig { int frame_height, const VideoEncoderConfig& encoder_config) = 0; + // Mozilla: Patching in necessary info our custom VideoStreamFactory will need to know. + virtual void SetEncoderInfo(const VideoEncoder::EncoderInfo& info) {} + protected: ~VideoStreamFactoryInterface() override {} }; diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc index 11c172ecb9..9dfa42100a 100644 --- a/video/video_stream_encoder.cc +++ b/video/video_stream_encoder.cc @@ -1055,6 +1055,7 @@ void VideoStreamEncoder::ReconfigureEncoder() { std::vector streams; if (encoder_config_.video_stream_factory) { // Note: only tests set their own EncoderStreamFactory... + encoder_config_.video_stream_factory->SetEncoderInfo(encoder_->GetEncoderInfo()); streams = encoder_config_.video_stream_factory->CreateEncoderStreams( env_.field_trials(), last_frame_info_->width, last_frame_info_->height, encoder_config_);