Agora Java API Reference for Android
NGIAgoraExtensionProvider.h
1 //
2 // Agora SDK
3 //
4 // Copyright (c) 2021 Agora.io. All rights reserved.
5 //
6 
7 #pragma once
8 
9 #include "AgoraRefPtr.h"
10 #include "AgoraExtensions.h"
11 #include "AgoraExtensionVersion.h"
12 
13 namespace agora {
14 namespace rtc {
15 class IExtensionControl;
16 
36  public:
46  VIDEO_POST_PROCESSING_FILTER,
47  AUDIO_SINK,
48  VIDEO_SINK,
49  /*
50  * Used to modify locally captured audio data to play, such as ear monitoring.
51  */
52  AUDIO_RECORDING_LOCAL_PLAYBACK_FILTER = 10000,
53  /*
54  * Used to modify audio data after the local APM (3A).
55  */
56  AUDIO_POST_PROCESSING_FILTER = 10001,
57  /*
58  * Used to modify received and decoded remote user audio data.
59  */
60  AUDIO_REMOTE_USER_PLAYBACK_FILTER = 10002,
61  /*
62  * note: It is used internally by agora and does not support users other than agora.
63  *
64  * Used to modify the audio data of the sender's PCM source to take effect for sending and local playback.
65  */
66  AUDIO_PCM_SOURCE_FILTER = 10003,
67  /*
68  * note: It is used internally by agora and does not support users other than agora.
69  *
70  * Used to Modifying the audio data of the sender's PCM source is only effect for the sending.
71  */
72  AUDIO_PCM_SOURCE_SENDING_FILTER = 10004,
73  /*
74  * note: It is used internally by agora and does not support users other than agora.
75  *
76  * Used to Modifying the audio data of the sender's PCM source is only effect for the local playback.
77  */
78  AUDIO_PCM_SOURCE_LOCAL_PLAYBACK_FILTER = 10005,
79  /*
80  * note: It is used internally by agora and does not support users other than agora.
81  *
82  * Used to modify local playback audio data after the remote audio mixed.
83  */
84  AUDIO_REMOTE_MIXED_PLAYBACK_FILTER = 10006,
85  /*
86  * Used to modify video data betweent capturer and post-capture observer
87  */
88  VIDEO_POST_CAPTURE_FILTER = 20001,
89  /*
90  * Used to modify video data betweent post-capture observer and preview
91  */
92  VIDEO_PRE_PREVIEW_FILTER = 20002,
93  /*
94  * Used to modify video data betweent adapter and encoder
95  */
96  VIDEO_PRE_ENCODER_FILTER = 20003,
97  /*
98  * Used to encode video data
99  */
100  VIDEO_ENCODER = 20004,
101  /*
102  * Used to decode video encoded image
103  */
104  VIDEO_DECODER = 20005,
105  UNKNOWN = 0xFFFF,
106  };
107 
109  EXTENSION_TYPE type;
110  const char* extension_name;
111  };
112 
113  virtual void setExtensionControl(IExtensionControl* control) {}
114 
115  virtual void enumerateExtensions(ExtensionMetaInfo* extension_list,
116  int& extension_count) {
117  (void) extension_list;
118  extension_count = 0;
119  }
120 
121  virtual agora_refptr<IAudioFilter> createAudioFilter(const char* name) {
122  return NULL;
123  }
124 
125  virtual agora_refptr<IExtensionVideoFilter> createVideoFilter(const char* name) {
126  return NULL;
127  }
128 
129  virtual agora_refptr<IExtensionVideoSink> createVideoSink(const char* name) {
130  return NULL;
131  }
132 
133  virtual void setProperty(const char* key, const char* value) {}
134 
135  protected:
136  virtual ~IExtensionProvider() {}
137 };
138 
140  public:
141  virtual void getExtensionVersion(const char* extension_name, ExtensionVersion& version) = 0;
142 };
143 
145  public:
147  VIDEO_CODEC_TYPE codec_type;
148  bool is_hw_accelerated;
149  };
150 
151  ExtensionVideoCodecInfo video_codec_info;
152 };
153 
155  public:
156  virtual agora_refptr<IExtensionVideoEncoder> createVideoEncoder(const char* name) {
157  return NULL;
158  }
159 };
160 
162  public:
163  virtual agora_refptr<IExtensionVideoDecoder> createVideoDecoder(const char* name) {
164  return NULL;
165  }
166 };
167 
168 } // namespace rtc
169 } // namespace agora
agora::rtc::IExtensionProvider::ExtensionMetaInfo
Definition: NGIAgoraExtensionProvider.h:108
agora::rtc::ExtensionVersion
Definition: AgoraExtensionVersion.h:14
agora::agora_refptr
Definition: AgoraRefPtr.h:44
agora::rtc::IExtensionProviderV2
Definition: NGIAgoraExtensionProvider.h:139
agora::rtc::IExtensionVideoCodecProvider
Definition: NGIAgoraExtensionProvider.h:144
agora::rtc::IExtensionVideoEncoderProvider
Definition: NGIAgoraExtensionProvider.h:154
agora::rtc::IExtensionVideoDecoderProvider
Definition: NGIAgoraExtensionProvider.h:161
agora::rtc::IExtensionProvider
Definition: NGIAgoraExtensionProvider.h:35
agora::rtc::IExtensionProvider::VIDEO_PRE_PROCESSING_FILTER
@ VIDEO_PRE_PROCESSING_FILTER
Definition: NGIAgoraExtensionProvider.h:45
agora::RefCountInterface
Definition: AgoraRefPtr.h:31
agora::rtc::IExtensionProvider::EXTENSION_TYPE
EXTENSION_TYPE
Definition: NGIAgoraExtensionProvider.h:37
agora::rtc::IExtensionVideoCodecProvider::ExtensionVideoCodecInfo
Definition: NGIAgoraExtensionProvider.h:146
agora::rtc::IExtensionControl
Definition: NGIAgoraExtensionControl.h:22
agora::rtc::IExtensionProvider::AUDIO_FILTER
@ AUDIO_FILTER
Definition: NGIAgoraExtensionProvider.h:41