Video SDK v3.7.2 API Reference for C++, all platforms
agora::rtc Namespace Reference

Classes

class  AAudioDeviceManager
 
class  AParameter
 
struct  AudioFileInfo
 
struct  AudioRecordingConfiguration
 
struct  AudioVolumeInfo
 
class  AVideoDeviceManager
 
struct  BeautyOptions
 
struct  CameraCapturerConfiguration
 
struct  ChannelMediaInfo
 
struct  ChannelMediaOptions
 
struct  ChannelMediaRelayConfiguration
 
struct  ClientRoleOptions
 
struct  ColorEnhanceOptions
 
struct  DataStreamConfig
 
struct  EchoTestConfiguration
 
struct  EncryptionConfig
 
class  IAudioDeviceCollection
 
class  IAudioDeviceManager
 
class  IChannel
 
class  IChannelEventHandler
 
class  IMediaRecorder
 
class  IMediaRecorderObserver
 
class  IMetadataObserver
 
struct  InjectStreamConfig
 
class  IPacketObserver
 
class  IRtcEngine
 
class  IRtcEngine2
 
class  IRtcEngineEventHandler
 
class  IRtcEngineParameter
 
class  IScreenCaptureSourceList
 
class  IVideoDeviceCollection
 
class  IVideoDeviceManager
 
class  IVideoFrameConsumer
 
class  IVideoSink
 
class  IVideoSource
 
struct  LastmileProbeConfig
 
struct  LastmileProbeOneWayResult
 
struct  LastmileProbeResult
 
struct  LiveStreamAdvancedFeature
 
struct  LiveTranscoding
 
struct  LocalAudioStats
 
struct  LocalVideoStats
 
struct  LogConfig
 
struct  LowLightEnhanceOptions
 
struct  MediaRecorderConfiguration
 
struct  RecorderInfo
 
struct  Rect
 
struct  Rectangle
 
struct  RemoteAudioStats
 
struct  RemoteVideoStats
 
struct  RtcEngineContext
 
struct  RtcImage
 
struct  RtcStats
 
struct  ScreenCaptureInfo
 
struct  ScreenCaptureParameters
 
struct  ScreenCaptureSourceInfo
 
struct  SIZE
 
struct  ThumbImageBuffer
 
struct  TranscodingUser
 
struct  UserInfo
 
struct  VideoCanvas
 
struct  VideoDenoiserOptions
 
struct  VideoDimensions
 
struct  VideoEncoderConfiguration
 
struct  VirtualBackgroundSource
 
struct  WatermarkOptions
 

Typedefs

typedef unsigned int uid_t
 
typedef void * view_t
 
typedef struct agora::rtc::TranscodingUser TranscodingUser
 
typedef struct agora::rtc::RtcImage RtcImage
 
typedef struct agora::rtc::LiveStreamAdvancedFeature LiveStreamAdvancedFeature
 
typedef struct agora::rtc::LiveTranscoding LiveTranscoding
 
typedef struct agora::rtc::Rect Rect
 
typedef struct agora::rtc::WatermarkOptions WatermarkOptions
 

Enumerations

enum  MAX_DEVICE_ID_LENGTH_TYPE { MAX_DEVICE_ID_LENGTH = 512 }
 
enum  MAX_USER_ACCOUNT_LENGTH_TYPE { MAX_USER_ACCOUNT_LENGTH = 256 }
 
enum  MAX_CHANNEL_ID_LENGTH_TYPE { MAX_CHANNEL_ID_LENGTH = 65 }
 
enum  QUALITY_REPORT_FORMAT_TYPE { QUALITY_REPORT_JSON = 0, QUALITY_REPORT_HTML = 1 }
 
enum  AUDIO_MIXING_STATE_TYPE { AUDIO_MIXING_STATE_PLAYING = 710, AUDIO_MIXING_STATE_PAUSED = 711, AUDIO_MIXING_STATE_STOPPED = 713, AUDIO_MIXING_STATE_FAILED = 714 }
 
enum  AUDIO_MIXING_ERROR_TYPE { AUDIO_MIXING_ERROR_CAN_NOT_OPEN = 701, AUDIO_MIXING_ERROR_TOO_FREQUENT_CALL = 702, AUDIO_MIXING_ERROR_INTERRUPTED_EOF = 703, AUDIO_MIXING_ERROR_OK = 0 }
 
enum  AUDIO_MIXING_REASON_TYPE {
  AUDIO_MIXING_REASON_CAN_NOT_OPEN = 701, AUDIO_MIXING_REASON_TOO_FREQUENT_CALL = 702, AUDIO_MIXING_REASON_INTERRUPTED_EOF = 703, AUDIO_MIXING_REASON_STARTED_BY_USER = 720,
  AUDIO_MIXING_REASON_ONE_LOOP_COMPLETED = 721, AUDIO_MIXING_REASON_START_NEW_LOOP = 722, AUDIO_MIXING_REASON_ALL_LOOPS_COMPLETED = 723, AUDIO_MIXING_REASON_STOPPED_BY_USER = 724,
  AUDIO_MIXING_REASON_PAUSED_BY_USER = 725, AUDIO_MIXING_REASON_RESUMED_BY_USER = 726
}
 
enum  MEDIA_DEVICE_STATE_TYPE {
  MEDIA_DEVICE_STATE_IDLE = 0, MEDIA_DEVICE_STATE_ACTIVE = 1, MEDIA_DEVICE_STATE_DISABLED = 2, MEDIA_DEVICE_STATE_NOT_PRESENT = 4,
  MEDIA_DEVICE_STATE_UNPLUGGED = 8, MEDIA_DEVICE_STATE_UNRECOMMENDED = 16
}
 
enum  MEDIA_DEVICE_TYPE {
  UNKNOWN_AUDIO_DEVICE = -1, AUDIO_PLAYOUT_DEVICE = 0, AUDIO_RECORDING_DEVICE = 1, VIDEO_RENDER_DEVICE = 2,
  VIDEO_CAPTURE_DEVICE = 3, AUDIO_APPLICATION_PLAYOUT_DEVICE = 4
}
 
enum  LOCAL_VIDEO_STREAM_STATE { LOCAL_VIDEO_STREAM_STATE_STOPPED = 0, LOCAL_VIDEO_STREAM_STATE_CAPTURING = 1, LOCAL_VIDEO_STREAM_STATE_ENCODING = 2, LOCAL_VIDEO_STREAM_STATE_FAILED = 3 }
 
enum  LOCAL_VIDEO_STREAM_ERROR {
  LOCAL_VIDEO_STREAM_ERROR_OK = 0, LOCAL_VIDEO_STREAM_ERROR_FAILURE = 1, LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2, LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY = 3,
  LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE = 4, LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE = 5, LOCAL_VIDEO_STREAM_ERROR_CAPTURE_INBACKGROUND = 6, LOCAL_VIDEO_STREAM_ERROR_CAPTURE_MULTIPLE_FOREGROUND_APPS = 7,
  LOCAL_VIDEO_STREAM_ERROR_DEVICE_NOT_FOUND = 8, LOCAL_VIDEO_STREAM_ERROR_DEVICE_DISCONNECTED = 9, LOCAL_VIDEO_STREAM_ERROR_DEVICE_INVALID_ID = 10, LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_MINIMIZED = 11,
  LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_CLOSED = 12, LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_OCCLUDED = 13, AGORA_DEPRECATED_ATTRIBUTE = 20
}
 
enum  LOCAL_AUDIO_STREAM_STATE { LOCAL_AUDIO_STREAM_STATE_STOPPED = 0, LOCAL_AUDIO_STREAM_STATE_RECORDING = 1, LOCAL_AUDIO_STREAM_STATE_ENCODING = 2, LOCAL_AUDIO_STREAM_STATE_FAILED = 3 }
 
enum  LOCAL_AUDIO_STREAM_ERROR {
  LOCAL_AUDIO_STREAM_ERROR_OK = 0, LOCAL_AUDIO_STREAM_ERROR_FAILURE = 1, LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION = 2, LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY = 3,
  LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE = 4, LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE = 5, LOCAL_AUDIO_STREAM_ERROR_NO_RECORDING_DEVICE = 6, LOCAL_AUDIO_STREAM_ERROR_NO_PLAYOUT_DEVICE = 7,
  LOCAL_AUDIO_STREAM_ERROR_INTERRUPTED = 8, LOCAL_AUDIO_STREAM_ERROR_RECORD_INVALID_ID = 9, LOCAL_AUDIO_STREAM_ERROR_PLAYOUT_INVALID_ID = 10
}
 
enum  AUDIO_RECORDING_QUALITY_TYPE { AUDIO_RECORDING_QUALITY_LOW = 0, AUDIO_RECORDING_QUALITY_MEDIUM = 1, AUDIO_RECORDING_QUALITY_HIGH = 2, AUDIO_RECORDING_QUALITY_ULTRA_HIGH = 3 }
 
enum  QUALITY_TYPE {
  QUALITY_UNKNOWN = 0, QUALITY_EXCELLENT = 1, QUALITY_GOOD = 2, QUALITY_POOR = 3,
  QUALITY_BAD = 4, QUALITY_VBAD = 5, QUALITY_DOWN = 6, QUALITY_UNSUPPORTED = 7,
  QUALITY_DETECTING = 8
}
 
enum  RENDER_MODE_TYPE { RENDER_MODE_HIDDEN = 1, RENDER_MODE_FIT = 2, RENDER_MODE_ADAPTIVE = 3, RENDER_MODE_FILL = 4 }
 
enum  SR_MODE { SR_MODE_MANUAL = 0, SR_MODE_AUTO }
 
enum  VIDEO_MIRROR_MODE_TYPE { VIDEO_MIRROR_MODE_AUTO = 0, VIDEO_MIRROR_MODE_ENABLED = 1, VIDEO_MIRROR_MODE_DISABLED = 2 }
 
enum  VIDEO_PROFILE_TYPE {
  VIDEO_PROFILE_LANDSCAPE_120P = 0, VIDEO_PROFILE_LANDSCAPE_120P_3 = 2, VIDEO_PROFILE_LANDSCAPE_180P = 10, VIDEO_PROFILE_LANDSCAPE_180P_3 = 12,
  VIDEO_PROFILE_LANDSCAPE_180P_4 = 13, VIDEO_PROFILE_LANDSCAPE_240P = 20, VIDEO_PROFILE_LANDSCAPE_240P_3 = 22, VIDEO_PROFILE_LANDSCAPE_240P_4 = 23,
  VIDEO_PROFILE_LANDSCAPE_360P = 30, VIDEO_PROFILE_LANDSCAPE_360P_3 = 32, VIDEO_PROFILE_LANDSCAPE_360P_4 = 33, VIDEO_PROFILE_LANDSCAPE_360P_6 = 35,
  VIDEO_PROFILE_LANDSCAPE_360P_7 = 36, VIDEO_PROFILE_LANDSCAPE_360P_8 = 37, VIDEO_PROFILE_LANDSCAPE_360P_9 = 38, VIDEO_PROFILE_LANDSCAPE_360P_10 = 39,
  VIDEO_PROFILE_LANDSCAPE_360P_11 = 100, VIDEO_PROFILE_LANDSCAPE_480P = 40, VIDEO_PROFILE_LANDSCAPE_480P_3 = 42, VIDEO_PROFILE_LANDSCAPE_480P_4 = 43,
  VIDEO_PROFILE_LANDSCAPE_480P_6 = 45, VIDEO_PROFILE_LANDSCAPE_480P_8 = 47, VIDEO_PROFILE_LANDSCAPE_480P_9 = 48, VIDEO_PROFILE_LANDSCAPE_480P_10 = 49,
  VIDEO_PROFILE_LANDSCAPE_720P = 50, VIDEO_PROFILE_LANDSCAPE_720P_3 = 52, VIDEO_PROFILE_LANDSCAPE_720P_5 = 54, VIDEO_PROFILE_LANDSCAPE_720P_6 = 55,
  VIDEO_PROFILE_LANDSCAPE_1080P = 60, VIDEO_PROFILE_LANDSCAPE_1080P_3 = 62, VIDEO_PROFILE_LANDSCAPE_1080P_5 = 64, VIDEO_PROFILE_LANDSCAPE_1440P = 66,
  VIDEO_PROFILE_LANDSCAPE_1440P_2 = 67, VIDEO_PROFILE_LANDSCAPE_4K = 70, VIDEO_PROFILE_LANDSCAPE_4K_3 = 72, VIDEO_PROFILE_PORTRAIT_120P = 1000,
  VIDEO_PROFILE_PORTRAIT_120P_3 = 1002, VIDEO_PROFILE_PORTRAIT_180P = 1010, VIDEO_PROFILE_PORTRAIT_180P_3 = 1012, VIDEO_PROFILE_PORTRAIT_180P_4 = 1013,
  VIDEO_PROFILE_PORTRAIT_240P = 1020, VIDEO_PROFILE_PORTRAIT_240P_3 = 1022, VIDEO_PROFILE_PORTRAIT_240P_4 = 1023, VIDEO_PROFILE_PORTRAIT_360P = 1030,
  VIDEO_PROFILE_PORTRAIT_360P_3 = 1032, VIDEO_PROFILE_PORTRAIT_360P_4 = 1033, VIDEO_PROFILE_PORTRAIT_360P_6 = 1035, VIDEO_PROFILE_PORTRAIT_360P_7 = 1036,
  VIDEO_PROFILE_PORTRAIT_360P_8 = 1037, VIDEO_PROFILE_PORTRAIT_360P_9 = 1038, VIDEO_PROFILE_PORTRAIT_360P_10 = 1039, VIDEO_PROFILE_PORTRAIT_360P_11 = 1100,
  VIDEO_PROFILE_PORTRAIT_480P = 1040, VIDEO_PROFILE_PORTRAIT_480P_3 = 1042, VIDEO_PROFILE_PORTRAIT_480P_4 = 1043, VIDEO_PROFILE_PORTRAIT_480P_6 = 1045,
  VIDEO_PROFILE_PORTRAIT_480P_8 = 1047, VIDEO_PROFILE_PORTRAIT_480P_9 = 1048, VIDEO_PROFILE_PORTRAIT_480P_10 = 1049, VIDEO_PROFILE_PORTRAIT_720P = 1050,
  VIDEO_PROFILE_PORTRAIT_720P_3 = 1052, VIDEO_PROFILE_PORTRAIT_720P_5 = 1054, VIDEO_PROFILE_PORTRAIT_720P_6 = 1055, VIDEO_PROFILE_PORTRAIT_1080P = 1060,
  VIDEO_PROFILE_PORTRAIT_1080P_3 = 1062, VIDEO_PROFILE_PORTRAIT_1080P_5 = 1064, VIDEO_PROFILE_PORTRAIT_1440P = 1066, VIDEO_PROFILE_PORTRAIT_1440P_2 = 1067,
  VIDEO_PROFILE_PORTRAIT_4K = 1070, VIDEO_PROFILE_PORTRAIT_4K_3 = 1072, VIDEO_PROFILE_DEFAULT = VIDEO_PROFILE_LANDSCAPE_360P
}
 
enum  AUDIO_PROFILE_TYPE {
  AUDIO_PROFILE_DEFAULT = 0, AUDIO_PROFILE_SPEECH_STANDARD = 1, AUDIO_PROFILE_MUSIC_STANDARD = 2, AUDIO_PROFILE_MUSIC_STANDARD_STEREO = 3,
  AUDIO_PROFILE_MUSIC_HIGH_QUALITY = 4, AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO = 5, AUDIO_PROFILE_IOT = 6
}
 
enum  AUDIO_SCENARIO_TYPE {
  AUDIO_SCENARIO_DEFAULT = 0, AUDIO_SCENARIO_CHATROOM_ENTERTAINMENT = 1, AUDIO_SCENARIO_EDUCATION = 2, AUDIO_SCENARIO_GAME_STREAMING = 3,
  AUDIO_SCENARIO_SHOWROOM = 4, AUDIO_SCENARIO_CHATROOM_GAMING = 5, AUDIO_SCENARIO_IOT = 6, AUDIO_SCENARIO_MEETING = 8,
  AUDIO_SCENARIO_NUM = 9
}
 
enum  CHANNEL_PROFILE_TYPE { CHANNEL_PROFILE_COMMUNICATION = 0, CHANNEL_PROFILE_LIVE_BROADCASTING = 1, CHANNEL_PROFILE_GAME = 2 }
 
enum  CLIENT_ROLE_TYPE { CLIENT_ROLE_BROADCASTER = 1, CLIENT_ROLE_AUDIENCE = 2 }
 
enum  AUDIENCE_LATENCY_LEVEL_TYPE { AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1, AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 2 }
 
enum  SUPER_RESOLUTION_STATE_REASON {
  SR_STATE_REASON_SUCCESS = 0, SR_STATE_REASON_STREAM_OVER_LIMITATION = 1, SR_STATE_REASON_USER_COUNT_OVER_LIMITATION = 2, SR_STATE_REASON_DEVICE_NOT_SUPPORTED = 3,
  SR_STATE_REASON_INSUFFICIENT_PERFORMANCE = 4
}
 
enum  VIRTUAL_BACKGROUND_SOURCE_STATE_REASON {
  VIRTUAL_BACKGROUND_SOURCE_STATE_REASON_SUCCESS = 0, VIRTUAL_BACKGROUND_SOURCE_STATE_REASON_IMAGE_NOT_EXIST = 1, VIRTUAL_BACKGROUND_SOURCE_STATE_REASON_COLOR_FORMAT_NOT_SUPPORTED = 2, VIRTUAL_BACKGROUND_SOURCE_STATE_REASON_DEVICE_NOT_SUPPORTED = 3,
  VIRTUAL_BACKGROUND_SOURCE_STATE_REASON_INSUFFICIENT_PERFORMANCE = 4
}
 
enum  USER_OFFLINE_REASON_TYPE { USER_OFFLINE_QUIT = 0, USER_OFFLINE_DROPPED = 1, USER_OFFLINE_BECOME_AUDIENCE = 2 }
 
enum  RTMP_STREAM_PUBLISH_STATE {
  RTMP_STREAM_PUBLISH_STATE_IDLE = 0, RTMP_STREAM_PUBLISH_STATE_CONNECTING = 1, RTMP_STREAM_PUBLISH_STATE_RUNNING = 2, RTMP_STREAM_PUBLISH_STATE_RECOVERING = 3,
  RTMP_STREAM_PUBLISH_STATE_FAILURE = 4, RTMP_STREAM_PUBLISH_STATE_DISCONNECTING = 5
}
 
enum  RTMP_STREAM_PUBLISH_ERROR_TYPE {
  RTMP_STREAM_PUBLISH_ERROR_OK = 0, RTMP_STREAM_PUBLISH_ERROR_INVALID_ARGUMENT = 1, RTMP_STREAM_PUBLISH_ERROR_ENCRYPTED_STREAM_NOT_ALLOWED = 2, RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT = 3,
  RTMP_STREAM_PUBLISH_ERROR_INTERNAL_SERVER_ERROR = 4, RTMP_STREAM_PUBLISH_ERROR_RTMP_SERVER_ERROR = 5, RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN = 6, RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT = 7,
  RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED = 8, RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND = 9, RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED = 10, RTMP_STREAM_PUBLISH_ERROR_NOT_BROADCASTER = 11,
  RTMP_STREAM_PUBLISH_ERROR_TRANSCODING_NO_MIX_STREAM = 13, RTMP_STREAM_PUBLISH_ERROR_NET_DOWN = 14, RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID = 15, RTMP_STREAM_UNPUBLISH_ERROR_OK = 100
}
 
enum  RTMP_STREAMING_EVENT { RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE = 1, RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE = 2, RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT = 3, RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN = 4 }
 
enum  INJECT_STREAM_STATUS {
  INJECT_STREAM_STATUS_START_SUCCESS = 0, INJECT_STREAM_STATUS_START_ALREADY_EXISTS = 1, INJECT_STREAM_STATUS_START_UNAUTHORIZED = 2, INJECT_STREAM_STATUS_START_TIMEDOUT = 3,
  INJECT_STREAM_STATUS_START_FAILED = 4, INJECT_STREAM_STATUS_STOP_SUCCESS = 5, INJECT_STREAM_STATUS_STOP_NOT_FOUND = 6, INJECT_STREAM_STATUS_STOP_UNAUTHORIZED = 7,
  INJECT_STREAM_STATUS_STOP_TIMEDOUT = 8, INJECT_STREAM_STATUS_STOP_FAILED = 9, INJECT_STREAM_STATUS_BROKEN = 10
}
 
enum  REMOTE_VIDEO_STREAM_TYPE { REMOTE_VIDEO_STREAM_HIGH = 0, REMOTE_VIDEO_STREAM_LOW = 1 }
 
enum  CAPTURE_BRIGHTNESS_LEVEL_TYPE { CAPTURE_BRIGHTNESS_LEVEL_INVALID = -1, CAPTURE_BRIGHTNESS_LEVEL_NORMAL = 0, CAPTURE_BRIGHTNESS_LEVEL_BRIGHT = 1, CAPTURE_BRIGHTNESS_LEVEL_DARK = 2 }
 
enum  RAW_AUDIO_FRAME_OP_MODE_TYPE { RAW_AUDIO_FRAME_OP_MODE_READ_ONLY = 0, RAW_AUDIO_FRAME_OP_MODE_WRITE_ONLY = 1, RAW_AUDIO_FRAME_OP_MODE_READ_WRITE = 2 }
 
enum  AUDIO_SAMPLE_RATE_TYPE { AUDIO_SAMPLE_RATE_32000 = 32000, AUDIO_SAMPLE_RATE_44100 = 44100, AUDIO_SAMPLE_RATE_48000 = 48000 }
 
enum  VIDEO_CODEC_PROFILE_TYPE { VIDEO_CODEC_PROFILE_BASELINE = 66, VIDEO_CODEC_PROFILE_MAIN = 77, VIDEO_CODEC_PROFILE_HIGH = 100 }
 
enum  VIDEO_CODEC_TYPE { VIDEO_CODEC_VP8 = 1, VIDEO_CODEC_H264 = 2, VIDEO_CODEC_EVP = 3, VIDEO_CODEC_E264 = 4 }
 
enum  VIDEO_CODEC_TYPE_FOR_STREAM { VIDEO_CODEC_H264_FOR_STREAM = 1, VIDEO_CODEC_H265_FOR_STREAM = 2 }
 
enum  AUDIO_EQUALIZATION_BAND_FREQUENCY {
  AUDIO_EQUALIZATION_BAND_31 = 0, AUDIO_EQUALIZATION_BAND_62 = 1, AUDIO_EQUALIZATION_BAND_125 = 2, AUDIO_EQUALIZATION_BAND_250 = 3,
  AUDIO_EQUALIZATION_BAND_500 = 4, AUDIO_EQUALIZATION_BAND_1K = 5, AUDIO_EQUALIZATION_BAND_2K = 6, AUDIO_EQUALIZATION_BAND_4K = 7,
  AUDIO_EQUALIZATION_BAND_8K = 8, AUDIO_EQUALIZATION_BAND_16K = 9
}
 
enum  AUDIO_REVERB_TYPE {
  AUDIO_REVERB_DRY_LEVEL = 0, AUDIO_REVERB_WET_LEVEL = 1, AUDIO_REVERB_ROOM_SIZE = 2, AUDIO_REVERB_WET_DELAY = 3,
  AUDIO_REVERB_STRENGTH = 4
}
 
enum  VOICE_CHANGER_PRESET {
  VOICE_CHANGER_OFF = 0x00000000, VOICE_CHANGER_OLDMAN = 0x00000001, VOICE_CHANGER_BABYBOY = 0x00000002, VOICE_CHANGER_BABYGIRL = 0x00000003,
  VOICE_CHANGER_ZHUBAJIE = 0x00000004, VOICE_CHANGER_ETHEREAL = 0x00000005, VOICE_CHANGER_HULK = 0x00000006, VOICE_BEAUTY_VIGOROUS = 0x00100001,
  VOICE_BEAUTY_DEEP = 0x00100002, VOICE_BEAUTY_MELLOW = 0x00100003, VOICE_BEAUTY_FALSETTO = 0x00100004, VOICE_BEAUTY_FULL = 0x00100005,
  VOICE_BEAUTY_CLEAR = 0x00100006, VOICE_BEAUTY_RESOUNDING = 0x00100007, VOICE_BEAUTY_RINGING = 0x00100008, VOICE_BEAUTY_SPACIAL = 0x00100009,
  GENERAL_BEAUTY_VOICE_MALE_MAGNETIC = 0x00200001, GENERAL_BEAUTY_VOICE_FEMALE_FRESH = 0x00200002, GENERAL_BEAUTY_VOICE_FEMALE_VITALITY = 0x00200003
}
 
enum  AUDIO_REVERB_PRESET {
  AUDIO_REVERB_OFF = 0x00000000, AUDIO_REVERB_FX_KTV = 0x00100001, AUDIO_REVERB_FX_VOCAL_CONCERT = 0x00100002, AUDIO_REVERB_FX_UNCLE = 0x00100003,
  AUDIO_REVERB_FX_SISTER = 0x00100004, AUDIO_REVERB_FX_STUDIO = 0x00100005, AUDIO_REVERB_FX_POPULAR = 0x00100006, AUDIO_REVERB_FX_RNB = 0x00100007,
  AUDIO_REVERB_FX_PHONOGRAPH = 0x00100008, AUDIO_REVERB_POPULAR = 0x00000001, AUDIO_REVERB_RNB = 0x00000002, AUDIO_REVERB_ROCK = 0x00000003,
  AUDIO_REVERB_HIPHOP = 0x00000004, AUDIO_REVERB_VOCAL_CONCERT = 0x00000005, AUDIO_REVERB_KTV = 0x00000006, AUDIO_REVERB_STUDIO = 0x00000007,
  AUDIO_VIRTUAL_STEREO = 0x00200001, AUDIO_ELECTRONIC_VOICE = 0x00300001, AUDIO_THREEDIM_VOICE = 0x00400001
}
 
enum  VOICE_BEAUTIFIER_PRESET {
  VOICE_BEAUTIFIER_OFF = 0x00000000, CHAT_BEAUTIFIER_MAGNETIC = 0x01010100, CHAT_BEAUTIFIER_FRESH = 0x01010200, CHAT_BEAUTIFIER_VITALITY = 0x01010300,
  SINGING_BEAUTIFIER = 0x01020100, TIMBRE_TRANSFORMATION_VIGOROUS = 0x01030100, TIMBRE_TRANSFORMATION_DEEP = 0x01030200, TIMBRE_TRANSFORMATION_MELLOW = 0x01030300,
  TIMBRE_TRANSFORMATION_FALSETTO = 0x01030400, TIMBRE_TRANSFORMATION_FULL = 0x01030500, TIMBRE_TRANSFORMATION_CLEAR = 0x01030600, TIMBRE_TRANSFORMATION_RESOUNDING = 0x01030700,
  TIMBRE_TRANSFORMATION_RINGING = 0x01030800
}
 
enum  AUDIO_EFFECT_PRESET {
  AUDIO_EFFECT_OFF = 0x00000000, ROOM_ACOUSTICS_KTV = 0x02010100, ROOM_ACOUSTICS_VOCAL_CONCERT = 0x02010200, ROOM_ACOUSTICS_STUDIO = 0x02010300,
  ROOM_ACOUSTICS_PHONOGRAPH = 0x02010400, ROOM_ACOUSTICS_VIRTUAL_STEREO = 0x02010500, ROOM_ACOUSTICS_SPACIAL = 0x02010600, ROOM_ACOUSTICS_ETHEREAL = 0x02010700,
  ROOM_ACOUSTICS_3D_VOICE = 0x02010800, VOICE_CHANGER_EFFECT_UNCLE = 0x02020100, VOICE_CHANGER_EFFECT_OLDMAN = 0x02020200, VOICE_CHANGER_EFFECT_BOY = 0x02020300,
  VOICE_CHANGER_EFFECT_SISTER = 0x02020400, VOICE_CHANGER_EFFECT_GIRL = 0x02020500, VOICE_CHANGER_EFFECT_PIGKING = 0x02020600, VOICE_CHANGER_EFFECT_HULK = 0x02020700,
  STYLE_TRANSFORMATION_RNB = 0x02030100, STYLE_TRANSFORMATION_POPULAR = 0x02030200, PITCH_CORRECTION = 0x02040100
}
 
enum  VOICE_CONVERSION_PRESET {
  VOICE_CONVERSION_OFF = 0x00000000, VOICE_CHANGER_NEUTRAL = 0x03010100, VOICE_CHANGER_SWEET = 0x03010200, VOICE_CHANGER_SOLID = 0x03010300,
  VOICE_CHANGER_BASS = 0x03010400
}
 
enum  AUDIO_CODEC_PROFILE_TYPE { AUDIO_CODEC_PROFILE_LC_AAC = 0, AUDIO_CODEC_PROFILE_HE_AAC = 1, AUDIO_CODEC_PROFILE_HE_AAC_V2 = 2 }
 
enum  REMOTE_AUDIO_STATE {
  REMOTE_AUDIO_STATE_STOPPED = 0, REMOTE_AUDIO_STATE_STARTING = 1, REMOTE_AUDIO_STATE_DECODING = 2, REMOTE_AUDIO_STATE_FROZEN = 3,
  REMOTE_AUDIO_STATE_FAILED = 4
}
 
enum  REMOTE_AUDIO_STATE_REASON {
  REMOTE_AUDIO_REASON_INTERNAL = 0, REMOTE_AUDIO_REASON_NETWORK_CONGESTION = 1, REMOTE_AUDIO_REASON_NETWORK_RECOVERY = 2, REMOTE_AUDIO_REASON_LOCAL_MUTED = 3,
  REMOTE_AUDIO_REASON_LOCAL_UNMUTED = 4, REMOTE_AUDIO_REASON_REMOTE_MUTED = 5, REMOTE_AUDIO_REASON_REMOTE_UNMUTED = 6, REMOTE_AUDIO_REASON_REMOTE_OFFLINE = 7
}
 
enum  REMOTE_VIDEO_STATE {
  REMOTE_VIDEO_STATE_STOPPED = 0, REMOTE_VIDEO_STATE_STARTING = 1, REMOTE_VIDEO_STATE_DECODING = 2, REMOTE_VIDEO_STATE_FROZEN = 3,
  REMOTE_VIDEO_STATE_FAILED = 4
}
 
enum  STREAM_PUBLISH_STATE { PUB_STATE_IDLE = 0, PUB_STATE_NO_PUBLISHED = 1, PUB_STATE_PUBLISHING = 2, PUB_STATE_PUBLISHED = 3 }
 
enum  STREAM_SUBSCRIBE_STATE { SUB_STATE_IDLE = 0, SUB_STATE_NO_SUBSCRIBED = 1, SUB_STATE_SUBSCRIBING = 2, SUB_STATE_SUBSCRIBED = 3 }
 
enum  XLA_REMOTE_VIDEO_FROZEN_TYPE { XLA_REMOTE_VIDEO_FROZEN_500MS = 0, XLA_REMOTE_VIDEO_FROZEN_200MS = 1, XLA_REMOTE_VIDEO_FROZEN_600MS = 2, XLA_REMOTE_VIDEO_FROZEN_TYPE_MAX = 3 }
 
enum  XLA_REMOTE_AUDIO_FROZEN_TYPE { XLA_REMOTE_AUDIO_FROZEN_80MS = 0, XLA_REMOTE_AUDIO_FROZEN_200MS = 1, XLA_REMOTE_AUDIO_FROZEN_TYPE_MAX = 2 }
 
enum  REMOTE_VIDEO_STATE_REASON {
  REMOTE_VIDEO_STATE_REASON_INTERNAL = 0, REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION = 1, REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY = 2, REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED = 3,
  REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED = 4, REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED = 5, REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED = 6, REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE = 7,
  REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK = 8, REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY = 9, REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 10
}
 
enum  FRAME_RATE {
  FRAME_RATE_FPS_1 = 1, FRAME_RATE_FPS_7 = 7, FRAME_RATE_FPS_10 = 10, FRAME_RATE_FPS_15 = 15,
  FRAME_RATE_FPS_24 = 24, FRAME_RATE_FPS_30 = 30, FRAME_RATE_FPS_60 = 60
}
 
enum  ORIENTATION_MODE { ORIENTATION_MODE_ADAPTIVE = 0, ORIENTATION_MODE_FIXED_LANDSCAPE = 1, ORIENTATION_MODE_FIXED_PORTRAIT = 2 }
 
enum  DEGRADATION_PREFERENCE { MAINTAIN_QUALITY = 0, MAINTAIN_FRAMERATE = 1, MAINTAIN_BALANCED = 2 }
 
enum  STREAM_FALLBACK_OPTIONS { STREAM_FALLBACK_OPTION_DISABLED = 0, STREAM_FALLBACK_OPTION_VIDEO_STREAM_LOW = 1, STREAM_FALLBACK_OPTION_AUDIO_ONLY = 2 }
 
enum  CAPTURER_OUTPUT_PREFERENCE { CAPTURER_OUTPUT_PREFERENCE_AUTO = 0, CAPTURER_OUTPUT_PREFERENCE_PERFORMANCE = 1, CAPTURER_OUTPUT_PREFERENCE_PREVIEW = 2, CAPTURER_OUTPUT_PREFERENCE_MANUAL = 3 }
 
enum  PRIORITY_TYPE { PRIORITY_HIGH = 50, PRIORITY_NORMAL = 100 }
 
enum  CONNECTION_STATE_TYPE {
  CONNECTION_STATE_DISCONNECTED = 1, CONNECTION_STATE_CONNECTING = 2, CONNECTION_STATE_CONNECTED = 3, CONNECTION_STATE_RECONNECTING = 4,
  CONNECTION_STATE_FAILED = 5
}
 
enum  CONNECTION_CHANGED_REASON_TYPE {
  CONNECTION_CHANGED_CONNECTING = 0, CONNECTION_CHANGED_JOIN_SUCCESS = 1, CONNECTION_CHANGED_INTERRUPTED = 2, CONNECTION_CHANGED_BANNED_BY_SERVER = 3,
  CONNECTION_CHANGED_JOIN_FAILED = 4, CONNECTION_CHANGED_LEAVE_CHANNEL = 5, CONNECTION_CHANGED_INVALID_APP_ID = 6, CONNECTION_CHANGED_INVALID_CHANNEL_NAME = 7,
  CONNECTION_CHANGED_INVALID_TOKEN = 8, CONNECTION_CHANGED_TOKEN_EXPIRED = 9, CONNECTION_CHANGED_REJECTED_BY_SERVER = 10, CONNECTION_CHANGED_SETTING_PROXY_SERVER = 11,
  CONNECTION_CHANGED_RENEW_TOKEN = 12, CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED = 13, CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT = 14, CONNECTION_CHANGED_SAME_UID_LOGIN = 19,
  CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20
}
 
enum  NETWORK_TYPE {
  NETWORK_TYPE_UNKNOWN = -1, NETWORK_TYPE_DISCONNECTED = 0, NETWORK_TYPE_LAN = 1, NETWORK_TYPE_WIFI = 2,
  NETWORK_TYPE_MOBILE_2G = 3, NETWORK_TYPE_MOBILE_3G = 4, NETWORK_TYPE_MOBILE_4G = 5, NETWORK_TYPE_MOBILE_5G = 6
}
 
enum  LASTMILE_PROBE_RESULT_STATE { LASTMILE_PROBE_RESULT_COMPLETE = 1, LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2, LASTMILE_PROBE_RESULT_UNAVAILABLE = 3 }
 
enum  AUDIO_ROUTE_TYPE {
  AUDIO_ROUTE_DEFAULT = -1, AUDIO_ROUTE_HEADSET = 0, AUDIO_ROUTE_EARPIECE = 1, AUDIO_ROUTE_HEADSET_NO_MIC = 2,
  AUDIO_ROUTE_SPEAKERPHONE = 3, AUDIO_ROUTE_LOUDSPEAKER = 4, AUDIO_ROUTE_BLUETOOTH = 5, AUDIO_ROUTE_USB = 6,
  AUDIO_ROUTE_HDMI = 7, AUDIO_ROUTE_DISPLAYPORT = 8, AUDIO_ROUTE_AIRPLAY = 9
}
 
enum  CLOUD_PROXY_TYPE { NONE_PROXY = 0, UDP_PROXY = 1, TCP_PROXY = 2 }
 
enum  EXCLUDE_WINDOW_ERROR { EXCLUDE_WINDOW_FAIL = -1, EXCLUDE_WINDOW_NONE = 0 }
 
enum  PROXY_TYPE {
  NONE_PROXY_TYPE = 0, UDP_PROXY_TYPE = 1, TCP_PROXY_TYPE = 2, LOCAL_PROXY_TYPE = 3,
  TCP_PROXY_AUTO_FALLBACK_TYPE = 4
}
 
enum  AUDIO_SESSION_OPERATION_RESTRICTION {
  AUDIO_SESSION_OPERATION_RESTRICTION_NONE = 0, AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY = 1, AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION = 1 << 1, AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION = 1 << 2,
  AUDIO_SESSION_OPERATION_RESTRICTION_ALL = 1 << 7
}
 
enum  CAMERA_DIRECTION { CAMERA_REAR = 0, CAMERA_FRONT = 1 }
 
enum  AUDIO_RECORDING_POSITION { AUDIO_RECORDING_POSITION_MIXED_RECORDING_AND_PLAYBACK = 0, AUDIO_RECORDING_POSITION_RECORDING = 1, AUDIO_RECORDING_POSITION_MIXED_PLAYBACK = 2 }
 
enum  AUDIO_FILE_INFO_ERROR { AUDIO_FILE_INFO_ERROR_OK = 0, AUDIO_FILE_INFO_ERROR_FAILURE = 1 }
 
enum  CLIENT_ROLE_CHANGE_FAILED_REASON { CLIENT_ROLE_CHANGE_FAILED_BY_TOO_MANY_BROADCASTERS = 1, CLIENT_ROLE_CHANGE_FAILED_BY_NOT_AUTHORIZED = 2, CLIENT_ROLE_CHANGE_FAILED_BY_REQUEST_TIME_OUT = 3, CLIENT_ROLE_CHANGE_FAILED_BY_CONNECTION_FAILED = 4 }
 
enum  QUALITY_ADAPT_INDICATION { ADAPT_NONE = 0, ADAPT_UP_BANDWIDTH = 1, ADAPT_DOWN_BANDWIDTH = 2 }
 
enum  EXPERIENCE_QUALITY_TYPE { EXPERIENCE_QUALITY_GOOD = 0, EXPERIENCE_QUALITY_BAD = 1 }
 
enum  EXPERIENCE_POOR_REASON {
  EXPERIENCE_REASON_NONE = 0, REMOTE_NETWORK_QUALITY_POOR = 1, LOCAL_NETWORK_QUALITY_POOR = 2, WIRELESS_SIGNAL_POOR = 4,
  WIFI_BLUETOOTH_COEXIST = 8
}
 
enum  CHANNEL_MEDIA_RELAY_ERROR {
  RELAY_OK = 0, RELAY_ERROR_SERVER_ERROR_RESPONSE = 1, RELAY_ERROR_SERVER_NO_RESPONSE = 2, RELAY_ERROR_NO_RESOURCE_AVAILABLE = 3,
  RELAY_ERROR_FAILED_JOIN_SRC = 4, RELAY_ERROR_FAILED_JOIN_DEST = 5, RELAY_ERROR_FAILED_PACKET_RECEIVED_FROM_SRC = 6, RELAY_ERROR_FAILED_PACKET_SENT_TO_DEST = 7,
  RELAY_ERROR_SERVER_CONNECTION_LOST = 8, RELAY_ERROR_INTERNAL_ERROR = 9, RELAY_ERROR_SRC_TOKEN_EXPIRED = 10, RELAY_ERROR_DEST_TOKEN_EXPIRED = 11
}
 
enum  CHANNEL_MEDIA_RELAY_EVENT {
  RELAY_EVENT_NETWORK_DISCONNECTED = 0, RELAY_EVENT_NETWORK_CONNECTED = 1, RELAY_EVENT_PACKET_JOINED_SRC_CHANNEL = 2, RELAY_EVENT_PACKET_JOINED_DEST_CHANNEL = 3,
  RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL = 4, RELAY_EVENT_PACKET_RECEIVED_VIDEO_FROM_SRC = 5, RELAY_EVENT_PACKET_RECEIVED_AUDIO_FROM_SRC = 6, RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL = 7,
  RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_REFUSED = 8, RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_NOT_CHANGE = 9, RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL_IS_NULL = 10, RELAY_EVENT_VIDEO_PROFILE_UPDATE = 11,
  RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 12, RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 13, RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS = 14, RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED = 15
}
 
enum  CHANNEL_MEDIA_RELAY_STATE { RELAY_STATE_IDLE = 0, RELAY_STATE_CONNECTING = 1, RELAY_STATE_RUNNING = 2, RELAY_STATE_FAILURE = 3 }
 
enum  AudioDeviceTestVolumeType { AudioTestRecordingVolume = 0, AudioTestPlaybackVolume = 1 }
 
enum  RTMP_STREAM_LIFE_CYCLE_TYPE { RTMP_STREAM_LIFE_CYCLE_BIND2CHANNEL = 1, RTMP_STREAM_LIFE_CYCLE_BIND2OWNER = 2 }
 
enum  VideoContentHint { CONTENT_HINT_NONE, CONTENT_HINT_MOTION, CONTENT_HINT_DETAILS }
 
enum  SCREEN_SCENARIO_TYPE { SCREEN_SCENARIO_DOCUMENT = 1, SCREEN_SCENARIO_GAMING = 2, SCREEN_SCENARIO_VIDEO = 3, SCREEN_SCENARIO_RDC = 4 }
 
enum  AREA_CODE {
  AREA_CODE_CN = 0x00000001, AREA_CODE_NA = 0x00000002, AREA_CODE_EU = 0x00000004, AREA_CODE_AS = 0x00000008,
  AREA_CODE_JP = 0x00000010, AREA_CODE_IN = 0x00000020, AREA_CODE_GLOB = 0xFFFFFFFF
}
 
enum  ENCRYPTION_CONFIG { ENCRYPTION_FORCE_SETTING = (1 << 0), ENCRYPTION_FORCE_DISABLE_PACKET = (1 << 1) }
 
enum  VIDEO_CAPTURE_TYPE { VIDEO_CAPTURE_UNKNOWN, VIDEO_CAPTURE_CAMERA, VIDEO_CAPTURE_SCREEN }
 
enum  ScreenCaptureSourceType { ScreenCaptureSourceType_Unknown = -1, ScreenCaptureSourceType_Window = 0, ScreenCaptureSourceType_Screen = 1, ScreenCaptureSourceType_Custom = 2 }
 
enum  ENCRYPTION_MODE {
  AES_128_XTS = 1, AES_128_ECB = 2, AES_256_XTS = 3, AES_128_GCM = 5,
  AES_256_GCM = 6, AES_128_GCM2 = 7, AES_256_GCM2 = 8, MODE_END
}
 
enum  MediaRecorderContainerFormat { FORMAT_MP4 = 1, FORMAT_FLV = 2 }
 
enum  MediaRecorderStreamType { STREAM_TYPE_AUDIO = 0x01, STREAM_TYPE_VIDEO = 0x02, STREAM_TYPE_BOTH = STREAM_TYPE_AUDIO | STREAM_TYPE_VIDEO }
 
enum  RecorderState { RECORDER_STATE_ERROR = -1, RECORDER_STATE_START = 2, RECORDER_STATE_STOP = 3 }
 
enum  RecorderErrorCode {
  RECORDER_ERROR_NONE = 0, RECORDER_ERROR_WRITE_FAILED = 1, RECORDER_ERROR_NO_STREAM = 2, RECORDER_ERROR_OVER_MAX_DURATION = 3,
  RECORDER_ERROR_CONFIG_CHANGED = 4, RECORDER_ERROR_CUSTOM_STREAM_DETECTED = 5
}
 

Variables

const int STANDARD_BITRATE = 0
 
const int COMPATIBLE_BITRATE = -1
 
const int DEFAULT_MIN_BITRATE = -1
 

Typedef Documentation

◆ uid_t

typedef unsigned int agora::rtc::uid_t

◆ view_t

typedef void* agora::rtc::view_t

◆ TranscodingUser

The video and audio properties of the user displaying the video in the CDN live. Agora supports a maximum of 17 transcoding users in a CDN streaming channel.

◆ RtcImage

Image properties.

The properties of the watermark and background images.

◆ LiveStreamAdvancedFeature

The configuration for the advanced feature of the RTMP or RTMPS streaming with transcoding.

◆ LiveTranscoding

A struct for managing CDN live audio/video transcoding settings.

◆ Rect

Deprecated:
Definition of the rectangular region.

◆ WatermarkOptions

The options of the watermark image to be added.

Enumeration Type Documentation

◆ MAX_DEVICE_ID_LENGTH_TYPE

Maximum length of the device ID.

Enumerator
MAX_DEVICE_ID_LENGTH 

The maximum length of the device ID is 512 bytes.

◆ MAX_USER_ACCOUNT_LENGTH_TYPE

Maximum length of user account.

Enumerator
MAX_USER_ACCOUNT_LENGTH 

The maximum length of user account is 255 bytes.

◆ MAX_CHANNEL_ID_LENGTH_TYPE

Maximum length of channel ID.

Enumerator
MAX_CHANNEL_ID_LENGTH 

The maximum length of channel id is 64 bytes.

◆ QUALITY_REPORT_FORMAT_TYPE

Formats of the quality report.

Enumerator
QUALITY_REPORT_JSON 

0: The quality report in JSON format,

QUALITY_REPORT_HTML 

1: The quality report in HTML format.

◆ AUDIO_MIXING_STATE_TYPE

The current music file playback state.

Reports in the onAudioMixingStateChanged callback.

Enumerator
AUDIO_MIXING_STATE_PLAYING 

710: The music file is playing.

This state comes with one of the following associated reasons:

AUDIO_MIXING_STATE_PAUSED 

711: The music file pauses playing.

This state comes with AUDIO_MIXING_REASON_PAUSED_BY_USER (725).

AUDIO_MIXING_STATE_STOPPED 

713: The music file stops playing.

This state comes with one of the following associated reasons:

AUDIO_MIXING_STATE_FAILED 

714: An exception occurs during the playback of the music file.

This state comes with one of the following associated reasons:

◆ AUDIO_MIXING_ERROR_TYPE

Deprecated:
Deprecated from v3.4.0. Use AUDIO_MIXING_REASON_TYPE instead.

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 audio mixing file playback is interrupted.

AUDIO_MIXING_ERROR_OK 

0: The SDK can open the audio mixing file.

◆ AUDIO_MIXING_REASON_TYPE

The reason for the change of the music file playback state.

Since
v3.4.0

Reports in the onAudioMixingStateChanged callback.

Enumerator
AUDIO_MIXING_REASON_CAN_NOT_OPEN 

701: The SDK cannot open the music file. Possible causes include the local music file does not exist, the SDK does not support the file format, or the SDK cannot access the music file URL.

AUDIO_MIXING_REASON_TOO_FREQUENT_CALL 

702: The SDK opens the music file too frequently. If you need to call startAudioMixing multiple times, ensure that the call interval is longer than 500 ms.

AUDIO_MIXING_REASON_INTERRUPTED_EOF 

703: The music file playback is interrupted.

AUDIO_MIXING_REASON_STARTED_BY_USER 

720: Successfully calls startAudioMixing to play a music file.

AUDIO_MIXING_REASON_ONE_LOOP_COMPLETED 

721: The music file completes a loop playback.

AUDIO_MIXING_REASON_START_NEW_LOOP 

722: The music file starts a new loop playback.

AUDIO_MIXING_REASON_ALL_LOOPS_COMPLETED 

723: The music file completes all loop playback.

AUDIO_MIXING_REASON_STOPPED_BY_USER 

724: Successfully calls stopAudioMixing to stop playing the music file.

AUDIO_MIXING_REASON_PAUSED_BY_USER 

725: Successfully calls pauseAudioMixing to pause playing the music file.

AUDIO_MIXING_REASON_RESUMED_BY_USER 

726: Successfully calls resumeAudioMixing to resume playing the music file.

◆ MEDIA_DEVICE_STATE_TYPE

Media device states.

Enumerator
MEDIA_DEVICE_STATE_IDLE 

0: The device is ready for use.

Since
v3.4.5
MEDIA_DEVICE_STATE_ACTIVE 

1: The device is in use.

Since
v3.4.5
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.

MEDIA_DEVICE_STATE_UNRECOMMENDED 

16: The device is not recommended.

◆ 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 capturing device.

VIDEO_RENDER_DEVICE 

2: Video renderer (graphics card).

VIDEO_CAPTURE_DEVICE 

3: Video capturer.

AUDIO_APPLICATION_PLAYOUT_DEVICE 

4: Application audio playback device.

◆ LOCAL_VIDEO_STREAM_STATE

Local video state types.

Enumerator
LOCAL_VIDEO_STREAM_STATE_STOPPED 

0: Initial state.

LOCAL_VIDEO_STREAM_STATE_CAPTURING 

1: The local video capturing device starts successfully.

The SDK also reports this state when you share a maximized window by calling startScreenCaptureByWindowId.

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: The application does not have permission to start the local video capture device. Remind your user to grant permission and rejoin the channel.

LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY 

3: The local video capture device is in use. Remind your user to check whether another application occupies the camera.

LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE 

4: The local video capture failed. Remind your user to check whether the video capture device is working properly, check whether the camera is occupied by another application, or try to rejoin the channel.

LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE 

5: The local video encoding fails.

LOCAL_VIDEO_STREAM_ERROR_CAPTURE_INBACKGROUND 

6: (iOS only) The application is in the background. Remind your user that the application cannot capture video properly when the application is in the background.

Since
v3.3.0
LOCAL_VIDEO_STREAM_ERROR_CAPTURE_MULTIPLE_FOREGROUND_APPS 

7: (iOS only) This error code is reported when the current app is running in Slide Over, Split View, or Picture in Picture mode and another app is occupying the camera. Remind your user that the application cannot capture video properly when the app is running in Slide Over, Split View, or Picture in Picture mode and another app is occupying the camera.

Since
v3.3.0
LOCAL_VIDEO_STREAM_ERROR_DEVICE_NOT_FOUND 

8: The SDK cannot find the local video capture device. Remind your user to check whether the camera is connected to the device properly, check whether the camera is working properly, or try to rejoin the channel.

Since
v3.4.0
LOCAL_VIDEO_STREAM_ERROR_DEVICE_DISCONNECTED 

9: (macOS only) The external camera currently in use is disconnected (such as being unplugged).

Since
v3.5.0
LOCAL_VIDEO_STREAM_ERROR_DEVICE_INVALID_ID 

10: (macOS and Windows only) The SDK cannot find the video device in the video device list. Check whether the ID of the video device is valid.

Since
v3.5.2
LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_MINIMIZED 

11: The shared window is minimized when you call startScreenCaptureByWindowId to share a window. The SDK cannot share a minimized window. You can cancel the minimization of this window at the application layer, such as maximizing this window.

LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_CLOSED 

12: (macOS and Windows only) The error code indicates that a window shared by the window ID has been closed, or a full-screen window shared by the window ID has exited full-screen mode. After exiting full-screen mode, remote users cannot see the shared window. To prevent remote users from seeing a black screen, Agora recommends that you immediately stop screen sharing.

Common scenarios for reporting this error code:

  • When the local user closes the shared window, the SDK reports this error code.
  • The local user shows some slides in full-screen mode first, and then shares the windows of the slides. After the user exits full-screen mode, the SDK reports this error code.
  • The local user watches web video or reads web document in full-screen mode first, and then shares the window of the web video or document. After the user exits full-screen mode, the SDK reports this error code.
LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_OCCLUDED 

13: (Windows only) The window being shared is overlapped by another window, so the overlapped area is blacked out by the SDK during window sharing.

Since
v3.5.2
AGORA_DEPRECATED_ATTRIBUTE 
Since
v3.5.2

20: (Windows only) The SDK does not support sharing this type of window. Remind your user that the current type of window is not supported for sharing and use screen sharing instead.

Deprecated:
Deprecated from v3.7.0. As of v3.7.0, the SDK no longer throws this error code and automatically adjusts the capture method to capture more types of windows.

◆ 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 capturing 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 error. Remind your user to try to rejoin the channel.

LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION 

2: The application does not have permission to start the local audio capture device. Remind your user to grant permission.

LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY 

3: (Android and iOS only) The local audio capture device is used. Remind your user to check whether another application occupies the microphone. Local audio capture automatically resumes after the microphone is idle for about five seconds. You can also try to rejoin the channel after the microphone is idle.

LOCAL_AUDIO_STREAM_ERROR_RECORD_FAILURE 

4: The local audio capture failed.

LOCAL_AUDIO_STREAM_ERROR_ENCODE_FAILURE 

5: The local audio encoding failed.

LOCAL_AUDIO_STREAM_ERROR_NO_RECORDING_DEVICE 

6: (Windows only) The application cannot find the local audio capture device. Remind your user to check whether the microphone is connected to the device properly in the control plane of the device or if the microphone is working properly.

Since
v3.4.0
LOCAL_AUDIO_STREAM_ERROR_NO_PLAYOUT_DEVICE 

7: (Windows only) The application cannot find the local audio playback device. Remind your user to check whether the speaker is connected to the device properly in the control plane of the device or if the speaker is working properly.

Since
v3.4.0
LOCAL_AUDIO_STREAM_ERROR_INTERRUPTED 

8: (Android and iOS only) The local audio capture is interrupted by a system call, Siri, or alarm clock. Remind your user to end the phone call, Siri, or alarm clock if the local audio capture is required.

LOCAL_AUDIO_STREAM_ERROR_RECORD_INVALID_ID 

9: (Windows only) The ID of the local audio-capture device is invalid. Check the audio capture device ID.

Since
v3.5.1
LOCAL_AUDIO_STREAM_ERROR_PLAYOUT_INVALID_ID 

10: (Windows only) The ID of the local audio-playback device is invalid. Check the audio playback device ID.

Since
v3.5.1

◆ AUDIO_RECORDING_QUALITY_TYPE

Audio recording quality, which is set in startAudioRecording.

Enumerator
AUDIO_RECORDING_QUALITY_LOW 

0: Low quality. For example, the size of an AAC file with a sample rate of 32,000 Hz and a 10-minute recording is approximately 1.2 MB.

AUDIO_RECORDING_QUALITY_MEDIUM 

1: (Default) Medium quality. For example, the size of an AAC file with a sample rate of 32,000 Hz and a 10-minute recording is approximately 2 MB.

AUDIO_RECORDING_QUALITY_HIGH 

2: High quality. For example, the size of an AAC file with a sample rate of 32,000 Hz and a 10-minute recording is approximately 3.75 MB.

AUDIO_RECORDING_QUALITY_ULTRA_HIGH 

3: Ultra high quality. For example, the size of an AAC file with a sample rate of 32,000 Hz and a 10-minute recording is approximately 7.5 MB.

Since
v3.6.2

◆ 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.

◆ 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.
RENDER_MODE_FILL 

4: The fill mode. In this mode, the SDK stretches or zooms the video to fill the display window.

◆ SR_MODE

The mode of super resolution.

Since
v3.7.1
Enumerator
SR_MODE_MANUAL 

0: Enables super resolution for the remote user you specify.

SR_MODE_AUTO 

Enables super resolution for the remote user corresponding to the largest rendering window in the channel.

◆ VIDEO_MIRROR_MODE_TYPE

Video mirror modes.

Enumerator
VIDEO_MIRROR_MODE_AUTO 

0: (Default) The SDK enables the mirror mode.

VIDEO_MIRROR_MODE_ENABLED 

1: Enable mirror mode.

VIDEO_MIRROR_MODE_DISABLED 

2: Disable mirror mode.

◆ 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_BROADCASTING profile only.
VIDEO_PROFILE_LANDSCAPE_360P_10 

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

Note
LIVE_BROADCASTING profile only.
VIDEO_PROFILE_LANDSCAPE_360P_11 

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

Note
LIVE_BROADCASTING 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_BROADCASTING profile only.
VIDEO_PROFILE_PORTRAIT_360P_10 

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

Note
LIVE_BROADCASTING profile only.
VIDEO_PROFILE_PORTRAIT_360P_11 

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

Note
LIVE_BROADCASTING 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.

◆ 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_BROADCASTING profile: A sample rate of 48 KHz, music encoding, mono, and a bitrate of up to 64 Kbps.
  • For the COMMUNICATION profile:
    • Windows: A sample rate of 16 KHz, audio encoding, mono, and a bitrate of up to 16 Kbps.
    • Android/macOS/iOS: A sample rate of 32 KHz, audio 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 64 Kbps.

AUDIO_PROFILE_MUSIC_STANDARD_STEREO 

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

AUDIO_PROFILE_MUSIC_HIGH_QUALITY 

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

AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO 

5: A sample rate of 48 KHz, music encoding, stereo, and a bitrate of up to 128 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.

Note
If you run the iOS app on an M1 Mac, due to the hardware differences between M1 Macs, iPhones, and iPads, the default audio scenario of the Agora iOS SDK is the same as that of the Agora macOS SDK.
AUDIO_SCENARIO_CHATROOM_ENTERTAINMENT 

1: Entertainment scenario where users need to frequently switch the user role.

AUDIO_SCENARIO_EDUCATION 

2: Education scenario where users want smoothness and stability.

AUDIO_SCENARIO_GAME_STREAMING 

3: High-quality audio chatroom scenario where hosts mainly play music.

AUDIO_SCENARIO_SHOWROOM 

4: Showroom scenario where a single host wants high-quality audio.

AUDIO_SCENARIO_CHATROOM_GAMING 

5: Gaming scenario for group chat that only contains the human voice.

AUDIO_SCENARIO_IOT 

6: IoT (Internet of Things) scenario where users use IoT devices with low power consumption.

AUDIO_SCENARIO_MEETING 

8: Meeting scenario that mainly contains the human voice.

Since
v3.2.0
AUDIO_SCENARIO_NUM 

The number of elements in the enumeration.

◆ CHANNEL_PROFILE_TYPE

The channel profile.

Enumerator
CHANNEL_PROFILE_COMMUNICATION 

Communication. This profile applies to scenarios such as an audio call or video call, where all users can publish and subscribe to streams.

CHANNEL_PROFILE_LIVE_BROADCASTING 

Live streaming. In this profile, uses have roles, namely, host and audience (default). A host both publishes and subscribes to streams, while an audience subscribes to streams only. This profile applies to scenarios such as a chat room or interactive video streaming.

CHANNEL_PROFILE_GAME 

2: Gaming. 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.

Note
Agora does not recommend using this setting.

◆ CLIENT_ROLE_TYPE

The role of a user in interactive live streaming.

Enumerator
CLIENT_ROLE_BROADCASTER 

1: Host. A host can both send and receive streams.

CLIENT_ROLE_AUDIENCE 

2: (Default) Audience. An audience member can only receive streams.

◆ AUDIENCE_LATENCY_LEVEL_TYPE

The latency level of an audience member in interactive live streaming.

Note
Takes effect only when the user role is CLIENT_ROLE_AUDIENCE.
Enumerator
AUDIENCE_LATENCY_LEVEL_LOW_LATENCY 

1: Low latency.

AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY 

2: (Default) Ultra low latency.

◆ SUPER_RESOLUTION_STATE_REASON

The reason why super resolution is not successfully enabled or the message that confirms success.

Since
v3.5.1
Enumerator
SR_STATE_REASON_SUCCESS 

0: Super resolution is successfully enabled.

SR_STATE_REASON_STREAM_OVER_LIMITATION 

1: The original resolution of the remote video is beyond the range where super resolution can be applied.

SR_STATE_REASON_USER_COUNT_OVER_LIMITATION 

2: Super resolution is already being used to boost another remote user's video.

SR_STATE_REASON_DEVICE_NOT_SUPPORTED 

3: The device does not support using super resolution.

SR_STATE_REASON_INSUFFICIENT_PERFORMANCE 

4: When the super resolution feature is enabled or is running, the SDK detects that device performance is not qualified. When you receive this reason code, Agora recommends that the user disable super resolution.

Since
v3.7.1

◆ VIRTUAL_BACKGROUND_SOURCE_STATE_REASON

The reason why the virtual background is not successfully enabled or the message that confirms success.

Since
v3.4.5
Enumerator
VIRTUAL_BACKGROUND_SOURCE_STATE_REASON_SUCCESS 

0: The virtual background is successfully enabled.

VIRTUAL_BACKGROUND_SOURCE_STATE_REASON_IMAGE_NOT_EXIST 

1: The custom background image does not exist. Please check the value of source in VirtualBackgroundSource.

VIRTUAL_BACKGROUND_SOURCE_STATE_REASON_COLOR_FORMAT_NOT_SUPPORTED 

2: The color format of the custom background image is invalid. Please check the value of color in VirtualBackgroundSource.

VIRTUAL_BACKGROUND_SOURCE_STATE_REASON_DEVICE_NOT_SUPPORTED 

3: The device does not support using the virtual background.

VIRTUAL_BACKGROUND_SOURCE_STATE_REASON_INSUFFICIENT_PERFORMANCE 

4: When the virtual background feature is enabled or is running, the SDK detects that device performance is not qualified. When you receive this reason code, Agora recommends that the user disable virtual background.

Since
v3.7.1

◆ USER_OFFLINE_REASON_TYPE

Reasons for a user being offline.

Enumerator
USER_OFFLINE_QUIT 

0: The user quits the call. On iOS, the SDK reports this reason code after the user kills the app with a gesture swipe.

USER_OFFLINE_DROPPED 

1: The SDK times out and the user drops offline because no data packet is received within a certain period of time.

Note
  • 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.
  • On Android, after the user kills the app by a gesture swipe, the SDK reports USER_OFFLINE_DROPPED(1) instead of USER_OFFLINE_QUIT(0) due to system limitation.
USER_OFFLINE_BECOME_AUDIENCE 

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

◆ RTMP_STREAM_PUBLISH_STATE

States of the RTMP or RTMPS streaming.

Enumerator
RTMP_STREAM_PUBLISH_STATE_IDLE 

The RTMP or RTMPS streaming has not started or has ended. This state is also triggered after you remove an RTMP or RTMPS stream from the CDN by calling removePublishStreamUrl.

RTMP_STREAM_PUBLISH_STATE_CONNECTING 

The SDK is connecting to Agora's streaming server and the CDN server. This state is triggered after you call the addPublishStreamUrl method.

RTMP_STREAM_PUBLISH_STATE_RUNNING 

The RTMP or RTMPS streaming publishes. The SDK successfully publishes the RTMP or RTMPS streaming and returns this state.

RTMP_STREAM_PUBLISH_STATE_RECOVERING 

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

RTMP_STREAM_PUBLISH_STATE_FAILURE 

The RTMP or RTMPS streaming fails. See the errCode parameter for the detailed error information. You can also call the addPublishStreamUrl method to publish the RTMP or RTMPS streaming again.

RTMP_STREAM_PUBLISH_STATE_DISCONNECTING 

The SDK is disconnecting from the Agora streaming server and CDN. When you call remove or stop to stop the streaming normally, the SDK reports the streaming state as DISCONNECTING, IDLE in sequence.

Since
v3.6.0

◆ RTMP_STREAM_PUBLISH_ERROR_TYPE

Error codes of the RTMP or RTMPS streaming.

Enumerator
RTMP_STREAM_PUBLISH_ERROR_OK 

0: The RTMP or RTMPS 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 or RTMPS streaming is encrypted and cannot be published.

RTMP_STREAM_PUBLISH_ERROR_CONNECTION_TIMEOUT 

3: Timeout for the RTMP or RTMPS 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 CDN server.

RTMP_STREAM_PUBLISH_ERROR_TOO_OFTEN 

6: Reserved.

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 or RTMPS streaming.

RTMP_STREAM_PUBLISH_ERROR_FORMAT_NOT_SUPPORTED 

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

RTMP_STREAM_PUBLISH_ERROR_NOT_BROADCASTER 

11: The user role is not host, so the user cannot use the CDN live streaming function. Check your application code logic.

Since
v3.6.0
RTMP_STREAM_PUBLISH_ERROR_TRANSCODING_NO_MIX_STREAM 

13: The updateRtmpTranscoding or setLiveTranscoding method is called to update the transcoding configuration in a scenario where there is streaming without transcoding. Check your application code logic.

Since
v3.6.0
RTMP_STREAM_PUBLISH_ERROR_NET_DOWN 

14: Errors occurred in the host's network.

Since
v3.6.0
RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID 

15: Your App ID does not have permission to use the CDN live streaming function. Refer to Prerequisites to enable the CDN live streaming permission.

Since
v3.6.0
RTMP_STREAM_UNPUBLISH_ERROR_OK 

100: The streaming has been stopped normally. After you call removePublishStreamUrl to stop streaming, the SDK returns this value.

Since
v3.4.5

◆ RTMP_STREAMING_EVENT

Events during the RTMP or RTMPS streaming.

Enumerator
RTMP_STREAMING_EVENT_FAILED_LOAD_IMAGE 

1: An error occurs when you add a background image or a watermark image to the RTMP or RTMPS stream.

RTMP_STREAMING_EVENT_URL_ALREADY_IN_USE 

2: The streaming URL is already being used for CDN live streaming. If you want to start new streaming, use a new streaming URL.

Since
v3.4.5
RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT 

3: The feature is not supported.

Since
v3.6.0
RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN 

4: Reserved.

Since
v3.6.0

◆ INJECT_STREAM_STATUS

States of importing an external video stream in the interactive live streaming.

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.

◆ 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.

◆ CAPTURE_BRIGHTNESS_LEVEL_TYPE

The brightness level of the video image captured by the local camera.

Since
v3.3.0
Enumerator
CAPTURE_BRIGHTNESS_LEVEL_INVALID 

-1: The SDK does not detect the brightness level of the video image. Wait a few seconds to get the brightness level from CAPTURE_BRIGHTNESS_LEVEL_TYPE in the next callback.

CAPTURE_BRIGHTNESS_LEVEL_NORMAL 

0: The brightness level of the video image is normal.

CAPTURE_BRIGHTNESS_LEVEL_BRIGHT 

1: The brightness level of the video image is too bright.

CAPTURE_BRIGHTNESS_LEVEL_DARK 

2: The brightness level of the video image is too dark.

◆ RAW_AUDIO_FRAME_OP_MODE_TYPE

The use mode of the audio data in the onRecordAudioFrame or onPlaybackAudioFrame callback.

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 SDK, then push the RTMP or RTMPS 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_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

◆ 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 live streaming or television.

◆ VIDEO_CODEC_TYPE

Video codec types

Enumerator
VIDEO_CODEC_VP8 

1: Standard VP8

VIDEO_CODEC_H264 

2: Standard H.264

VIDEO_CODEC_EVP 

3: Enhanced VP8

VIDEO_CODEC_E264 

4: Enhanced H.264

◆ VIDEO_CODEC_TYPE_FOR_STREAM

The video codec type of the output video stream.

Since
v3.2.0
Enumerator
VIDEO_CODEC_H264_FOR_STREAM 

1: (Default) H.264

VIDEO_CODEC_H265_FOR_STREAM 

2: H.265

◆ 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

◆ 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.

◆ VOICE_CHANGER_PRESET

Deprecated:
Deprecated from v3.2.0.

Local voice changer options.

Gender-based beatification effect works best only when assigned a proper gender:

Failure to do so can lead to voice distortion.

Enumerator
VOICE_CHANGER_OFF 

The original voice (no local voice change).

VOICE_CHANGER_OLDMAN 

The voice of an old man.

VOICE_CHANGER_BABYBOY 

The voice of a little boy.

VOICE_CHANGER_BABYGIRL 

The voice of a little girl.

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

Deprecated:
Deprecated from v3.2.0.

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 little 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_ELECTRONIC_VOICE 

A pitch correction effect that corrects the user's pitch based on the pitch of the natural C major scale.

AUDIO_THREEDIM_VOICE 

A 3D voice effect that makes the voice appear to be moving around the user.

◆ VOICE_BEAUTIFIER_PRESET

The options for SDK preset voice beautifier effects.

Enumerator
VOICE_BEAUTIFIER_OFF 

Turn off voice beautifier effects and use the original voice.

CHAT_BEAUTIFIER_MAGNETIC 

A more magnetic voice.

Note
Agora recommends using this enumerator to process a male-sounding voice; otherwise, you may experience vocal distortion.
CHAT_BEAUTIFIER_FRESH 

A fresher voice.

Note
Agora recommends using this enumerator to process a female-sounding voice; otherwise, you may experience vocal distortion.
CHAT_BEAUTIFIER_VITALITY 

A more vital voice.

Note
Agora recommends using this enumerator to process a female-sounding voice; otherwise, you may experience vocal distortion.
SINGING_BEAUTIFIER 
Since
v3.3.0

Singing beautifier effect.

  • If you call setVoiceBeautifierPreset (SINGING_BEAUTIFIER), you can beautify a male-sounding voice and add a reverberation effect that sounds like singing in a small room. Agora recommends not using setVoiceBeautifierPreset (SINGING_BEAUTIFIER) to process a female-sounding voice; otherwise, you may experience vocal distortion.
  • If you call setVoiceBeautifierParameters(SINGING_BEAUTIFIER, param1, param2), you can beautify a male- or female-sounding voice and add a reverberation effect.
TIMBRE_TRANSFORMATION_VIGOROUS 

A more vigorous voice.

TIMBRE_TRANSFORMATION_DEEP 

A deeper voice.

TIMBRE_TRANSFORMATION_MELLOW 

A mellower voice.

TIMBRE_TRANSFORMATION_FALSETTO 

A falsetto voice.

TIMBRE_TRANSFORMATION_FULL 

A fuller voice.

TIMBRE_TRANSFORMATION_CLEAR 

A clearer voice.

TIMBRE_TRANSFORMATION_RESOUNDING 

A more resounding voice.

TIMBRE_TRANSFORMATION_RINGING 

A more ringing voice.

◆ AUDIO_EFFECT_PRESET

The options for SDK preset audio effects.

Enumerator
AUDIO_EFFECT_OFF 

Turn off audio effects and use the original voice.

ROOM_ACOUSTICS_KTV 

An audio effect typical of a KTV venue.

Note
To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
ROOM_ACOUSTICS_VOCAL_CONCERT 

An audio effect typical of a concert hall.

Note
To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
ROOM_ACOUSTICS_STUDIO 

An audio effect typical of a recording studio.

Note
To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
ROOM_ACOUSTICS_PHONOGRAPH 

An audio effect typical of a vintage phonograph.

Note
To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
ROOM_ACOUSTICS_VIRTUAL_STEREO 

A virtual stereo effect that renders monophonic audio as stereo audio.

Note
Call setAudioProfile and set the profile parameter to AUDIO_PROFILE_MUSIC_STANDARD_STEREO(3) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator; otherwise, the enumerator setting does not take effect.
ROOM_ACOUSTICS_SPACIAL 

A more spatial audio effect.

Note
To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
ROOM_ACOUSTICS_ETHEREAL 

A more ethereal audio effect.

Note
To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
ROOM_ACOUSTICS_3D_VOICE 

A 3D voice effect that makes the voice appear to be moving around the user. The default cycle period of the 3D voice effect is 10 seconds. To change the cycle period, call setAudioEffectParameters after this method.

Note
  • Call setAudioProfile and set the profile parameter to AUDIO_PROFILE_MUSIC_STANDARD_STEREO(3) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator; otherwise, the enumerator setting does not take effect.
  • If the 3D voice effect is enabled, users need to use stereo audio playback devices to hear the anticipated voice effect.
VOICE_CHANGER_EFFECT_UNCLE 

The voice of a middle-aged man.

Note
  • Agora recommends using this enumerator to process a male-sounding voice; otherwise, you may not hear the anticipated voice effect.
  • To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
VOICE_CHANGER_EFFECT_OLDMAN 

The voice of an old man.

Note
  • Agora recommends using this enumerator to process a male-sounding voice; otherwise, you may not hear the anticipated voice effect.
  • To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
VOICE_CHANGER_EFFECT_BOY 

The voice of a boy.

Note
  • Agora recommends using this enumerator to process a male-sounding voice; otherwise, you may not hear the anticipated voice effect.
  • To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
VOICE_CHANGER_EFFECT_SISTER 

The voice of a young woman.

Note
  • Agora recommends using this enumerator to process a female-sounding voice; otherwise, you may not hear the anticipated voice effect.
  • To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
VOICE_CHANGER_EFFECT_GIRL 

The voice of a girl.

Note
  • Agora recommends using this enumerator to process a female-sounding voice; otherwise, you may not hear the anticipated voice effect.
  • To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
VOICE_CHANGER_EFFECT_PIGKING 

The voice of Pig King, a character in Journey to the West who has a voice like a growling bear.

Note
To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
VOICE_CHANGER_EFFECT_HULK 

The voice of Hulk.

Note
To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
STYLE_TRANSFORMATION_RNB 

An audio effect typical of R&B music.

Note
To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
STYLE_TRANSFORMATION_POPULAR 

An audio effect typical of popular music.

Note
To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.
PITCH_CORRECTION 

A pitch correction effect that corrects the user's pitch based on the pitch of the natural C major scale. To change the basic mode and tonic pitch, call setAudioEffectParameters after this method.

Note
To achieve better audio effect quality, Agora recommends calling setAudioProfile and setting the profile parameter to AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4) or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5) before setting this enumerator.

◆ VOICE_CONVERSION_PRESET

The options for SDK preset voice conversion effects.

Since
v3.3.1
Enumerator
VOICE_CONVERSION_OFF 

Turn off voice conversion effects and use the original voice.

VOICE_CHANGER_NEUTRAL 

A gender-neutral voice. To avoid audio distortion, ensure that you use this enumerator to process a female-sounding voice.

VOICE_CHANGER_SWEET 

A sweet voice. To avoid audio distortion, ensure that you use this enumerator to process a female-sounding voice.

VOICE_CHANGER_SOLID 

A steady voice. To avoid audio distortion, ensure that you use this enumerator to process a male-sounding voice.

VOICE_CHANGER_BASS 

A deep voice. To avoid audio distortion, ensure that you use this enumerator to process a male-sounding voice.

◆ AUDIO_CODEC_PROFILE_TYPE

Audio codec profile types. The default value is LC_ACC.

Enumerator
AUDIO_CODEC_PROFILE_LC_AAC 

0: (Default) LC-AAC

AUDIO_CODEC_PROFILE_HE_AAC 

1: HE-AAC

AUDIO_CODEC_PROFILE_HE_AAC_V2 

2: HE-AAC v2

Since
v3.6.0

◆ 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: The SDK reports this reason when the audio state changes.

REMOTE_AUDIO_REASON_NETWORK_CONGESTION 

1: The remote user's network is congested. If the network conditions are persistently poor, display a pop-up box in the application that says "The remote user's network conditions are poor".

REMOTE_AUDIO_REASON_NETWORK_RECOVERY 

2: The remote user's network conditions are restored from congested to normal. You can display a pop-up box in the application that says "The remote user's network conditions have improved".

REMOTE_AUDIO_REASON_LOCAL_MUTED 

3: The local user stops receiving the remote audio stream or disables the audio module. You can display a pop-up box in the application that says "You have muted the remote user".

REMOTE_AUDIO_REASON_LOCAL_UNMUTED 

4: The local user resumes receiving the remote audio stream or enables the audio module. You can display a pop-up box in the application that says "You have unmuted the remote user".

REMOTE_AUDIO_REASON_REMOTE_MUTED 

5: The remote user stops sending the audio stream or disables the audio module. You can use an icon in the list of users in the application user interface to show that the remote user is muted and display a pop-up box in the application that says "The remote user has muted themselves".

REMOTE_AUDIO_REASON_REMOTE_UNMUTED 

6: The remote user resumes sending the audio stream or enables the audio module. You can use an icon in the list of users in the application user interface to show that the remote user is unmuted and display a pop-up box in the application that says "The remote user has unmuted themselves".

REMOTE_AUDIO_REASON_REMOTE_OFFLINE 

7: The remote user leaves the channel. You can remove the remote user from the user list in the application user interface.

◆ REMOTE_VIDEO_STATE

Remote video states. 1: The remote video is playing. 2: The remote video is frozen. 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).

◆ STREAM_PUBLISH_STATE

The publishing state.

Enumerator
PUB_STATE_IDLE 

0: The initial publishing state after joining the channel.

PUB_STATE_NO_PUBLISHED 

1: Fails to publish the local stream. Possible reasons:

PUB_STATE_PUBLISHING 

2: Publishing.

PUB_STATE_PUBLISHED 

3: Publishes successfully.

◆ STREAM_SUBSCRIBE_STATE

The subscribing state.

Enumerator
SUB_STATE_IDLE 

0: The initial subscribing state after joining the channel.

SUB_STATE_NO_SUBSCRIBED 

1: Fails to subscribe to the remote stream. Possible reasons:

SUB_STATE_SUBSCRIBING 

2: Subscribing.

SUB_STATE_SUBSCRIBED 

3: Subscribes to and receives the remote stream successfully.

◆ XLA_REMOTE_VIDEO_FROZEN_TYPE

The remote video frozen type.

Enumerator
XLA_REMOTE_VIDEO_FROZEN_500MS 

0: 500ms video frozen type.

XLA_REMOTE_VIDEO_FROZEN_200MS 

1: 200ms video frozen type.

XLA_REMOTE_VIDEO_FROZEN_600MS 

2: 600ms video frozen type.

XLA_REMOTE_VIDEO_FROZEN_TYPE_MAX 

3: max video frozen type.

◆ XLA_REMOTE_AUDIO_FROZEN_TYPE

The remote audio frozen type.

Enumerator
XLA_REMOTE_AUDIO_FROZEN_80MS 

0: 80ms audio frozen.

XLA_REMOTE_AUDIO_FROZEN_200MS 

1: 200ms audio frozen.

XLA_REMOTE_AUDIO_FROZEN_TYPE_MAX 

2: max audio frozen type.

◆ REMOTE_VIDEO_STATE_REASON

The reason for the remote video state change.

Enumerator
REMOTE_VIDEO_STATE_REASON_INTERNAL 

0: The SDK reports this reason when the video state changes.

REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION 

1: The remote user's network is congested. If the network conditions are persistently poor, display a pop-up box in the application that says "The remote user's network conditions are poor".

REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY 

2: The remote user's network conditions are restored from congested to normal. You can display a pop-up box in the application that says "The remote user's network conditions have improved".

REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED 

3: The local user stops receiving the remote video stream or disables the video module. You can close the window to render the remote user's video and display a pop-up box in the application that says "You have stopped receiving video from the remote user".

REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED 

4: The local user resumes receiving the remote video stream or enables the video module. You can restore the window to render the remote user's video and display a pop-up box in the application that says "You have resumed receiving video from the remote user".

REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED 

5: The remote user stops sending the video stream or disables the video module. You can close the window to render the remote user's video, use an icon in the list of users in the application user interface to show that the remote user has stopped sending video, and display a pop-up box in the application that says "The remote user has disabled the camera".

REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED 

6: The remote user resumes sending the video stream or enables the video module. You can restore the window to render the remote user's video, use an icon in the list of users in the application user interface to show that the remote user has resumed sending video, and display a pop-up box in the application that says "The remote user has enabled the camera".

REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE 

7: The remote user leaves the channel. You can close the window to render the remote user's video and remove the remote user from the user list in the application user interface.

REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK 

8: The remote audio-and-video stream falls back to the audio-only stream due to poor network conditions. You can close the window to render the remote user's video and display a pop-up box in the application that says "The remote user's network conditions are poor".

REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY 

9: The remote audio-only stream switches back to the audio-and-video stream after the network conditions improve. You can restore the window to render the remote user's video and display a pop-up box in the application that says "The remote user's network conditions are poor".

REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND 

10: The SDK reports this error code to the local user when a remote user is using the iOS app and the app is in the background. In this case, the local user sees the remote user's video stuck.

◆ 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 under limited bandwidth.

Enumerator
MAINTAIN_QUALITY 

0: (Default) Prefers to reduce the video frame rate while maintaining video quality during video encoding under limited bandwidth. This degradation preference is suitable for scenarios where video quality is prioritized.

Note
In the COMMUNICATION channel profile, the resolution of the video sent may change, so remote users need to handle this issue. See onVideoSizeChanged.
MAINTAIN_FRAMERATE 

1: Prefers to reduce the video quality while maintaining the video frame rate during video encoding under limited bandwidth. This degradation preference is suitable for scenarios where smoothness is prioritized and video quality is allowed to be reduced.

MAINTAIN_BALANCED 

2: Reduces the video frame rate and video quality simultaneously during video encoding under limited bandwidth. MAINTAIN_BALANCED has a lower reduction than MAINTAIN_QUALITY and MAINTAIN_FRAMERATE, and this preference is suitable for scenarios where both smoothness and video quality are a priority.

Note
The resolution of the video sent may change, so remote users need to handle this issue. See onVideoSizeChanged.

◆ 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 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.

◆ CAPTURER_OUTPUT_PREFERENCE

Camera capture preference.

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.

CAPTURER_OUTPUT_PREFERENCE_MANUAL 

3: Allows you to customize the width and height of the video image captured by the local camera.

Since
v3.3.0

◆ 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.

◆ 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 joinChannel 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.

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 onConnectionLost callback, stays in the CONNECTION_STATE_RECONNECTING 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 onConnectionStateChanged callback, switches to the CONNECTION_STATE_FAILED 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 joinChannel 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 onConnectionBanned (deprecated) and onConnectionStateChanged 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 is banned by the server. This occurs when the server calls the Banning user privileges API to kick the user out of the channel. You can display a pop-up box in the application that says: "The user has been banned from this channel."

CONNECTION_CHANGED_JOIN_FAILED 

4: The SDK fails to join the channel. This occurs when the SDK fails to rejoin the channel within 20 minutes after receiving the onConnectionStateChanged(CONNECTION_STATE_RECONNECTING, CONNECTION_CHANGED_INTERRUPTED) callback and stops trying. You can display a pop-up box in the application that says: "Failed to join the channel due to network issues. Please try to rejoin the channel after switching to a different network."

CONNECTION_CHANGED_LEAVE_CHANNEL 

5: The SDK has left the channel.

CONNECTION_CHANGED_INVALID_APP_ID 

6: The specified App ID is invalid. Check whether the App ID used by the user is the same as the App ID obtained from the Agora Console, and then try to rejoin the channel with a valid App ID.

CONNECTION_CHANGED_INVALID_CHANNEL_NAME 

7: The specified channel name is invalid. The channel name cannot be empty nor longer than 64 bytes in length. For supported characters, see the channelName parameter in joinChannel. You can display a pop-up box in the application that says: "The channel name is invalid. Please try to rejoin the channel with a valid channel name."

CONNECTION_CHANGED_INVALID_TOKEN 

8: The token is invalid, probably due to the following reasons:

  • The App Certificate for the project is enabled in the Agora Console, but you do not use a token to authenticate the user when calling joinChannel. When the App Certificate for a project is enabled, you must use tokens to authenticate users.
  • The user ID that you specify in the joinChannel method is different from the user ID that you pass for generating the token.

Check whether the token used by the user is the same as the token generated at your app server, and then try to rejoin the channel with a valid token.

CONNECTION_CHANGED_TOKEN_EXPIRED 

9: The token has expired. The user using the expired token is forced to leave the channel. The app client needs to request a new token from the app server and then try to rejoin the channel with the new token.

CONNECTION_CHANGED_REJECTED_BY_SERVER 

10: The user is banned by the server. This error usually occurs in the following situations:

  • When the user is already in the channel, and still calls the method to join the channel, for example, joinChannel.
  • When the user tries to join a channel during startEchoTest. Once you call startEchoTest, you need to call stopEchoTest before joining a channel.
CONNECTION_CHANGED_SETTING_PROXY_SERVER 

11: The SDK tries to reconnect after setting a proxy server.

CONNECTION_CHANGED_RENEW_TOKEN 

12: The token renews.

CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED 

13: Due to a change of the network type, IP address, or network port, the client IP address has changed, and the SDK tries to reconnect. If this state occurs multiple times, you can display a pop-up box in the application that says: "The network connection is not stable. Please switch to another network."

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).

CONNECTION_CHANGED_SAME_UID_LOGIN 

19: Join the same channel from different devices using the same user ID.

Since
v3.7.0
CONNECTION_CHANGED_TOO_MANY_BROADCASTERS 

20: The number of hosts in the channel is already at the upper limit.

Note
This enumerator is reported only when the support for 128 users is enabled. The maximum number of hosts is based on the actual number of hosts configured when you enable the 128-user feature.
Since
v3.7.0

◆ 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 (including hotspots).

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.

NETWORK_TYPE_MOBILE_5G 

6: The network type is mobile 5G.

Since
v3.5.1

◆ 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.

◆ AUDIO_ROUTE_TYPE

The current audio route.

Reports in the onAudioRouteChanged callback.

Enumerator
AUDIO_ROUTE_DEFAULT 

-1: Default audio route.

AUDIO_ROUTE_HEADSET 

0: The audio route is a headset with a microphone.

AUDIO_ROUTE_EARPIECE 

1: The audio route is an earpiece.

AUDIO_ROUTE_HEADSET_NO_MIC 

2: The audio route is a headset without a microphone.

AUDIO_ROUTE_SPEAKERPHONE 

3: The audio route is the speaker that comes with the device.

AUDIO_ROUTE_LOUDSPEAKER 

4: (iOS and macOS only) The audio route is an external speaker.

AUDIO_ROUTE_BLUETOOTH 

5: The audio route is a Bluetooth headset.

AUDIO_ROUTE_USB 

6: (macOS only) The audio route is a USB peripheral device.

AUDIO_ROUTE_HDMI 

7: (macOS only) The audio route is an HDMI peripheral device.

AUDIO_ROUTE_DISPLAYPORT 

8: (macOS only) The audio route is a DisplayPort peripheral device.

AUDIO_ROUTE_AIRPLAY 

9: (iOS and macOS only) The audio route is Apple AirPlay.

◆ CLOUD_PROXY_TYPE

The cloud proxy type.

Since
v3.3.0
Enumerator
NONE_PROXY 

0: The automatic mode. In this mode, the SDK attempts a direct connection to SD-RTN™ and automatically switches to TLS 443 if the attempt fails. As of v3.6.2, the SDK has this mode enabled by default.

UDP_PROXY 

1: The cloud proxy for the UDP protocol, that is, the Force UDP cloud proxy mode. In this mode, the SDK always transmits data over UDP.

TCP_PROXY 

2: The cloud proxy for the TCP (encryption) protocol, that is, the Force TCP cloud proxy mode. In this mode, the SDK always transmits data over TLS 443.

Since
v3.6.2

◆ EXCLUDE_WINDOW_ERROR

The error code of the window blocking during screen sharing.

Since
v3.6.1
Enumerator
EXCLUDE_WINDOW_FAIL 

-1: Fails to block the window during screen sharing. The user's graphics card does not support window blocking.

EXCLUDE_WINDOW_NONE 

0: Reserved.

◆ PROXY_TYPE

The proxy type.

Since
v3.6.2
Enumerator
NONE_PROXY_TYPE 

0: Reserved for future use.

UDP_PROXY_TYPE 

1: The cloud proxy for the UDP protocol, that is, the Force UDP cloud proxy mode. In this mode, the SDK always transmits data over UDP.

TCP_PROXY_TYPE 

2: The cloud proxy for the TCP (encryption) protocol, that is, the Force TCP cloud proxy mode. In this mode, the SDK always transmits data over TLS 443.

LOCAL_PROXY_TYPE 

3: Reserved for future use.

TCP_PROXY_AUTO_FALLBACK_TYPE 

4: The automatic mode. In this mode, the SDK attempts a direct connection to SD-RTN™ and automatically switches to TLS 443 if the attempt fails.

◆ AUDIO_SESSION_OPERATION_RESTRICTION

The operational permission of the SDK on the audio session.

Enumerator
AUDIO_SESSION_OPERATION_RESTRICTION_NONE 

0: No restriction; the SDK can change the audio session.

AUDIO_SESSION_OPERATION_RESTRICTION_SET_CATEGORY 

1: The SDK cannot change the audio session category.

AUDIO_SESSION_OPERATION_RESTRICTION_CONFIGURE_SESSION 

2: The SDK cannot change the audio session category, mode, or categoryOptions.

AUDIO_SESSION_OPERATION_RESTRICTION_DEACTIVATE_SESSION 

4: The SDK keeps the audio session active when the user leaves the channel, for example, to play an audio file in the background.

AUDIO_SESSION_OPERATION_RESTRICTION_ALL 

128: Completely restricts the operational permission of the SDK on the audio session; the SDK cannot change the audio session.

◆ CAMERA_DIRECTION

Enumerator
CAMERA_REAR 

The rear camera.

CAMERA_FRONT 

The front camera.

◆ AUDIO_RECORDING_POSITION

Recording content, which is set in startAudioRecording.

Enumerator
AUDIO_RECORDING_POSITION_MIXED_RECORDING_AND_PLAYBACK 

0: (Default) Records the mixed audio of the local user and all remote users.

AUDIO_RECORDING_POSITION_RECORDING 

1: Records the audio of the local user only.

AUDIO_RECORDING_POSITION_MIXED_PLAYBACK 

2: Records the audio of all remote users only.

◆ AUDIO_FILE_INFO_ERROR

The information acquisition state. This enum is reported in onRequestAudioFileInfo.

Since
v3.5.1
Enumerator
AUDIO_FILE_INFO_ERROR_OK 

0: Successfully get the information of an audio file.

AUDIO_FILE_INFO_ERROR_FAILURE 

1: Fail to get the information of an audio file.

◆ CLIENT_ROLE_CHANGE_FAILED_REASON

The reason for a user role switch failure.

Since
v3.7.0
Enumerator
CLIENT_ROLE_CHANGE_FAILED_BY_TOO_MANY_BROADCASTERS 

1: The number of hosts in the channel is already at the upper limit.

Note
This enumerator is reported only when the support for 128 users is enabled. The maximum number of hosts is based on the actual number of hosts configured when you enable the 128-user feature.
CLIENT_ROLE_CHANGE_FAILED_BY_NOT_AUTHORIZED 

2: The request is rejected by the Agora server. Agora recommends you prompt the user to try to switch their user role again.

CLIENT_ROLE_CHANGE_FAILED_BY_REQUEST_TIME_OUT 

3: The request is timed out. Agora recommends you prompt the user to check the network connection and try to switch their user role again.

CLIENT_ROLE_CHANGE_FAILED_BY_CONNECTION_FAILED 

4: The SDK connection fails. You can use reason reported in the onConnectionStateChanged callback to troubleshoot the failure.

◆ 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.

◆ EXPERIENCE_QUALITY_TYPE

Quality of experience (QoE) of the local user when receiving a remote audio stream.

Since
v3.3.0
Enumerator
EXPERIENCE_QUALITY_GOOD 

0: QoE of the local user is good.

EXPERIENCE_QUALITY_BAD 

1: QoE of the local user is poor.

◆ EXPERIENCE_POOR_REASON

The reason for poor QoE of the local user when receiving a remote audio stream.

Since
v3.3.0
Enumerator
EXPERIENCE_REASON_NONE 

0: No reason, indicating good QoE of the local user.

REMOTE_NETWORK_QUALITY_POOR 

1: The remote user's network quality is poor.

LOCAL_NETWORK_QUALITY_POOR 

2: The local user's network quality is poor.

WIRELESS_SIGNAL_POOR 

4: The local user's Wi-Fi or mobile network signal is weak.

WIFI_BLUETOOTH_COEXIST 

8: The local user enables both Wi-Fi and bluetooth, and their signals interfere with each other. As a result, audio transmission quality is undermined.

◆ CHANNEL_MEDIA_RELAY_ERROR

The error code in 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.

This error can also occur if your project has not enabled the service for co-hosting across channels. Contact suppo.nosp@m.rt@a.nosp@m.gora..nosp@m.io to enable the service for co-hosting across channels before starting a channel media relay.

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.

◆ 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.

RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS 

12: The SDK successfully pauses relaying the media stream to destination channels.

Since
v3.5.1
RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED 

13: The SDK fails to pause relaying the media stream to destination channels.

Since
v3.5.1
RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS 

14: The SDK successfully resumes relaying the media stream to destination channels.

Since
v3.5.1
RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED 

15: The SDK fails to resume relaying the media stream to destination channels.

Since
v3.5.1

◆ CHANNEL_MEDIA_RELAY_STATE

The state code in CHANNEL_MEDIA_RELAY_STATE.

Enumerator
RELAY_STATE_IDLE 

0: The initial state. After you successfully stop the channel media relay by calling stopChannelMediaRelay, the onChannelMediaRelayStateChanged callback returns this state.

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.

◆ AudioDeviceTestVolumeType

The volume type.

Since
v3.6.2
Enumerator
AudioTestRecordingVolume 

0: The volume of the audio capturing device.

AudioTestPlaybackVolume 

1: The volume of the audio playback device.

◆ RTMP_STREAM_LIFE_CYCLE_TYPE

Deprecated:
Lifecycle of the CDN live video stream.
Enumerator
RTMP_STREAM_LIFE_CYCLE_BIND2CHANNEL 

Bind to the channel lifecycle. If all hosts leave the channel, the CDN live streaming stops after 30 seconds.

RTMP_STREAM_LIFE_CYCLE_BIND2OWNER 

Bind to the owner of the RTMP stream. If the owner leaves the channel, the CDN live streaming stops immediately.

◆ 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.

◆ SCREEN_SCENARIO_TYPE

The screen sharing scenario.

Since
v3.7.0
Enumerator
SCREEN_SCENARIO_DOCUMENT 

1: (Default) Document. This scenario prioritizes the video quality of screen sharing and reduces the latency of the shared video for the receiver. If you share documents, slides, and tables, you can set this scenario.

SCREEN_SCENARIO_GAMING 

2: Game. This scenario prioritizes the smoothness of screen sharing. If you share games, you can set this scenario.

SCREEN_SCENARIO_VIDEO 

3: Video. This scenario prioritizes the smoothness of screen sharing. If you share movies or live videos, you can set this scenario.

SCREEN_SCENARIO_RDC 

4: Remote control. This scenario prioritizes the video quality of screen sharing and reduces the latency of the shared video for the receiver. If you share the device desktop being remotely controlled, you can set this scenario.

◆ AREA_CODE

Regions for connetion.

Enumerator
AREA_CODE_CN 

Mainland China.

AREA_CODE_NA 

North America.

AREA_CODE_EU 

Europe.

AREA_CODE_AS 

Asia, excluding Mainland China.

AREA_CODE_JP 

Japan.

AREA_CODE_IN 

India.

AREA_CODE_GLOB 

(Default) Global.

◆ ENCRYPTION_CONFIG

Enumerator
ENCRYPTION_FORCE_SETTING 
  • 1: Force set master key and mode;
  • 0: Not force set, checking whether encryption plugin exists
ENCRYPTION_FORCE_DISABLE_PACKET 
  • 1: Force not encrypting packet;
  • 0: Not force encrypting;

◆ VIDEO_CAPTURE_TYPE

The capture type of the custom video source.

Enumerator
VIDEO_CAPTURE_UNKNOWN 

Unknown type.

VIDEO_CAPTURE_CAMERA 

(Default) Video captured by the camera.

VIDEO_CAPTURE_SCREEN 

Video for screen sharing.

◆ ScreenCaptureSourceType

The type of the shared target.

Since
v3.5.2
Enumerator
ScreenCaptureSourceType_Unknown 

-1: Unknown type.

ScreenCaptureSourceType_Window 

0: The shared target is a window.

ScreenCaptureSourceType_Screen 

1: The shared target is a screen of a particular monitor.

ScreenCaptureSourceType_Custom 

2: Reserved parameter.

◆ ENCRYPTION_MODE

Encryption mode. Agora recommends using either the AES_128_GCM2 or AES_256_GCM2 encryption mode, both of which support adding a salt and are more secure.

Enumerator
AES_128_XTS 

1: 128-bit AES encryption, XTS mode.

AES_128_ECB 

2: 128-bit AES encryption, ECB mode.

AES_256_XTS 

3: 256-bit AES encryption, XTS mode.

AES_128_GCM 

5: 128-bit AES encryption, GCM mode.

Since
v3.3.1
AES_256_GCM 

6: 256-bit AES encryption, GCM mode.

Since
v3.3.1
AES_128_GCM2 

7: (Default) 128-bit AES encryption, GCM mode. Compared to AES_128_GCM encryption mode, AES_128_GCM2 encryption mode is more secure and requires you to set the salt (encryptionKdfSalt).

Since
v3.4.5
AES_256_GCM2 

8: 256-bit AES encryption, GCM mode. Compared to AES_256_GCM encryption mode, AES_256_GCM2 encryption mode is more secure and requires you to set the salt (encryptionKdfSalt).

Since
v3.4.5
MODE_END 

Enumerator boundary.

◆ MediaRecorderContainerFormat

The format of the recording file.

Since
v3.5.2
Enumerator
FORMAT_MP4 

1: (Default) MP4.

FORMAT_FLV 

Reserved parameter.

◆ MediaRecorderStreamType

The recording content.

Since
v3.5.2
Enumerator
STREAM_TYPE_AUDIO 

Only audio.

STREAM_TYPE_VIDEO 

Only video.

STREAM_TYPE_BOTH 

(Default) Audio and video.

◆ RecorderState

The current recording state.

Since
v3.5.2
Enumerator
RECORDER_STATE_ERROR 

-1: An error occurs during the recording. See RecorderErrorCode for the reason.

RECORDER_STATE_START 

2: The audio and video recording is started.

RECORDER_STATE_STOP 

3: The audio and video recording is stopped.

◆ RecorderErrorCode

The reason for the state change

Since
v3.5.2
Enumerator
RECORDER_ERROR_NONE 

0: No error occurs.

RECORDER_ERROR_WRITE_FAILED 

1: The SDK fails to write the recorded data to a file.

RECORDER_ERROR_NO_STREAM 

2: The SDK does not detect audio and video streams to be recorded, or audio and video streams are interrupted for more than five seconds during recording.

RECORDER_ERROR_OVER_MAX_DURATION 

3: The recording duration exceeds the upper limit.

RECORDER_ERROR_CONFIG_CHANGED 

4: The recording configuration changes.

RECORDER_ERROR_CUSTOM_STREAM_DETECTED 

5: The SDK detects audio and video streams from users using versions of the SDK earlier than v3.0.0 in the COMMUNICATION channel profile.

Variable Documentation

◆ STANDARD_BITRATE

const int agora::rtc::STANDARD_BITRATE = 0

(Recommended) The standard bitrate set in the setVideoEncoderConfiguration method.

In this mode, the bitrates differ between the interactive live streaming and communication profiles:

  • COMMUNICATION profile: The video bitrate is the same as the base bitrate.
  • LIVE_BROADCASTING profile: The video bitrate is twice the base bitrate.

◆ COMPATIBLE_BITRATE

const int agora::rtc::COMPATIBLE_BITRATE = -1

The compatible bitrate set in the setVideoEncoderConfiguration method.

The bitrate remains the same regardless of the channel profile. If you choose this mode in the LIVE_BROADCASTING profile, the video frame rate may be lower than the set value.

◆ DEFAULT_MIN_BITRATE

const int agora::rtc::DEFAULT_MIN_BITRATE = -1

Use the default minimum bitrate.