diff --git a/modules/video_coding/codecs/multiplex/include/multiplex_encoder_adapter.h b/modules/video_coding/codecs/multiplex/include/multiplex_encoder_adapter.h index 531d07870e..985bf39fe3 100644 --- a/modules/video_coding/codecs/multiplex/include/multiplex_encoder_adapter.h +++ b/modules/video_coding/codecs/multiplex/include/multiplex_encoder_adapter.h @@ -50,7 +50,7 @@ class MultiplexEncoderAdapter : public VideoEncoder { int SetRateAllocation(const VideoBitrateAllocation& bitrate, uint32_t new_framerate) override; int Release() override; - const char* ImplementationName() const override; + EncoderInfo GetEncoderInfo() const override; EncodedImageCallback::Result OnEncodedImage( AlphaCodecStream stream_idx, @@ -81,6 +81,8 @@ class MultiplexEncoderAdapter : public VideoEncoder { const bool supports_augmented_data_; int augmenting_data_size_ = 0; + + EncoderInfo encoder_info_; }; } // namespace webrtc diff --git a/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc b/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc index ce645743d1..5ea1fdc2ae 100644 --- a/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc +++ b/modules/video_coding/codecs/multiplex/multiplex_encoder_adapter.cc @@ -53,6 +53,7 @@ MultiplexEncoderAdapter::MultiplexEncoderAdapter( : factory_(factory), associated_format_(associated_format), encoded_complete_callback_(nullptr), + key_frame_interval_(0), supports_augmented_data_(supports_augmented_data) {} MultiplexEncoderAdapter::~MultiplexEncoderAdapter() { @@ -92,6 +93,11 @@ int MultiplexEncoderAdapter::InitEncode(const VideoCodec* inst, break; } + encoder_info_ = EncoderInfo(); + encoder_info_.implementation_name = "MultiplexEncoderAdapter ("; + // This needs to be false so that we can do the split in Encode(). + encoder_info_.supports_native_handle = false; + for (size_t i = 0; i < kAlphaCodecStreams; ++i) { std::unique_ptr encoder = factory_->CreateVideoEncoder(associated_format_); @@ -104,8 +110,17 @@ int MultiplexEncoderAdapter::InitEncode(const VideoCodec* inst, adapter_callbacks_.emplace_back(new AdapterEncodedImageCallback( this, static_cast(i))); encoder->RegisterEncodeCompleteCallback(adapter_callbacks_.back().get()); + + const EncoderInfo& encoder_impl_info = encoder->GetEncoderInfo(); + encoder_info_.implementation_name += encoder_impl_info.implementation_name; + if (i != kAlphaCodecStreams - 1) { + encoder_info_.implementation_name += ", "; + } + encoders_.emplace_back(std::move(encoder)); } + encoder_info_.implementation_name += ")"; + return WEBRTC_VIDEO_CODEC_OK; } @@ -238,8 +253,8 @@ int MultiplexEncoderAdapter::Release() { return WEBRTC_VIDEO_CODEC_OK; } -const char* MultiplexEncoderAdapter::ImplementationName() const { - return "MultiplexEncoderAdapter"; +VideoEncoder::EncoderInfo MultiplexEncoderAdapter::GetEncoderInfo() const { + return encoder_info_; } EncodedImageCallback::Result MultiplexEncoderAdapter::OnEncodedImage(