|
| 1 | +#pragma once |
| 2 | + |
| 3 | +#include "AgoraBase.h" |
| 4 | +#include "IAgoraMediaEngine.h" |
| 5 | +#include "IAgoraMediaRecorder.h" |
| 6 | +#include "IAgoraMusicContentCenter.h" |
| 7 | +#include "IAgoraRtcEngine.h" |
| 8 | +#include "IAgoraSpatialAudio.h" |
| 9 | +#include "IAudioDeviceManager.h" |
| 10 | + |
| 11 | +namespace agora { |
| 12 | +namespace rtc { |
| 13 | +namespace ext { |
| 14 | + |
| 15 | +struct SDKBuildInfo { |
| 16 | + int build; |
| 17 | + const char *version; |
| 18 | +}; |
| 19 | + |
| 20 | +struct VideoDeviceInfo { |
| 21 | + const char *deviceId; |
| 22 | + const char *deviceName; |
| 23 | +}; |
| 24 | + |
| 25 | +struct AudioDeviceInfo { |
| 26 | + const char *deviceId; |
| 27 | + const char *deviceName; |
| 28 | +}; |
| 29 | + |
| 30 | +class IRtcEngine { |
| 31 | + virtual int joinChannel(const char *token, const char *channelId, uid_t uid, |
| 32 | + const ChannelMediaOptions &options) = 0; |
| 33 | + |
| 34 | + virtual int leaveChannel(const LeaveChannelOptions *options = NULL) = 0; |
| 35 | + |
| 36 | + virtual int setClientRole(CLIENT_ROLE_TYPE role, |
| 37 | + const ClientRoleOptions *options = NULL) = 0; |
| 38 | + |
| 39 | + virtual int startEchoTest(int intervalInSeconds = 10) = 0; |
| 40 | + |
| 41 | + virtual int |
| 42 | + startPreview(VIDEO_SOURCE_TYPE sourceType = |
| 43 | + VIDEO_SOURCE_TYPE::VIDEO_SOURCE_CAMERA_PRIMARY) = 0; |
| 44 | + |
| 45 | + virtual int |
| 46 | + stopPreview(VIDEO_SOURCE_TYPE sourceType = |
| 47 | + VIDEO_SOURCE_TYPE::VIDEO_SOURCE_CAMERA_PRIMARY) = 0; |
| 48 | + |
| 49 | + virtual int |
| 50 | + setAudioProfile(AUDIO_PROFILE_TYPE profile, |
| 51 | + AUDIO_SCENARIO_TYPE scenario = |
| 52 | + AUDIO_SCENARIO_TYPE::AUDIO_SCENARIO_DEFAULT) = 0; |
| 53 | + |
| 54 | + virtual int |
| 55 | + startAudioRecording(const AudioRecordingConfiguration &config) = 0; |
| 56 | + |
| 57 | + virtual int startAudioMixing(const char *filePath, bool loopback, int cycle, |
| 58 | + int startPos = 0) = 0; |
| 59 | + |
| 60 | + virtual int |
| 61 | + setLocalRenderMode(media::base::RENDER_MODE_TYPE renderMode, |
| 62 | + VIDEO_MIRROR_MODE_TYPE mirrorMode = |
| 63 | + VIDEO_MIRROR_MODE_TYPE::VIDEO_MIRROR_MODE_AUTO) = 0; |
| 64 | + |
| 65 | + virtual int |
| 66 | + enableDualStreamMode(bool enabled, |
| 67 | + const SimulcastStreamConfig *streamConfig = NULL) = 0; |
| 68 | + |
| 69 | + virtual int |
| 70 | + setDualStreamMode(SIMULCAST_STREAM_MODE mode, |
| 71 | + const SimulcastStreamConfig *streamConfig = NULL) = 0; |
| 72 | + |
| 73 | + virtual int createDataStream(int *streamId, |
| 74 | + const DataStreamConfig &config) = 0; |
| 75 | + |
| 76 | + virtual int addVideoWatermark(const char *watermarkUrl, |
| 77 | + const WatermarkOptions &options) = 0; |
| 78 | + |
| 79 | + virtual int |
| 80 | + joinChannelWithUserAccount(const char *token, const char *channelId, |
| 81 | + const char *userAccount, |
| 82 | + const ChannelMediaOptions *options = NULL) = 0; |
| 83 | + |
| 84 | + virtual int enableExtension(const char *provider, const char *extension, |
| 85 | + bool enable = true, |
| 86 | + agora::media::MEDIA_SOURCE_TYPE type = |
| 87 | + agora::media::UNKNOWN_MEDIA_SOURCE) = 0; |
| 88 | + |
| 89 | + virtual int setExtensionProperty(const char *provider, const char *extension, |
| 90 | + const char *key, const char *value, |
| 91 | + agora::media::MEDIA_SOURCE_TYPE type = |
| 92 | + agora::media::UNKNOWN_MEDIA_SOURCE) = 0; |
| 93 | + |
| 94 | + virtual int getExtensionProperty(const char *provider, const char *extension, |
| 95 | + const char *key, char *value, int buf_len, |
| 96 | + agora::media::MEDIA_SOURCE_TYPE type = |
| 97 | + agora::media::UNKNOWN_MEDIA_SOURCE) = 0; |
| 98 | + |
| 99 | +#ifdef __ELECTRON__ |
| 100 | + virtual void destroyRendererByView(view_t view) = 0; |
| 101 | + |
| 102 | + virtual void destroyRendererByConfig(VIDEO_SOURCE_TYPE sourceType, |
| 103 | + const char *channelId = NULL, |
| 104 | + uid_t uid = 0) = 0; |
| 105 | +#endif |
| 106 | + |
| 107 | + virtual IAudioDeviceManager *getAudioDeviceManager() = 0; |
| 108 | + |
| 109 | + virtual IVideoDeviceManager *getVideoDeviceManager() = 0; |
| 110 | + |
| 111 | + virtual IMusicContentCenter *getMusicContentCenter() = 0; |
| 112 | + |
| 113 | + virtual agora::media::IMediaEngine *getMediaEngine() = 0; |
| 114 | + |
| 115 | + virtual IMediaRecorder *getMediaRecorder() = 0; |
| 116 | + |
| 117 | + virtual ILocalSpatialAudioEngine *getLocalSpatialAudioEngine() = 0; |
| 118 | + |
| 119 | + virtual int sendMetaData(const IMetadataObserver::Metadata &metadata, |
| 120 | + VIDEO_SOURCE_TYPE source_type) = 0; |
| 121 | + |
| 122 | + virtual int setMaxMetadataSize(int size) = 0; |
| 123 | + |
| 124 | + virtual int |
| 125 | + unregisterAudioEncodedFrameObserver(IAudioEncodedFrameObserver *observer) = 0; |
| 126 | + |
| 127 | + virtual intptr_t getNativeHandle() = 0; |
| 128 | +}; |
| 129 | + |
| 130 | +} // namespace ext |
| 131 | +} // namespace rtc |
| 132 | +} // namespace agora |
0 commit comments