Move ownership of decoders to VCMDecoderDatabase
Bug: webrtc:14497
Change-Id: Idf719a1d1605f19fcf46eff7990c61144f2b9e3b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/277401
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38251}
diff --git a/modules/video_coding/decoder_database.h b/modules/video_coding/decoder_database.h
index 8969fea..98f4335 100644
--- a/modules/video_coding/decoder_database.h
+++ b/modules/video_coding/decoder_database.h
@@ -14,6 +14,7 @@
#include <stdint.h>
#include <map>
+#include <memory>
#include "absl/types/optional.h"
#include "api/sequence_checker.h"
@@ -32,9 +33,9 @@
// Returns a pointer to the previously registered decoder or nullptr if none
// was registered for the `payload_type`.
- VideoDecoder* DeregisterExternalDecoder(uint8_t payload_type);
+ void DeregisterExternalDecoder(uint8_t payload_type);
void RegisterExternalDecoder(uint8_t payload_type,
- VideoDecoder* external_decoder);
+ std::unique_ptr<VideoDecoder> external_decoder);
bool IsExternalDecoderRegistered(uint8_t payload_type) const;
void RegisterReceiveCodec(uint8_t payload_type,
@@ -63,7 +64,7 @@
// Initialization paramaters for decoders keyed by payload type.
std::map<uint8_t, VideoDecoder::Settings> decoder_settings_;
// Decoders keyed by payload type.
- std::map<uint8_t, VideoDecoder*> decoders_
+ std::map<uint8_t, std::unique_ptr<VideoDecoder>> decoders_
RTC_GUARDED_BY(decoder_sequence_checker_);
};