11#include "NGIAgoraExtensionProvider.h"
12#include "NGIAgoraExtensionScreenSource.h"
13#include "api2/internal/AgoraRefCountedObjectInternal.h"
42#define RESERVED_INTERNAL_MAJOR_VERSION 999
51template <
class ExtInterface>
56 : provider_(provider), ext_name_(
extension) {
57 assert(provider_ && !ext_name_.empty());
60 provider_->createCustomExtension(
extension));
62 raw_ptr_ =
static_cast<ExtInterface*
>(provider_->createCustomExtension(
extension));
68 assert(provider_ && !ext_name_.empty());
69 provider_->destroyCustomExtension(ext_name_.c_str(), raw_ptr_);
79 return raw_ptr_? raw_ptr_ : ref_ptr_.get();
87 std::string ext_name_;
90 ExtInterface* raw_ptr_ =
nullptr;
Definition AgoraRefCountedObject.h:71
Definition AgoraRefPtr.h:44
CustomExtensionWrapper(CustomExtensionWrapper &&)=default
CustomExtensionWrapper(const CustomExtensionWrapper &)=default
~CustomExtensionWrapper()
Definition extension_provider_i.h:66
CustomExtensionWrapper(ICustomExtensionProvider *provider, const char *extension, bool refcounted)
Definition extension_provider_i.h:54
CustomExtensionWrapper & operator=(CustomExtensionWrapper &&)=default
CustomExtensionWrapper & operator=(const CustomExtensionWrapper &)=default
agora_refptr< ExtInterface > getRefPtr()
Definition extension_provider_i.h:82
ExtInterface * get()
Definition extension_provider_i.h:78
Definition extension_provider_i.h:19
void operator()(const T *p) const
Definition extension_provider_i.h:22
Definition extension_provider_i.h:33
virtual agora_refptr< ILipSyncFilter > createLipSyncFilter(const char *name)
Definition extension_provider_i.h:37
virtual void * createCustomExtension(const char *name)=0
virtual void destroyCustomExtension(const char *name, void *object)=0
Definition NGIAgoraExtensionProvider.h:35
Definition builtin_extension_literal_def.h:10
Definition AgoraExtensions.h:5
agora::RefCountedObject< T, ExtProviderDeleter > ExtRefCountedObject
Definition extension_provider_i.h:31
Definition AgoraAtomicOps.h:21
static ExtensionVersion Version()
Definition extension_provider_i.h:46
Definition AgoraExtensionVersion.h:66
Definition AgoraExtensionVersion.h:14