Agora C++ API Reference for All Platforms

Classes | Public Types | Public Member Functions | Protected Member Functions | List of all members
agora::rtc::IExtensionProvider Class Reference

Inherits agora::RefCountInterface.

Inherited by agora::rtc::ICustomExtensionProvider, agora::rtc::IExtensionProviderV2, agora::rtc::IVideoDecoderProvider, and agora::rtc::IVideoEncoderProvider.

## Classes
struct | ExtensionMetaInfo

## Public Types
enum | EXTENSION_TYPE { AUDIO_FILTER, VIDEO_PRE_PROCESSING_FILTER, VIDEO_POST_PROCESSING_FILTER, AUDIO_SINK, VIDEO_SINK, AUDIO_RECORDING_LOCAL_PLAYBACK_FILTER = 10000, AUDIO_POST_PROCESSING_FILTER = 10001, AUDIO_REMOTE_USER_PLAYBACK_FILTER = 10002, AUDIO_PCM_SOURCE_FILTER = 10003, AUDIO_PCM_SOURCE_SENDING_FILTER = 10004, AUDIO_PCM_SOURCE_LOCAL_PLAYBACK_FILTER = 10005, AUDIO_REMOTE_MIXED_PLAYBACK_FILTER = 10006, VIDEO_POST_CAPTURE_FILTER = 20001, VIDEO_PRE_PREVIEW_FILTER = 20002, VIDEO_PRE_ENCODER_FILTER = 20003, UNKNOWN = 0xFFFF }

## Public Member Functions
virtual void | setExtensionControl (IExtensionControl *control)
virtual void | enumerateExtensions (ExtensionMetaInfo *extension_list, int &extension_count)
virtual agora_refptr< IAudioFilter > | createAudioFilter (const char *name)
virtual agora_refptr< IExtensionVideoFilter > | createVideoFilter (const char *name)
virtual agora_refptr< IVideoSinkBase > | createVideoSink (const char *name)
virtual void | setProperty (const char *key, const char *value)
Public Member Functions inherited from agora::RefCountInterface
virtual void | AddRef () const =0
virtual RefCountReleaseStatus | Release () const =0
virtual bool | HasOneRef () const =0

## Protected Member Functions
virtual | ~IExtensionProvider ()
Protected Member Functions inherited from agora::RefCountInterface
virtual | ~RefCountInterface ()

## Detailed Description

Interfaces for Extension Provider User can implement these interfaces for providing their own media node implementations to SDK. Please refer to agora::RefCountedObject to wrap your implementation so that it can be held by agora::agora_refptr. For example: class YourExtensionProvide: public IExtensionProvider { // Your Concrete implementaion };

// Use agroa::RefCountedObject to provide RefCountInterface implementation for you implementation, // intantiate and wrap it with agora_refptr.

agora_refptr<IExtensionProvider> provider = new RefCountedObject<YourExtensionProvide>(Arg1, Arg2, ...);

You can instantiate your AudioFilter/VideoFilter/VideoSink in the same way.

## Member Enumeration Documentation

## ◆ EXTENSION_TYPE

enum agora::rtc::IExtensionProvider::EXTENSION_TYPE

Enumerator
AUDIO_FILTER | note: discarded, Don't use it anymore.
VIDEO_PRE_PROCESSING_FILTER | note: discarded, Don't use it anymore.
VIDEO_POST_PROCESSING_FILTER |
AUDIO_SINK |
VIDEO_SINK |
AUDIO_RECORDING_LOCAL_PLAYBACK_FILTER |
AUDIO_POST_PROCESSING_FILTER |
AUDIO_REMOTE_USER_PLAYBACK_FILTER |
AUDIO_PCM_SOURCE_FILTER |
AUDIO_PCM_SOURCE_SENDING_FILTER |
AUDIO_PCM_SOURCE_LOCAL_PLAYBACK_FILTER |
AUDIO_REMOTE_MIXED_PLAYBACK_FILTER |
VIDEO_POST_CAPTURE_FILTER |
VIDEO_PRE_PREVIEW_FILTER |
VIDEO_PRE_ENCODER_FILTER |
UNKNOWN |

## Constructor & Destructor Documentation

## ◆ ~IExtensionProvider()

virtual agora::rtc::IExtensionProvider::~IExtensionProvider | ( |  | ) |
| inline protected virtual

## Member Function Documentation

## ◆ setExtensionControl()

virtual void agora::rtc::IExtensionProvider::setExtensionControl | ( | IExtensionControl * | control | ) |
| inline virtual

## ◆ enumerateExtensions()

virtual void agora::rtc::IExtensionProvider::enumerateExtensions | ( | ExtensionMetaInfo * | extension_list,
|  | int & | extension_count
| ) |  |
| inline virtual

## ◆ createAudioFilter()

virtual agora_refptr<IAudioFilter> agora::rtc::IExtensionProvider::createAudioFilter | ( | const char * | name | ) |
| inline virtual

## ◆ createVideoFilter()

virtual agora_refptr<IExtensionVideoFilter> agora::rtc::IExtensionProvider::createVideoFilter | ( | const char * | name | ) |
| inline virtual

## ◆ createVideoSink()

virtual agora_refptr<IVideoSinkBase> agora::rtc::IExtensionProvider::createVideoSink | ( | const char * | name | ) |
| inline virtual

## ◆ setProperty()

virtual void agora::rtc::IExtensionProvider::setProperty | ( | const char * | key,
|  | const char * | value
| ) |  |
| inline virtual