Classes

class  AgoraChannel
 
class  AudioEffectManagerImpl
 
struct  AudioFrame
 
class  AudioPlaybackDeviceManager
 
class  AudioRawDataManager
 
class  AudioRecordingDeviceManager
 
struct  AudioVolumeInfo
 
struct  BeautyOptions
 
struct  CameraCapturerConfiguration
 
struct  ChannelMediaInfo
 
struct  ChannelMediaRelayConfiguration
 
struct  ExternalVideoFrame
 
struct  InjectStreamConfig
 
class  IRtcEngine
 
struct  LastmileProbeConfig
 
struct  LastmileProbeOneWayResult
 
struct  LastmileProbeResult
 
struct  LiveTranscoding
 
struct  LocalAudioStats
 
struct  LocalVideoStats
 
struct  Metadata
 
class  MetadataObserver
 
struct  Packet
 
class  PacketObserver
 
struct  PublisherConfiguration
 
struct  Rectangle
 
struct  RemoteAudioStats
 
struct  RemoteVideoStats
 
struct  RtcEngineConfig
 
struct  RtcImage
 
struct  RtcStats
 
struct  ScreenCaptureParameters
 
struct  TranscodingUser
 
struct  UserInfo
 
struct  VideoCanvas
 
class  VideoDeviceManager
 
struct  VideoDimensions
 
struct  VideoEncoderConfiguration
 
struct  VideoFrame
 
class  VideoRawDataManager
 
class  VideoSurface
 
struct  WatermarkOptions
 

Enumerations

enum  VIDEO_RENDER_MODE { VIDEO_RENDER_MODE.RENDER_RAWDATA = 100, VIDEO_RENDER_MODE.REDNER_OPENGL_ES2 = 101, VIDEO_RENDER_MODE.RENDER_UNITY_LOW_LEVEL_INTERFACE = 102 }
 
enum  ERROR_CODE { ERROR_CODE.ERROR_NOT_INIT_ENGINE = -7, ERROR_CODE.ERROR_OK = 0, ERROR_CODE.ERROR_INVALID_ARGUMENT = -2, ERROR_CODE.ERROR_NO_DEVICE_PLUGIN = -100 }
 
enum  REMOTE_VIDEO_STREAM_TYPE { REMOTE_VIDEO_STREAM_TYPE.REMOTE_VIDEO_STREAM_HIGH = 0, REMOTE_VIDEO_STREAM_TYPE.REMOTE_VIDEO_STREAM_LOW = 1 }
 
enum  REMOTE_VIDEO_STATE {
  REMOTE_VIDEO_STATE.REMOTE_VIDEO_STATE_STOPPED = 0, REMOTE_VIDEO_STATE.REMOTE_VIDEO_STATE_STARTING = 1, REMOTE_VIDEO_STATE.REMOTE_VIDEO_STATE_DECODING = 2, REMOTE_VIDEO_STATE.REMOTE_VIDEO_STATE_FROZEN = 3,
  REMOTE_VIDEO_STATE.REMOTE_VIDEO_STATE_FAILED = 4
}
 
enum  USER_OFFLINE_REASON { USER_OFFLINE_REASON.QUIT = 0, USER_OFFLINE_REASON.DROPPED = 1, USER_OFFLINE_REASON.BECOME_AUDIENCE = 2 }
 
enum  LOG_FILTER {
  LOG_FILTER.OFF = 0, LOG_FILTER.DEBUG = 0x80f, LOG_FILTER.INFO = 0x0f, LOG_FILTER.WARNING = 0x0e,
  LOG_FILTER.ERROR = 0x0c, LOG_FILTER.CRITICAL = 0x08
}
 
enum  CHANNEL_PROFILE { CHANNEL_PROFILE.CHANNEL_PROFILE_COMMUNICATION = 0, CHANNEL_PROFILE.CHANNEL_PROFILE_LIVE_BROADCASTING = 1, CHANNEL_PROFILE.CHANNEL_PROFILE_GAME = 2 }
 
enum  CLIENT_ROLE_TYPE { CLIENT_ROLE_TYPE.CLIENT_ROLE_BROADCASTER = 1, CLIENT_ROLE_TYPE.CLIENT_ROLE_AUDIENCE = 2 }
 
enum  AUDIO_RECORDING_QUALITY_TYPE { AUDIO_RECORDING_QUALITY_TYPE.AUDIO_RECORDING_QUALITY_LOW = 0, AUDIO_RECORDING_QUALITY_TYPE.AUDIO_RECORDING_QUALITY_MEDIUM = 1, AUDIO_RECORDING_QUALITY_TYPE.AUDIO_RECORDING_QUALITY_HIGH = 2 }
 
enum  AUDIO_ROUTE {
  AUDIO_ROUTE.AUDIO_ROUTE_DEFAULT = -1, AUDIO_ROUTE.AUDIO_ROUTE_HEADSET = 0, AUDIO_ROUTE.AUDIO_ROUTE_EARPIECE = 1, AUDIO_ROUTE.AUDIO_ROUTE_HEADSET_NO_MIC = 2,
  AUDIO_ROUTE.AUDIO_ROUTE_SPEAKERPHONE = 3, AUDIO_ROUTE.AUDIO_ROUTE_LOUDSPEAKER = 4, AUDIO_ROUTE.AUDIO_ROUTE_BLUETOOTH = 5
}
 
enum  CONNECTION_STATE_TYPE {
  CONNECTION_STATE_TYPE.CONNECTION_STATE_DISCONNECTED = 1, CONNECTION_STATE_TYPE.CONNECTION_STATE_CONNECTING = 2, CONNECTION_STATE_TYPE.CONNECTION_STATE_CONNECTED = 3, CONNECTION_STATE_TYPE.CONNECTION_STATE_RECONNECTING = 4,
  CONNECTION_STATE_TYPE.CONNECTION_STATE_FAILED = 5
}
 
enum  CONNECTION_CHANGED_REASON_TYPE {
  CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_CONNECTING = 0, CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_JOIN_SUCCESS = 1, CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_INTERRUPTED = 2, CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
  CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_JOIN_FAILED = 4, CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_LEAVE_CHANNEL = 5, CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_INVALID_APP_ID = 6, CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
  CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_INVALID_TOKEN = 8, CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_TOKEN_EXPIRED = 9, CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_REJECTED_BY_SERVER = 10, CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
  CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_RENEW_TOKEN = 12, CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13, CONNECTION_CHANGED_REASON_TYPE.CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14
}
 
enum  STREAM_FALLBACK_OPTIONS { STREAM_FALLBACK_OPTIONS.STREAM_FALLBACK_OPTION_DISABLED = 0, STREAM_FALLBACK_OPTIONS.STREAM_FALLBACK_OPTION_VIDEO_STREAM_LOW = 1, STREAM_FALLBACK_OPTIONS.STREAM_FALLBACK_OPTION_AUDIO_ONLY = 2 }
 
enum  VideoContentHint { VideoContentHint.CONTENT_HINT_NONE = 0, VideoContentHint.CONTENT_HINT_MOTION = 1, VideoContentHint.CONTENT_HINT_DETAILS = 2 }
 
enum  REMOTE_VIDEO_STATE_REASON {
  REMOTE_VIDEO_STATE_REASON.REMOTE_VIDEO_STATE_REASON_INTERNAL = 0, REMOTE_VIDEO_STATE_REASON.REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1, REMOTE_VIDEO_STATE_REASON.REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2, REMOTE_VIDEO_STATE_REASON.REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
  REMOTE_VIDEO_STATE_REASON.REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4, REMOTE_VIDEO_STATE_REASON.REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5, REMOTE_VIDEO_STATE_REASON.REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6, REMOTE_VIDEO_STATE_REASON.REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
  REMOTE_VIDEO_STATE_REASON.REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8, REMOTE_VIDEO_STATE_REASON.REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9
}
 
enum  LOCAL_VIDEO_STREAM_STATE { LOCAL_VIDEO_STREAM_STATE.LOCAL_VIDEO_STREAM_STATE_STOPPED = 0, LOCAL_VIDEO_STREAM_STATE.LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1, LOCAL_VIDEO_STREAM_STATE.LOCAL_VIDEO_STREAM_STATE_ENCODING = 2, LOCAL_VIDEO_STREAM_STATE.LOCAL_VIDEO_STREAM_STATE_FAILED = 3 }
 
enum  LOCAL_VIDEO_STREAM_ERROR {
  LOCAL_VIDEO_STREAM_ERROR.LOCAL_VIDEO_STREAM_ERROR_OK = 0, LOCAL_VIDEO_STREAM_ERROR.LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1, LOCAL_VIDEO_STREAM_ERROR.LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2, LOCAL_VIDEO_STREAM_ERROR.LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3,
  LOCAL_VIDEO_STREAM_ERROR.LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4, LOCAL_VIDEO_STREAM_ERROR.LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE = 5
}
 
enum  MEDIA_DEVICE_TYPE {
  MEDIA_DEVICE_TYPE.UNKNOWN_AUDIO_DEVICE = -1, MEDIA_DEVICE_TYPE.AUDIO_PLAYOUT_DEVICE = 0, MEDIA_DEVICE_TYPE.AUDIO_RECORDING_DEVICE = 1, MEDIA_DEVICE_TYPE.VIDEO_RENDER_DEVICE = 2,
  MEDIA_DEVICE_TYPE.VIDEO_CAPTURE_DEVICE = 3, MEDIA_DEVICE_TYPE.AUDIO_APPLICATION_PLAYOUT_DEVICE = 4
}
 
enum  RAW_AUDIO_FRAME_OP_MODE_TYPE { RAW_AUDIO_FRAME_OP_MODE_TYPE.RAW_AUDIO_FRAME_OP_MODE_READ_ONLY = 0, RAW_AUDIO_FRAME_OP_MODE_TYPE.RAW_AUDIO_FRAME_OP_MODE_WRITE_ONLY = 1, RAW_AUDIO_FRAME_OP_MODE_TYPE.RAW_AUDIO_FRAME_OP_MODE_READ_WRITE = 2 }
 
enum  AUDIO_PROFILE_TYPE {
  AUDIO_PROFILE_TYPE.AUDIO_PROFILE_DEFAULT = 0, AUDIO_PROFILE_TYPE.AUDIO_PROFILE_SPEECH_STANDARD = 1, AUDIO_PROFILE_TYPE.AUDIO_PROFILE_MUSIC_STANDARD = 2, AUDIO_PROFILE_TYPE.AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
  AUDIO_PROFILE_TYPE.AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4, AUDIO_PROFILE_TYPE.AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5, AUDIO_PROFILE_TYPE.AUDIO_PROFILE_IOT = 6
}
 
enum  AUDIO_SCENARIO_TYPE {
  AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_DEFAULT = 0, AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_CHATROOM_ENTERTAINMENT = 1, AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_EDUCATION = 2, AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_GAME_STREAMING = 3,
  AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_SHOWROOM = 4, AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_CHATROOM_GAMING = 5, AUDIO_SCENARIO_TYPE.AUDIO_SCENARIO_IOT = 6
}
 
enum  VIDEO_CODEC_PROFILE_TYPE { VIDEO_CODEC_PROFILE_TYPE.VIDEO_CODEC_PROFILE_BASELINE = 66, VIDEO_CODEC_PROFILE_TYPE.VIDEO_CODEC_PROFILE_MAIN = 77, VIDEO_CODEC_PROFILE_TYPE.VIDEO_CODEC_PROFILE_HIGH = 100 }
 
enum  AUDIO_SAMPLE_RATE_TYPE { AUDIO_SAMPLE_RATE_TYPE.AUDIO_SAMPLE_RATE_32000 = 32000, AUDIO_SAMPLE_RATE_TYPE.AUDIO_SAMPLE_RATE_44100 = 44100, AUDIO_SAMPLE_RATE_TYPE.AUDIO_SAMPLE_RATE_48000 = 48000 }
 
enum  AUDIO_MIXING_STATE_TYPE { AUDIO_MIXING_STATE_TYPE.AUDIO_MIXING_STATE_PLAYING = 710, AUDIO_MIXING_STATE_TYPE.AUDIO_MIXING_STATE_PAUSED = 711, AUDIO_MIXING_STATE_TYPE.AUDIO_MIXING_STATE_STOPPED = 713, AUDIO_MIXING_STATE_TYPE.AUDIO_MIXING_STATE_FAILED = 714 }
 
enum  AUDIO_MIXING_ERROR_TYPE { AUDIO_MIXING_ERROR_TYPE.AUDIO_MIXING_ERROR_CAN_NOT_OPEN = 701, AUDIO_MIXING_ERROR_TYPE.AUDIO_MIXING_ERROR_TOO_FREQUENT_CALL = 702, AUDIO_MIXING_ERROR_TYPE.AUDIO_MIXING_ERROR_INTERRUPTED_EOF = 703, AUDIO_MIXING_ERROR_TYPE.AUDIO_MIXING_ERROR_OK = 0 }
 
enum  RTMP_STREAM_PUBLISH_STATE {
  RTMP_STREAM_PUBLISH_STATE.RTMP_STREAM_PUBLISH_STATE_IDLE = 0, RTMP_STREAM_PUBLISH_STATE.RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1, RTMP_STREAM_PUBLISH_STATE.RTMP_STREAM_PUBLISH_STATE_RUNNING = 2, RTMP_STREAM_PUBLISH_STATE.RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
  RTMP_STREAM_PUBLISH_STATE.RTMP_STREAM_PUBLISH_STATE_FAILURE = 4
}
 
enum  RTMP_STREAM_PUBLISH_ERROR {
  RTMP_STREAM_PUBLISH_ERROR.RTMP_STREAM_PUBLISH_ERROR_OK = 0, RTMP_STREAM_PUBLISH_ERROR.RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1, RTMP_STREAM_PUBLISH_ERROR.RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2, RTMP_STREAM_PUBLISH_ERROR.RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
  RTMP_STREAM_PUBLISH_ERROR.RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4, RTMP_STREAM_PUBLISH_ERROR.RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5, RTMP_STREAM_PUBLISH_ERROR.RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6, RTMP_STREAM_PUBLISH_ERROR.RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
  RTMP_STREAM_PUBLISH_ERROR.RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8, RTMP_STREAM_PUBLISH_ERROR.RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9, RTMP_STREAM_PUBLISH_ERROR.RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10
}
 
enum  NETWORK_TYPE {
  NETWORK_TYPE.NETWORK_TYPE_UNKNOWN = -1, NETWORK_TYPE.NETWORK_TYPE_DISCONNECTED = 0, NETWORK_TYPE.NETWORK_TYPE_LAN = 1, NETWORK_TYPE.NETWORK_TYPE_WIFI = 2,
  NETWORK_TYPE.NETWORK_TYPE_MOBILE_2G = 3, NETWORK_TYPE.NETWORK_TYPE_MOBILE_3G = 4, NETWORK_TYPE.NETWORK_TYPE_MOBILE_4G = 5
}
 
enum  VOICE_CHANGER_PRESET {
  VOICE_CHANGER_PRESET.VOICE_CHANGER_OFF = 0x00000000, VOICE_CHANGER_PRESET.VOICE_CHANGER_OLDMAN = 0x00000001, VOICE_CHANGER_PRESET.VOICE_CHANGER_BABYBOY = 0x00000002, VOICE_CHANGER_PRESET.VOICE_CHANGER_BABYGIRL = 0x00000003,
  VOICE_CHANGER_PRESET.VOICE_CHANGER_ZHUBAJIE = 0x00000004, VOICE_CHANGER_PRESET.VOICE_CHANGER_ETHEREAL = 0x00000005, VOICE_CHANGER_PRESET.VOICE_CHANGER_HULK = 0x00000006, VOICE_CHANGER_PRESET.VOICE_BEAUTY_VIGOROUS = 0x00100001,
  VOICE_CHANGER_PRESET.VOICE_BEAUTY_DEEP = 0x00100002, VOICE_CHANGER_PRESET.VOICE_BEAUTY_MELLOW = 0x00100003, VOICE_CHANGER_PRESET.VOICE_BEAUTY_FALSETTO = 0x00100004, VOICE_CHANGER_PRESET.VOICE_BEAUTY_FULL = 0x00100005,
  VOICE_CHANGER_PRESET.VOICE_BEAUTY_CLEAR = 0x00100006, VOICE_CHANGER_PRESET.VOICE_BEAUTY_RESOUNDING = 0x00100007, VOICE_CHANGER_PRESET.VOICE_BEAUTY_RINGING = 0x00100008, VOICE_CHANGER_PRESET.VOICE_BEAUTY_SPACIAL = 0x00100009,
  VOICE_CHANGER_PRESET.GENERAL_BEAUTY_VOICE_MALE_MAGNETIC = 0x00200001, VOICE_CHANGER_PRESET.GENERAL_BEAUTY_VOICE_FEMALE_FRESH = 0x00200002, VOICE_CHANGER_PRESET.GENERAL_BEAUTY_VOICE_FEMALE_VITALITY = 0x00200003
}
 
enum  AUDIO_REVERB_PRESET {
  AUDIO_REVERB_PRESET.AUDIO_REVERB_OFF = 0x00000000, AUDIO_REVERB_PRESET.AUDIO_REVERB_FX_KTV = 0x00100001, AUDIO_REVERB_PRESET.AUDIO_REVERB_FX_VOCAL_CONCERT = 0x00100002, AUDIO_REVERB_PRESET.AUDIO_REVERB_FX_UNCLE = 0x00100003,
  AUDIO_REVERB_PRESET.AUDIO_REVERB_FX_SISTER = 0x00100004, AUDIO_REVERB_PRESET.AUDIO_REVERB_FX_STUDIO = 0x00100005, AUDIO_REVERB_PRESET.AUDIO_REVERB_FX_POPULAR = 0x00100006, AUDIO_REVERB_PRESET.AUDIO_REVERB_FX_RNB = 0x00100007,
  AUDIO_REVERB_PRESET.AUDIO_REVERB_FX_PHONOGRAPH = 0x00100008, AUDIO_REVERB_PRESET.AUDIO_REVERB_POPULAR = 0x00000001, AUDIO_REVERB_PRESET.AUDIO_REVERB_RNB = 0x00000002, AUDIO_REVERB_PRESET.AUDIO_REVERB_ROCK = 0x00000003,
  AUDIO_REVERB_PRESET.AUDIO_REVERB_HIPHOP = 0x00000004, AUDIO_REVERB_PRESET.AUDIO_REVERB_VOCAL_CONCERT = 0x00000005, AUDIO_REVERB_PRESET.AUDIO_REVERB_KTV = 0x00000006, AUDIO_REVERB_PRESET.AUDIO_REVERB_STUDIO = 0x00000007,
  AUDIO_REVERB_PRESET.AUDIO_VIRTUAL_STEREO = 0x00200001
}
 
enum  AUDIO_EQUALIZATION_BAND_FREQUENCY {
  AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_31 = 0, AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_62 = 1, AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_125 = 2, AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_250 = 3,
  AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_500 = 4, AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_1K = 5, AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_2K = 6, AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_4K = 7,
  AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_8K = 8, AUDIO_EQUALIZATION_BAND_FREQUENCY.AUDIO_EQUALIZATION_BAND_16K = 9
}
 
enum  QUALITY_ADAPT_INDICATION { QUALITY_ADAPT_INDICATION.ADAPT_NONE = 0, QUALITY_ADAPT_INDICATION.ADAPT_UP_BANDWIDTH = 1, QUALITY_ADAPT_INDICATION.ADAPT_DOWN_BANDWIDTH = 2 }
 
enum  AUDIO_REVERB_TYPE {
  AUDIO_REVERB_TYPE.AUDIO_REVERB_DRY_LEVEL = 0, AUDIO_REVERB_TYPE.AUDIO_REVERB_WET_LEVEL = 1, AUDIO_REVERB_TYPE.AUDIO_REVERB_ROOM_SIZE = 2, AUDIO_REVERB_TYPE.AUDIO_REVERB_WET_DELAY = 3,
  AUDIO_REVERB_TYPE.AUDIO_REVERB_STRENGTH = 4
}
 
enum  AUDIO_CODEC_PROFILE_TYPE { AUDIO_CODEC_PROFILE_TYPE.AUDIO_CODEC_PROFILE_LC_AAC = 0, AUDIO_CODEC_PROFILE_TYPE.AUDIO_CODEC_PROFILE_HE_AAC = 1 }
 
enum  VIDEO_CODEC_TYPE { VIDEO_CODEC_TYPE.VIDEO_CODEC_VP8 = 1, VIDEO_CODEC_TYPE.VIDEO_CODEC_H264 = 2, VIDEO_CODEC_TYPE.VIDEO_CODEC_EVP = 3, VIDEO_CODEC_TYPE.VIDEO_CODEC_E264 = 4 }
 
enum  AREA_CODE : uint {
  AREA_CODE.AREA_CODE_CN = (1 << 0), AREA_CODE.AREA_CODE_NA = (1 << 1), AREA_CODE.AREA_CODE_EUR = (1 << 2), AREA_CODE.AREA_CODE_AS = (1 << 3),
  AREA_CODE.AREA_CODE_GLOBAL = 0xFFFFFFFF
}
 
enum  FRAME_RATE {
  FRAME_RATE.FRAME_RATE_FPS_1 = 1, FRAME_RATE.FRAME_RATE_FPS_7 = 7, FRAME_RATE.FRAME_RATE_FPS_10 = 10, FRAME_RATE.FRAME_RATE_FPS_15 = 15,
  FRAME_RATE.FRAME_RATE_FPS_24 = 24, FRAME_RATE.FRAME_RATE_FPS_30 = 30, FRAME_RATE.FRAME_RATE_FPS_60 = 60
}
 
enum  ORIENTATION_MODE { ORIENTATION_MODE.ORIENTATION_MODE_ADAPTIVE = 0, ORIENTATION_MODE.ORIENTATION_MODE_FIXED_LANDSCAPE = 1, ORIENTATION_MODE.ORIENTATION_MODE_FIXED_PORTRAIT = 2 }
 
enum  DEGRADATION_PREFERENCE { DEGRADATION_PREFERENCE.MAINTAIN_QUALITY = 0, DEGRADATION_PREFERENCE.MAINTAIN_FRAMERATE = 1, DEGRADATION_PREFERENCE.MAINTAIN_BALANCED = 2 }
 
enum  VIDEO_FRAME_TYPE { VIDEO_FRAME_TYPE.FRAME_TYPE_YUV420 = 0, VIDEO_FRAME_TYPE.FRAME_TYPE_RGBA = 1 }
 
enum  VIDEO_MIRROR_MODE_TYPE { VIDEO_MIRROR_MODE_TYPE.VIDEO_MIRROR_MODE_AUTO = 0, VIDEO_MIRROR_MODE_TYPE.VIDEO_MIRROR_MODE_ENABLED = 1, VIDEO_MIRROR_MODE_TYPE.VIDEO_MIRROR_MODE_DISABLED = 2 }
 
enum  AUDIO_FRAME_TYPE { AUDIO_FRAME_TYPE.FRAME_TYPE_PCM16 = 0 }
 
enum  MEDIA_SOURCE_TYPE { MEDIA_SOURCE_TYPE.AUDIO_PLAYOUT_SOURCE = 0, MEDIA_SOURCE_TYPE.AUDIO_RECORDING_SOURCE = 1 }
 
enum  LASTMILE_PROBE_RESULT_STATE { LASTMILE_PROBE_RESULT_STATE.LASTMILE_PROBE_RESULT_COMPLETE = 1, LASTMILE_PROBE_RESULT_STATE.LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2, LASTMILE_PROBE_RESULT_STATE.LASTMILE_PROBE_RESULT_UNAVAILABLE = 3 }
 
enum  CAMERA_DIRECTION { CAMERA_DIRECTION.CAMERA_REAR = 0, CAMERA_DIRECTION.CAMERA_FRONT = 1 }
 
enum  CAPTURER_OUTPUT_PREFERENCE { CAPTURER_OUTPUT_PREFERENCE.CAPTURER_OUTPUT_PREFERENCE_AUTO = 0, CAPTURER_OUTPUT_PREFERENCE.CAPTURER_OUTPUT_PREFERENCE_PERFORMANCE = 1, CAPTURER_OUTPUT_PREFERENCE.CAPTURER_OUTPUT_PREFERENCE_PREVIEW = 2 }
 
enum  QUALITY_TYPE {
  QUALITY_TYPE.QUALITY_UNKNOWN = 0, QUALITY_TYPE.QUALITY_EXCELLENT = 1, QUALITY_TYPE.QUALITY_GOOD = 2, QUALITY_TYPE.QUALITY_POOR = 3,
  QUALITY_TYPE.QUALITY_BAD = 4, QUALITY_TYPE.QUALITY_VBAD = 5, QUALITY_TYPE.QUALITY_DOWN = 6, QUALITY_TYPE.QUALITY_UNSUPPORTED = 7,
  QUALITY_TYPE.QUALITY_DETECTING = 8
}
 
enum  MEDIA_DEVICE_STATE_TYPE { MEDIA_DEVICE_STATE_TYPE.MEDIA_DEVICE_STATE_ACTIVE = 1, MEDIA_DEVICE_STATE_TYPE.MEDIA_DEVICE_STATE_DISABLED = 2, MEDIA_DEVICE_STATE_TYPE.MEDIA_DEVICE_STATE_NOT_PRESENT = 4, MEDIA_DEVICE_STATE_TYPE.MEDIA_DEVICE_STATE_UNPLUGGED = 8 }
 
enum  INJECT_STREAM_STATUS {
  INJECT_STREAM_STATUS.INJECT_STREAM_STATUS_START_SUCCESS = 0, INJECT_STREAM_STATUS.INJECT_STREAM_STATUS_START_ALREADY_EXISTS = 1, INJECT_STREAM_STATUS.INJECT_STREAM_STATUS_START_UNAUTHORIZED = 2, INJECT_STREAM_STATUS.INJECT_STREAM_STATUS_START_TIMEDOUT = 3,
  INJECT_STREAM_STATUS.INJECT_STREAM_STATUS_START_FAILED = 4, INJECT_STREAM_STATUS.INJECT_STREAM_STATUS_STOP_SUCCESS = 5, INJECT_STREAM_STATUS.INJECT_STREAM_STATUS_STOP_NOT_FOUND = 6, INJECT_STREAM_STATUS.INJECT_STREAM_STATUS_STOP_UNAUTHORIZED = 7,
  INJECT_STREAM_STATUS.INJECT_STREAM_STATUS_STOP_TIMEDOUT = 8, INJECT_STREAM_STATUS.INJECT_STREAM_STATUS_STOP_FAILED = 9, INJECT_STREAM_STATUS.INJECT_STREAM_STATUS_BROKEN = 10
}
 
enum  PRIORITY_TYPE { PRIORITY_TYPE.PRIORITY_HIGH = 50, PRIORITY_TYPE.PRIORITY_NORMAL = 100 }
 
enum  LOCAL_AUDIO_STREAM_STATE { LOCAL_AUDIO_STREAM_STATE.LOCAL_AUDIO_STREAM_STATE_STOPPED = 0, LOCAL_AUDIO_STREAM_STATE.LOCAL_AUDIO_STREAM_STATE_RECORDING = 1, LOCAL_AUDIO_STREAM_STATE.LOCAL_AUDIO_STREAM_STATE_ENCODING = 2, LOCAL_AUDIO_STREAM_STATE.LOCAL_AUDIO_STREAM_STATE_FAILED = 3 }
 
enum  LOCAL_AUDIO_STREAM_ERROR {
  LOCAL_AUDIO_STREAM_ERROR.LOCAL_AUDIO_STREAM_ERROR_OK = 0, LOCAL_AUDIO_STREAM_ERROR.LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1, LOCAL_AUDIO_STREAM_ERROR.LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2, LOCAL_AUDIO_STREAM_ERROR.LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3,
  LOCAL_AUDIO_STREAM_ERROR.LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4, LOCAL_AUDIO_STREAM_ERROR.LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5
}
 
enum  REMOTE_AUDIO_STATE {
  REMOTE_AUDIO_STATE.REMOTE_AUDIO_STATE_STOPPED = 0, REMOTE_AUDIO_STATE.REMOTE_AUDIO_STATE_STARTING = 1, REMOTE_AUDIO_STATE.REMOTE_AUDIO_STATE_DECODING = 2, REMOTE_AUDIO_STATE.REMOTE_AUDIO_STATE_FROZEN = 3,
  REMOTE_AUDIO_STATE.REMOTE_AUDIO_STATE_FAILED = 4
}
 
enum  REMOTE_AUDIO_STATE_REASON {
  REMOTE_AUDIO_STATE_REASON.REMOTE_AUDIO_REASON_INTERNAL = 0, REMOTE_AUDIO_STATE_REASON.REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1, REMOTE_AUDIO_STATE_REASON.REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2, REMOTE_AUDIO_STATE_REASON.REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
  REMOTE_AUDIO_STATE_REASON.REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4, REMOTE_AUDIO_STATE_REASON.REMOTE_AUDIO_REASON_REMOTE_MUTED = 5, REMOTE_AUDIO_STATE_REASON.REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6, REMOTE_AUDIO_STATE_REASON.REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7
}
 
enum  AUDIO_SESSION_OPERATION_RESTRICTION {
  AUDIO_SESSION_OPERATION_RESTRICTION.AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0, AUDIO_SESSION_OPERATION_RESTRICTION.AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1, AUDIO_SESSION_OPERATION_RESTRICTION.AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1, AUDIO_SESSION_OPERATION_RESTRICTION.AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
  AUDIO_SESSION_OPERATION_RESTRICTION.AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7
}
 
enum  CHANNEL_MEDIA_RELAY_EVENT {
  CHANNEL_MEDIA_RELAY_EVENT.RELAY_EVENT_NETWORK_DISCONNECTED = 0, CHANNEL_MEDIA_RELAY_EVENT.RELAY_EVENT_NETWORK_CONNECTED = 1, CHANNEL_MEDIA_RELAY_EVENT.RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2, CHANNEL_MEDIA_RELAY_EVENT.RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
  CHANNEL_MEDIA_RELAY_EVENT.RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4, CHANNEL_MEDIA_RELAY_EVENT.RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5, CHANNEL_MEDIA_RELAY_EVENT.RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6, CHANNEL_MEDIA_RELAY_EVENT.RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
  CHANNEL_MEDIA_RELAY_EVENT.RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8, CHANNEL_MEDIA_RELAY_EVENT.RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9, CHANNEL_MEDIA_RELAY_EVENT.RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10, CHANNEL_MEDIA_RELAY_EVENT.RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11
}
 
enum  CHANNEL_MEDIA_RELAY_STATE { CHANNEL_MEDIA_RELAY_STATE.RELAY_STATE_IDLE = 0, CHANNEL_MEDIA_RELAY_STATE.RELAY_STATE_CONNECTING = 1, CHANNEL_MEDIA_RELAY_STATE.RELAY_STATE_RUNNING = 2, CHANNEL_MEDIA_RELAY_STATE.RELAY_STATE_FAILURE = 3 }
 
enum  VIDEO_PROFILE_TYPE {
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_120P = 0, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_120P_3 = 2, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_180P = 10, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_180P_3 = 12,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_180P_4 = 13, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_240P = 20, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_240P_3 = 22, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_240P_4 = 23,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_360P = 30, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_360P_3 = 32, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_360P_4 = 33, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_360P_6 = 35,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_360P_7 = 36, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_360P_8 = 37, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_360P_9 = 38, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_360P_10 = 39,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_360P_11 = 100, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_480P = 40, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_480P_3 = 42, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_480P_4 = 43,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_480P_6 = 45, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_480P_8 = 47, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_480P_9 = 48, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_480P_10 = 49,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_720P = 50, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_720P_3 = 52, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_720P_5 = 54, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_720P_6 = 55,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_1080P = 60, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_1080P_3 = 62, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_1080P_5 = 64, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_1440P = 66,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_1440P_2 = 67, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_4K = 70, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_LANDSCAPE_4K_3 = 72, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_120P = 1000,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_120P_3 = 1002, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_180P = 1010, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_180P_3 = 1012, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_180P_4 = 1013,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_240P = 1020, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_240P_3 = 1022, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_240P_4 = 1023, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_360P = 1030,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_360P_3 = 1032, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_360P_4 = 1033, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_360P_6 = 1035, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_360P_7 = 1036,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_360P_8 = 1037, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_360P_9 = 1038, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_360P_10 = 1039, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_360P_11 = 1100,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_480P = 1040, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_480P_3 = 1042, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_480P_4 = 1043, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_480P_6 = 1045,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_480P_8 = 1047, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_480P_9 = 1048, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_480P_10 = 1049, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_720P = 1050,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_720P_3 = 1052, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_720P_5 = 1054, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_720P_6 = 1055, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_1080P = 1060,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_1080P_3 = 1062, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_1080P_5 = 1064, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_1440P = 1066, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_1440P_2 = 1067,
  VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_4K = 1070, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_PORTRAIT_4K_3 = 1072, VIDEO_PROFILE_TYPE.VIDEO_PROFILE_DEFAULT = VIDEO_PROFILE_LANDSCAPE_360P
}
 
enum  CHANNEL_MEDIA_RELAY_ERROR {
  CHANNEL_MEDIA_RELAY_ERROR.RELAY_OK = 0, CHANNEL_MEDIA_RELAY_ERROR.RELAY_ERROR_SERVER_ERROR_RESPONSE = 1, CHANNEL_MEDIA_RELAY_ERROR.RELAY_ERROR_SERVER_NO_RESPONSE = 2, CHANNEL_MEDIA_RELAY_ERROR.RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
  CHANNEL_MEDIA_RELAY_ERROR.RELAY_ERROR_FAILED_JOIN_SRC = 4, CHANNEL_MEDIA_RELAY_ERROR.RELAY_ERROR_FAILED_JOIN_DEST = 5, CHANNEL_MEDIA_RELAY_ERROR.RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6, CHANNEL_MEDIA_RELAY_ERROR.RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
  CHANNEL_MEDIA_RELAY_ERROR.RELAY_ERROR_SERVER_CONNECTION_LOST = 8, CHANNEL_MEDIA_RELAY_ERROR.RELAY_ERROR_INTERNAL_ERROR = 9, CHANNEL_MEDIA_RELAY_ERROR.RELAY_ERROR_SRC_TOKEN_EXPIRED = 10, CHANNEL_MEDIA_RELAY_ERROR.RELAY_ERROR_DEST_TOKEN_EXPIRED = 11
}
 
enum  METADATA_TYPE { METADATA_TYPE.UNKNOWN_METADATA = -1, METADATA_TYPE.VIDEO_METADATA = 0 }
 
enum  RENDER_MODE_TYPE { RENDER_MODE_TYPE.RENDER_MODE_HIDDEN = 1, RENDER_MODE_TYPE.RENDER_MODE_FIT = 2, RENDER_MODE_TYPE.RENDER_MODE_ADAPTIVE = 3 }
 
enum  AgoraVideoSurfaceType { AgoraVideoSurfaceType.Renderer = 0, AgoraVideoSurfaceType.RawImage = 1 }
 

Functions

delegate void OnJoinChannelSuccessHandler (string channelName, uint uid, int elapsed)
 
delegate void OnLeaveChannelHandler (RtcStats stats)
 
delegate void OnReJoinChannelSuccessHandler (string channelName, uint uid, int elapsed)
 
delegate void OnConnectionLostHandler ()
 
delegate void OnConnectionInterruptedHandler ()
 
delegate void OnRequestTokenHandler ()
 
delegate void OnUserJoinedHandler (uint uid, int elapsed)
 
delegate void OnUserOfflineHandler (uint uid, USER_OFFLINE_REASON reason)
 
delegate void OnVolumeIndicationHandler (AudioVolumeInfo[] speakers, int speakerNumber, int totalVolume)
 
delegate void OnUserMutedAudioHandler (uint uid, bool muted)
 
delegate void OnSDKWarningHandler (int warn, string msg)
 
delegate void OnSDKErrorHandler (int error, string msg)
 
delegate void OnRtcStatsHandler (RtcStats stats)
 
delegate void OnAudioMixingFinishedHandler ()
 
delegate void OnAudioRouteChangedHandler (AUDIO_ROUTE route)
 
delegate void OnFirstRemoteVideoDecodedHandler (uint uid, int width, int height, int elapsed)
 
delegate void OnVideoSizeChangedHandler (uint uid, int width, int height, int rotation)
 
delegate void OnClientRoleChangedHandler (CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole)
 
delegate void OnUserMuteVideoHandler (uint uid, bool muted)
 
delegate void OnMicrophoneEnabledHandler (bool isEnabled)
 
delegate void OnApiExecutedHandler (int err, string api, string result)
 
delegate void OnLastmileQualityHandler (int quality)
 
delegate void OnFirstLocalAudioFrameHandler (int elapsed)
 
delegate void OnFirstRemoteAudioFrameHandler (uint userId, int elapsed)
 
delegate void OnAudioQualityHandler (uint userId, int quality, ushort delay, ushort lost)
 
delegate void OnStreamInjectedStatusHandler (string url, uint userId, int status)
 
delegate void OnStreamUnpublishedHandler (string url)
 
delegate void OnStreamPublishedHandler (string url, int error)
 
delegate void OnStreamMessageErrorHandler (uint userId, int streamId, int code, int missed, int cached)
 
delegate void OnStreamMessageHandler (uint userId, int streamId, string data, int length)
 
delegate void OnConnectionBannedHandler ()
 
delegate void OnConnectionStateChangedHandler (CONNECTION_STATE_TYPE state, CONNECTION_CHANGED_REASON_TYPE reason)
 
delegate void OnTokenPrivilegeWillExpireHandler (string token)
 
delegate void OnActiveSpeakerHandler (uint uid)
 
delegate void OnVideoStoppedHandler ()
 
delegate void OnFirstLocalVideoFrameHandler (int width, int height, int elapsed)
 
delegate void OnFirstRemoteVideoFrameHandler (uint uid, int width, int height, int elapsed)
 
delegate void OnUserEnableVideoHandler (uint uid, bool enabled)
 
delegate void OnUserEnableLocalVideoHandler (uint uid, bool enabled)
 
delegate void OnRemoteVideoStateChangedHandler (uint uid, REMOTE_VIDEO_STATE state, REMOTE_VIDEO_STATE_REASON reason, int elapsed)
 
delegate void OnLocalPublishFallbackToAudioOnlyHandler (bool isFallbackOrRecover)
 
delegate void OnRemoteSubscribeFallbackToAudioOnlyHandler (uint uid, bool isFallbackOrRecover)
 
delegate void OnNetworkQualityHandler (uint uid, int txQuality, int rxQuality)
 
delegate void OnLocalVideoStatsHandler (LocalVideoStats localVideoStats)
 
delegate void OnRemoteVideoStatsHandler (RemoteVideoStats remoteVideoStats)
 
delegate void OnRemoteAudioStatsHandler (RemoteAudioStats remoteAudioStats)
 
delegate void OnAudioDeviceStateChangedHandler (string deviceId, int deviceType, int deviceState)
 
delegate void OnCameraReadyHandler ()
 
delegate void OnCameraFocusAreaChangedHandler (int x, int y, int width, int height)
 
delegate void OnCameraExposureAreaChangedHandler (int x, int y, int width, int height)
 
delegate void OnRemoteAudioMixingBeginHandler ()
 
delegate void OnRemoteAudioMixingEndHandler ()
 
delegate void OnAudioEffectFinishedHandler (int soundId)
 
delegate void OnVideoDeviceStateChangedHandler (string deviceId, int deviceType, int deviceState)
 
delegate void OnRemoteVideoTransportStatsHandler (uint uid, ushort delay, ushort lost, ushort rxKBitRate)
 
delegate void OnRemoteAudioTransportStatsHandler (uint uid, ushort delay, ushort lost, ushort rxKBitRate)
 
delegate void OnTranscodingUpdatedHandler ()
 
delegate void OnAudioDeviceVolumeChangedHandler (MEDIA_DEVICE_TYPE deviceType, int volume, bool muted)
 
delegate void OnMediaEngineStartCallSuccessHandler ()
 
delegate void OnMediaEngineLoadSuccessHandler ()
 
delegate void OnAudioMixingStateChangedHandler (AUDIO_MIXING_STATE_TYPE state, AUDIO_MIXING_ERROR_TYPE errorCode)
 
delegate void OnFirstRemoteAudioDecodedHandler (uint uid, int elapsed)
 
delegate void OnLocalVideoStateChangedHandler (LOCAL_VIDEO_STREAM_STATE localVideoState, LOCAL_VIDEO_STREAM_ERROR error)
 
delegate void OnRtmpStreamingStateChangedHandler (string url, RTMP_STREAM_PUBLISH_STATE state, RTMP_STREAM_PUBLISH_ERROR errCode)
 
delegate void OnNetworkTypeChangedHandler (NETWORK_TYPE type)
 
delegate void OnLastmileProbeResultHandler (LastmileProbeResult result)
 
delegate void OnLocalUserRegisteredHandler (uint uid, string userAccount)
 
delegate void OnUserInfoUpdatedHandler (uint uid, UserInfo userInfo)
 
delegate void OnLocalAudioStateChangedHandler (LOCAL_AUDIO_STREAM_STATE state, LOCAL_AUDIO_STREAM_ERROR error)
 
delegate void OnRemoteAudioStateChangedHandler (uint uid, REMOTE_AUDIO_STATE state, REMOTE_AUDIO_STATE_REASON reason, int elapsed)
 
delegate void OnLocalAudioStatsHandler (LocalAudioStats localAudioStats)
 
delegate void OnChannelMediaRelayStateChangedHandler (CHANNEL_MEDIA_RELAY_STATE state, CHANNEL_MEDIA_RELAY_ERROR code)
 
delegate void OnChannelMediaRelayEventHandler (CHANNEL_MEDIA_RELAY_EVENT events)
 
delegate void OnFacePositionChangedHandler (int imageWidth, int imageHeight, Rectangle vecRectangle, int vecDistance, int numFaces)
 
delegate void ChannelOnWarningHandler (string channelId, int warn, string message)
 
delegate void ChannelOnErrorHandler (string channelId, int err, string message)
 
delegate void ChannelOnJoinChannelSuccessHandler (string channelId, uint uid, int elapsed)
 
delegate void ChannelOnReJoinChannelSuccessHandler (string channelId, uint uid, int elapsed)
 
delegate void ChannelOnLeaveChannelHandler (string channelId, RtcStats rtcStats)
 
delegate void ChannelOnClientRoleChangedHandler (string channelId, CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole)
 
delegate void ChannelOnUserJoinedHandler (string channelId, uint uid, int elapsed)
 
delegate void ChannelOnUserOffLineHandler (string channelId, uint uid, USER_OFFLINE_REASON reason)
 
delegate void ChannelOnConnectionLostHandler (string channelId)
 
delegate void ChannelOnRequestTokenHandler (string channelId)
 
delegate void ChannelOnTokenPrivilegeWillExpireHandler (string channelId, string token)
 
delegate void ChannelOnRtcStatsHandler (string channelId, RtcStats rtcStats)
 
delegate void ChannelOnNetworkQualityHandler (string channelId, uint uid, int txQuality, int rxQuality)
 
delegate void ChannelOnRemoteVideoStatsHandler (string channelId, RemoteVideoStats remoteVideoStats)
 
delegate void ChannelOnRemoteAudioStatsHandler (string channelId, RemoteAudioStats remoteAudioStats)
 
delegate void ChannelOnRemoteAudioStateChangedHandler (string channelId, uint uid, REMOTE_AUDIO_STATE state, REMOTE_AUDIO_STATE_REASON reason, int elapsed)
 
delegate void ChannelOnActiveSpeakerHandler (string channelId, uint uid)
 
delegate void ChannelOnVideoSizeChangedHandler (string channelId, uint uid, int width, int height, int rotation)
 
delegate void ChannelOnRemoteVideoStateChangedHandler (string channelId, uint uid, REMOTE_VIDEO_STATE state, REMOTE_VIDEO_STATE_REASON reason, int elapsed)
 
delegate void ChannelOnStreamMessageHandler (string channelId, uint uid, int streamId, string data, int length)
 
delegate void ChannelOnStreamMessageErrorHandler (string channelId, uint uid, int streamId, int code, int missed, int cached)
 
delegate void ChannelOnMediaRelayStateChangedHandler (string channelId, CHANNEL_MEDIA_RELAY_STATE state, CHANNEL_MEDIA_RELAY_ERROR code)
 
delegate void ChannelOnMediaRelayEventHandler (string channelId, CHANNEL_MEDIA_RELAY_EVENT events)
 
delegate void ChannelOnRtmpStreamingStateChangedHandler (string channelId, string url, RTMP_STREAM_PUBLISH_STATE state, RTMP_STREAM_PUBLISH_ERROR errCode)
 
delegate void ChannelOnTranscodingUpdatedHandler (string channelId)
 
delegate void ChannelOnStreamInjectedStatusHandler (string channelId, string url, uint uid, int status)
 
delegate void ChannelOnRemoteSubscribeFallbackToAudioOnlyHandler (string channelId, uint uid, bool isFallbackOrRecover)
 
delegate void ChannelOnConnectionStateChangedHandler (string channelId, CONNECTION_STATE_TYPE state, CONNECTION_CHANGED_REASON_TYPE reason)
 
delegate void ChannelOnLocalPublishFallbackToAudioOnlyHandler (string channelId, bool isFallbackOrRecover)
 

Enumeration Type Documentation

◆ VIDEO_RENDER_MODE

Video rendering mode.

Enumerator
RENDER_RAWDATA 

100: (Default) RawData.

REDNER_OPENGL_ES2 

101: OpenGLES 2.

RENDER_UNITY_LOW_LEVEL_INTERFACE 

102: Unity low level interface.

◆ ERROR_CODE

Error code, see more in Error Code.

Enumerator
ERROR_NOT_INIT_ENGINE 

-7: The SDK is not initialized before calling this method.

ERROR_OK 

0: No error occurs.

ERROR_INVALID_ARGUMENT 

-2: An invalid parameter is used. For example, the specific channel name includes illegal characters.

ERROR_NO_DEVICE_PLUGIN 

-100: No device is plugged.

◆ REMOTE_VIDEO_STREAM_TYPE

Remote video stream types.

Enumerator
REMOTE_VIDEO_STREAM_HIGH 

0: High-stream video.

REMOTE_VIDEO_STREAM_LOW 

1: Low-stream video.

◆ REMOTE_VIDEO_STATE

The state of the remote video.

Enumerator
REMOTE_VIDEO_STATE_STOPPED 

0: The remote video is in the default state, probably due to REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED(3), REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED(5), or REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE(7).

REMOTE_VIDEO_STATE_STARTING 

1: The first remote video packet is received.

REMOTE_VIDEO_STATE_DECODING 

2: The remote video stream is decoded and plays normally, probably due to REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY(2), REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED(4), REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED(6), or REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY(9).

REMOTE_VIDEO_STATE_FROZEN 

3: The remote video is frozen, probably due to REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION(1) or REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK(8).

REMOTE_VIDEO_STATE_FAILED 

4: The remote video fails to start, probably due to REMOTE_VIDEO_STATE_REASON_INTERNAL(0).

◆ USER_OFFLINE_REASON

Reasons for a user being offline.

Enumerator
QUIT 

0: The user quits the call.

DROPPED 

1: The SDK times out and the user drops offline because no data packet is received within a certain period of time. If the user quits the call and the message is not passed to the SDK (due to an unreliable channel), the SDK assumes the user dropped offline.

BECOME_AUDIENCE 

2: (Live broadcast only.) The client role switched from the host to the audience.

◆ LOG_FILTER

Output log filter level.

Enumerator
OFF 

0: Do not output any log information.

DEBUG 

0x80f: Output all log information. Set your log filter as debug if you want to get the most complete log file.

INFO 

0x0f: Output CRITICAL, ERROR, WARNING, and INFO level log information. We recommend setting your log filter as this level.

WARNING 

0x0e: Outputs CRITICAL, ERROR, and WARNING level log information.

ERROR 

0x0c: Outputs CRITICAL and ERROR level log information.

CRITICAL 

0x08: Outputs CRITICAL level log information.

◆ CHANNEL_PROFILE

The channel profile of the Agora IRtcEngine.

Enumerator
CHANNEL_PROFILE_COMMUNICATION 

0: (Default) The Communication profile. Use this profile in one-on-one calls or group calls, where all users can talk freely.

CHANNEL_PROFILE_LIVE_BROADCASTING 

1: The Live-Broadcast profile. Users in a live-broadcast channel have a role as either broadcaster or audience. A broadcaster can both send and receive streams; an audience can only receive streams.

CHANNEL_PROFILE_GAME 

2: (Not recommended) The Gaming profile. This profile uses a codec with a lower bitrate and consumes less power. Applies to the gaming scenario, where all game players can talk freely.

◆ CLIENT_ROLE_TYPE

Client roles in a live broadcast.

Enumerator
CLIENT_ROLE_BROADCASTER 

1: Broadcaster. A broadcaster can both send and receive streams.

CLIENT_ROLE_AUDIENCE 

2: Audience, the default role. An audience can only receive streams.

◆ AUDIO_RECORDING_QUALITY_TYPE

Audio recording qualities.

Enumerator
AUDIO_RECORDING_QUALITY_LOW 

0: Low quality. The sample rate is 32 kHz, and the file size is around 1.2 MB after 10 minutes of recording.

AUDIO_RECORDING_QUALITY_MEDIUM 

1: Medium quality. The sample rate is 32 kHz, and the file size is around 2 MB after 10 minutes of recording.

AUDIO_RECORDING_QUALITY_HIGH 

2: High quality. The sample rate is 32 kHz, and the file size is around 3.75 MB after 10 minutes of recording.

◆ AUDIO_ROUTE

Audio output routing.

Enumerator
AUDIO_ROUTE_DEFAULT 

-1: Default.

AUDIO_ROUTE_HEADSET 

0: Headset.

AUDIO_ROUTE_EARPIECE 

1: Earpiece.

AUDIO_ROUTE_HEADSET_NO_MIC 

2: Headset with no microphone.

AUDIO_ROUTE_SPEAKERPHONE 

3: Speakerphone.

AUDIO_ROUTE_LOUDSPEAKER 

4: Loudspeaker.

AUDIO_ROUTE_BLUETOOTH 

5: Bluetooth headset.

◆ CONNECTION_STATE_TYPE

Connection states.

Enumerator
CONNECTION_STATE_DISCONNECTED 

1: The SDK is disconnected from Agora's edge server.

  • This is the initial state before calling the JoinChannelByKey method.
  • The SDK also enters this state when the application calls the LeaveChannel method.
CONNECTION_STATE_CONNECTING 

2: The SDK is connecting to Agora's edge server.

  • When the application calls the JoinChannelByKey method, the SDK starts to establish a connection to the specified channel, triggers the OnConnectionStateChangedHandler callback, and switches to the CONNECTION_STATE_CONNECTING(2) state.
  • When the SDK successfully joins the channel, it triggers the OnConnectionStateChangedHandler callback and switches to the CONNECTION_STATE_CONNECTED(3) state.
  • After the SDK joins the channel and when it finishes initializing the media engine, the SDK triggers the OnJoinChannelSuccessHandler callback.
CONNECTION_STATE_CONNECTED 

3: The SDK is connected to Agora's edge server and has joined a channel. You can now publish or subscribe to a media stream in the channel. If the connection to the channel is lost because, for example, if the network is down or switched, the SDK automatically tries to reconnect and triggers:

CONNECTION_STATE_RECONNECTING 

4: The SDK keeps rejoining the channel after being disconnected from a joined channel because of network issues.

  • If the SDK cannot rejoin the channel within 10 seconds after being disconnected from Agora's edge server, the SDK triggers the OnConnectionLostHandler callback, stays in the CONNECTION_STATE_RECONNECTING(4) state, and keeps rejoining the channel.
  • If the SDK fails to rejoin the channel 20 minutes after being disconnected from Agora's edge server, the SDK triggers the OnConnectionStateChangedHandler callback, switches to the CONNECTION_STATE_FAILED(5) state, and stops rejoining the channel.
CONNECTION_STATE_FAILED 

5: The SDK fails to connect to Agora's edge server or join the channel. You must call the LeaveChannel method to leave this state, and call the JoinChannelByKey method again to rejoin the channel. If the SDK is banned from joining the channel by Agora's edge server (through the RESTful API), the SDK triggers the OnConnectionBannedHandler (deprecated) and OnConnectionStateChangedHandler callbacks.

◆ CONNECTION_CHANGED_REASON_TYPE

Reasons for a connection state change.

Enumerator
CONNECTION_CHANGED_CONNECTING 

0: The SDK is connecting to Agora's edge server.

CONNECTION_CHANGED_JOIN_SUCCESS 

1: The SDK has joined the channel successfully.

CONNECTION_CHANGED_INTERRUPTED 

2: The connection between the SDK and Agora's edge server is interrupted.

CONNECTION_CHANGED_BANNED_BY_SERVER 

3: The connection between the SDK and Agora's edge server is banned by Agora's edge server.

CONNECTION_CHANGED_JOIN_FAILED 

4: The SDK fails to join the channel for more than 20 minutes and stops reconnecting to the channel.

CONNECTION_CHANGED_LEAVE_CHANNEL 

5: The SDK has left the channel.

CONNECTION_CHANGED_INVALID_APP_ID 

6: The connection failed since Appid is not valid.

CONNECTION_CHANGED_INVALID_CHANNEL_NAME 

7: The connection failed since channel name is not valid.

CONNECTION_CHANGED_INVALID_TOKEN 

8: The connection failed since token is not valid, possibly because:

  • The App Certificate for the project is enabled in Dashboard, but you do not use Token when joining the channel. If you enable the App Certificate, you must use a token to join the channel.
  • The uid that you specify in the JoinChannelByKey method is different from the uid that you pass for generating the token.
CONNECTION_CHANGED_TOKEN_EXPIRED 

9: The connection failed since token is expired.

CONNECTION_CHANGED_REJECTED_BY_SERVER 

10: The connection is rejected by server.

CONNECTION_CHANGED_SETTING_PROXY_SERVER 

11: The connection changed to reconnecting since SDK has set a proxy server.

CONNECTION_CHANGED_RENEW_TOKEN 

12: When SDK is in connection failed, the renew token operation will make it connecting.

CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED 

13: The IP Address of SDK client has changed. i.e., Network type or IP/Port changed by network operator might change client IP address.

CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT 

14: Timeout for the keep-alive of the connection between the SDK and Agora's edge server. The connection state changes to CONNECTION_STATE_RECONNECTING(4).

◆ STREAM_FALLBACK_OPTIONS

Stream fallback options.

Enumerator
STREAM_FALLBACK_OPTION_DISABLED 

0: No fallback behavior for the local/remote video stream when the uplink/downlink network conditions are poor. The quality of the stream is not guaranteed.

STREAM_FALLBACK_OPTION_VIDEO_STREAM_LOW 

1: Under poor downlink network conditions, the remote video stream, to which you subscribe, falls back to the low-stream (low resolution and low bitrate) video. You can set this option only in the SetRemoteSubscribeFallbackOption method. Nothing happens when you set this in the SetLocalPublishFallbackOption method.

STREAM_FALLBACK_OPTION_AUDIO_ONLY 

2: Under poor uplink network conditions, the locally published video stream falls back to audio only. Under poor downlink network conditions, the remote video stream, to which you subscribe, first falls back to the low-stream (low resolution and low bitrate) video; and then to an audio-only stream if the network conditions worsen.

◆ VideoContentHint

Content hints for screen sharing.

Enumerator
CONTENT_HINT_NONE 

(Default) No content hint.

CONTENT_HINT_MOTION 

Motion-intensive content. Choose this option if you prefer smoothness or when you are sharing a video clip, movie, or video game.

CONTENT_HINT_DETAILS 

Motionless content. Choose this option if you prefer sharpness or when you are sharing a picture, PowerPoint slide, or text.

◆ REMOTE_VIDEO_STATE_REASON

The reason of the remote video state change.

Enumerator
REMOTE_VIDEO_STATE_REASON_INTERNAL 

0: Internal reasons.

REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION 

1: Network congestion.

REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY 

2: Network recovery.

REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED 

3: The local user stops receiving the remote video stream or disables the video module.

REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED 

4: The local user resumes receiving the remote video stream or enables the video module.

REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED 

5: The remote user stops sending the video stream or disables the video module.

REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED 

6: The remote user resumes sending the video stream or enables the video module.

REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE 

7: The remote user leaves the channel.

REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK 

8: The remote media stream falls back to the audio-only stream due to poor network conditions.

REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY 

9: The remote media stream switches back to the video stream after the network conditions improve.

◆ LOCAL_VIDEO_STREAM_STATE

Local video state types.

Enumerator
LOCAL_VIDEO_STREAM_STATE_STOPPED 

0: Initial state.

LOCAL_VIDEO_STREAM_STATE_CAPTURING 

1: The capturer starts successfully.

LOCAL_VIDEO_STREAM_STATE_ENCODING 

2: The first video frame is successfully encoded.

LOCAL_VIDEO_STREAM_STATE_FAILED 

3: The local video fails to start.

◆ LOCAL_VIDEO_STREAM_ERROR

Local video state error codes

Enumerator
LOCAL_VIDEO_STREAM_ERROR_OK 

0: The local video is normal.

LOCAL_VIDEO_STREAM_ERROR_FAILURE 

1: No specified reason for the local video failure.

LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION 

2: No permission to use the local video device.

LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY 

3: The local video capturer is in use.

LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE 

4: The local video capture fails. Check whether the capturer is working properly.

LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE 

5: The local video encoding fails.

◆ MEDIA_DEVICE_TYPE

Media device types.

Enumerator
UNKNOWN_AUDIO_DEVICE 

-1: Unknown device type.

AUDIO_PLAYOUT_DEVICE 

0: Audio playback device.

AUDIO_RECORDING_DEVICE 

1: Audio recording device.

VIDEO_RENDER_DEVICE 

2: Video renderer.

VIDEO_CAPTURE_DEVICE 

3: Video capturer.

AUDIO_APPLICATION_PLAYOUT_DEVICE 

4: Application audio playback device.

◆ RAW_AUDIO_FRAME_OP_MODE_TYPE

Use modes of the OnRecordAudioFrameHandler and OnPlaybackAudioFrameHandler callbacks.

Enumerator
RAW_AUDIO_FRAME_OP_MODE_READ_ONLY 

0: Read-only mode: Users only read the AudioFrame data without modifying anything. For example, when users acquire the data with the Agora RTC SDK, then push the RTMP streams.

RAW_AUDIO_FRAME_OP_MODE_WRITE_ONLY 

1: Write-only mode: Users replace the AudioFrame data with their own data and pass the data to the SDK for encoding. For example, when users acquire the data.

RAW_AUDIO_FRAME_OP_MODE_READ_WRITE 

2: Read and write mode: Users read the data from AudioFrame, modify it, and then play it. For example, when users have their own sound-effect processing module and perform some voice pre-processing, such as a voice change.

◆ AUDIO_PROFILE_TYPE

Audio profiles.

Sets the sample rate, bitrate, encoding mode, and the number of channels.

Enumerator
AUDIO_PROFILE_DEFAULT 

0: Default audio profile.

  • For the live-broadcast profile: A sample rate of 48 KHz, music encoding, mono, and a bitrate of up to 52 Kbps.
  • For the communication profile:
    • Windows: A sample rate of 16 KHz, music encoding, mono, and a bitrate of up to 16 Kbps.
    • Android/iOS/macOS: A sample rate of 32 KHz, music encoding, mono, and a bitrate of up to 18 Kbps.
AUDIO_PROFILE_SPEECH_STANDARD 

1: A sample rate of 32 KHz, audio encoding, mono, and a bitrate of up to 18 Kbps.

AUDIO_PROFILE_MUSIC_STANDARD 

2: A sample rate of 48 kHz, music encoding, mono, and a bitrate of up to 48 Kbps.

AUDIO_PROFILE_MUSIC_STANDARD_STEREO 

3: A sample rate of 48 kHz, music encoding, stereo, and a bitrate of up to 56 Kbps.

AUDIO_PROFILE_MUSIC_HIGH_QUALITY 

4: A sample rate of 48 kHz, music encoding, mono, and a bitrate of up to 128 Kbps.

AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO 

5: A sample rate of 48 kHz, music encoding, stereo, and a bitrate of up to 192 Kbps.

AUDIO_PROFILE_IOT 

6: A sample rate of 16 kHz, audio encoding, mono, and Acoustic Echo Cancellation (AES) enabled.

◆ AUDIO_SCENARIO_TYPE

Audio application scenarios.

Enumerator
AUDIO_SCENARIO_DEFAULT 

0: Default.

AUDIO_SCENARIO_CHATROOM_ENTERTAINMENT 

1: Entertainment scenario, supporting voice during gameplay.

AUDIO_SCENARIO_EDUCATION 

2: Education scenario, prioritizing fluency and stability.

AUDIO_SCENARIO_GAME_STREAMING 

3: High-quality audio chatroom scenario.

AUDIO_SCENARIO_SHOWROOM 

4: Showroom scenario, optimizing the audio quality with external professional equipment.

AUDIO_SCENARIO_CHATROOM_GAMING 

5: Gaming scenario.

AUDIO_SCENARIO_IOT 

6: Applicable to the IoT scenario.

◆ VIDEO_CODEC_PROFILE_TYPE

Video codec profile types.

Enumerator
VIDEO_CODEC_PROFILE_BASELINE 

66: Baseline video codec profile. Generally used in video calls on mobile phones.

VIDEO_CODEC_PROFILE_MAIN 

77: Main video codec profile. Generally used in mainstream electronics such as MP4 players, portable video players, PSP, and iPads.

VIDEO_CODEC_PROFILE_HIGH 

100: (Default) High video codec profile. Generally used in high-resolution broadcasts or television.

◆ AUDIO_SAMPLE_RATE_TYPE

Audio-sample rates.

Enumerator
AUDIO_SAMPLE_RATE_32000 

32000: 32 kHz

AUDIO_SAMPLE_RATE_44100 

44100: 44.1 kHz

AUDIO_SAMPLE_RATE_48000 

48000: 48 kHz

◆ AUDIO_MIXING_STATE_TYPE

The states of the local user's audio mixing file.

Enumerator
AUDIO_MIXING_STATE_PLAYING 

710: The audio mixing file is playing.

   This state indicates that the SDK is in the following stages:
   - Call {@link agora_gaming_rtc.IRtcEngine.StartAudioMixing StartAudioMixing} successfully.
   - Call {@link agora_gaming_rtc.IRtcEngine.ResumeAudioMixing ResumeAudioMixing} successfully.
AUDIO_MIXING_STATE_PAUSED 

711: The audio mixing file pauses playing.

   This state indicates that the SDK calls {@link agora_gaming_rtc.IRtcEngine.PauseAudioMixing PauseAudioMixing} successfully.
AUDIO_MIXING_STATE_STOPPED 

713: The audio mixing file stops playing.

   This state indicates that the SDK calls {@link agora_gaming_rtc.IRtcEngine.StopAudioMixing StopAudioMixing} successfully.
AUDIO_MIXING_STATE_FAILED 

714: An exception occurs when playing the audio mixing file. See error types in AUDIO_MIXING_ERROR_TYPE.

◆ AUDIO_MIXING_ERROR_TYPE

The error codes of the local user's audio mixing file.

Enumerator
AUDIO_MIXING_ERROR_CAN_NOT_OPEN 

701: The SDK cannot open the audio mixing file.

AUDIO_MIXING_ERROR_TOO_FREQUENT_CALL 

702: The SDK opens the audio mixing file too frequently.

AUDIO_MIXING_ERROR_INTERRUPTED_EOF 

703: The opening of the audio mixing file is interrupted.

AUDIO_MIXING_ERROR_OK 

0: The SDK can open the audio mixing file.

◆ RTMP_STREAM_PUBLISH_STATE

States of the RTMP streaming.

Enumerator
RTMP_STREAM_PUBLISH_STATE_IDLE 

0: The RTMP streaming has not started or has ended.

RTMP_STREAM_PUBLISH_STATE_CONNECTING 

1: The SDK is connecting to Agora's streaming server and the RTMP server. This state is triggered after you call the AddPublishStreamUrl method.

RTMP_STREAM_PUBLISH_STATE_RUNNING 

2: The RTMP streaming publishes. The SDK successfully publishes the RTMP streaming and returns this state.

RTMP_STREAM_PUBLISH_STATE_RECOVERING 

3: The RTMP streaming is recovering. When exceptions occur to the CDN, or the streaming is interrupted, the SDK tries to resume RTMP streaming and returns this state.

  • If the SDK successfully resumes the streaming, RTMP_STREAM_PUBLISH_STATE_RUNNING(2) returns.
  • If the streaming does not resume within 60 seconds or server errors occur, RTMP_STREAM_PUBLISH_STATE_FAILURE(4) returns. You can also reconnect to the server by calling the RemovePublishStreamUrl and AddPublishStreamUrl methods.
RTMP_STREAM_PUBLISH_STATE_FAILURE 

4: The RTMP streaming fails. See the errCode parameter for the detailed error information. You can also call the AddPublishStreamUrl method to publish the RTMP streaming again.

◆ RTMP_STREAM_PUBLISH_ERROR

Error codes of the RTMP streaming.

Enumerator
RTMP_STREAM_PUBLISH_ERROR_OK 

0: The RTMP streaming publishes successfully.

RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT 

1: Invalid argument used. If, for example, you do not call the SetLiveTranscoding method to configure the LiveTranscoding parameters before calling the AddPublishStreamUrl method, the SDK returns this error. Check whether you set the parameters in the SetLiveTranscoding method properly.

RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED 

2: The RTMP streaming is encrypted and cannot be published.

RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT 

3: Timeout for the RTMP streaming. Call the AddPublishStreamUrl method to publish the streaming again.

RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR 

4: An error occurs in Agora's streaming server. Call the AddPublishStreamUrl method to publish the streaming again.

RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR 

5: An error occurs in the RTMP server.

RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN 

6: The RTMP streaming publishes too frequently.

RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT 

7: The host publishes more than 10 URLs. Delete the unnecessary URLs before adding new ones.

RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED 

8: The host manipulates other hosts' URLs. Check your app logic.

RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND 

9: Agora's server fails to find the RTMP streaming.

RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED 

10: The format of the RTMP streaming URL is not supported. Check whether the URL format is correct.

◆ NETWORK_TYPE

Network type.

Enumerator
NETWORK_TYPE_UNKNOWN 

-1: The network type is unknown.

NETWORK_TYPE_DISCONNECTED 

0: The SDK disconnects from the network.

NETWORK_TYPE_LAN 

1: The network type is LAN.

NETWORK_TYPE_WIFI 

2: The network type is Wi-Fi.

NETWORK_TYPE_MOBILE_2G 

3: The network type is mobile 2G.

NETWORK_TYPE_MOBILE_3G 

4: The network type is mobile 3G.

NETWORK_TYPE_MOBILE_4G 

5: The network type is mobile 4G.

◆ VOICE_CHANGER_PRESET

Local voice beautifier options.

Enumerator
VOICE_CHANGER_OFF 

The original voice (no local voice beautifier).

VOICE_CHANGER_OLDMAN 

The voice of an old man (for male-sounding voice only).

VOICE_CHANGER_BABYBOY 

The voice of a little boy (for male-sounding voice only).

VOICE_CHANGER_BABYGIRL 

The voice of a little girl (for female-sounding voice only).

VOICE_CHANGER_ZHUBAJIE 

The voice of Zhu Bajie, a character in Journey to the West who has a voice like that of a growling bear.

VOICE_CHANGER_ETHEREAL 

The ethereal voice.

VOICE_CHANGER_HULK 

The voice of Hulk.

VOICE_BEAUTY_VIGOROUS 

A more vigorous voice.

VOICE_BEAUTY_DEEP 

A deeper voice.

VOICE_BEAUTY_MELLOW 

A mellower voice.

VOICE_BEAUTY_FALSETTO 

Falsetto.

VOICE_BEAUTY_FULL 

A fuller voice.

VOICE_BEAUTY_CLEAR 

A clearer voice.

VOICE_BEAUTY_RESOUNDING 

A more resounding voice.

VOICE_BEAUTY_RINGING 

A more ringing voice.

VOICE_BEAUTY_SPACIAL 

A more spatially resonant voice.

GENERAL_BEAUTY_VOICE_MALE_MAGNETIC 

(For male only) A more magnetic voice. Do not use it when the speaker is a female; otherwise, voice distortion occurs.

GENERAL_BEAUTY_VOICE_FEMALE_FRESH 

(For female only) A fresher voice. Do not use it when the speaker is a male; otherwise, voice distortion occurs.

GENERAL_BEAUTY_VOICE_FEMALE_VITALITY 

(For female only) A more vital voice. Do not use it when the speaker is a male; otherwise, voice distortion occurs.

◆ AUDIO_REVERB_PRESET

Local voice reverberation presets.

Enumerator
AUDIO_REVERB_OFF 

Turn off local voice reverberation, that is, to use the original voice.

AUDIO_REVERB_FX_KTV 

The reverberation style typical of a KTV venue (enhanced).

AUDIO_REVERB_FX_VOCAL_CONCERT 

The reverberation style typical of a concert hall (enhanced).

AUDIO_REVERB_FX_UNCLE 

The reverberation style typical of an uncle's voice.

AUDIO_REVERB_FX_SISTER 

The reverberation style typical of a sister's voice.

AUDIO_REVERB_FX_STUDIO 

The reverberation style typical of a recording studio (enhanced).

AUDIO_REVERB_FX_POPULAR 

The reverberation style typical of popular music (enhanced).

AUDIO_REVERB_FX_RNB 

The reverberation style typical of R&B music (enhanced).

AUDIO_REVERB_FX_PHONOGRAPH 

The reverberation style typical of the vintage phonograph.

AUDIO_REVERB_POPULAR 

The reverberation style typical of popular music.

AUDIO_REVERB_RNB 

The reverberation style typical of R&B music.

AUDIO_REVERB_ROCK 

The reverberation style typical of rock music.

AUDIO_REVERB_HIPHOP 

The reverberation style typical of hip-hop music.

AUDIO_REVERB_VOCAL_CONCERT 

The reverberation style typical of a concert hall.

AUDIO_REVERB_KTV 

The reverberation style typical of a KTV venue.

AUDIO_REVERB_STUDIO 

The reverberation style typical of a recording studio.

AUDIO_VIRTUAL_STEREO 

The reverberation of the virtual stereo. The virtual stereo is an effect that renders the monophonic audio as the stereo audio, so that all users in the channel can hear the stereo voice effect. To achieve better virtual stereo reverberation, Agora recommends setting profile in SetAudioProfile as AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5).

◆ AUDIO_EQUALIZATION_BAND_FREQUENCY

Audio equalization band frequencies.

Enumerator
AUDIO_EQUALIZATION_BAND_31 

0: 31 Hz

AUDIO_EQUALIZATION_BAND_62 

1: 62 Hz

AUDIO_EQUALIZATION_BAND_125 

2: 125 Hz

AUDIO_EQUALIZATION_BAND_250 

3: 250 Hz

AUDIO_EQUALIZATION_BAND_500 

4: 500 Hz

AUDIO_EQUALIZATION_BAND_1K 

5: 1 kHz

AUDIO_EQUALIZATION_BAND_2K 

6: 2 kHz

AUDIO_EQUALIZATION_BAND_4K 

7: 4 kHz

AUDIO_EQUALIZATION_BAND_8K 

8: 8 kHz

AUDIO_EQUALIZATION_BAND_16K 

9: 16 kHz

◆ QUALITY_ADAPT_INDICATION

Quality change of the local video in terms of target frame rate and target bit rate since last count.

Enumerator
ADAPT_NONE 

The quality of the local video stays the same.

ADAPT_UP_BANDWIDTH 

The quality improves because the network bandwidth increases.

ADAPT_DOWN_BANDWIDTH 

The quality worsens because the network bandwidth decreases.

◆ AUDIO_REVERB_TYPE

Audio reverberation types.

Enumerator
AUDIO_REVERB_DRY_LEVEL 

0: The level of the dry signal (db). The value is between -20 and 10.

AUDIO_REVERB_WET_LEVEL 

1: The level of the early reflection signal (wet signal) (dB). The value is between -20 and 10.

AUDIO_REVERB_ROOM_SIZE 

2: The room size of the reflection. The value is between 0 and 100.

AUDIO_REVERB_WET_DELAY 

3: The length of the initial delay of the wet signal (ms). The value is between 0 and 200.

AUDIO_REVERB_STRENGTH 

4: The reverberation strength. The value is between 0 and 100.

◆ AUDIO_CODEC_PROFILE_TYPE

Audio codec profile types. The default value is LC_ACC.

Enumerator
AUDIO_CODEC_PROFILE_LC_AAC 

0: LC-AAC, which is the low-complexity audio codec type.

AUDIO_CODEC_PROFILE_HE_AAC 

1: HE-AAC, which is the high-efficiency audio codec type.

◆ VIDEO_CODEC_TYPE

Video codec types

Enumerator
VIDEO_CODEC_VP8 

1: Standard VP8.

VIDEO_CODEC_H264 

2: Standard H264.

VIDEO_CODEC_EVP 

3: Enhanced VP8.

VIDEO_CODEC_E264 

4: Enhanced H264.

◆ AREA_CODE

enum agora_gaming_rtc.AREA_CODE : uint
strong

Connection areas.

Enumerator
AREA_CODE_CN 

Mainland China.

AREA_CODE_NA 

North America.

AREA_CODE_EUR 

Europe.

AREA_CODE_AS 

Asia, excluding mainland China.

AREA_CODE_GLOBAL 

(Default) Global.

◆ FRAME_RATE

Video frame rates.

Enumerator
FRAME_RATE_FPS_1 

1: 1 fps

FRAME_RATE_FPS_7 

7: 7 fps

FRAME_RATE_FPS_10 

10: 10 fps

FRAME_RATE_FPS_15 

15: 15 fps

FRAME_RATE_FPS_24 

24: 24 fps

FRAME_RATE_FPS_30 

30: 30 fps

FRAME_RATE_FPS_60 

60: 60 fps (Windows and macOS only)

◆ ORIENTATION_MODE

Video output orientation modes.

Enumerator
ORIENTATION_MODE_ADAPTIVE 

0: (Default) Adaptive mode. The video encoder adapts to the orientation mode of the video input device.

  • If the width of the captured video from the SDK is greater than the height, the encoder sends the video in landscape mode. The encoder also sends the rotational information of the video, and the receiver uses the rotational information to rotate the received video.
  • When you use a custom video source, the output video from the encoder inherits the orientation of the original video. If the original video is in portrait mode, the output video from the encoder is also in portrait mode. The encoder also sends the rotational information of the video to the receiver.
ORIENTATION_MODE_FIXED_LANDSCAPE 

1: Landscape mode. The video encoder always sends the video in landscape mode. The video encoder rotates the original video before sending it and the rotational infomation is 0. This mode applies to scenarios involving CDN live streaming.

ORIENTATION_MODE_FIXED_PORTRAIT 

2: Portrait mode. The video encoder always sends the video in portrait mode. The video encoder rotates the original video before sending it and the rotational infomation is 0. This mode applies to scenarios involving CDN live streaming.

◆ DEGRADATION_PREFERENCE

Video degradation preferences when the bandwidth is a constraint.

Enumerator
MAINTAIN_QUALITY 

0: (Default) Degrade the frame rate in order to maintain the video quality.

MAINTAIN_FRAMERATE 

1: Degrade the video quality in order to maintain the frame rate.

MAINTAIN_BALANCED 

2: (For future use) Maintain a balance between the frame rate and video quality.

◆ VIDEO_FRAME_TYPE

The video frame type.

Enumerator
FRAME_TYPE_YUV420 

0: YUV420.

FRAME_TYPE_RGBA 

1: RGBA.

◆ VIDEO_MIRROR_MODE_TYPE

Video mirror modes.

Enumerator
VIDEO_MIRROR_MODE_AUTO 

0: The default mirror mode is determined by the SDK.

VIDEO_MIRROR_MODE_ENABLED 

1: Enable mirror mode.

VIDEO_MIRROR_MODE_DISABLED 

2: Disable mirror mode.

◆ AUDIO_FRAME_TYPE

The audio frame type.

Enumerator
FRAME_TYPE_PCM16 

0: PCM16.

◆ MEDIA_SOURCE_TYPE

Deprecated:
Type of audio device.
Enumerator
AUDIO_PLAYOUT_SOURCE 

0: Audio playback device.

AUDIO_RECORDING_SOURCE 

1: Microphone.

◆ LASTMILE_PROBE_RESULT_STATE

States of the last-mile network probe test.

Enumerator
LASTMILE_PROBE_RESULT_COMPLETE 

1: The last-mile network probe test is complete.

LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE 

2: The last-mile network probe test is incomplete and the bandwidth estimation is not available, probably due to limited test resources.

LASTMILE_PROBE_RESULT_UNAVAILABLE 

3: The last-mile network probe test is not carried out, probably due to poor network conditions.

◆ CAMERA_DIRECTION

The camera direction: CAMERA_DIRECTION.

Enumerator
CAMERA_REAR 

0: The rear camera.

CAMERA_FRONT 

1: The front camera.

◆ CAPTURER_OUTPUT_PREFERENCE

Camera capturer configuration.

Enumerator
CAPTURER_OUTPUT_PREFERENCE_AUTO 

0: (Default) self-adapts the camera output parameters to the system performance and network conditions to balance CPU consumption and video preview quality.

CAPTURER_OUTPUT_PREFERENCE_PERFORMANCE 

1: Prioritizes the system performance. The SDK chooses the dimension and frame rate of the local camera capture closest to those set by SetVideoEncoderConfiguration.

CAPTURER_OUTPUT_PREFERENCE_PREVIEW 

2: Prioritizes the local preview quality. The SDK chooses higher camera output parameters to improve the local video preview quality. This option requires extra CPU and RAM usage for video pre-processing.

◆ QUALITY_TYPE

Network quality types.

Enumerator
QUALITY_UNKNOWN 

0: The network quality is unknown.

QUALITY_EXCELLENT 

1: The network quality is excellent.

QUALITY_GOOD 

2: The network quality is quite good, but the bitrate may be slightly lower than excellent.

QUALITY_POOR 

3: Users can feel the communication slightly impaired.

QUALITY_BAD 

4: Users cannot communicate smoothly.

QUALITY_VBAD 

5: The network is so bad that users can barely communicate.

QUALITY_DOWN 

6: The network is down and users cannot communicate at all.

QUALITY_UNSUPPORTED 

7: Users cannot detect the network quality. (Not in use.)

QUALITY_DETECTING 

8: Detecting the network quality.

◆ MEDIA_DEVICE_STATE_TYPE

Media device states.

Enumerator
MEDIA_DEVICE_STATE_ACTIVE 

1: The device is active.

MEDIA_DEVICE_STATE_DISABLED 

2: The device is disabled.

MEDIA_DEVICE_STATE_NOT_PRESENT 

4: The device is not present.

MEDIA_DEVICE_STATE_UNPLUGGED 

8: The device is unplugged.

◆ INJECT_STREAM_STATUS

States of importing an external video stream in a live broadcast.

Enumerator
INJECT_STREAM_STATUS_START_SUCCESS 

0: The external video stream imported successfully.

INJECT_STREAM_STATUS_START_ALREADY_EXISTS 

1: The external video stream already exists.

INJECT_STREAM_STATUS_START_UNAUTHORIZED 

2: The external video stream to be imported is unauthorized.

INJECT_STREAM_STATUS_START_TIMEDOUT 

3: Import external video stream timeout.

INJECT_STREAM_STATUS_START_FAILED 

4: Import external video stream failed.

INJECT_STREAM_STATUS_STOP_SUCCESS 

5: The external video stream stopped importing successfully.

INJECT_STREAM_STATUS_STOP_NOT_FOUND 

6: No external video stream is found.

INJECT_STREAM_STATUS_STOP_UNAUTHORIZED 

7: The external video stream to be stopped importing is unauthorized.

INJECT_STREAM_STATUS_STOP_TIMEDOUT 

8: Stop importing external video stream timeout.

INJECT_STREAM_STATUS_STOP_FAILED 

9: Stop importing external video stream failed.

INJECT_STREAM_STATUS_BROKEN 

10: The external video stream is corrupted.

◆ PRIORITY_TYPE

The priority of the remote user.

Enumerator
PRIORITY_HIGH 

50: The user's priority is high.

PRIORITY_NORMAL 

100: (Default) The user's priority is normal.

◆ LOCAL_AUDIO_STREAM_STATE

Local audio state types.

Enumerator
LOCAL_AUDIO_STREAM_STATE_STOPPED 

0: The local audio is in the initial state.

LOCAL_AUDIO_STREAM_STATE_RECORDING 

1: The recording device starts successfully.

LOCAL_AUDIO_STREAM_STATE_ENCODING 

2: The first audio frame encodes successfully.

LOCAL_AUDIO_STREAM_STATE_FAILED 

3: The local audio fails to start.

◆ LOCAL_AUDIO_STREAM_ERROR

Local audio state error codes.

Enumerator
LOCAL_AUDIO_STREAM_ERROR_OK 

0: The local audio is normal.

LOCAL_AUDIO_STREAM_ERROR_FAILURE 

1: No specified reason for the local audio failure.

LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION 

2: No permission to use the local audio device.

LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY 

3: The microphone is in use.

LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE 

4: The local audio recording fails. Check whether the recording device is working properly.

LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE 

5: The local audio encoding fails.

◆ REMOTE_AUDIO_STATE

Remote audio states.

Enumerator
REMOTE_AUDIO_STATE_STOPPED 

0: The remote audio is in the default state, probably due to REMOTE_AUDIO_REASON_LOCAL_MUTED(3), REMOTE_AUDIO_REASON_REMOTE_MUTED(5), or REMOTE_AUDIO_REASON_REMOTE_OFFLINE(7).

REMOTE_AUDIO_STATE_STARTING 

1: The first remote audio packet is received.

REMOTE_AUDIO_STATE_DECODING 

2: The remote audio stream is decoded and plays normally, probably due to REMOTE_AUDIO_REASON_NETWORK_RECOVERY(2), REMOTE_AUDIO_REASON_LOCAL_UNMUTED(4), or REMOTE_AUDIO_REASON_REMOTE_UNMUTED(6)`.

REMOTE_AUDIO_STATE_FROZEN 

3: The remote audio is frozen, probably due to REMOTE_AUDIO_REASON_NETWORK_CONGESTION(1).

REMOTE_AUDIO_STATE_FAILED 

4: The remote audio fails to start, probably due to REMOTE_AUDIO_REASON_INTERNAL(0).

◆ REMOTE_AUDIO_STATE_REASON

Remote audio state reasons.

Enumerator
REMOTE_AUDIO_REASON_INTERNAL 

0: Internal reasons.

REMOTE_AUDIO_REASON_NETWORK_CONGESTION 

1: Network congestion.

REMOTE_AUDIO_REASON_NETWORK_RECOVERY 

2: Network recovery.

REMOTE_AUDIO_REASON_LOCAL_MUTED 

3: The local user stops receiving the remote audio stream or disables the audio module.

REMOTE_AUDIO_REASON_LOCAL_UNMUTED 

4: The local user resumes receiving the remote audio stream or enables the audio module.

REMOTE_AUDIO_REASON_REMOTE_MUTED 

5: The remote user stops sending the audio stream or disables the audio module.

REMOTE_AUDIO_REASON_REMOTE_UNMUTED 

6: The remote user resumes sending the audio stream or enables the audio module.

REMOTE_AUDIO_REASON_REMOTE_OFFLINE 

7: The remote user leaves the channel.

◆ AUDIO_SESSION_OPERATION_RESTRICTION

Audio session restriction.

Enumerator
AUDIO_SESSION_OPERATION_RESTRICTION_NONE 

No restriction, the SDK has full control of the audio session operations.

AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY 

The SDK does not change the audio session category.

AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION 

The SDK does not change any setting of the audio session (category, mode, categoryOptions).

AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION 

The SDK keeps the audio session active when leaving a channel.

AUDIO_SESSION_OPERATION_RESTRICTION_ALL 

The SDK does not configure the audio session anymore.

◆ CHANNEL_MEDIA_RELAY_EVENT

The event code in CHANNEL_MEDIA_RELAY_EVENT.

Enumerator
RELAY_EVENT_NETWORK_DISCONNECTED 

0: The user disconnects from the server due to poor network connections.

RELAY_EVENT_NETWORK_CONNECTED 

1: The network reconnects.

RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL 

2: The user joins the source channel.

RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL 

3: The user joins the destination channel.

RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL 

4: The SDK starts relaying the media stream to the destination channel.

RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC 

5: The server receives the video stream from the source channel.

RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC 

6: The server receives the audio stream from the source channel.

RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL 

7: The destination channel is updated.

RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED 

8: The destination channel update fails due to internal reasons.

RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE 

9: The destination channel does not change, which means that the destination channel fails to be updated.

RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL 

10: The destination channel name is null.

RELAY_EVENT_VIDEO_PROFILE_UPDATE 

11: The video profile is sent to the server.

◆ CHANNEL_MEDIA_RELAY_STATE

The state code in CHANNEL_MEDIA_RELAY_STATE.

Enumerator
RELAY_STATE_IDLE 

0: The SDK is initializing.

RELAY_STATE_CONNECTING 

1: The SDK tries to relay the media stream to the destination channel.

RELAY_STATE_RUNNING 

2: The SDK successfully relays the media stream to the destination channel.

RELAY_STATE_FAILURE 

3: A failure occurs. See the details in code.

◆ VIDEO_PROFILE_TYPE

Deprecated:
Video profiles.
Enumerator
VIDEO_PROFILE_LANDSCAPE_120P 

0: 160 × 120, frame rate 15 fps, bitrate 65 Kbps.

VIDEO_PROFILE_LANDSCAPE_120P_3 

2: 120 × 120, frame rate 15 fps, bitrate 50 Kbps.

VIDEO_PROFILE_LANDSCAPE_180P 

10: 320×180, frame rate 15 fps, bitrate 140 Kbps.

VIDEO_PROFILE_LANDSCAPE_180P_3 

12: 180 × 180, frame rate 15 fps, bitrate 100 Kbps.

VIDEO_PROFILE_LANDSCAPE_180P_4 

13: 240 × 180, frame rate 15 fps, bitrate 120 Kbps.

VIDEO_PROFILE_LANDSCAPE_240P 

20: 320 × 240, frame rate 15 fps, bitrate 200 Kbps.

VIDEO_PROFILE_LANDSCAPE_240P_3 

22: 240 × 240, frame rate 15 fps, bitrate 140 Kbps.

VIDEO_PROFILE_LANDSCAPE_240P_4 

23: 424 × 240, frame rate 15 fps, bitrate 220 Kbps.

VIDEO_PROFILE_LANDSCAPE_360P 

30: 640 × 360, frame rate 15 fps, bitrate 400 Kbps.

VIDEO_PROFILE_LANDSCAPE_360P_3 

32: 360 × 360, frame rate 15 fps, bitrate 260 Kbps.

VIDEO_PROFILE_LANDSCAPE_360P_4 

33: 640 × 360, frame rate 30 fps, bitrate 600 Kbps.

VIDEO_PROFILE_LANDSCAPE_360P_6 

35: 360 × 360, frame rate 30 fps, bitrate 400 Kbps.

VIDEO_PROFILE_LANDSCAPE_360P_7 

36: 480 × 360, frame rate 15 fps, bitrate 320 Kbps.

VIDEO_PROFILE_LANDSCAPE_360P_8 

37: 480 × 360, frame rate 30 fps, bitrate 490 Kbps.

VIDEO_PROFILE_LANDSCAPE_360P_9 

38: 640 × 360, frame rate 15 fps, bitrate 800 Kbps.

Note
Live broadcast profile only.
VIDEO_PROFILE_LANDSCAPE_360P_10 

39: 640 × 360, frame rate 24 fps, bitrate 800 Kbps.

Note
Live broadcast profile only.
VIDEO_PROFILE_LANDSCAPE_360P_11 

100: 640 × 360, frame rate 24 fps, bitrate 1000 Kbps.

Note
Live broadcast profile only.
VIDEO_PROFILE_LANDSCAPE_480P 

40: 640 × 480, frame rate 15 fps, bitrate 500 Kbps.

VIDEO_PROFILE_LANDSCAPE_480P_3 

42: 480 × 480, frame rate 15 fps, bitrate 400 Kbps.

VIDEO_PROFILE_LANDSCAPE_480P_4 

43: 640 × 480, frame rate 30 fps, bitrate 750 Kbps.

VIDEO_PROFILE_LANDSCAPE_480P_6 

45: 480 × 480, frame rate 30 fps, bitrate 600 Kbps.

VIDEO_PROFILE_LANDSCAPE_480P_8 

47: 848 × 480, frame rate 15 fps, bitrate 610 Kbps.

VIDEO_PROFILE_LANDSCAPE_480P_9 

48: 848 × 480, frame rate 30 fps, bitrate 930 Kbps.

VIDEO_PROFILE_LANDSCAPE_480P_10 

49: 640 × 480, frame rate 10 fps, bitrate 400 Kbps.

VIDEO_PROFILE_LANDSCAPE_720P 

50: 1280 × 720, frame rate 15 fps, bitrate 1130 Kbps.

VIDEO_PROFILE_LANDSCAPE_720P_3 

52: 1280 × 720, frame rate 30 fps, bitrate 1710 Kbps.

VIDEO_PROFILE_LANDSCAPE_720P_5 

54: 960 × 720, frame rate 15 fps, bitrate 910 Kbps.

VIDEO_PROFILE_LANDSCAPE_720P_6 

55: 960 × 720, frame rate 30 fps, bitrate 1380 Kbps.

VIDEO_PROFILE_LANDSCAPE_1080P 

60: 1920 × 1080, frame rate 15 fps, bitrate 2080 Kbps.

VIDEO_PROFILE_LANDSCAPE_1080P_3 

62: 1920 × 1080, frame rate 30 fps, bitrate 3150 Kbps.

VIDEO_PROFILE_LANDSCAPE_1080P_5 

64: 1920 × 1080, frame rate 60 fps, bitrate 4780 Kbps.

VIDEO_PROFILE_LANDSCAPE_1440P 

66: 2560 × 1440, frame rate 30 fps, bitrate 4850 Kbps.

VIDEO_PROFILE_LANDSCAPE_1440P_2 

67: 2560 × 1440, frame rate 60 fps, bitrate 6500 Kbps.

VIDEO_PROFILE_LANDSCAPE_4K 

70: 3840 × 2160, frame rate 30 fps, bitrate 6500 Kbps.

VIDEO_PROFILE_LANDSCAPE_4K_3 

72: 3840 × 2160, frame rate 60 fps, bitrate 6500 Kbps.

VIDEO_PROFILE_PORTRAIT_120P 

1000: 120 × 160, frame rate 15 fps, bitrate 65 Kbps.

VIDEO_PROFILE_PORTRAIT_120P_3 

1002: 120 × 120, frame rate 15 fps, bitrate 50 Kbps.

VIDEO_PROFILE_PORTRAIT_180P 

1010: 180 × 320, frame rate 15 fps, bitrate 140 Kbps.

VIDEO_PROFILE_PORTRAIT_180P_3 

1012: 180 × 180, frame rate 15 fps, bitrate 100 Kbps.

VIDEO_PROFILE_PORTRAIT_180P_4 

1013: 180 × 240, frame rate 15 fps, bitrate 120 Kbps.

VIDEO_PROFILE_PORTRAIT_240P 

1020: 240 × 320, frame rate 15 fps, bitrate 200 Kbps.

VIDEO_PROFILE_PORTRAIT_240P_3 

1022: 240 × 240, frame rate 15 fps, bitrate 140 Kbps.

VIDEO_PROFILE_PORTRAIT_240P_4 

1023: 240 × 424, frame rate 15 fps, bitrate 220 Kbps.

VIDEO_PROFILE_PORTRAIT_360P 

1030: 360 × 640, frame rate 15 fps, bitrate 400 Kbps.

VIDEO_PROFILE_PORTRAIT_360P_3 

1032: 360 × 360, frame rate 15 fps, bitrate 260 Kbps.

VIDEO_PROFILE_PORTRAIT_360P_4 

1033: 360 × 640, frame rate 30 fps, bitrate 600 Kbps.

VIDEO_PROFILE_PORTRAIT_360P_6 

1035: 360 × 360, frame rate 30 fps, bitrate 400 Kbps.

VIDEO_PROFILE_PORTRAIT_360P_7 

1036: 360 × 480, frame rate 15 fps, bitrate 320 Kbps.

VIDEO_PROFILE_PORTRAIT_360P_8 

1037: 360 × 480, frame rate 30 fps, bitrate 490 Kbps.

VIDEO_PROFILE_PORTRAIT_360P_9 

1038: 360 × 640, frame rate 15 fps, bitrate 800 Kbps.

Note
Live broadcast profile only.
VIDEO_PROFILE_PORTRAIT_360P_10 

1039: 360 × 640, frame rate 24 fps, bitrate 800 Kbps.

Note
Live broadcast profile only.
VIDEO_PROFILE_PORTRAIT_360P_11 

1100: 360 × 640, frame rate 24 fps, bitrate 1000 Kbps.

Note
Live broadcast profile only.
VIDEO_PROFILE_PORTRAIT_480P 

1040: 480 × 640, frame rate 15 fps, bitrate 500 Kbps.

VIDEO_PROFILE_PORTRAIT_480P_3 

1042: 480 × 480, frame rate 15 fps, bitrate 400 Kbps.

VIDEO_PROFILE_PORTRAIT_480P_4 

1043: 480 × 640, frame rate 30 fps, bitrate 750 Kbps.

VIDEO_PROFILE_PORTRAIT_480P_6 

1045: 480 × 480, frame rate 30 fps, bitrate 600 Kbps.

VIDEO_PROFILE_PORTRAIT_480P_8 

1047: 480 × 848, frame rate 15 fps, bitrate 610 Kbps.

VIDEO_PROFILE_PORTRAIT_480P_9 

1048: 480 × 848, frame rate 30 fps, bitrate 930 Kbps.

VIDEO_PROFILE_PORTRAIT_480P_10 

1049: 480 × 640, frame rate 10 fps, bitrate 400 Kbps.

VIDEO_PROFILE_PORTRAIT_720P 

1050: 720 × 1280, frame rate 15 fps, bitrate 1130 Kbps.

VIDEO_PROFILE_PORTRAIT_720P_3 

1052: 720 × 1280, frame rate 30 fps, bitrate 1710 Kbps.

VIDEO_PROFILE_PORTRAIT_720P_5 

1054: 720 × 960, frame rate 15 fps, bitrate 910 Kbps.

VIDEO_PROFILE_PORTRAIT_720P_6 

1055: 720 × 960, frame rate 30 fps, bitrate 1380 Kbps.

VIDEO_PROFILE_PORTRAIT_1080P 

1060: 1080 × 1920, frame rate 15 fps, bitrate 2080 Kbps.

VIDEO_PROFILE_PORTRAIT_1080P_3 

1062: 1080 × 1920, frame rate 30 fps, bitrate 3150 Kbps.

VIDEO_PROFILE_PORTRAIT_1080P_5 

1064: 1080 × 1920, frame rate 60 fps, bitrate 4780 Kbps.

VIDEO_PROFILE_PORTRAIT_1440P 

1066: 1440 × 2560, frame rate 30 fps, bitrate 4850 Kbps.

VIDEO_PROFILE_PORTRAIT_1440P_2 

1067: 1440 × 2560, frame rate 60 fps, bitrate 6500 Kbps.

VIDEO_PROFILE_PORTRAIT_4K 

1070: 2160 × 3840, frame rate 30 fps, bitrate 6500 Kbps.

VIDEO_PROFILE_PORTRAIT_4K_3 

1072: 2160 × 3840, frame rate 60 fps, bitrate 6500 Kbps.

VIDEO_PROFILE_DEFAULT 

Default 640 × 360, frame rate 15 fps, bitrate 400 Kbps.

◆ CHANNEL_MEDIA_RELAY_ERROR

The definition of CHANNEL_MEDIA_RELAY_ERROR.

Enumerator
RELAY_OK 

0: The state is normal.

RELAY_ERROR_SERVER_ERROR_RESPONSE 

1: An error occurs in the server response.

RELAY_ERROR_SERVER_NO_RESPONSE 

2: No server response. You can call the LeaveChannel method to leave the channel.

RELAY_ERROR_NO_RESOURCE_AVAILABLE 

3: The SDK fails to access the service, probably due to limited resources of the server.

RELAY_ERROR_FAILED_JOIN_SRC 

4: Fails to send the relay request.

RELAY_ERROR_FAILED_JOIN_DEST 

5: Fails to accept the relay request.

RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC 

6: The server fails to receive the media stream.

RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST 

7: The server fails to send the media stream.

RELAY_ERROR_SERVER_CONNECTION_LOST 

8: The SDK disconnects from the server due to poor network connections. You can call the LeaveChannel method to leave the channel.

RELAY_ERROR_INTERNAL_ERROR 

9: An internal error occurs in the server.

RELAY_ERROR_SRC_TOKEN_EXPIRED 

10: The token of the source channel has expired.

RELAY_ERROR_DEST_TOKEN_EXPIRED 

11: The token of the destination channel has expired.

◆ METADATA_TYPE

Metadata type of the observer.

Note
We only support video metadata for now.
Enumerator
UNKNOWN_METADATA 

-1: The metadata type is unknown.

VIDEO_METADATA 

0: The metadata type is video.

◆ RENDER_MODE_TYPE

Video display modes.

Enumerator
RENDER_MODE_HIDDEN 

1: Uniformly scale the video until it fills the visible boundaries (cropped). One dimension of the video may have clipped contents.

RENDER_MODE_FIT 

2: Uniformly scale the video until one of its dimension fits the boundary (zoomed to fit). Areas that are not filled due to disparity in the aspect ratio are filled with black.

RENDER_MODE_ADAPTIVE 
Deprecated:
3: This mode is deprecated.

◆ AgoraVideoSurfaceType

The definition of AgoraVideoSurfaceType.

Enumerator
Renderer 

0: (Default) The renderer for rendering 3D GameObject, such as Cube、Cylinder and Plane.

RawImage 

1: The renderer for rendering Raw Image of the UI components.

Function Documentation

◆ OnJoinChannelSuccessHandler()

delegate void agora_gaming_rtc.OnJoinChannelSuccessHandler ( string  channelName,
uint  uid,
int  elapsed 
)

Occurs when a user joins a channel.

This callback notifies the application that a user joins a specified channel when the application calls the JoinChannelByKey method.

The channel name assignment is based on channelName specified in the JoinChannelByKey method.

If the uid is not specified in the JoinChannelByKey method, the server automatically assigns a uid.

Parameters
channelNameThe name of the channel that you join.
uidThe user ID of the user joining the channel.
elapsedTime elapsed (ms) from the user calling the JoinChannelByKey method until the SDK triggers this callback.

◆ OnLeaveChannelHandler()

delegate void agora_gaming_rtc.OnLeaveChannelHandler ( RtcStats  stats)

Occurs when a user leaves the channel.

This callback notifies the application that a user leaves the channel when the application calls the LeaveChannel method.

The application retrieves information, such as the call duration and statistics.

Parameters
statsThe statistics of the call: RtcStats.

◆ OnReJoinChannelSuccessHandler()

delegate void agora_gaming_rtc.OnReJoinChannelSuccessHandler ( string  channelName,
uint  uid,
int  elapsed 
)

Occurs when a user rejoins the channel after disconnection due to network problems.

When a user loses connection with the server because of network problems, the SDK automatically tries to reconnect and triggers this callback upon reconnection.

Parameters
channelNameThe name of the channel that you rejoin.
uidThe user ID of the user rejoining the channel.
elapsedThe time elapsed (ms) from starting to reconnect until the SDK triggers this callback.

◆ OnConnectionLostHandler()

delegate void agora_gaming_rtc.OnConnectionLostHandler ( )

Occurs when the SDK cannot reconnect to Agora's edge server 10 seconds after its connection to the server is interrupted.

The SDK triggers this callback when it cannot connect to the server 10 seconds after calling the JoinChannelByKey method, whether or not it is in the channel.

This callback is different from OnConnectionInterruptedHandler:

  • The SDK triggers the OnConnectionInterruptedHandler callback when it loses connection with the server for more than four seconds after it successfully joins the channel.
  • The SDK triggers the OnConnectionLostHandler callback when it loses connection with the server for more than 10 seconds, whether or not it joins the channel.

If the SDK fails to rejoin the channel 20 minutes after being disconnected from Agora's edge server, the SDK stops rejoining the channel.

◆ OnConnectionInterruptedHandler()

delegate void agora_gaming_rtc.OnConnectionInterruptedHandler ( )

Occurs when the connection between the SDK and the server is interrupted.

Deprecated:
Deprecated as of v2.3.2. Replaced by the OnConnectionStateChangedHandler callback.

The SDK triggers this callback when it loses connection with the server for more than four seconds after the connection is established.

After triggering this callback, the SDK tries reconnecting to the server. You can use this callback to implement pop-up reminders.

This callback is different from OnConnectionLostHandler:

  • The SDK triggers the OnConnectionInterruptedHandler callback when it loses connection with the server for more than four seconds after it successfully joins the channel.
  • The SDK triggers the OnConnectionLostHandler callback when it loses connection with the server for more than 10 seconds, whether or not it joins the channel.

If the SDK fails to rejoin the channel 20 minutes after being disconnected from Agora's edge server, the SDK stops rejoining the channel.

◆ OnRequestTokenHandler()

delegate void agora_gaming_rtc.OnRequestTokenHandler ( )

Occurs when the token expires.

After a token is specified by calling the JoinChannelByKey method, if the SDK losses connection with the Agora server due to network issues, the token may expire after a certain period of time and a new token may be required to reconnect to the server.

This callback notifies the app to generate a new token and call JoinChannelByKey to rejoin the channel with the new token.

◆ OnUserJoinedHandler()

delegate void agora_gaming_rtc.OnUserJoinedHandler ( uint  uid,
int  elapsed 
)

Occurs when a remote user (Communication)/ host (Live Broadcast) joins the channel.

  • Communication profile: This callback notifies the application that another user joins the channel. If other users are already in the channel, the SDK also reports to the application on the existing users.
  • Live-broadcast profile: This callback notifies the application that the host joins the channel. If other hosts are already in the channel, the SDK also reports to the application on the existing hosts. We recommend limiting the number of hosts to 17.

The SDK triggers this callback under one of the following circumstances:

  • A remote user/host joins the channel by calling the JoinChannelByKey method.
  • A remote user switches the user role to the host by calling the SetClientRole method after joining the channel.
  • A remote user/host rejoins the channel after a network interruption.
  • The host injects an online media stream into the channel by calling the AddInjectStreamUrl method.
Note
In the Live-broadcast profile:
  • The host receives this callback when another host joins the channel.
  • The audience in the channel receives this callback when a new host joins the channel.
  • When a web application joins the channel, the SDK triggers this callback as long as the web application publishes streams.
Parameters
uidThe user ID of the user or host joining the channel.
elapsedTime delay (ms) from the local user calling the JoinChannelByKey method until the SDK triggers this callback.

◆ OnUserOfflineHandler()

delegate void agora_gaming_rtc.OnUserOfflineHandler ( uint  uid,
USER_OFFLINE_REASON  reason 
)

Occurs when a remote user (Communication)/host (Live Broadcast) leaves the channel.

Reasons why the user is offline:

  • Leave the channel: When the user/host leaves the channel, the user/host sends a goodbye message. When the message is received, the SDK assumes that the user/host leaves the channel.
  • Drop offline: When no data packet of the user or host is received for a certain period of time (20 seconds for the Communication profile, and more for the Live-broadcast profile), the SDK assumes that the user/host drops offline. Unreliable network connections may lead to false detections, so we recommend using the Agora RTM SDK for more reliable offline detection.
Parameters
uidThe user ID of the user leaving the channel or going offline.
reasonThe reason why the user is offline: USER_OFFLINE_REASON.

◆ OnVolumeIndicationHandler()

delegate void agora_gaming_rtc.OnVolumeIndicationHandler ( AudioVolumeInfo []  speakers,
int  speakerNumber,
int  totalVolume 
)

Reports which users are speaking, the speakers' volume and whether the local user is speaking.

This callback reports the IDs and volumes of the loudest speakers (at most 3 users) at the moment in the channel, and whether the local user is speaking.

By default, this callback is disabled. You can enable it by calling the EnableAudioVolumeIndication method. Once enabled, this callback is triggered at the set interval, regardless of whether a user speaks or not.

The SDK triggers two independent OnVolumeIndicationHandler callbacks at one time, which separately report the volume information of the local user and all the remote speakers. For more information, see the detailed parameter descriptions.

Note
  • To enable the voice activity detection of the local user, ensure that you set report_vad(true) in the EnableAudioVolumeIndication method.
  • Calling the MuteLocalAudioStream method affects the SDK's behavior:
    • If the local user calls the MuteLocalAudioStream method, the SDK stops triggering the local user's callback.
    • 20 seconds after a remote speaker calls the MuteLocalAudioStream method, the remote speakers' callback excludes this remote user's information; 20 seconds after all remote users call the muteLocalAudioStream method, the SDK stops triggering the remote speakers' callback.
Parameters
speakersAudioVolumeInfo:
  • In the local user's callback, this struct contains the following members:
    • uid = 0,
    • volume = totalVolume, which reports the sum of the voice volume and audio-mixing volume of the local user, and
    • vad, which reports the voice activity status of the local user.
  • In the remote speakers' callback, this array contains the following members:
    • uid of the remote speaker,
    • volume, which reports the sum of the voice volume and audio-mixing volume of each remote speaker, and
    • vad = 0. An empty speakers array in the callback indicates that no remote user is speaking at the moment.
speakerNumberTotal number of speakers. The value range is [0, 3].
  • In the local user’s callback, speakerNumber = 1, regardless of whether the local user speaks or not.
  • In the remote speakers' callback, the callback reports the IDs and volumes of the three loudest speakers when there are more than three remote users in the channel, and speakerNumber = 3
totalVolumeTotal volume after audio mixing. The value ranges between 0 (lowest volume) and 255 (highest volume).
  • In the local user’s callback, totalVolume is the sum of the voice volume and audio-mixing volume of the local user.
  • In the remote speakers' callback, totalVolume is the sum of the voice volume and audio-mixing volume of all the remote speakers.

◆ OnUserMutedAudioHandler()

delegate void agora_gaming_rtc.OnUserMutedAudioHandler ( uint  uid,
bool  muted 
)

Occurs when a remote user's audio stream playback pauses/resumes.

Deprecated:
This method is deprecated from v3.0.1, use the OnRemoteAudioStateChangedHandler callback instead.

The SDK triggers this callback when the remote user stops or resumes sending the audio stream by calling the MuteLocalAudioStream method.

Note
This callback does not work properly when the number of users (in the COMMUNICATION profile) or hosts (in the LIVE_BROADCASTING profile) in the channel exceeds 17.
Parameters
uidThe user ID of the remote user.
mutedWhether the remote user's audio stream is muted/unmuted:
  • true: Muted.
  • false: Unmuted.

◆ OnSDKWarningHandler()

delegate void agora_gaming_rtc.OnSDKWarningHandler ( int  warn,
string  msg 
)

Reports a warning during SDK runtime.

In most cases, the application can ignore the warning reported by the SDK because the SDK can usually fix the issue and resume running. For example, when losing connection with the server, the SDK may report WARN_LOOKUP_CHANNEL_TIMEOUT(104) and automatically try to reconnect.

Parameters
warnThe warning code, see Warning Code.
msgThe warning message.

◆ OnSDKErrorHandler()

delegate void agora_gaming_rtc.OnSDKErrorHandler ( int  error,
string  msg 
)

Reports an error during SDK runtime.

In most cases, the SDK cannot fix the issue and resume running. The SDK requires the application to take action or informs the user about the issue.

For example, the SDK reports an ERR_START_CALL(1002) error when failing to initialize a call. The application informs the user that the call initialization failed and invokes the LeaveChannel method to leave the channel.

Parameters
errorThe error code, see Error Code.
msgThe error message.

◆ OnRtcStatsHandler()

delegate void agora_gaming_rtc.OnRtcStatsHandler ( RtcStats  stats)

Reports the statistics of the current call session once every two seconds.

Parameters
statsThe RTC engine statistics: RtcStats.

◆ OnAudioMixingFinishedHandler()

delegate void agora_gaming_rtc.OnAudioMixingFinishedHandler ( )

Occurs when the audio mixing file playback finishes.

Deprecated:
use OnAudioMixingStateChangedHandler instead.

You can start an audio mixing file playback by calling the StartAudioMixing method. The SDK triggers this callback when the audio mixing file playback finishes.

If the StartAudioMixing method call fails, an error code returns in the OnSDKErrorHandler callback.

◆ OnAudioRouteChangedHandler()

delegate void agora_gaming_rtc.OnAudioRouteChangedHandler ( AUDIO_ROUTE  route)

Occurs when the local audio route changes.

The SDK triggers this callback when the local audio route switches to an earpiece, speakerphone, headset, or Bluetooth device.

Note
This callback is for Android and iOS only.
Parameters
routeAudio output routing. See: AUDIO_ROUTE.

◆ OnFirstRemoteVideoDecodedHandler()

delegate void agora_gaming_rtc.OnFirstRemoteVideoDecodedHandler ( uint  uid,
int  width,
int  height,
int  elapsed 
)

Occurs when the first remote video frame is received and decoded.

Deprecated:
Use the OnRemoteVideoStateChangedHandler callback with the following parameters instead:

This callback is triggered in either of the following scenarios:

  • The remote user joins the channel and sends the video stream.
  • The remote user stops sending the video stream and re-sends it after 15 seconds. Reasons for such an interruption include:
    • The remote user leaves the channel.
    • The remote user drops offline.
    • The remote user calls the MuteLocalVideoStream method to stop sending the video stream.
    • The remote user calls the DisableVideo method to disable video. The application can configure the user view settings in this callback.
Parameters
uidThe user ID of the remote user sending the video stream.
widthThe width (px) of the video stream.
heightThe height (px) of the video stream.
elapsedTime elapsed (ms) from the local user calling the JoinChannelByKey method until the SDK triggers this callback.

◆ OnVideoSizeChangedHandler()

delegate void agora_gaming_rtc.OnVideoSizeChangedHandler ( uint  uid,
int  width,
int  height,
int  rotation 
)

Occurs when the video size or rotation of a specified user changes.

Parameters
uidThe user ID of the remote user or local user (0) whose video size or rotation changes.
widthThe new width (pixels) of the video.
heightThe new height (pixels) of the video.
rotationThe new rotation of the video [0 to 360).

◆ OnClientRoleChangedHandler()

delegate void agora_gaming_rtc.OnClientRoleChangedHandler ( CLIENT_ROLE_TYPE  oldRole,
CLIENT_ROLE_TYPE  newRole 
)

Occurs when the user role switches in a live broadcast. For example, from a host to an audience or vice versa.

This callback notifies the application of a user role switch when the application calls the SetClientRole method.

The SDK triggers this callback when the local user switches the user role by calling the SetClientRole method after joining the channel.

Parameters
oldRoleRole that the user switches from: CLIENT_ROLE_TYPE.
newRoleRole that the user switches to: CLIENT_ROLE_TYPE.

◆ OnUserMuteVideoHandler()

delegate void agora_gaming_rtc.OnUserMuteVideoHandler ( uint  uid,
bool  muted 
)

Occurs when a remote user's video stream playback pauses/resumes.

You can also use the OnRemoteVideoStateChangedHandler callback with the following parameters:

The SDK triggers this callback when the remote user stops or resumes sending the video stream by calling the MuteLocalVideoStream method.

Note
This callback does not work properly when the number of users (in the COMMUNICATION profile) or hosts (in the LIVE_BROADCASTING profile) in the channel exceeds 17.
Parameters
uidThe user ID of the remote user.
mutedWhether the remote user's video stream playback is paused/resumed:
  • true: Paused.
  • false: Resumed.

◆ OnMicrophoneEnabledHandler()

delegate void agora_gaming_rtc.OnMicrophoneEnabledHandler ( bool  isEnabled)

Occurs when the microphone is enabled/disabled.

Deprecated:
Use LOCAL_AUDIO_STREAM_STATE_STOPPED(0) or LOCAL_AUDIO_STREAM_STATE_RECORDING(1) in the OnLocalAudioStateChangedHandler callback instead.

The SDK triggers this callback when the local user resumes or stops capturing the local audio stream by calling the EnableLocalAudio method.

Parameters
isEnabledWhether the microphone is enabled/disabled:
  • true: Enabled.
  • false: Disabled.

◆ OnApiExecutedHandler()

delegate void agora_gaming_rtc.OnApiExecutedHandler ( int  err,
string  api,
string  result 
)

Occurs when a method is executed by the SDK.

Parameters
errThe Error Code. returned by the SDK when a method call fails. If the SDK returns 0, then the method call is successful.
apiThe method executed by the SDK.
resultThe result of the method call.

◆ OnLastmileQualityHandler()

delegate void agora_gaming_rtc.OnLastmileQualityHandler ( int  quality)

Reports the last mile network quality of the local user once every two seconds before the user joins the channel.

Last mile refers to the connection between the local device and Agora's edge server. After the application calls the EnableLastmileTest method, this callback reports once every two seconds the uplink and downlink last mile network conditions of the local user before the user joins the channel.

Parameters
qualityThe last mile network quality: QUALITY_TYPE.

◆ OnFirstLocalAudioFrameHandler()

delegate void agora_gaming_rtc.OnFirstLocalAudioFrameHandler ( int  elapsed)

Occurs when the engine sends the first local audio frame.

Parameters
elapsedThe time elapsed (ms) from the local user calling JoinChannelByKey until the SDK triggers this callback.

◆ OnFirstRemoteAudioFrameHandler()

delegate void agora_gaming_rtc.OnFirstRemoteAudioFrameHandler ( uint  userId,
int  elapsed 
)

Occurs when the engine receives the first audio frame from a specific remote user.

Deprecated:
v3.0.1 This callback is deprecated. Use OnRemoteAudioStateChangedHandler instead.
Parameters
userIdThe user ID of the remote user.
elapsedThe time elapsed (ms) from the remote user calling JoinChannelByKey until the SDK triggers this callback.

◆ OnAudioQualityHandler()

delegate void agora_gaming_rtc.OnAudioQualityHandler ( uint  userId,
int  quality,
ushort  delay,
ushort  lost 
)

Reports the statistics of the audio stream from each remote user/host.

Deprecated:
Deprecated as of v2.3.2. Use the OnRemoteAudioStatsHandler callback instead.

The SDK triggers this callback once every two seconds to report the audio quality of each remote user/host sending an audio stream. If a channel has multiple users/hosts sending audio streams, the SDK triggers this callback as many times.

Parameters
userIdThe user ID of the speaker.
qualityThe audio quality of the user: QUALITY_TYPE.
delayThe time delay (ms) of sending the audio packet from the sender to the receiver, including the time delay of audio sampling pre-processing, transmission, and the jitter buffer.
lostThe packet loss rate (%) of the audio packet sent from the sender to the receiver.

◆ OnStreamInjectedStatusHandler()

delegate void agora_gaming_rtc.OnStreamInjectedStatusHandler ( string  url,
uint  userId,
int  status 
)

Occurs when a voice or video stream URL address is added to a live broadcast.

Parameters
urlThe URL address of the externally injected stream.
userIdThe user ID.
statusThe state of the externally injected stream: INJECT_STREAM_STATUS.

◆ OnStreamUnpublishedHandler()

delegate void agora_gaming_rtc.OnStreamUnpublishedHandler ( string  url)

Reports the result of calling the RemovePublishStreamUrl method. (CDN live only.)

Deprecated:
v3.0.1 This method is deprecated. Use OnRtmpStreamingStateChangedHandler instead.

This callback indicates whether you have successfully removed an RTMP stream from the CDN.

Parameters
urlThe RTMP URL address.

◆ OnStreamPublishedHandler()

delegate void agora_gaming_rtc.OnStreamPublishedHandler ( string  url,
int  error 
)

Reports the result of calling the AddPublishStreamUrl method. (CDN live only.)

Deprecated:
v3.0.1 This method is deprecated. Use OnRtmpStreamingStateChangedHandler instead.
Parameters
urlThe RTMP URL address.
errorError code: Error Code.
  • ERR_OK(0): The publishing succeeds.
  • ERR_FAILED(1): The publishing fails.
  • ERR_INVALID_ARGUMENT(2): Invalid argument used. If, for example, you did not call SetLiveTranscoding to configure LiveTranscoding before calling AddPublishStreamUrl, the SDK reports ERR_INVALID_ARGUMENT(2).
  • ERR_TIMEDOUT(10): The publishing timed out.
  • ERR_ALREADY_IN_USE(19): The chosen URL address is already in use for CDN live streaming.
  • ERR_RESOURCE_LIMITED(22): The backend system does not have enough resources for the CDN live streaming.
  • ERR_ENCRYPTED_STREAM_NOT_ALLOWED_PUBLISH(130): You cannot publish an encrypted stream.
  • ERR_PUBLISH_STREAM_CDN_ERROR(151)
  • ERR_PUBLISH_STREAM_NUM_REACH_LIMIT(152)
  • ERR_PUBLISH_STREAM_NOT_AUTHORIZED(153)
  • ERR_PUBLISH_STREAM_INTERNAL_SERVER_ERROR(154)
  • ERR_PUBLISH_STREAM_FORMAT_NOT_SUPPORTED(156)

◆ OnStreamMessageErrorHandler()

delegate void agora_gaming_rtc.OnStreamMessageErrorHandler ( uint  userId,
int  streamId,
int  code,
int  missed,
int  cached 
)

Occurs when the local user does not receive the data stream from the remote user within five seconds.

The SDK triggers this callback when the local user fails to receive the stream message that the remote user sends by calling the SendStreamMessage method.

Parameters
userIdThe user ID of the remote user sending the message.
streamIdThe stream ID.
codeThe error code: Error Code.
missedThe number of lost messages.
cachedThe number of incoming cached messages when the data stream is interrupted.

◆ OnStreamMessageHandler()

delegate void agora_gaming_rtc.OnStreamMessageHandler ( uint  userId,
int  streamId,
string  data,
int  length 
)

Occurs when the local user receives the data stream from the remote user within five seconds.

The SDK triggers this callback when the local user receives the stream message that the remote user sends by calling the SendStreamMessage method.

Parameters
userIdThe user ID of the remote user sending the message.
streamIdThe stream ID.
dataThe data received by the local user.
lengthThe length of the data in bytes.

◆ OnConnectionBannedHandler()

delegate void agora_gaming_rtc.OnConnectionBannedHandler ( )

Occurs when your connection is banned by the Agora Server.

Deprecated:
from v2.3.2. Replaced by the OnConnectionStateChangedHandler callback.

◆ OnConnectionStateChangedHandler()

delegate void agora_gaming_rtc.OnConnectionStateChangedHandler ( CONNECTION_STATE_TYPE  state,
CONNECTION_CHANGED_REASON_TYPE  reason 
)

Occurs when the connection state between the SDK and the server changes.

Parameters
stateSee CONNECTION_STATE_TYPE.
reasonSee CONNECTION_CHANGED_REASON_TYPE.

◆ OnTokenPrivilegeWillExpireHandler()

delegate void agora_gaming_rtc.OnTokenPrivilegeWillExpireHandler ( string  token)

Occurs when the token expires in 30 seconds.

The user becomes offline if the token used in the JoinChannelByKey method expires. The SDK triggers this callback 30 seconds before the token expires to remind the application to get a new token. Upon receiving this callback, generate a new token on the server and call the RenewToken method to pass the new token to the SDK.

Parameters
tokenThe token that expires in 30 seconds.

◆ OnActiveSpeakerHandler()

delegate void agora_gaming_rtc.OnActiveSpeakerHandler ( uint  uid)

Reports which user is the loudest speaker.

If the user enables the audio volume indication by calling the EnableAudioVolumeIndication method, this callback returns the uid of the active speaker detected by the audio volume detection module of the SDK.

Note
  • To receive this callback, you need to call the EnableAudioVolumeIndication method.
  • This callback returns the user ID of the user with the highest voice volume during a period of time, instead of at the moment.
Parameters
uidThe user ID of the active speaker. A uid of 0 represents the local user.

◆ OnVideoStoppedHandler()

delegate void agora_gaming_rtc.OnVideoStoppedHandler ( )

Occurs when the video stops playing.

Deprecated:
Deprecated as of v2.4.1. Use LOCAL_VIDEO_STREAM_STATE_STOPPED(0) in the OnLocalVideoStateChangedHandler callback instead.

The application can use this callback to change the configuration of the view (for example, displaying other pictures in the view) after the video stops playing.

◆ OnFirstLocalVideoFrameHandler()

delegate void agora_gaming_rtc.OnFirstLocalVideoFrameHandler ( int  width,
int  height,
int  elapsed 
)

Occurs when the first local video frame is displayed/rendered on the local video view.

Parameters
widthWidth (px) of the first local video frame.
heightHeight (px) of the first local video frame.
elapsedTime elapsed (ms) from the local user calling the JoinChannelByKey method until the SDK triggers this callback. If you call the StartPreview method before calling the JoinChannelByKey method, then elapsed is the time elapsed from calling the StartPreview method until the SDK triggers this callback.

◆ OnFirstRemoteVideoFrameHandler()

delegate void agora_gaming_rtc.OnFirstRemoteVideoFrameHandler ( uint  uid,
int  width,
int  height,
int  elapsed 
)

Occurs when the first remote video frame is received and decoded.

The SDK triggers this callback when the first frame of the remote video is displayed in the user's video window. The application can retrieve the time elapsed from a user joining the channel until the first video frame is displayed.

Parameters
uidUser ID of the remote user sending the video stream.
widthWidth (px) of the video frame.
heightHeight (px) of the video stream.
elapsedTime elapsed (ms) from the local user calling the JoinChannelByKey method until the SDK triggers this callback.

◆ OnUserEnableVideoHandler()

delegate void agora_gaming_rtc.OnUserEnableVideoHandler ( uint  uid,
bool  enabled 
)

Occurs when a specific remote user enables/disables the video module.

Deprecated:
This callback is deprecated and replaced by the OnRemoteVideoStateChangedHandler callback with the following parameters:

Once the video module is disabled, the remote user can only use a voice call. The remote user cannot send or receive any video from other users.

The SDK triggers this callback when the remote user enables or disables the video module by calling the EnableVideo or DisableVideo method.

Note
This callback returns invalid when the number of users in a channel exceeds 20.
Parameters
uidUser ID of the remote user.
enabledWhether the specified remote user enables/disables the local video capturing function:
  • true: Enable. The remote user can enter a video session.
  • false: Disable. The remote user can only enter a voice session, and cannot send or receive any video stream.

◆ OnUserEnableLocalVideoHandler()

delegate void agora_gaming_rtc.OnUserEnableLocalVideoHandler ( uint  uid,
bool  enabled 
)

Occurs when a specified remote user enables/disables the local video capturing function.

Deprecated:
This callback is deprecated and replaced by the OnRemoteVideoStateChangedHandler callback with the following parameters:

This callback is only applicable to the scenario when the user only wants to watch the remote video without sending any video stream to the other user.

The SDK triggers this callback when the remote user resumes or stops capturing the video stream by calling the EnableLocalVideo method.

Parameters
uidUser ID of the remote user.
enabledWhether the specified remote user enables/disables the local video capturing function:
  • true: Enable. Other users in the channel can see the video of this remote user.
  • false: Disable. Other users in the channel can no longer receive the video stream from this remote user, while this remote user can still receive the video streams from other users.

◆ OnRemoteVideoStateChangedHandler()

delegate void agora_gaming_rtc.OnRemoteVideoStateChangedHandler ( uint  uid,
REMOTE_VIDEO_STATE  state,
REMOTE_VIDEO_STATE_REASON  reason,
int  elapsed 
)

Occurs when the remote video state changes.

Note
This callback does not work properly when the number of users (in the COMMUNICATION profile) or hosts (in the LIVE_BROADCASTING profile) in the channel exceeds 17.
Parameters
uidThe ID of the remote user whose video state changes.
stateThe state of the remote video. See REMOTE_VIDEO_STATE.
reasonThe reason of the remote video state change. See REMOTE_VIDEO_STATE_REASON.
elapsedThe time elapsed (ms) from the local user calling the JoinChannelByKey method until the SDK triggers this callback.

◆ OnLocalPublishFallbackToAudioOnlyHandler()

delegate void agora_gaming_rtc.OnLocalPublishFallbackToAudioOnlyHandler ( bool  isFallbackOrRecover)

Occurs when the locally published media stream falls back to an audio-only stream due to poor network conditions or switches back to the video after the network conditions improve.

If you call SetLocalPublishFallbackOption and set option as STREAM_FALLBACK_OPTION_AUDIO_ONLY(2), the SDK triggers this callback when the locally published stream falls back to audio-only mode due to poor uplink conditions, or when the audio stream switches back to the video after the uplink network condition improves.

Parameters
isFallbackOrRecoverWhether the locally published stream falls back to audio-only or switches back to the video:
  • true: The locally published stream falls back to audio-only due to poor network conditions.
  • false: The locally published stream switches back to the video after the network conditions improve.

◆ OnRemoteSubscribeFallbackToAudioOnlyHandler()

delegate void agora_gaming_rtc.OnRemoteSubscribeFallbackToAudioOnlyHandler ( uint  uid,
bool  isFallbackOrRecover 
)

Occurs when the remote media stream falls back to audio-only stream due to poor network conditions or switches back to the video stream after the network conditions improve.

If you call SetRemoteSubscribeFallbackOption and set option as STREAM_FALLBACK_OPTION_AUDIO_ONLY(2), the SDK triggers this callback when the remote media stream falls back to audio-only mode due to poor uplink conditions, or when the remote media stream switches back to the video after the uplink network condition improves.

Note
Once the remotely subscribed media stream switches to the low stream due to poor network conditions, you can monitor the stream switch between a high and low stream in the RemoteVideoStats of the OnRemoteVideoStatsHandler callback.
Parameters
uidID of the remote user sending the stream.
isFallbackOrRecoverWhether the remotely subscribed media stream falls back to audio-only or switches back to the video:
  • true: The remotely subscribed media stream falls back to audio-only due to poor network conditions.
  • false: The remotely subscribed media stream switches back to the video stream after the network conditions improved.

◆ OnNetworkQualityHandler()

delegate void agora_gaming_rtc.OnNetworkQualityHandler ( uint  uid,
int  txQuality,
int  rxQuality 
)

Reports the last mile network quality of each user in the channel once every two seconds.

Last mile refers to the connection between the local device and the Agora edge server. This callback reports once every two seconds the last mile network conditions of each user in the channel. If a channel includes multiple users, the SDK triggers this callback as many times.

Parameters
uidUser ID. The network quality of the user with this uid is reported. If uid is 0, the local network quality is reported.
txQualityUplink transmission quality rating of the user in terms of the transmission bitrate, packet loss rate, average RTT (Round-Trip Time), and jitter of the uplink network. txQuality is a quality rating helping you understand how well the current uplink network conditions can support the selected VideoEncoderConfiguration. For example, a 1000 Kbps uplink network may be adequate for video frames with a resolution of 640 × 480 and a frame rate of 15 fps in the Live-broadcast profile, but may be inadequate for resolutions higher than 1280 × 720. See QUALITY_TYPE.
rxQualityDownlink network quality rating of the user in terms of the packet loss rate, average RTT, and jitter of the downlink network. See QUALITY_TYPE.

◆ OnLocalVideoStatsHandler()

delegate void agora_gaming_rtc.OnLocalVideoStatsHandler ( LocalVideoStats  localVideoStats)

Reports the statistics of the local video stream.

The SDK triggers this callback once every two seconds for each user/host. If there are multiple users/hosts in the channel, the SDK triggers this callback as many times.

Note
If you have called the EnableDualStreamMode method, the OnLocalVideoStatsHandler callback reports the statistics of the high-video stream (high bitrate, and high-resolution video stream).
Parameters
localVideoStatsThe statistics of the local video stream. See LocalVideoStats.

◆ OnRemoteVideoStatsHandler()

delegate void agora_gaming_rtc.OnRemoteVideoStatsHandler ( RemoteVideoStats  remoteVideoStats)

Reports the statistics of the video stream from each remote user/host.

The SDK triggers this callback once every two seconds for each remote user/host. If a channel includes multiple remote users, the SDK triggers this callback as many times.

Parameters
remoteVideoStatsThe statistics of the remote video stream. See RemoteVideoStats.

◆ OnRemoteAudioStatsHandler()

delegate void agora_gaming_rtc.OnRemoteAudioStatsHandler ( RemoteAudioStats  remoteAudioStats)

Reports the statistics of the audio stream from each remote user/host.

This callback replaces the OnAudioQualityHandler callback.

The SDK triggers this callback once every two seconds for each remote user/host. If a channel includes multiple remote users, the SDK triggers this callback as many times.

Parameters
remoteAudioStatsThe statistics of the received remote audio streams. See RemoteAudioStats.

◆ OnAudioDeviceStateChangedHandler()

delegate void agora_gaming_rtc.OnAudioDeviceStateChangedHandler ( string  deviceId,
int  deviceType,
int  deviceState 
)

Occurs when the audio device state changes.

This callback notifies the application that the system's audio device state is changed. For example, a headset is unplugged from the device.

Parameters
deviceIdThe device ID.
deviceTypeThe device type: MEDIA_DEVICE_TYPE.
deviceStateThe device state: MEDIA_DEVICE_STATE_TYPE.

◆ OnCameraReadyHandler()

delegate void agora_gaming_rtc.OnCameraReadyHandler ( )

Occurs when the camera turns on and is ready to capture the video.

Deprecated:
Deprecated as of v2.4.1. Use LOCAL_VIDEO_STREAM_STATE_CAPTURING(1) in the OnLocalVideoStateChangedHandler callback instead.

If the camera fails to turn on, fix the error reported in the OnSDKErrorHandler callback.

◆ OnCameraFocusAreaChangedHandler()

delegate void agora_gaming_rtc.OnCameraFocusAreaChangedHandler ( int  x,
int  y,
int  width,
int  height 
)

Occurs when the camera focus area changes.

The SDK triggers this callback when the local user changes the camera focus position by calling the setCameraFocusPositionInPreview method.

Note
This callback is for Android and iOS only.
Parameters
xx coordinate of the changed camera focus area.
yy coordinate of the changed camera focus area.
widthWidth of the changed camera focus area.
heightHeight of the changed camera focus area.

◆ OnCameraExposureAreaChangedHandler()

delegate void agora_gaming_rtc.OnCameraExposureAreaChangedHandler ( int  x,
int  y,
int  width,
int  height 
)

Occurs when the camera exposure area changes.

The SDK triggers this callback when the local user changes the camera exposure position by calling the setCameraExposurePosition method.

Note
This callback is for Android and iOS only.
Parameters
xx coordinate of the changed camera exposure area.
yy coordinate of the changed camera exposure area.
widthWidth of the changed camera exposure area.
heightHeight of the changed camera exposure area.

◆ OnRemoteAudioMixingBeginHandler()

delegate void agora_gaming_rtc.OnRemoteAudioMixingBeginHandler ( )

Occurs when a remote user starts audio mixing.

When a remote user calls StartAudioMixing to play the background music, the SDK reports this callback.

◆ OnRemoteAudioMixingEndHandler()

delegate void agora_gaming_rtc.OnRemoteAudioMixingEndHandler ( )

Occurs when a remote user finishes audio mixing.

◆ OnAudioEffectFinishedHandler()

delegate void agora_gaming_rtc.OnAudioEffectFinishedHandler ( int  soundId)

Occurs when the local audio effect playback finishes.

The SDK triggers this callback when the local audio effect file playback finishes.

Parameters
soundIdID of the local audio effect. Each local audio effect has a unique ID.

◆ OnVideoDeviceStateChangedHandler()

delegate void agora_gaming_rtc.OnVideoDeviceStateChangedHandler ( string  deviceId,
int  deviceType,
int  deviceState 
)

Occurs when the video device state changes.

Note
On a Windows device with an external camera for video capturing, the video disables once the external camera is unplugge
Parameters
deviceIdThe device ID of the video device that changes state.
deviceTypeThe device type: MEDIA_DEVICE_TYPE.
deviceStateThe device state: MEDIA_DEVICE_STATE_TYPE.

◆ OnRemoteVideoTransportStatsHandler()

delegate void agora_gaming_rtc.OnRemoteVideoTransportStatsHandler ( uint  uid,
ushort  delay,
ushort  lost,
ushort  rxKBitRate 
)

Reports the transport-layer statistics of each remote video stream.

Deprecated:
This callback is deprecated and replaced by the OnRemoteVideoStatsHandler callback.

This callback reports the transport-layer statistics, such as the packet loss rate and network time delay, once every two seconds after the local user receives a video packet from a remote user.

Parameters
uidUser ID of the remote user sending the video packet.
delayNetwork time delay (ms) from the remote user sending the video packet to the local user.
lostPacket loss rate (%) of the video packet sent from the remote user.
rxKBitRateReceived bitrate (Kbps) of the video packet sent from the remote user.

◆ OnRemoteAudioTransportStatsHandler()

delegate void agora_gaming_rtc.OnRemoteAudioTransportStatsHandler ( uint  uid,
ushort  delay,
ushort  lost,
ushort  rxKBitRate 
)

Reports the transport-layer statistics of each remote audio stream.

Deprecated:
This callback is deprecated and replaced by the OnRemoteAudioStatsHandler callback.

This callback reports the transport-layer statistics, such as the packet loss rate and network time delay, once every two seconds after the local user receives an audio packet from a remote user.

Parameters
uidUser ID of the remote user sending the audio packet.
delayNetwork time delay (ms) from the remote user sending the audio packet to the local user.
lostPacket loss rate (%) of the audio packet sent from the remote user.
rxKBitRateReceived bitrate (Kbps) of the audio packet sent from the remote user.

◆ OnTranscodingUpdatedHandler()

delegate void agora_gaming_rtc.OnTranscodingUpdatedHandler ( )

Occurs when the publisher's transcoding is updated.

When the LiveTranscoding class in the SetLiveTranscoding method updates, the SDK triggers the OnTranscodingUpdatedHandler callback to report the update information to the local host.

Note
If you call the SetLiveTranscoding method to set the LiveTranscoding class for the first time, the SDK does not trigger the OnTranscodingUpdatedHandler callback.

◆ OnAudioDeviceVolumeChangedHandler()

delegate void agora_gaming_rtc.OnAudioDeviceVolumeChangedHandler ( MEDIA_DEVICE_TYPE  deviceType,
int  volume,
bool  muted 
)

Occurs when the volume of the playback device, microphone, or application changes.

Parameters
deviceTypeDevice type: MEDIA_DEVICE_TYPE.
volumeVolume of the device. The value ranges between 0 and 255.
muted
  • true: The audio device is muted.
  • false: The audio device is not muted.

◆ OnMediaEngineStartCallSuccessHandler()

delegate void agora_gaming_rtc.OnMediaEngineStartCallSuccessHandler ( )

Occurs when the media engine call starts.

◆ OnMediaEngineLoadSuccessHandler()

delegate void agora_gaming_rtc.OnMediaEngineLoadSuccessHandler ( )

Occurs when the media engine loads.

◆ OnAudioMixingStateChangedHandler()

delegate void agora_gaming_rtc.OnAudioMixingStateChangedHandler ( AUDIO_MIXING_STATE_TYPE  state,
AUDIO_MIXING_ERROR_TYPE  errorCode 
)

Occurs when the state of the local user's audio mixing file changes.

  • When the audio mixing file plays, pauses playing, or stops playing, this callback returns 710, 711, or 713 in state, and 0 in errorCode.
  • When exceptions occur during playback, this callback returns 714 in state and an error in errorCode.
  • If the local audio mixing file does not exist, or if the SDK does not support the file format or cannot access the music file URL, the SDK returns WARN_AUDIO_MIXING_OPEN_ERROR(701).
Parameters
stateThe state code. See AUDIO_MIXING_STATE_TYPE.
errorCodeThe error code. See AUDIO_MIXING_ERROR_TYPE.

◆ OnFirstRemoteAudioDecodedHandler()

delegate void agora_gaming_rtc.OnFirstRemoteAudioDecodedHandler ( uint  uid,
int  elapsed 
)

Occurs when the SDK decodes the first remote audio frame for playback.

Deprecated:
v3.0.1 This callback is deprecated. Use OnRemoteAudioStateChangedHandler instead.

This callback is triggered in either of the following scenarios:

  • The remote user joins the channel and sends the audio stream.
  • The remote user stops sending the audio stream and re-sends it after 15 seconds. Reasons for such an interruption include:
    • The remote user leaves channel.
    • The remote user drops offline.
    • The remote user calls the MuteLocalAudioStream method to stop sending the local audio stream.
    • The remote user calls the DisableAudio method to disable audio.
Parameters
uidUser ID of the remote user sending the audio stream.
elapsedTime elapsed (ms) from the local user calling the JoinChannelByKey method until the SDK triggers this callback.

◆ OnLocalVideoStateChangedHandler()

delegate void agora_gaming_rtc.OnLocalVideoStateChangedHandler ( LOCAL_VIDEO_STREAM_STATE  localVideoState,
LOCAL_VIDEO_STREAM_ERROR  error 
)

Occurs when the local video stream state changes.

This callback indicates the state of the local video stream, including camera capturing and video encoding, and allows you to troubleshoot issues when exceptions occur.

Note
For some device models, the SDK will not trigger this callback when the state of the local video changes while the local video capturing device is in use, so you have to make your own timeout judgment.
Parameters
localVideoStateState type LOCAL_VIDEO_STREAM_STATE. When the state is LOCAL_VIDEO_STREAM_STATE_FAILED(3), see the error parameter for details.
errorThe detailed error information. code LOCAL_VIDEO_STREAM_ERROR.

◆ OnRtmpStreamingStateChangedHandler()

delegate void agora_gaming_rtc.OnRtmpStreamingStateChangedHandler ( string  url,
RTMP_STREAM_PUBLISH_STATE  state,
RTMP_STREAM_PUBLISH_ERROR  errCode 
)

Occurs when the state of the RTMP streaming changes.

The SDK triggers this callback to report the result of the local user calling the AddPublishStreamUrl or RemovePublishStreamUrl method.

This callback indicates the state of the RTMP streaming. When exceptions occur, you can troubleshoot issues by referring to the detailed error descriptions in the errCode parameter.

Parameters
urlThe RTMP URL address.
stateThe RTMP streaming state. See: RTMP_STREAM_PUBLISH_STATE.
errCodeThe detailed error information for streaming. See: RTMP_STREAM_PUBLISH_ERROR.

◆ OnNetworkTypeChangedHandler()

delegate void agora_gaming_rtc.OnNetworkTypeChangedHandler ( NETWORK_TYPE  type)

Occurs when the local network type changes.

When the network connection is interrupted, this callback indicates whether the interruption is caused by a network type change or poor network conditions.

Parameters
typeSee NETWORK_TYPE.

◆ OnLastmileProbeResultHandler()

delegate void agora_gaming_rtc.OnLastmileProbeResultHandler ( LastmileProbeResult  result)

Reports the last-mile network probe result.

The SDK triggers this callback within 30 seconds after the app calls the StartLastmileProbeTest method.

Parameters
resultThe uplink and downlink last-mile network probe test result. See LastmileProbeResult.

◆ OnLocalUserRegisteredHandler()

delegate void agora_gaming_rtc.OnLocalUserRegisteredHandler ( uint  uid,
string  userAccount 
)

Occurs when the local user successfully registers a user account by calling the RegisterLocalUserAccount method or joins a channel by calling the JoinChannelByKey method.This callback reports the user ID and user account of the local user.

Parameters
uidThe ID of the local user.
userAccountThe user account of the local user.

◆ OnUserInfoUpdatedHandler()

delegate void agora_gaming_rtc.OnUserInfoUpdatedHandler ( uint  uid,
UserInfo  userInfo 
)

Occurs when the SDK gets the user ID and user account of the remote user.

After a remote user joins the channel, the SDK gets the UID and user account of the remote user, caches them in a mapping table object (userInfo), and triggers this callback on the local client.

Parameters
uidThe ID of the remote user.
userInfoThe UserInfo object that contains the user ID and user account of the remote user.

◆ OnLocalAudioStateChangedHandler()

delegate void agora_gaming_rtc.OnLocalAudioStateChangedHandler ( LOCAL_AUDIO_STREAM_STATE  state,
LOCAL_AUDIO_STREAM_ERROR  error 
)

Occurs when the local audio state changes.

This callback indicates the state change of the local audio stream, including the state of the audio recording and encoding, and allows you to troubleshoot issues when exceptions occur.

Note
When the state is LOCAL_AUDIO_STREAM_STATE_FAILED(3), see the error parameter for details.
Parameters
stateThe state of the local audio. See LOCAL_AUDIO_STREAM_STATE.
errorThe error information of the local audio. See LOCAL_AUDIO_STREAM_ERROR.

◆ OnRemoteAudioStateChangedHandler()

delegate void agora_gaming_rtc.OnRemoteAudioStateChangedHandler ( uint  uid,
REMOTE_AUDIO_STATE  state,
REMOTE_AUDIO_STATE_REASON  reason,
int  elapsed 
)

Occurs when the remote audio state changes.

This callback indicates the state change of the remote audio stream.

Note
This callback does not work properly when the number of users (in the COMMUNICATION profile) or hosts (in the LIVE_BROADCASTING profile) in the channel exceeds 17.
Parameters
uidThe ID of the remote user whose audio state changes.
stateThe state of the remote audio. See REMOTE_AUDIO_STATE.
reasonThe reason of the remote audio state change. See REMOTE_AUDIO_STATE_REASON.
elapsedTime elapsed (ms) from the local user calling the JoinChannelByKey method until the SDK triggers this callback.

◆ OnLocalAudioStatsHandler()

delegate void agora_gaming_rtc.OnLocalAudioStatsHandler ( LocalAudioStats  localAudioStats)

Reports the statistics of the local audio stream.

The SDK triggers this callback once every two seconds.

Parameters
localAudioStatsThe statistics of the local audio stream. See LocalAudioStats.

◆ OnChannelMediaRelayStateChangedHandler()

delegate void agora_gaming_rtc.OnChannelMediaRelayStateChangedHandler ( CHANNEL_MEDIA_RELAY_STATE  state,
CHANNEL_MEDIA_RELAY_ERROR  code 
)

Occurs when the state of the media stream relay changes.

The SDK returns the state of the current media relay with any error message.

Parameters
stateThe state code in CHANNEL_MEDIA_RELAY_STATE.
codeThe error code in CHANNEL_MEDIA_RELAY_ERROR.

◆ OnChannelMediaRelayEventHandler()

delegate void agora_gaming_rtc.OnChannelMediaRelayEventHandler ( CHANNEL_MEDIA_RELAY_EVENT  events)

Reports events during the media stream relay.

Parameters
eventsThe event code in CHANNEL_MEDIA_RELAY_EVENT.

◆ OnFacePositionChangedHandler()

delegate void agora_gaming_rtc.OnFacePositionChangedHandler ( int  imageWidth,
int  imageHeight,
Rectangle  vecRectangle,
int  vecDistance,
int  numFaces 
)

Reports the face detection result of the local user. Applies to Android and iOS only.

Since
v3.0.1

Once you enable face detection by calling EnableFaceDetection(true), you can get the following information on the local user in real-time:

  • The width and height of the local video.
  • The position of the human face in the local video.
  • The distance between the human face and the device screen. This value is based on the fitting calculation of the local video size and the position of the human face.
Note
  • If the SDK does not detect a face, it reduces the frequency of this callback to reduce power consumption on the local device.
  • The SDK stops triggering this callback when a human face is in close proximity to the screen.
  • On Android, the distance value reported in this callback may be slightly different from the actual distance. Therefore, Agora does not recommend using it for accurate calculation.
Parameters
imageWidthThe width (px) of the local video.
imageHeightThe height (px) of the local video.
vecRectangleThe position and size of the human face on the local video:
  • x: The x coordinate (px) of the human face in the local video. Taking the top left corner of the captured video as the origin, the x coordinate represents the relative lateral displacement of the top left corner of the human face to the origin.
  • y: The y coordinate (px) of the human face in the local video. Taking the top left corner of the captured video as the origin, the y coordinate represents the relative longitudinal displacement of the top left corner of the human face to the origin.
  • width: The width (px) of the human face in the captured video.
  • height: The height (px) of the human face in the captured video.
vecDistanceThe distance (cm) between the human face and the screen.
numFacesThe number of faces detected. If the value is 0, it means that no human face is detected.

◆ ChannelOnWarningHandler()

delegate void agora_gaming_rtc.ChannelOnWarningHandler ( string  channelId,
int  warn,
string  message 
)

Reports a warning code of AgoraChannel.

In most cases, the application can ignore the warning reported by the SDK because the SDK can usually fix the issue and resume running. For example, when losing connection with the server, the SDK may report WARN_LOOKUP_CHANNEL_TIMEOUT(104) and automatically try to reconnect.

Parameters
channelIdThe name of the channel that you join.
warnThe warning code, see Warning Code.
messageThe warning message.

◆ ChannelOnErrorHandler()

delegate void agora_gaming_rtc.ChannelOnErrorHandler ( string  channelId,
int  err,
string  message 
)

Reports an error code of AgoraChannel.

In most cases, the SDK cannot fix the issue and resume running. The SDK requires the application to take action or informs the user about the issue.

For example, the SDK reports an ERR_START_CALL(1002) error when failing to initialize a call. The application informs the user that the call initialization failed and invokes the LeaveChannel method to leave the channel.

Parameters
channelIdThe name of the channel that you join.
errThe error code, see Error Code.
messageThe error message.

◆ ChannelOnJoinChannelSuccessHandler()

delegate void agora_gaming_rtc.ChannelOnJoinChannelSuccessHandler ( string  channelId,
uint  uid,
int  elapsed 
)

Occurs when a user joins a channel.

This callback notifies the application that a user joins a specified channel when the application calls the JoinChannel method.

The channel name assignment is based on channelId specified in the JoinChannel method.

If the uid is not specified in the JoinChannel method, the server automatically assigns a uid.

Parameters
channelIdThe name of the channel that you join.
uidThe user ID of the user joining the channel.
elapsedTime elapsed (ms) from the user calling the JoinChannel method until the SDK triggers this callback.

◆ ChannelOnReJoinChannelSuccessHandler()

delegate void agora_gaming_rtc.ChannelOnReJoinChannelSuccessHandler ( string  channelId,
uint  uid,
int  elapsed 
)

Occurs when a user rejoins the channel after disconnection due to network problems.

When a user loses connection with the server because of network problems, the SDK automatically tries to reconnect and triggers this callback upon reconnection.

Parameters
channelIdThe name of the channel that you rejoin.
uidThe user ID of the user rejoining the channel.
elapsedThe time elapsed (ms) from starting to reconnect until the SDK triggers this callback.

◆ ChannelOnLeaveChannelHandler()

delegate void agora_gaming_rtc.ChannelOnLeaveChannelHandler ( string  channelId,
RtcStats  rtcStats 
)

Occurs when a user leaves the channel.

This callback notifies the application that a user leaves the channel when the application calls the LeaveChannel method.

The application retrieves information, such as the call duration and statistics.

Parameters
channelIdThe name of the channel that you join.
rtcStatsThe statistics of the call: RtcStats.

◆ ChannelOnClientRoleChangedHandler()

delegate void agora_gaming_rtc.ChannelOnClientRoleChangedHandler ( string  channelId,
CLIENT_ROLE_TYPE  oldRole,
CLIENT_ROLE_TYPE  newRole 
)

Occurs when the user role switches in a live broadcast. For example, from a host to an audience or vice versa.

This callback notifies the application of a user role switch when the application calls the SetClientRole method.

The SDK triggers this callback when the local user switches the user role by calling the SetClientRole method after joining the channel.

Parameters
channelIdThe name of the channel that you join.
oldRoleRole that the user switches from: CLIENT_ROLE_TYPE.
newRoleRole that the user switches to: CLIENT_ROLE_TYPE.

◆ ChannelOnUserJoinedHandler()

delegate void agora_gaming_rtc.ChannelOnUserJoinedHandler ( string  channelId,
uint  uid,
int  elapsed 
)

Occurs when a remote user (Communication) or host (Live Broadcast) joins the channel.

  • Communication profile: This callback notifies the application that another user joins the channel. If other users are already in the channel, the SDK also reports to the application on the existing users.
  • Live-broadcast profile: This callback notifies the application that the host joins the channel. If other hosts are already in the channel, the SDK also reports to the application on the existing hosts. We recommend limiting the number of hosts to 17.

The SDK triggers this callback under one of the following circumstances:

  • A remote user or host joins the channel by calling the JoinChannel method.
  • A remote user switches the user role to the host by calling the SetClientRole method after joining the channel.
  • A remote user or host rejoins the channel after a network interruption.
  • The host injects an online media stream into the channel by calling the AddInjectStreamUrl method.
Note
In the Live-broadcast profile:
  • The host receives this callback when another host joins the channel.
  • The audience in the channel receives this callback when a new host joins the channel.
  • When a web application joins the channel, the SDK triggers this callback as long as the web application publishes streams.
Parameters
channelIdThe name of the channel that you join.
uidThe user ID of the user or host joining the channel.
elapsedTime delay (ms) from the local user calling the JoinChannel method until the SDK triggers this callback.

◆ ChannelOnUserOffLineHandler()

delegate void agora_gaming_rtc.ChannelOnUserOffLineHandler ( string  channelId,
uint  uid,
USER_OFFLINE_REASON  reason 
)

Occurs when a remote user (Communication) or host (Live Broadcast) leaves the channel.

Reasons why the user is offline:

  • Leave the channel: When the user or host leaves the channel, the user or host sends a goodbye message. When the message is received, the SDK assumes that the user or host leaves the channel.
  • Drop offline: When no data packet of the user or host is received for a certain period of time (20 seconds for the Communication profile, and more for the Live-broadcast profile), the SDK assumes that the user or host drops offline. Unreliable network connections may lead to false detections, so we recommend using the Agora RTM SDK for more reliable offline detection.
Parameters
channelIdThe name of the channel that you join.
uidThe user ID of the user leaving the channel or going offline.
reasonThe reason why the user is offline: USER_OFFLINE_REASON.

◆ ChannelOnConnectionLostHandler()

delegate void agora_gaming_rtc.ChannelOnConnectionLostHandler ( string  channelId)

Occurs when the SDK cannot reconnect to Agora's edge server 10 seconds after its connection to the server is interrupted.

The SDK triggers this callback when it cannot connect to the server 10 seconds after calling the JoinChannel method, whether or not it is in the channel.

This callback is different from OnConnectionInterruptedHandler:

  • The SDK triggers the OnConnectionInterruptedHandler callback when it loses connection with the server for more than four seconds after it successfully joins the channel.
  • The SDK triggers the ChannelOnConnectionLostHandler callback when it loses connection with the server for more than 10 seconds, whether or not it joins the channel.

If the SDK fails to rejoin the channel 20 minutes after being disconnected from Agora's edge server, the SDK stops rejoining the channel.

Parameters
channelIdThe name of the channel that you join.

◆ ChannelOnRequestTokenHandler()

delegate void agora_gaming_rtc.ChannelOnRequestTokenHandler ( string  channelId)

Occurs when the token expires.

After a token is specified by calling the JoinChannel method, if the SDK losses connection with the Agora server due to network issues, the token may expire after a certain period of time and a new token may be required to reconnect to the server.

This callback notifies the app to generate a new token and call JoinChannel to rejoin the channel with the new token.

Parameters
channelIdThe name of the channel that you join.

◆ ChannelOnTokenPrivilegeWillExpireHandler()

delegate void agora_gaming_rtc.ChannelOnTokenPrivilegeWillExpireHandler ( string  channelId,
string  token 
)

Occurs when the token expires in 30 seconds.

The user becomes offline if the token used in the JoinChannel method expires. The SDK triggers this callback 30 seconds before the token expires to remind the application to get a new token. Upon receiving this callback, generate a new token on the server and call the RenewToken method to pass the new token to the SDK.

Parameters
channelIdThe name of the channel that you join.
tokenThe token that expires in 30 seconds.

◆ ChannelOnRtcStatsHandler()

delegate void agora_gaming_rtc.ChannelOnRtcStatsHandler ( string  channelId,
RtcStats  rtcStats 
)

Reports the statistics of the current call session once every two seconds.

Parameters
channelIdThe name of the channel that you join.
rtcStatsThe AgoraChannel engine statistics: RtcStats.

◆ ChannelOnNetworkQualityHandler()

delegate void agora_gaming_rtc.ChannelOnNetworkQualityHandler ( string  channelId,
uint  uid,
int  txQuality,
int  rxQuality 
)

Reports the last mile network quality of each user in the channel once every two seconds.

Last mile refers to the connection between the local device and the Agora edge server. This callback reports once every two seconds the last mile network conditions of each user in the channel. If a channel includes multiple users, the SDK triggers this callback as many times.

Parameters
channelIdThe name of the channel that you join.
uidUser ID. The network quality of the user with this uid is reported. If uid is 0, the local network quality is reported.
txQualityUplink transmission quality rating of the user in terms of the transmission bitrate, packet loss rate, average RTT (Round-Trip Time), and jitter of the uplink network. txQuality is a quality rating helping you understand how well the current uplink network conditions can support the selected VideoEncoderConfiguration. For example, a 1000 Kbps uplink network may be adequate for video frames with a resolution of 640 × 480 and a frame rate of 15 fps in the Live-broadcast profile, but may be inadequate for resolutions higher than 1280 × 720. See QUALITY_TYPE.
rxQualityDownlink network quality rating of the user in terms of the packet loss rate, average RTT, and jitter of the downlink network. See QUALITY_TYPE.

◆ ChannelOnRemoteVideoStatsHandler()

delegate void agora_gaming_rtc.ChannelOnRemoteVideoStatsHandler ( string  channelId,
RemoteVideoStats  remoteVideoStats 
)

Reports the statistics of the video stream from each remote user or host.

The SDK triggers this callback once every two seconds for each remote user or host. If a channel includes multiple remote users, the SDK triggers this callback as many times.

Parameters
channelIdThe name of the channel that you join.
remoteVideoStatsThe statistics of the remote video stream. See RemoteVideoStats.

◆ ChannelOnRemoteAudioStatsHandler()

delegate void agora_gaming_rtc.ChannelOnRemoteAudioStatsHandler ( string  channelId,
RemoteAudioStats  remoteAudioStats 
)

Reports the statistics of the audio stream from each remote user or host.

This callback replaces the OnAudioQualityHandler callback.

The SDK triggers this callback once every two seconds for each remote user or host. If a channel includes multiple remote users, the SDK triggers this callback as many times.

Parameters
channelIdThe name of the channel that you join.
remoteAudioStatsThe statistics of the received remote audio streams. See RemoteAudioStats.

◆ ChannelOnRemoteAudioStateChangedHandler()

delegate void agora_gaming_rtc.ChannelOnRemoteAudioStateChangedHandler ( string  channelId,
uint  uid,
REMOTE_AUDIO_STATE  state,
REMOTE_AUDIO_STATE_REASON  reason,
int  elapsed 
)

Occurs when the remote audio state changes.

This callback indicates the state change of the remote audio stream.

Note
This callback does not work properly when the number of users (in the COMMUNICATION profile) or hosts (in the LIVE_BROADCASTING profile) in the channel exceeds 17.
Parameters
channelIdThe name of the channel that you join.
uidThe ID of the remote user whose audio state changes.
stateThe state of the remote audio. See REMOTE_AUDIO_STATE.
reasonThe reason of the remote audio state change. See REMOTE_AUDIO_STATE_REASON.
elapsedTime elapsed (ms) from the local user calling the JoinChannel method until the SDK triggers this callback.

◆ ChannelOnActiveSpeakerHandler()

delegate void agora_gaming_rtc.ChannelOnActiveSpeakerHandler ( string  channelId,
uint  uid 
)

Reports which user is the loudest speaker.

If the user enables the audio volume indication by calling the EnableAudioVolumeIndication method, this callback returns the uid of the active speaker detected by the audio volume detection module of the SDK.

Note
  • To receive this callback, you need to call the EnableAudioVolumeIndication method.
  • This callback returns the user ID of the user with the highest voice volume during a period of time, instead of at the moment.
Parameters
channelIdThe name of the channel that you join.
uidThe user ID of the active speaker. A uid of 0 represents the local user.

◆ ChannelOnVideoSizeChangedHandler()

delegate void agora_gaming_rtc.ChannelOnVideoSizeChangedHandler ( string  channelId,
uint  uid,
int  width,
int  height,
int  rotation 
)

Occurs when the video size or rotation of a specified user changes.

Parameters
channelIdThe name of the channel that you join.
uidThe user ID of the remote user or local user (0) whose video size or rotation changes.
widthThe new width (pixels) of the video.
heightThe new height (pixels) of the video.
rotationThe new rotation of the video [0 to 360).

◆ ChannelOnRemoteVideoStateChangedHandler()

delegate void agora_gaming_rtc.ChannelOnRemoteVideoStateChangedHandler ( string  channelId,
uint  uid,
REMOTE_VIDEO_STATE  state,
REMOTE_VIDEO_STATE_REASON  reason,
int  elapsed 
)

Occurs when the remote video state changes.

Note
This callback does not work properly when the number of users (in the COMMUNICATION profile) or hosts (in the LIVE_BROADCASTING profile) in the channel exceeds 17.
Parameters
channelIdThe name of the channel that you join.
uidThe ID of the remote user whose video state changes.
stateThe state of the remote video. See REMOTE_VIDEO_STATE.
reasonThe reason of the remote video state change. See REMOTE_VIDEO_STATE_REASON.
elapsedThe time elapsed (ms) from the local user calling the JoinChannel method until the SDK triggers this callback.

◆ ChannelOnStreamMessageHandler()

delegate void agora_gaming_rtc.ChannelOnStreamMessageHandler ( string  channelId,
uint  uid,
int  streamId,
string  data,
int  length 
)

Occurs when the local user receives the data stream from the remote user within five seconds.

The SDK triggers this callback when the local user receives the stream message that the remote user sends by calling the SendStreamMessage method.

Parameters
channelIdThe name of the channel that you join.
uidThe user ID of the remote user sending the message.
streamIdThe stream ID.
dataThe data received by the local user.
lengthThe length of the data in bytes.

◆ ChannelOnStreamMessageErrorHandler()

delegate void agora_gaming_rtc.ChannelOnStreamMessageErrorHandler ( string  channelId,
uint  uid,
int  streamId,
int  code,
int  missed,
int  cached 
)

Occurs when the local user does not receive the data stream from the remote user within five seconds.

The SDK triggers this callback when the local user fails to receive the stream message that the remote user sends by calling the SendStreamMessage method.

Parameters
channelIdThe name of the channel that you join.
uidThe user ID of the remote user sending the message.
streamIdThe stream ID.
codeThe error code: Error Code.
missedThe number of lost messages.
cachedThe number of incoming cached messages when the data stream is interrupted.

◆ ChannelOnMediaRelayStateChangedHandler()

delegate void agora_gaming_rtc.ChannelOnMediaRelayStateChangedHandler ( string  channelId,
CHANNEL_MEDIA_RELAY_STATE  state,
CHANNEL_MEDIA_RELAY_ERROR  code 
)

Occurs when the state of the media stream relay changes.

The SDK returns the state of the current media relay with any error message.

Parameters
channelIdThe name of the channel that you join.
stateThe state code in CHANNEL_MEDIA_RELAY_STATE.
codeThe error code in CHANNEL_MEDIA_RELAY_ERROR.

◆ ChannelOnMediaRelayEventHandler()

delegate void agora_gaming_rtc.ChannelOnMediaRelayEventHandler ( string  channelId,
CHANNEL_MEDIA_RELAY_EVENT  events 
)

Reports events during the media stream relay.

Parameters
channelIdThe name of the channel that you join.
eventsThe event code in CHANNEL_MEDIA_RELAY_EVENT.

◆ ChannelOnRtmpStreamingStateChangedHandler()

delegate void agora_gaming_rtc.ChannelOnRtmpStreamingStateChangedHandler ( string  channelId,
string  url,
RTMP_STREAM_PUBLISH_STATE  state,
RTMP_STREAM_PUBLISH_ERROR  errCode 
)

Occurs when the state of the RTMP streaming changes.

The SDK triggers this callback to report the result of the local user calling the AddPublishStreamUrl or RemovePublishStreamUrl method.

This callback indicates the state of the RTMP streaming. When exceptions occur, you can troubleshoot issues by referring to the detailed error descriptions in the errCode parameter.

Parameters
channelIdThe name of the channel that you join.
urlThe RTMP URL address.
stateThe RTMP streaming state. See: RTMP_STREAM_PUBLISH_STATE.
errCodeThe detailed error information for streaming. See: RTMP_STREAM_PUBLISH_ERROR.

◆ ChannelOnTranscodingUpdatedHandler()

delegate void agora_gaming_rtc.ChannelOnTranscodingUpdatedHandler ( string  channelId)

Occurs when the publisher's transcoding is updated.

When the LiveTranscoding class in the SetLiveTranscoding method updates, the SDK triggers the ChannelOnTranscodingUpdatedHandler callback to report the update information to the local host.

Note
If you call the SetLiveTranscoding method to set the LiveTranscoding class for the first time, the SDK does not trigger the ChannelOnTranscodingUpdatedHandler callback.
Parameters
channelIdThe name of the channel that you join.

◆ ChannelOnStreamInjectedStatusHandler()

delegate void agora_gaming_rtc.ChannelOnStreamInjectedStatusHandler ( string  channelId,
string  url,
uint  uid,
int  status 
)

Occurs when a voice or video stream URL address is added to a live broadcast.

Parameters
channelIdThe name of the channel that you join.
urlThe URL address of the externally injected stream.
uidThe user ID.
statusThe state of the externally injected stream: INJECT_STREAM_STATUS.

◆ ChannelOnRemoteSubscribeFallbackToAudioOnlyHandler()

delegate void agora_gaming_rtc.ChannelOnRemoteSubscribeFallbackToAudioOnlyHandler ( string  channelId,
uint  uid,
bool  isFallbackOrRecover 
)

Occurs when the remote media stream falls back to audio-only stream due to poor network conditions or switches back to the video stream after the network conditions improve.

If you call SetRemoteSubscribeFallbackOption and set option as STREAM_FALLBACK_OPTION_AUDIO_ONLY(2), the SDK triggers this callback when the remote media stream falls back to audio-only mode due to poor uplink conditions, or when the remote media stream switches back to the video after the uplink network condition improves.

Note
Once the remotely subscribed media stream switches to the low stream due to poor network conditions, you can monitor the stream switch between a high and low stream in the RemoteVideoStats of the ChannelOnRemoteVideoStatsHandler callback.
Parameters
channelIdThe name of the channel that you join.
uidID of the remote user sending the stream.
isFallbackOrRecoverWhether the remotely subscribed media stream falls back to audio-only or switches back to the video:
  • true: The remotely subscribed media stream falls back to audio-only due to poor network conditions.
  • false: The remotely subscribed media stream switches back to the video stream after the network conditions improved.

◆ ChannelOnConnectionStateChangedHandler()

delegate void agora_gaming_rtc.ChannelOnConnectionStateChangedHandler ( string  channelId,
CONNECTION_STATE_TYPE  state,
CONNECTION_CHANGED_REASON_TYPE  reason 
)

Occurs when the connection state between the SDK and the server changes.

Parameters
channelIdThe name of the channel that you join.
stateSee CONNECTION_STATE_TYPE.
reasonSee CONNECTION_CHANGED_REASON_TYPE.

◆ ChannelOnLocalPublishFallbackToAudioOnlyHandler()

delegate void agora_gaming_rtc.ChannelOnLocalPublishFallbackToAudioOnlyHandler ( string  channelId,
bool  isFallbackOrRecover 
)

Occurs when the locally published media stream falls back to an audio-only stream due to poor network conditions or switches back to the video after the network conditions improve.

If you call SetLocalPublishFallbackOption and set option as STREAM_FALLBACK_OPTION_AUDIO_ONLY(2), the SDK triggers this callback when the locally published stream falls back to audio-only mode due to poor uplink conditions, or when the audio stream switches back to the video after the uplink network condition improves.

Parameters
channelIdThe name of the channel that you join.
isFallbackOrRecoverWhether the locally published stream falls back to audio-only or switches back to the video:
  • true: The locally published stream falls back to audio-only due to poor network conditions.
  • false: The locally published stream switches back to the video after the network conditions improve.