Agora RTC Objective-C API Reference Refactor

Data Structures | Typedefs | Enumerations | Variables
agora::rtc Namespace Reference

## Data Structures
class | AAudioDeviceManager
struct | AdvancedAudioOptions
struct | AdvancedConfigInfo
struct | AdvanceOptions
class | AiEchoCancellationExtension
class | AINoiseSuppressorExtension
struct | AlphaChannel
struct | AudioDeviceInfo
struct | AudioEncodedFrameObserverConfig
struct | AudioEncoderConfiguration
struct | AudioParameters
struct | AudioPcmDataInfo
struct | AudioRecordingConfiguration
struct | AudioSinkWants
struct | AudioTrackConfig
struct | AudioVolumeInfo
struct | AudioVolumeInformation
class | AVideoDeviceManager
struct | BeautyOptions
struct | CameraCapturerConfiguration
struct | ChannelMediaInfo
struct | ChannelMediaOptions
struct | ChannelMediaRelayConfiguration
struct | ClientRoleOptions
struct | CodecCapInfo
struct | CodecCapLevels
struct | ColorEnhanceOptions
struct | ColorSpace
struct | DataStreamConfig
struct | DeviceInfo
struct | DirectCdnStreamingMediaOptions
struct | DirectCdnStreamingStats
struct | DownlinkNetworkInfo
struct | EchoTestConfiguration
struct | EncodedAudioFrameAdvancedSettings
struct | EncodedAudioFrameInfo
struct | EncodedVideoFrameInfo
struct | EncryptionConfig
struct | ExtensionInfo
struct | ExtensionInterfaceVersion
struct | ExtensionInterfaceVersion< IAudioFilter >
struct | ExtensionInterfaceVersion< IExtensionProvider >
struct | ExtensionInterfaceVersion< IExtensionProviderV2 >
struct | ExtensionInterfaceVersion< IExtensionVideoFilter >
struct | ExtensionInterfaceVersion< IScreenCaptureSource >
struct | ExtensionVersion
class | IAgoraVideoQualityAnalyzer
class | IAudioDeviceManagerObserver
class | IAudioEncodedFrameObserver
class | IAudioEncodedFrameReceiver
class | IAudioEncodedFrameSender
class | IAudioFilter
class | IAudioFilterBase
class | IAudioMixerSource
class | IAudioPcmDataSender
class | IAudioSinkBase
class | IAudioTrack
class | ICameraCaptureObserver
class | ICameraCapturer
class | IConfigCenter
class | IDirectCdnStreamingEventHandler
class | IExtensionControl
class | IExtensionProvider
class | IExtensionProviderV2
class | IExtensionVideoFilter
class | IFileUploaderService
class | IH265Transcoder
class | IH265TranscoderObserver
class | ILipSyncFilter
class | ILocalAudioTrack
class | ILocalAudioTrackObserver
class | ILocalUser
class | ILocalUserObserver
class | ILocalVideoTrack
struct | ImagePayloadData
struct | ImageTrackOptions
class | IMediaControlPacketReceiver
class | IMediaControlPacketSender
class | IMediaExtensionObserver
class | IMediaNodeFactory
class | IMediaPacketReceiver
class | IMediaPacketSender
class | IMediaPlayerSource
class | IMediaPlayerSourceObserver
class | IMediaRelayObserver
class | IMediaRelayService
class | IMediaStreamingSource
class | IMediaStreamingSourceObserver
class | IMetadataObserver
class | INetworkObserver
class | INGAudioDeviceManager
struct | InjectStreamConfig
struct | InputSeiData
class | IPacketObserver
class | IRecordingDeviceSource
class | IRemoteAudioMixerSource
class | IRemoteAudioTrack
class | IRemoteVideoTrack
class | IRtcConnection
class | IRtcConnectionObserver
class | IRtcEngine
class | IRtcEngineEventHandler
class | IRtcEngineEventHandlerEx
class | IRtcEngineEx
class | IRtmpConnection
class | IRtmpConnectionObserver
class | IRtmpLocalUser
class | IRtmpLocalUserObserver
class | IRtmpStreamingObserver
class | IRtmpStreamingService
class | IScreenCapturer
class | IScreenCapturer2
class | IScreenCaptureSource
class | IVideoBeautyFilter
class | IVideoDeviceCollection
class | IVideoDeviceManager
class | IVideoEncodedImageSender
class | IVideoFilter
class | IVideoFilterBase
class | IVideoFrame
class | IVideoFrameMemoryPool
class | IVideoFrameObserver2
class | IVideoFrameSender
class | IVideoFrameTransceiver
class | IVideoMixerSource
class | IVideoRenderer
class | IVideoSinkBase
class | IVideoTrack
struct | LastmileProbeConfig
struct | LastmileProbeOneWayResult
struct | LastmileProbeResult
struct | LeaveChannelOptions
struct | LiveStreamAdvancedFeature
struct | LiveTranscoding
struct | LocalAccessPointConfiguration
struct | LocalAudioStats
struct | LocalTranscoderConfiguration
struct | LocalVideoStats
struct | LocalVideoTrackStats
struct | LogUploadServerInfo
struct | LoopbackAudioTrackConfig
struct | LoopbackRecordingOption
struct | LowlightEnhanceOptions
struct | MixerLayoutConfig
struct | PaddedRawPixelBuffer
struct | PublisherConfiguration
struct | RawPixelBuffer
struct | RecorderStreamInfo
struct | Rectangle
struct | RemoteAudioStats
struct | RemoteAudioTrackStats
struct | RemoteVideoStats
struct | RemoteVideoTrackStats
struct | RtcConnection
struct | RtcConnectionConfiguration
struct | RtcEngineContext
struct | RtcImage
struct | RtcStats
struct | RtmpConnectionConfiguration
struct | RtmpConnectionInfo
struct | RtmpStreamingAudioConfiguration
struct | RtmpStreamingVideoConfiguration
struct | ScreenCaptureConfiguration
struct | ScreenCaptureParameters
struct | ScreenCaptureProfilingStatistics
struct | SegmentationProperty
struct | SenderOptions
struct | SimulcastStreamConfig
struct | TConnectionInfo
struct | TConnectSettings
struct | TextureInfo
struct | TranscodingUser
struct | TranscodingVideoStream
struct | UplinkNetworkInfo
struct | UserInfo
struct | VideoCanvas
struct | VideoCompositingLayout
struct | VideoDenoiserOptions
struct | VideoDimensions
struct | VideoEncoderConfiguration
struct | VideoFormat
struct | VideoFrameData
struct | VideoFrameDataV2
struct | VideoRenderingTracingInfo
struct | VideoSubscriptionOptions
struct | VideoTrackInfo
struct | VirtualBackgroundSource
struct | WatermarkOptions
struct | WatermarkRatio
struct | WlAccStats

## Typedefs
typedef struct agora::rtc::RtcImage | RtcImage

## Enumerations
enum | RTMP_CHANNEL_EVENT { RTMP_CHANNEL_EVENT_DISCONNECT = 0, RTMP_CHANNEL_EVENT_LEAVE_CHANNEL = 1, RTMP_CHANNEL_EVENT_BANNED_BY_SERVER = 2 }
enum | RTMP_CONNECTION_ERROR { RTMP_CONNECTION_ERR_OK = 0, RTMP_CONNECTION_ERR_FAILED = 1, RTMP_CONNECTION_ERR_INVALID_URL = 2, RTMP_CONNECTION_ERR_BAD_NAME = 3 }
enum | RTMP_CONNECTION_STATE { STATE_DISCONNECTED = 1, STATE_CONNECTING = 2, STATE_CONNECTED = 3, STATE_RECONNECTING = 4, STATE_FAILED = 5, STATE_RECONNECTED = 6 }
enum | PublishAudioError { PUBLISH_AUDIO_ERR_OK = 0, PUBLISH_AUDIO_ERR_FAILED = 1 }
enum | PublishVideoError { PUBLISH_VIDEO_ERR_OK = 0, PUBLISH_VIDEO_ERR_FAILED = 1 }
enum | USER_OFFLINE_REASON_TYPE { USER_OFFLINE_QUIT = 0, USER_OFFLINE_DROPPED = 1, USER_OFFLINE_BECOME_AUDIENCE = 2 }
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 | FIT_MODE_TYPE { MODE_COVER = 1, MODE_CONTAIN = 2 }
enum | VIDEO_ORIENTATION { VIDEO_ORIENTATION_0 = 0, VIDEO_ORIENTATION_90 = 90, VIDEO_ORIENTATION_180 = 180, VIDEO_ORIENTATION_270 = 270 }
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 | VIDEO_FRAME_TYPE { VIDEO_FRAME_TYPE_BLANK_FRAME = 0, VIDEO_FRAME_TYPE_KEY_FRAME = 3, VIDEO_FRAME_TYPE_DELTA_FRAME = 4, VIDEO_FRAME_TYPE_B_FRAME = 5, VIDEO_FRAME_TYPE_DROPPABLE_FRAME = 6, VIDEO_FRAME_TYPE_UNKNOW }
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, MAINTAIN_RESOLUTION = 3, DISABLED = 100 }
enum | SCREEN_CAPTURE_FRAMERATE_CAPABILITY
enum | VIDEO_CODEC_CAPABILITY_LEVEL { CODEC_CAPABILITY_LEVEL_UNSPECIFIED = -1, CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT = 5, CODEC_CAPABILITY_LEVEL_1080P30FPS = 10, CODEC_CAPABILITY_LEVEL_1080P60FPS = 20, CODEC_CAPABILITY_LEVEL_4K60FPS = 30 }
enum | VIDEO_CODEC_TYPE { , VIDEO_CODEC_VP8 = 1, VIDEO_CODEC_H264 = 2, VIDEO_CODEC_H265 = 3, VIDEO_CODEC_GENERIC = 6, VIDEO_CODEC_GENERIC_H264 = 7, VIDEO_CODEC_AV1 = 12, VIDEO_CODEC_VP9 = 13, VIDEO_CODEC_GENERIC_JPEG = 20 }
enum | TCcMode { CC_ENABLED, CC_DISABLED }
enum | AUDIO_CODEC_TYPE { AUDIO_CODEC_OPUS = 1, AUDIO_CODEC_PCMA = 3, AUDIO_CODEC_PCMU = 4, AUDIO_CODEC_G722 = 5, AUDIO_CODEC_AACLC = 8, AUDIO_CODEC_HEAAC = 9, AUDIO_CODEC_JC1 = 10, AUDIO_CODEC_HEAAC2 = 11, AUDIO_CODEC_LPCNET = 12, AUDIO_CODEC_OPUS4C = 13, AUDIO_CODEC_OPUS6C = 14, AUDIO_CODEC_OPUS8C = 15 }
enum | AUDIO_ENCODING_TYPE { AUDIO_ENCODING_TYPE_AAC_16000_LOW = 0x010101, AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM = 0x010102, AUDIO_ENCODING_TYPE_AAC_32000_LOW = 0x010201, AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM = 0x010202, AUDIO_ENCODING_TYPE_AAC_32000_HIGH = 0x010203, AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM = 0x010302, AUDIO_ENCODING_TYPE_AAC_48000_HIGH = 0x010303, AUDIO_ENCODING_TYPE_OPUS_16000_LOW = 0x020101, AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM = 0x020102, AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM = 0x020302, AUDIO_ENCODING_TYPE_OPUS_48000_HIGH = 0x020303 }
enum | WATERMARK_FIT_MODE { FIT_MODE_COVER_POSITION, FIT_MODE_USE_IMAGE_RATIO }
enum | H264PacketizeMode { NonInterleaved = 0, SingleNalUnit }
enum | VIDEO_STREAM_TYPE { VIDEO_STREAM_HIGH = 0, VIDEO_STREAM_LOW = 1 }
enum | COMPRESSION_PREFERENCE { PREFER_LOW_LATENCY, PREFER_QUALITY }
enum | ENCODING_PREFERENCE { PREFER_AUTO = -1, PREFER_SOFTWARE = 0, PREFER_HARDWARE = 1 }
enum | VIDEO_MIRROR_MODE_TYPE { VIDEO_MIRROR_MODE_AUTO = 0, VIDEO_MIRROR_MODE_ENABLED = 1, VIDEO_MIRROR_MODE_DISABLED = 2 }
enum | CODEC_CAP_MASK { CODEC_CAP_MASK_NONE = 0, CODEC_CAP_MASK_HW_DEC = 1 << 0, CODEC_CAP_MASK_HW_ENC = 1 << 1, CODEC_CAP_MASK_SW_DEC = 1 << 2, CODEC_CAP_MASK_SW_ENC = 1 << 3 }
enum | SIMULCAST_STREAM_MODE
enum | CLIENT_ROLE_TYPE { CLIENT_ROLE_BROADCASTER = 1, CLIENT_ROLE_AUDIENCE = 2 }
enum | QUALITY_ADAPT_INDICATION { ADAPT_NONE = 0, ADAPT_UP_BANDWIDTH = 1, ADAPT_DOWN_BANDWIDTH = 2 }
enum | AUDIENCE_LATENCY_LEVEL_TYPE { AUDIENCE_LATENCY_LEVEL_LOW_LATENCY = 1, AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY = 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 | AUDIO_AINS_MODE { AINS_MODE_BALANCED = 0, AINS_MODE_AGGRESSIVE = 1, AINS_MODE_ULTRALOWLATENCY = 2 }
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_GAME_STREAMING = 3, AUDIO_SCENARIO_CHATROOM = 5, AUDIO_SCENARIO_CHORUS = 7, AUDIO_SCENARIO_MEETING = 8, AUDIO_SCENARIO_NUM = 9 }
enum | VIDEO_CONTENT_HINT { 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 | VIDEO_APPLICATION_SCENARIO_TYPE { APPLICATION_SCENARIO_GENERAL = 0, APPLICATION_SCENARIO_MEETING = 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 | 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 | 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_DEVICE_INTERRUPT = 14, LOCAL_VIDEO_STREAM_ERROR_DEVICE_FATAL_ERROR = 15, LOCAL_VIDEO_STREAM_ERROR_DEVICE_SYSTEM_PRESSURE = 101, 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, LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED = 20, LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_FAILURE = 21, LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_NO_PERMISSION = 22, LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_PAUSED = 23, LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_RESUMED = 24, LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_HIDDEN = 25, LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN = 26, LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED = 27, LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED = 30 }
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, REMOTE_AUDIO_REASON_REMOTE_NO_PACKET_RECEIVE = 8, REMOTE_AUDIO_REASON_REMOTE_LOCAL_PLAY_FAILED = 9 }
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 | 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_VIDEO_STREAM_TYPE_CHANGE_TO_LOW = 10, REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH = 11, REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND = 12, REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT = 13 }
enum | REMOTE_USER_STATE { USER_STATE_MUTE_AUDIO = (1 << 0), USER_STATE_MUTE_VIDEO = (1 << 1), USER_STATE_ENABLE_VIDEO = (1 << 4), USER_STATE_ENABLE_LOCAL_VIDEO = (1 << 8) }
enum | REMOTE_VIDEO_DOWNSCALE_LEVEL { REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE, REMOTE_VIDEO_DOWNSCALE_LEVEL_1, REMOTE_VIDEO_DOWNSCALE_LEVEL_2, REMOTE_VIDEO_DOWNSCALE_LEVEL_3, REMOTE_VIDEO_DOWNSCALE_LEVEL_4 }
enum | AUDIO_SAMPLE_RATE_TYPE { AUDIO_SAMPLE_RATE_32000 = 32000, AUDIO_SAMPLE_RATE_44100 = 44100, AUDIO_SAMPLE_RATE_48000 = 48000 }
enum | VIDEO_CODEC_TYPE_FOR_STREAM { VIDEO_CODEC_H264_FOR_STREAM = 1, VIDEO_CODEC_H265_FOR_STREAM = 2 }
enum | VIDEO_CODEC_PROFILE_TYPE { VIDEO_CODEC_PROFILE_BASELINE = 66, VIDEO_CODEC_PROFILE_MAIN = 77, VIDEO_CODEC_PROFILE_HIGH = 100 }
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 | 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_PUBLISH_ERROR_INVALID_PRIVILEGE = 16, 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 | LASTMILE_PROBE_RESULT_STATE { LASTMILE_PROBE_RESULT_COMPLETE = 1, LASTMILE_PROBE_RESULT_INCOMPLETE_NO_BWE = 2, LASTMILE_PROBE_RESULT_UNAVAILABLE = 3 }
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_REJOIN_SUCCESS = 15, CONNECTION_CHANGED_LOST = 16, CONNECTION_CHANGED_ECHO_TEST = 17, CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER = 18, CONNECTION_CHANGED_SAME_UID_LOGIN = 19, CONNECTION_CHANGED_TOO_MANY_BROADCASTERS = 20, CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE = 21, CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE = 22 }
enum | CLIENT_ROLE_CHANGE_FAILED_REASON { CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS = 1, CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED = 2, CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT = 3, CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED = 4 }
enum | WLACC_MESSAGE_REASON { WLACC_MESSAGE_REASON_WEAK_SIGNAL = 0, WLACC_MESSAGE_REASON_CHANNEL_CONGESTION = 1 }
enum | WLACC_SUGGEST_ACTION { WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI = 0, WLACC_SUGGEST_ACTION_CONNECT_SSID = 1, WLACC_SUGGEST_ACTION_CHECK_5G = 2, WLACC_SUGGEST_ACTION_MODIFY_SSID = 3 }
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 | VIDEO_VIEW_SETUP_MODE { VIDEO_VIEW_SETUP_REPLACE = 0, VIDEO_VIEW_SETUP_ADD = 1, VIDEO_VIEW_SETUP_REMOVE = 2 }
enum | AUDIO_TRACK_TYPE { AUDIO_TRACK_INVALID = -1, AUDIO_TRACK_MIXABLE = 0, AUDIO_TRACK_DIRECT = 1 }
enum | LOOPBACK_AUDIO_TRACK_TYPE { LOOPBACK_SYSTEM = 0, LOOPBACK_SYSTEM_EXCLUDE_SELF = 1, LOOPBACK_APPLICATION = 2 }
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, ULTRA_HIGH_QUALITY_VOICE = 0x01040100 }
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, ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND = 0x02010900, 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, VOICE_CHANGER_CARTOON = 0x03010500, VOICE_CHANGER_CHILDLIKE = 0x03010600, VOICE_CHANGER_PHONE_OPERATOR = 0x03010700, VOICE_CHANGER_MONSTER = 0x03010800, VOICE_CHANGER_TRANSFORMERS = 0x03010900, VOICE_CHANGER_GROOT = 0x03010A00, VOICE_CHANGER_DARTH_VADER = 0x03010B00, VOICE_CHANGER_IRON_LADY = 0x03010C00, VOICE_CHANGER_SHIN_CHAN = 0x03010D00, VOICE_CHANGER_GIRLISH_MAN = 0x03010E00, VOICE_CHANGER_CHIPMUNK = 0x03010F00 }
enum | HEADPHONE_EQUALIZER_PRESET { HEADPHONE_EQUALIZER_OFF = 0x00000000, HEADPHONE_EQUALIZER_OVEREAR = 0x04000001, HEADPHONE_EQUALIZER_INEAR = 0x04000002 }
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 | AUDIO_FILE_RECORDING_TYPE { AUDIO_FILE_RECORDING_MIC = 1, AUDIO_FILE_RECORDING_PLAYBACK = 2, AUDIO_FILE_RECORDING_MIXED = 3 }
enum | AUDIO_ENCODED_FRAME_OBSERVER_POSITION { AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD = 1, AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK = 2, AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED = 3 }
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 | AREA_CODE_EX { AREA_CODE_OC = 0x00000040, AREA_CODE_SA = 0x00000080, AREA_CODE_AF = 0x00000100, AREA_CODE_KR = 0x00000200, AREA_CODE_HKMC = 0x00000400, AREA_CODE_US = 0x00000800, AREA_CODE_RU = 0x00001000, AREA_CODE_OVS = 0xFFFFFFFE }
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 | ENCRYPTION_MODE { AES_128_XTS = 1, AES_128_ECB = 2, AES_256_XTS = 3, SM4_128_ECB = 4, AES_128_GCM = 5, AES_256_GCM = 6, AES_128_GCM2 = 7, AES_256_GCM2 = 8, MODE_END }
enum | ENCRYPTION_ERROR_TYPE { ENCRYPTION_ERROR_INTERNAL_FAILURE = 0, ENCRYPTION_ERROR_DECRYPTION_FAILURE = 1, ENCRYPTION_ERROR_ENCRYPTION_FAILURE = 2, ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE = 3, ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE = 4 }
enum | PERMISSION_TYPE { RECORD_AUDIO = 0, CAMERA = 1 }
enum | MAX_USER_ACCOUNT_LENGTH_TYPE { MAX_USER_ACCOUNT_LENGTH = 256 }
enum | STREAM_SUBSCRIBE_STATE { SUB_STATE_IDLE = 0, SUB_STATE_NO_SUBSCRIBED = 1, SUB_STATE_SUBSCRIBING = 2, SUB_STATE_SUBSCRIBED = 3 }
enum | STREAM_PUBLISH_STATE { PUB_STATE_IDLE = 0, PUB_STATE_NO_PUBLISHED = 1, PUB_STATE_PUBLISHING = 2, PUB_STATE_PUBLISHED = 3 }
enum | EAR_MONITORING_FILTER_TYPE { EAR_MONITORING_FILTER_NONE = (1<<0), EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS = (1<<1), EAR_MONITORING_FILTER_NOISE_SUPPRESSION = (1<<2), EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER = (1<<15) }
enum | THREAD_PRIORITY_TYPE { LOWEST = 0, LOW = 1, NORMAL = 2, HIGH = 3, HIGHEST = 4, CRITICAL = 5 }
enum | MEDIA_TRACE_EVENT { MEDIA_TRACE_EVENT_VIDEO_RENDERED = 0, MEDIA_TRACE_EVENT_VIDEO_DECODED }
enum | LOCAL_PROXY_MODE { ConnectivityFirst = 0, LocalOnly = 1 }
enum | VIDEO_SOURCE_TYPE { VIDEO_SOURCE_CAMERA_PRIMARY = 0 , VIDEO_SOURCE_CAMERA_SECONDARY = 1, VIDEO_SOURCE_SCREEN_PRIMARY = 2 , VIDEO_SOURCE_SCREEN_SECONDARY = 3, VIDEO_SOURCE_CUSTOM = 4, VIDEO_SOURCE_MEDIA_PLAYER = 5, VIDEO_SOURCE_RTC_IMAGE_PNG = 6, VIDEO_SOURCE_RTC_IMAGE_JPEG = 7, VIDEO_SOURCE_RTC_IMAGE_GIF = 8, VIDEO_SOURCE_REMOTE = 9, VIDEO_SOURCE_TRANSCODED = 10, VIDEO_SOURCE_CAMERA_THIRD = 11, VIDEO_SOURCE_CAMERA_FOURTH = 12, VIDEO_SOURCE_SCREEN_THIRD = 13, VIDEO_SOURCE_SCREEN_FOURTH = 14, VIDEO_SOURCE_SPEECH_DRIVEN = 15 }
enum | AudioRoute { ROUTE_DEFAULT = -1, ROUTE_HEADSET = 0, ROUTE_EARPIECE = 1, ROUTE_HEADSETNOMIC = 2, ROUTE_SPEAKERPHONE = 3, ROUTE_LOUDSPEAKER = 4, ROUTE_HEADSETBLUETOOTH = 5, ROUTE_USB = 6, ROUTE_HDMI = 7, ROUTE_DISPLAYPORT = 8, ROUTE_AIRPLAY = 9, ROUTE_VIRTUAL = 10, ROUTE_CONTINUITY = 11 }
enum | BYTES_PER_SAMPLE { TWO_BYTES_PER_SAMPLE = 2 }
enum | RAW_AUDIO_FRAME_OP_MODE_TYPE { RAW_AUDIO_FRAME_OP_MODE_READ_ONLY = 0, RAW_AUDIO_FRAME_OP_MODE_READ_WRITE = 2 }
enum | TRACK_AUDIO_MIXED_POLICY_TYPE { TRACK_AUDIO_MIXED_LOCAL = 1 << 0, TRACK_AUDIO_MIXED_REMOTE = 1 << 1 }
enum | H265_TRANSCODE_RESULT { H265_TRANSCODE_RESULT_UNKNOWN = -1, H265_TRANSCODE_RESULT_SUCCESS = 0, H265_TRANSCODE_RESULT_REQUEST_INVALID = 1, H265_TRANSCODE_RESULT_UNAUTHORIZED = 2, H265_TRANSCODE_RESULT_TOKEN_EXPIRED = 3, H265_TRANSCODE_RESULT_FORBIDDEN = 4, H265_TRANSCODE_RESULT_NOT_FOUND = 5, H265_TRANSCODE_RESULT_CONFLICTED = 6, H265_TRANSCODE_RESULT_NOT_SUPPORTED = 7, H265_TRANSCODE_RESULT_TOO_OFTEN = 8, H265_TRANSCODE_RESULT_SERVER_INTERNAL_ERROR = 9, H265_TRANSCODE_RESULT_SERVICE_UNAVAILABLE = 10 }
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, AUDIO_VIRTUAL_PLAYOUT_DEVICE = 5, AUDIO_VIRTUAL_RECORDING_DEVICE = 6 }
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_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_ONE_LOOP_COMPLETED = 721, AUDIO_MIXING_REASON_ALL_LOOPS_COMPLETED = 723, AUDIO_MIXING_REASON_STOPPED_BY_USER = 724, AUDIO_MIXING_REASON_OK = 0 }
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 | 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 | RTMP_STREAM_LIFE_CYCLE_TYPE { RTMP_STREAM_LIFE_CYCLE_BIND2CHANNEL = 1, RTMP_STREAM_LIFE_CYCLE_BIND2OWNER = 2 }
enum | CAMERA_DIRECTION { CAMERA_REAR = 0, CAMERA_FRONT = 1 }
enum | CLOUD_PROXY_TYPE { NONE_PROXY = 0, UDP_PROXY = 1 }
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 }

## Variables
const int | STANDARD_BITRATE = 0
const int | COMPATIBLE_BITRATE = -1
const int | DEFAULT_MIN_BITRATE = -1
const int | DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2

## Typedef Documentation

## ◆ VideoSourceType

typedef int32_t VideoSourceType

## ◆ RtcImage

typedef struct agora::rtc::RtcImage RtcImage

Image properties.

## ◆ uid_t

typedef unsigned int uid_t

## ◆ track_id_t

typedef unsigned int track_id_t

## ◆ conn_id_t

typedef unsigned int conn_id_t

## ◆ video_track_id_t

typedef unsigned int video_track_id_t

## Enumeration Type Documentation

## ◆ RTMP_CHANNEL_EVENT

enum RTMP_CHANNEL_EVENT

The events in the RTMP channel.

Enumerator
RTMP_CHANNEL_EVENT_DISCONNECT | 0: The live stream service is disconnected.
RTMP_CHANNEL_EVENT_LEAVE_CHANNEL | 1: The live stream service has left the channel.
RTMP_CHANNEL_EVENT_BANNED_BY_SERVER | 2: The live stream service is banned by the server.

## ◆ RTMP_CONNECTION_ERROR

enum RTMP_CONNECTION_ERROR

The RTMP Connection error codes.

Enumerator
RTMP_CONNECTION_ERR_OK | 0: No error occurs.
RTMP_CONNECTION_ERR_FAILED | 1: A general error occurs (no specified reason).
RTMP_CONNECTION_ERR_INVALID_URL | 2: The rtmp url is invalid.
RTMP_CONNECTION_ERR_BAD_NAME | 3: Already exist stream name.

## ◆ RTMP_CONNECTION_STATE

enum RTMP_CONNECTION_STATE

The connection state between the SDK and the RTMP server.

Enumerator
STATE_DISCONNECTED | 1: The SDK is disconnected from the RTMP server. This is the initial state when an RTMP Connetion is created by the createRtmpConnection method. The RTMP Connection also enters this state if you call the disconnect method when the SDK is in the STATE_CONNECTING(2), STATE_CONNECTED(3), STATE_RECONNECTING(4) or STATE_FAILED(5) state.
STATE_CONNECTING | 2: The SDK is connecting to the RTMP server. The SDK goes to this state after you call the connect method, indicating that the SDK is in the process of establishing a connection to the RTMP server. Once successfully connected, it enters the STATE_CONNECTED(3) state. If the SDK fails to connect to RTMP server, the SDK goes to STATE_FAILED(5).
STATE_CONNECTED | 3: The SDK is connected to the RTMP server. This state indicates that the SDK has established a connection to the RTMP server, and you can publish media streams through this connection. Once the connection is interrupted, for example, due to network deterioration or network type change, the SDK tries to reconnect to the RTMP server and enters the STATE_RECONNECTING(4) state.
STATE_RECONNECTING | 4: The SDK is reconnecting to the RTMP server. This state indicates that the connection is interrupted by some network issue. The SDK keeps trying connecting to the server. If the SDK fails to reconnect, the SDK goes to STATE_FAILED(5).
STATE_FAILED | 5: The SDK fails to connect to the RTMP server. In this state, SDK stops connecting to the server. Call the disconnect method to leave this state and the connect method to reconnect.
STATE_RECONNECTED | 6: The SDK is reconnected to the RTMP server. This state indicates that the connection is interrupted by some network issue. The SDK keeps trying connecting to the server. If the SDK reconnected to server, the SDK goes to STATE_RECONNECTED(6).

## ◆ PublishAudioError

enum PublishAudioError

The error occurs while publising audio stream.

Enumerator
PUBLISH_AUDIO_ERR_OK | 0: No error occurs.
PUBLISH_AUDIO_ERR_FAILED | 1: A general error occurs (no specified reason).

## ◆ PublishVideoError

enum PublishVideoError

The error occurs while publising video stream.

Enumerator
PUBLISH_VIDEO_ERR_OK | 0: No error occurs.
PUBLISH_VIDEO_ERR_FAILED | 1: A general error occurs (no specified reason).

## ◆ ImageType

enum ImageType

Enumerator
kPng |
kJpeg |
kGif |

## ◆ VideoTrackType

enum VideoTrackType

Enumerator
LOCAL_VIDEO_TRACK |
REMOTE_VIDEO_TRACK |
REMOTE_VIDEO_IMAGE_TRACK |

## ◆ USER_OFFLINE_REASON_TYPE

enum USER_OFFLINE_REASON_TYPE

Reasons for a user being offline.

Enumerator
USER_OFFLINE_QUIT | 0: The user leaves the current channel.
USER_OFFLINE_DROPPED | 1: The SDK times out and the user drops offline because no data packet was received within a certain period of time. If a user quits the call and the message is not passed to the SDK (due to an unreliable channel), the SDK assumes that the user drops offline.
USER_OFFLINE_BECOME_AUDIENCE | 2: The user switches the client role from the host to the audience.

## ◆ INTERFACE_ID_TYPE

enum INTERFACE_ID_TYPE

Enumerator
AGORA_IID_AUDIO_DEVICE_MANAGER |
AGORA_IID_VIDEO_DEVICE_MANAGER |
AGORA_IID_PARAMETER_ENGINE |
AGORA_IID_MEDIA_ENGINE |
AGORA_IID_AUDIO_ENGINE |
AGORA_IID_VIDEO_ENGINE |
AGORA_IID_RTC_CONNECTION |
AGORA_IID_SIGNALING_ENGINE |
AGORA_IID_MEDIA_ENGINE_REGULATOR |
AGORA_IID_CLOUD_SPATIAL_AUDIO |
AGORA_IID_LOCAL_SPATIAL_AUDIO |
AGORA_IID_STATE_SYNC |
AGORA_IID_METACHAT_SERVICE |
AGORA_IID_MUSIC_CONTENT_CENTER |
AGORA_IID_H265_TRANSCODER |

## ◆ QUALITY_TYPE

enum QUALITY_TYPE

The network quality types.

Enumerator
QUALITY_UNKNOWN | 0: The network quality is unknown. Deprecated: This member is deprecated.
QUALITY_EXCELLENT | 1: The quality is excellent.
QUALITY_GOOD | 2: The 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: Users can barely communicate.
QUALITY_DOWN | 6: Users cannot communicate at all.
QUALITY_UNSUPPORTED | 7: (For future use) The network quality cannot be detected.
QUALITY_DETECTING | 8: Detecting the network quality.

## ◆ FIT_MODE_TYPE

enum FIT_MODE_TYPE

Content fit modes.

Enumerator
MODE_COVER | 1: Uniformly scale the video until it fills the visible boundaries (cropped). One dimension of the video may have clipped contents.
MODE_CONTAIN | 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.

## ◆ VIDEO_ORIENTATION

enum VIDEO_ORIENTATION

The rotation information.

Enumerator
VIDEO_ORIENTATION_0 | 0: Rotate the video by 0 degree clockwise.
VIDEO_ORIENTATION_90 | 90: Rotate the video by 90 degrees clockwise.
VIDEO_ORIENTATION_180 | 180: Rotate the video by 180 degrees clockwise.
VIDEO_ORIENTATION_270 | 270: Rotate the video by 270 degrees clockwise.

## ◆ FRAME_RATE

enum FRAME_RATE

The video frame rate.

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. Applies to Windows and macOS only.

## ◆ FRAME_WIDTH

enum FRAME_WIDTH

Enumerator
FRAME_WIDTH_960 |

## ◆ FRAME_HEIGHT

enum FRAME_HEIGHT

Enumerator
FRAME_HEIGHT_540 |

## ◆ VIDEO_FRAME_TYPE

enum VIDEO_FRAME_TYPE

Types of the video frame.

Enumerator
VIDEO_FRAME_TYPE_BLANK_FRAME | 0: A black frame.
VIDEO_FRAME_TYPE_KEY_FRAME | 3: Key frame.
VIDEO_FRAME_TYPE_DELTA_FRAME | 4: Delta frame.
VIDEO_FRAME_TYPE_B_FRAME | 5: The B frame.
VIDEO_FRAME_TYPE_DROPPABLE_FRAME | 6: A discarded frame.
VIDEO_FRAME_TYPE_UNKNOW | Unknown frame.

## ◆ ORIENTATION_MODE

enum ORIENTATION_MODE

Video output orientation modes.

Enumerator
ORIENTATION_MODE_ADAPTIVE | 0: The output video always follows the orientation of the captured video. The receiver takes the rotational information passed on from the video encoder. This mode applies to scenarios where video orientation can be adjusted on the receiver: If the captured video is in landscape mode, the output video is in landscape mode. If the captured video is in portrait mode, the output video is in portrait mode.
ORIENTATION_MODE_FIXED_LANDSCAPE | 1: Landscape mode. In this mode, the SDK always outputs videos in landscape (horizontal) mode. If the captured video is in portrait mode, the video encoder crops it to fit the output. Applies to situations where the receiving end cannot process the rotational information. For example, CDN live streaming.
ORIENTATION_MODE_FIXED_PORTRAIT | 2: Portrait mode. In this mode, the SDK always outputs video in portrait (portrait) mode. If the captured video is in landscape mode, the video encoder crops it to fit the output. Applies to situations where the receiving end cannot process the rotational information. For example, CDN live streaming.

## ◆ DEGRADATION_PREFERENCE

enum DEGRADATION_PREFERENCE

(For future use) 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.
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.
MAINTAIN_RESOLUTION | 3: Degrade framerate in order to maintain resolution.
DISABLED | 4: Disable VQC adjustion.

## ◆ SCREEN_CAPTURE_FRAMERATE_CAPABILITY

enum SCREEN_CAPTURE_FRAMERATE_CAPABILITY

screen sharing supported capability level.

Enumerator
SCREEN_CAPTURE_FRAMERATE_CAPABILITY_15_FPS |
SCREEN_CAPTURE_FRAMERATE_CAPABILITY_30_FPS |
SCREEN_CAPTURE_FRAMERATE_CAPABILITY_60_FPS |

## ◆ VIDEO_CODEC_CAPABILITY_LEVEL

enum VIDEO_CODEC_CAPABILITY_LEVEL

Video codec capability levels.

Enumerator
CODEC_CAPABILITY_LEVEL_UNSPECIFIED | No specified level
CODEC_CAPABILITY_LEVEL_BASIC_SUPPORT | Only provide basic support for the codec type
CODEC_CAPABILITY_LEVEL_1080P30FPS | Can process 1080p video at a rate of approximately 30 fps.
CODEC_CAPABILITY_LEVEL_1080P60FPS | Can process 1080p video at a rate of approximately 60 fps.
CODEC_CAPABILITY_LEVEL_4K60FPS | Can process 4k video at a rate of approximately 30 fps.

## ◆ VIDEO_CODEC_TYPE

enum VIDEO_CODEC_TYPE

The video codec types.

Enumerator
VIDEO_CODEC_NONE |
VIDEO_CODEC_VP8 | 1: Standard VP8.
VIDEO_CODEC_H264 | 2: Standard H.264.
VIDEO_CODEC_H265 | 3: Standard H.265.
VIDEO_CODEC_GENERIC | 6: Generic. This type is used for transmitting raw video data, such as encrypted video frames. The SDK returns this type of video frames in callbacks, and you need to decode and render the frames yourself.
VIDEO_CODEC_GENERIC_H264 | 7: Generic H264.
VIDEO_CODEC_AV1 | 12: AV1.
VIDEO_CODEC_VP9 | 5: VP9.
VIDEO_CODEC_GENERIC_JPEG | 20: Generic JPEG. This type consumes minimum computing resources and applies to IoT devices.

## ◆ TCcMode

enum TCcMode

The CC (Congestion Control) mode options.

Enumerator
CC_ENABLED | Enable CC mode.
CC_DISABLED | Disable CC mode.

## ◆ AUDIO_CODEC_TYPE

enum AUDIO_CODEC_TYPE

Audio codec types.

Enumerator
AUDIO_CODEC_OPUS | 1: OPUS.
AUDIO_CODEC_PCMA | 3: PCMA.
AUDIO_CODEC_PCMU | 4: PCMU.
AUDIO_CODEC_G722 | 5: G722.
AUDIO_CODEC_AACLC | 7: AAC. 8: AAC LC.
AUDIO_CODEC_HEAAC | 9: HE AAC.
AUDIO_CODEC_JC1 | 10: JC1.
AUDIO_CODEC_HEAAC2 | 11: HE-AAC v2.
AUDIO_CODEC_LPCNET | 12: LPCNET.
AUDIO_CODEC_OPUS4C | 13: Opus codec, supporting 4-channel audio.
AUDIO_CODEC_OPUS6C | 14: Opus codec, supporting 6-channel audio.
AUDIO_CODEC_OPUS8C | 15: Opus codec, supporting 8-channel audio.

## ◆ AUDIO_ENCODING_TYPE

enum AUDIO_ENCODING_TYPE

Audio encoding types of the audio encoded frame observer.

Enumerator
AUDIO_ENCODING_TYPE_AAC_16000_LOW | AAC encoding format, 16000 Hz sampling rate, bass quality. A file with an audio duration of 10 minutes is approximately 1.2 MB after encoding.
AUDIO_ENCODING_TYPE_AAC_16000_MEDIUM | AAC encoding format, 16000 Hz sampling rate, medium sound quality. A file with an audio duration of 10 minutes is approximately 2 MB after encoding.
AUDIO_ENCODING_TYPE_AAC_32000_LOW | AAC encoding format, 32000 Hz sampling rate, bass quality. A file with an audio duration of 10 minutes is approximately 1.2 MB after encoding.
AUDIO_ENCODING_TYPE_AAC_32000_MEDIUM | AAC encoding format, 32000 Hz sampling rate, medium sound quality. A file with an audio duration of 10 minutes is approximately 2 MB after encoding.
AUDIO_ENCODING_TYPE_AAC_32000_HIGH | AAC encoding format, 32000 Hz sampling rate, high sound quality. A file with an audio duration of 10 minutes is approximately 3.5 MB after encoding.
AUDIO_ENCODING_TYPE_AAC_48000_MEDIUM | AAC encoding format, 48000 Hz sampling rate, medium sound quality. A file with an audio duration of 10 minutes is approximately 2 MB after encoding.
AUDIO_ENCODING_TYPE_AAC_48000_HIGH | AAC encoding format, 48000 Hz sampling rate, high sound quality. A file with an audio duration of 10 minutes is approximately 3.5 MB after encoding.
AUDIO_ENCODING_TYPE_OPUS_16000_LOW | OPUS encoding format, 16000 Hz sampling rate, bass quality. A file with an audio duration of 10 minutes is approximately 2 MB after encoding.
AUDIO_ENCODING_TYPE_OPUS_16000_MEDIUM | OPUS encoding format, 16000 Hz sampling rate, medium sound quality. A file with an audio duration of 10 minutes is approximately 2 MB after encoding.
AUDIO_ENCODING_TYPE_OPUS_48000_MEDIUM | OPUS encoding format, 48000 Hz sampling rate, medium sound quality. A file with an audio duration of 10 minutes is approximately 2 MB after encoding.
AUDIO_ENCODING_TYPE_OPUS_48000_HIGH | OPUS encoding format, 48000 Hz sampling rate, high sound quality. A file with an audio duration of 10 minutes is approximately 3.5 MB after encoding.

## ◆ WATERMARK_FIT_MODE

enum WATERMARK_FIT_MODE

The adaptation mode of the watermark.

Enumerator
FIT_MODE_COVER_POSITION | Use the `positionInLandscapeMode` and `positionInPortraitMode` values you set in WatermarkOptions. The settings in `WatermarkRatio` are invalid.
FIT_MODE_USE_IMAGE_RATIO | Use the value you set in `WatermarkRatio`. The settings in `positionInLandscapeMode` and `positionInPortraitMode` in `WatermarkOptions` are invalid.

## ◆ H264PacketizeMode

enum H264PacketizeMode

Packetization modes. Applies to H.264 only.

Enumerator
NonInterleaved | Non-interleaved mode. See RFC 6184.
SingleNalUnit | Single NAL unit mode. See RFC 6184.

## ◆ VIDEO_STREAM_TYPE

enum VIDEO_STREAM_TYPE

Video stream types.

Enumerator
VIDEO_STREAM_HIGH | 0: The high-quality video stream, which has a higher resolution and bitrate.
VIDEO_STREAM_LOW | 1: The low-quality video stream, which has a lower resolution and bitrate.

## ◆ COMPRESSION_PREFERENCE

enum COMPRESSION_PREFERENCE

Video compression preference.

Enumerator
PREFER_LOW_LATENCY | (Default) Low latency is preferred, usually used in real-time communication where low latency is the number one priority.
PREFER_QUALITY | Prefer quality in sacrifice of a degree of latency, usually around 30ms ~ 150ms, depends target fps

## ◆ ENCODING_PREFERENCE

enum ENCODING_PREFERENCE

The video encoder type preference.

Enumerator
PREFER_AUTO | Default .
PREFER_SOFTWARE | Software encoding.
PREFER_HARDWARE | Hardware encoding

## ◆ VIDEO_MIRROR_MODE_TYPE

enum VIDEO_MIRROR_MODE_TYPE

Video mirror mode types.

Enumerator
VIDEO_MIRROR_MODE_AUTO | 0: The mirror mode determined by the SDK.
VIDEO_MIRROR_MODE_ENABLED | 1: Enable the mirror mode.
VIDEO_MIRROR_MODE_DISABLED | 2: Disable the mirror mode.

## ◆ CODEC_CAP_MASK

enum CODEC_CAP_MASK

Supported codec type bit mask.

Enumerator
CODEC_CAP_MASK_NONE | 0: No codec support.
CODEC_CAP_MASK_HW_DEC | bit 1: Hardware decoder support flag.
CODEC_CAP_MASK_HW_ENC | bit 2: Hardware encoder support flag.
CODEC_CAP_MASK_SW_DEC | bit 3: Software decoder support flag.
CODEC_CAP_MASK_SW_ENC | bit 4: Software encoder support flag.

## ◆ SIMULCAST_STREAM_MODE

enum SIMULCAST_STREAM_MODE

The definition of SIMULCAST_STREAM_MODE

Enumerator
AUTO_SIMULCAST_STREAM |
DISABLE_SIMULCAST_STREAM |
ENABLE_SIMULCAST_STREAM |

## ◆ CLIENT_ROLE_TYPE

enum CLIENT_ROLE_TYPE

User role types.

Enumerator
CLIENT_ROLE_BROADCASTER | 1: Broadcaster. A broadcaster can both send and receive streams.
CLIENT_ROLE_AUDIENCE | 2: Audience. An audience member can only receive streams.

## ◆ QUALITY_ADAPT_INDICATION

enum 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 | 0: The quality of the local video stays the same.
ADAPT_UP_BANDWIDTH | 1: The quality improves because the network bandwidth increases.
ADAPT_DOWN_BANDWIDTH | 2: The quality worsens because the network bandwidth decreases.

## ◆ AUDIENCE_LATENCY_LEVEL_TYPE

enum AUDIENCE_LATENCY_LEVEL_TYPE

The latency level of an audience member in interactive live streaming. This enum takes effect only when the user role is set to `CLIENT_ROLE_AUDIENCE`.

Enumerator
AUDIENCE_LATENCY_LEVEL_LOW_LATENCY | 1: Low latency.
AUDIENCE_LATENCY_LEVEL_ULTRA_LOW_LATENCY | 2: Ultra low latency.

## ◆ EXPERIENCE_QUALITY_TYPE

enum EXPERIENCE_QUALITY_TYPE

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

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

enum EXPERIENCE_POOR_REASON

Reasons why the QoE of the local user when receiving a remote audio stream is poor.

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.

## ◆ AUDIO_AINS_MODE

enum AUDIO_AINS_MODE

Audio AINS mode

Enumerator
AINS_MODE_BALANCED | AINS mode with soft suppression level.
AINS_MODE_AGGRESSIVE | AINS mode with high suppression level.
AINS_MODE_ULTRALOWLATENCY | AINS mode with high suppression level and ultra-low-latency

## ◆ AUDIO_PROFILE_TYPE

enum AUDIO_PROFILE_TYPE

Audio profile types.

Enumerator
AUDIO_PROFILE_DEFAULT | 0: The default audio profile. 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. of up to 16 Kbps. For the Live-broadcast profile: A sample rate of 48 kHz, music encoding, mono, and a bitrate of up to 64 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. To implement stereo audio, you also need to call `setAdvancedAudioOptions` and set `audioProcessingChannels` to `AUDIO_PROCESSING_STEREO` in `AdvancedAudioOptions`.
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. To implement stereo audio, you also need to call `setAdvancedAudioOptions` and set `audioProcessingChannels` to `AUDIO_PROCESSING_STEREO` in `AdvancedAudioOptions`.
AUDIO_PROFILE_IOT | 6: A sample rate of 16 kHz, audio encoding, mono, and Acoustic Echo Cancellation (AES) enabled.
AUDIO_PROFILE_NUM |

## ◆ AUDIO_SCENARIO_TYPE

enum AUDIO_SCENARIO_TYPE

The audio scenario.

Enumerator
AUDIO_SCENARIO_DEFAULT | 0: Automatic scenario, where the SDK chooses the appropriate audio quality according to the user role and audio route.
AUDIO_SCENARIO_GAME_STREAMING | 3: (Recommended) The live gaming scenario, which needs to enable gaming audio effects in the speaker. Choose this scenario to achieve high-fidelity music playback.
AUDIO_SCENARIO_CHATROOM | 5: The chatroom scenario, which needs to keep recording when setClientRole to audience. Normally, app developer can also use mute api to achieve the same result, and we implement this 'non-orthogonal' behavior only to make API backward compatible.
AUDIO_SCENARIO_CHORUS | 7: Real-time chorus scenario, where users have good network conditions and require ultra-low latency.
AUDIO_SCENARIO_MEETING | 8: Meeting
AUDIO_SCENARIO_NUM | 9: The number of enumerations.

## ◆ VIDEO_CONTENT_HINT

enum VIDEO_CONTENT_HINT

Video content hints.

Enumerator
CONTENT_HINT_NONE | (Default) No content hint. In this case, the SDK balances smoothness with sharpness.
CONTENT_HINT_MOTION | Choose this option if you prefer smoothness or when you are sharing motion-intensive content such as a video clip, movie, or video game.
CONTENT_HINT_DETAILS | Choose this option if you prefer sharpness or when you are sharing montionless content such as a picture, PowerPoint slide, ot text.

## ◆ SCREEN_SCENARIO_TYPE

enum SCREEN_SCENARIO_TYPE

The screen sharing scenario.

Enumerator
SCREEN_SCENARIO_DOCUMENT | 1: 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.

## ◆ VIDEO_APPLICATION_SCENARIO_TYPE

enum VIDEO_APPLICATION_SCENARIO_TYPE

The video application scenario type.

Enumerator
APPLICATION_SCENARIO_GENERAL | 0: Default Scenario.
APPLICATION_SCENARIO_MEETING | 1: Meeting Scenario. This scenario is the best QoE practice of meeting application.

## ◆ CAPTURE_BRIGHTNESS_LEVEL_TYPE

enum CAPTURE_BRIGHTNESS_LEVEL_TYPE

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

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.

## ◆ CAMERA_STABILIZATION_MODE

enum CAMERA_STABILIZATION_MODE

Enumerator
CAMERA_STABILIZATION_MODE_OFF | The camera stabilization mode is disabled.
CAMERA_STABILIZATION_MODE_AUTO | device choose stabilization mode automatically.
CAMERA_STABILIZATION_MODE_LEVEL_1 | stabilization mode level 1.
CAMERA_STABILIZATION_MODE_LEVEL_2 | stabilization mode level 2.
CAMERA_STABILIZATION_MODE_LEVEL_3 | stabilization mode level 3.
CAMERA_STABILIZATION_MODE_MAX_LEVEL | The maximum level of the camera stabilization mode.

## ◆ LOCAL_AUDIO_STREAM_STATE

enum LOCAL_AUDIO_STREAM_STATE

Local audio states.

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

enum LOCAL_AUDIO_STREAM_ERROR

Local audio state error codes.

Enumerator
LOCAL_AUDIO_STREAM_ERROR_OK | 0: The local audio is normal.
LOCAL_AUDIO_STREAM_ERROR_FAILURE | 1: No specified reason for the local audio failure. Remind your users to try to rejoin the channel.
LOCAL_AUDIO_STREAM_ERROR_DEVICE_NO_PERMISSION | 2: No permission to use the local audio device. Remind your users to grant permission.
LOCAL_AUDIO_STREAM_ERROR_DEVICE_BUSY | 3: (Android and iOS only) The local audio capture device is used. Remind your users to check whether another application occupies the microphone. Local audio capture automatically resume 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: The SDK cannot find the local audio recording device.
LOCAL_AUDIO_STREAM_ERROR_NO_PLAYOUT_DEVICE | 7: The SDK cannot find the local audio playback device.
LOCAL_AUDIO_STREAM_ERROR_INTERRUPTED | 8: The local audio capturing is interrupted by the system call.
LOCAL_AUDIO_STREAM_ERROR_RECORD_INVALID_ID | 9: An invalid audio capture device ID.
LOCAL_AUDIO_STREAM_ERROR_PLAYOUT_INVALID_ID | 10: An invalid audio playback device ID.

## ◆ LOCAL_VIDEO_STREAM_STATE

enum LOCAL_VIDEO_STREAM_STATE

Local video state types.

Enumerator
LOCAL_VIDEO_STREAM_STATE_STOPPED | 0: The local video is in the initial state.
LOCAL_VIDEO_STREAM_STATE_CAPTURING | 1: The local video capturing device starts successfully. The SDK also reports this state when you call `startScreenCaptureByWindowId` to share a maximized window.
LOCAL_VIDEO_STREAM_STATE_ENCODING | 2: The first video frame is successfully encoded.
LOCAL_VIDEO_STREAM_STATE_FAILED | 3: Fails to start the local video.

## ◆ LOCAL_VIDEO_STREAM_ERROR

enum LOCAL_VIDEO_STREAM_ERROR

Local video state error codes.

Enumerator
LOCAL_VIDEO_STREAM_ERROR_OK | 0: The local video is normal.
LOCAL_VIDEO_STREAM_ERROR_FAILURE | 1: No specified reason for the local video failure.
LOCAL_VIDEO_STREAM_ERROR_DEVICE_NO_PERMISSION | 2: No permission to use the local video capturing device. Remind the user to grant permission and rejoin the channel.
LOCAL_VIDEO_STREAM_ERROR_DEVICE_BUSY | 3: The local video capturing device is in use. Remind the user to check whether another application occupies the camera.
LOCAL_VIDEO_STREAM_ERROR_CAPTURE_FAILURE | 4: The local video capture fails. Remind the user to check whether the video capture device is working properly or the camera is occupied by another application, and then to rejoin the channel.
LOCAL_VIDEO_STREAM_ERROR_ENCODE_FAILURE | 5: The local video encoder is not supported.
LOCAL_VIDEO_STREAM_ERROR_CAPTURE_INBACKGROUND | 6: (iOS only) The app is in the background. Remind the user that video capture cannot be performed normally when the app is in the background.
LOCAL_VIDEO_STREAM_ERROR_CAPTURE_MULTIPLE_FOREGROUND_APPS | 7: (iOS only) The current application window is running in Slide Over, Split View, or Picture in Picture mode, and another app is occupying the camera. Remind the 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.
LOCAL_VIDEO_STREAM_ERROR_DEVICE_NOT_FOUND | 8: Fails to find a local video capture device. Remind the user to check whether the camera is connected to the device properly or the camera is working properly, and then to rejoin the channel.
LOCAL_VIDEO_STREAM_ERROR_DEVICE_DISCONNECTED | 9: (macOS only) The video capture device currently in use is disconnected (such as being unplugged).
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.
LOCAL_VIDEO_STREAM_ERROR_DEVICE_INTERRUPT | 14: (Android only) Video capture was interrupted, possibly due to the camera being occupied or some policy reasons such as background termination.
LOCAL_VIDEO_STREAM_ERROR_DEVICE_FATAL_ERROR | 15: (Android only) The device may need to be shut down and restarted to restore camera function, or there may be a persistent hardware problem.
LOCAL_VIDEO_STREAM_ERROR_DEVICE_SYSTEM_PRESSURE | 101: The current video capture device is unavailable due to excessive system pressure.
LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_MINIMIZED | 11: (macOS only) 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, for example by 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 a web video or reads a 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: The local screen capture window is occluded.
LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_NOT_SUPPORTED | 20: The local screen capture window is not supported.
LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_FAILURE | 21: The screen capture fails.
LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_NO_PERMISSION | 22: No permision to capture screen.
LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_PAUSED | 23: The screen capture paused. Common scenarios for reporting this error code: When the desktop switch to the secure desktop such as UAC dialog or the Winlogon desktop on Windows platform, the SDK reports this error code.
LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_RESUMED | 24: The screen capture is resumed.
LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_HIDDEN | 25: (Windows only) The local screen capture window is currently hidden and not visible on the desktop.
LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN | 26: (Windows only) The local screen capture window is recovered from its hidden state.
LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED | 27:(Windows only) The window is recovered from miniminzed
LOCAL_VIDEO_STREAM_REASON_SCREEN_CAPTURE_DISPLAY_DISCONNECTED | 30: The shared display has been disconnected

## ◆ REMOTE_AUDIO_STATE

enum REMOTE_AUDIO_STATE

Remote audio states.

Enumerator
REMOTE_AUDIO_STATE_STOPPED | 0: The remote audio is in the default state. The SDK reports this state in the case of `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. The SDK reports this state in the case of `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. The SDK reports this state in the case of `REMOTE_AUDIO_REASON_NETWORK_CONGESTION(1)`.
REMOTE_AUDIO_STATE_FAILED | 4: The remote audio fails to start. The SDK reports this state in the case of `REMOTE_AUDIO_REASON_INTERNAL(0)`.

## ◆ REMOTE_AUDIO_STATE_REASON

enum REMOTE_AUDIO_STATE_REASON

Reasons for the remote audio state change.

Enumerator
REMOTE_AUDIO_REASON_INTERNAL | 0: The SDK reports this reason when the video state changes.
REMOTE_AUDIO_REASON_NETWORK_CONGESTION | 1: Network congestion.
REMOTE_AUDIO_REASON_NETWORK_RECOVERY | 2: Network recovery.
REMOTE_AUDIO_REASON_LOCAL_MUTED | 3: The local user stops receiving the remote audio stream or disables the audio module.
REMOTE_AUDIO_REASON_LOCAL_UNMUTED | 4: The local user resumes receiving the remote audio stream or enables the audio module.
REMOTE_AUDIO_REASON_REMOTE_MUTED | 5: The remote user stops sending the audio stream or disables the audio module.
REMOTE_AUDIO_REASON_REMOTE_UNMUTED | 6: The remote user resumes sending the audio stream or enables the audio module.
REMOTE_AUDIO_REASON_REMOTE_OFFLINE | 7: The remote user leaves the channel.
REMOTE_AUDIO_REASON_REMOTE_NO_PACKET_RECEIVE | 8: Not receive any audio packet from remote user.
REMOTE_AUDIO_REASON_REMOTE_LOCAL_PLAY_FAILED | 8: Not receive any audio packet from remote user.

## ◆ REMOTE_VIDEO_STATE

enum REMOTE_VIDEO_STATE

The state of the remote video.

Enumerator
REMOTE_VIDEO_STATE_STOPPED | 0: The remote video is in the default state. The SDK reports this state in the case of `REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED (3)`, `REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED (5)`, `REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE (7)`, or `REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK (8)`.
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. The SDK reports this state in the case of `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).
REMOTE_VIDEO_STATE_FAILED | 4: The remote video fails to start. The SDK reports this state in the case of `REMOTE_VIDEO_STATE_REASON_INTERNAL (0)`.

## ◆ REMOTE_VIDEO_STATE_REASON

enum 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: Network congestion.
REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY | 2: Network recovery.
REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED | 3: The local user stops receiving the remote video stream or disables the video module.
REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED | 4: The local user resumes receiving the remote video stream or enables the video module.
REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED | 5: The remote user stops sending the video stream or disables the video module.
REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED | 6: The remote user resumes sending the video stream or enables the video module.
REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE | 7: The remote user leaves the channel.
REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK | 8: The remote audio-and-video stream falls back to the audio-only stream due to poor network conditions.
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.
REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_LOW | (Internal use only) 10: The remote video stream type change to low stream type
REMOTE_VIDEO_STATE_REASON_VIDEO_STREAM_TYPE_CHANGE_TO_HIGH | (Internal use only) 11: The remote video stream type change to high stream type
REMOTE_VIDEO_STATE_REASON_SDK_IN_BACKGROUND | (iOS only) 12: The app of the remote user is in background.
REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT | 13: The remote video stream is not supported by the decoder

## ◆ REMOTE_USER_STATE

enum REMOTE_USER_STATE

The remote user state information.

Enumerator
USER_STATE_MUTE_AUDIO | The remote user has muted the audio.
USER_STATE_MUTE_VIDEO | The remote user has muted the video.
USER_STATE_ENABLE_VIDEO | The remote user has enabled the video, which includes video capturing and encoding.
USER_STATE_ENABLE_LOCAL_VIDEO | The remote user has enabled the local video capturing.

## ◆ REMOTE_VIDEO_DOWNSCALE_LEVEL

enum REMOTE_VIDEO_DOWNSCALE_LEVEL

The downscale level of the remote video stream . The higher the downscale level, the more the video downscales.

Enumerator
REMOTE_VIDEO_DOWNSCALE_LEVEL_NONE | No downscale.
REMOTE_VIDEO_DOWNSCALE_LEVEL_1 | Downscale level 1.
REMOTE_VIDEO_DOWNSCALE_LEVEL_2 | Downscale level 2.
REMOTE_VIDEO_DOWNSCALE_LEVEL_3 | Downscale level 3.
REMOTE_VIDEO_DOWNSCALE_LEVEL_4 | Downscale level 4.

## ◆ AUDIO_SAMPLE_RATE_TYPE

enum AUDIO_SAMPLE_RATE_TYPE

Audio sample rate types.

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_TYPE_FOR_STREAM

enum VIDEO_CODEC_TYPE_FOR_STREAM

The codec type of the output video.

Enumerator
VIDEO_CODEC_H264_FOR_STREAM | 1: H.264.
VIDEO_CODEC_H265_FOR_STREAM | 2: H.265.

## ◆ VIDEO_CODEC_PROFILE_TYPE

enum 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: High video codec profile. Generally used in high-resolution broadcasts or television.

## ◆ AUDIO_CODEC_PROFILE_TYPE

enum AUDIO_CODEC_PROFILE_TYPE

Self-defined audio codec profile.

Enumerator
AUDIO_CODEC_PROFILE_LC_AAC | 0: LC-AAC.
AUDIO_CODEC_PROFILE_HE_AAC | 1: HE-AAC.
AUDIO_CODEC_PROFILE_HE_AAC_V2 | 2: HE-AAC v2.

## ◆ RTMP_STREAM_PUBLISH_STATE

enum RTMP_STREAM_PUBLISH_STATE

States of the Media Push.

Enumerator
RTMP_STREAM_PUBLISH_STATE_IDLE | 0: The Media Push has not started or has ended. This state is also triggered after you remove a RTMP or RTMPS stream from the CDN by calling `removePublishStreamUrl`.
RTMP_STREAM_PUBLISH_STATE_CONNECTING | 1: 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 | 2: The RTMP or RTMPS streaming publishes. The SDK successfully publishes the RTMP or RTMPS streaming and returns this state.
RTMP_STREAM_PUBLISH_STATE_RECOVERING | 3: 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. If the SDK successfully resumes the streaming, RTMP_STREAM_PUBLISH_STATE_RUNNING (2) returns. If the streaming does not resume within 60 seconds or server errors occur, RTMP_STREAM_PUBLISH_STATE_FAILURE (4) returns. You can also reconnect to the server by calling the `removePublishStreamUrl` and `addPublishStreamUrl` methods.
RTMP_STREAM_PUBLISH_STATE_FAILURE | 4: The RTMP 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 | 5: The SDK is disconnecting to Agora's streaming server and the CDN server. This state is triggered after you call the `removePublishStreamUrl` method.

## ◆ RTMP_STREAM_PUBLISH_ERROR_TYPE

enum 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: The RTMP or RTMPS streaming publishes too frequently.
RTMP_STREAM_PUBLISH_ERROR_REACH_LIMIT | 7: The host publishes more than 10 URLs. Delete the unnecessary URLs before adding new ones.
RTMP_STREAM_PUBLISH_ERROR_NOT_AUTHORIZED | 8: The host manipulates other hosts' URLs. Check your app logic.
RTMP_STREAM_PUBLISH_ERROR_STREAM_NOT_FOUND | 9: Agora's server fails to find the RTMP 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.
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.
RTMP_STREAM_PUBLISH_ERROR_NET_DOWN | 14: Errors occurred in the host's network.
RTMP_STREAM_PUBLISH_ERROR_INVALID_APPID | 15: Your App ID does not have permission to use the CDN live streaming function.
RTMP_STREAM_PUBLISH_ERROR_INVALID_PRIVILEGE | invalid privilege.
RTMP_STREAM_UNPUBLISH_ERROR_OK | 100: The streaming has been stopped normally. After you call `removePublishStreamUrl` to stop streaming, the SDK returns this value.

## ◆ RTMP_STREAMING_EVENT

enum 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.
RTMP_STREAMING_EVENT_ADVANCED_FEATURE_NOT_SUPPORT | 3: The feature is not supported.
RTMP_STREAMING_EVENT_REQUEST_TOO_OFTEN | 4: Client request too frequently.

## ◆ VIDEO_TRANSCODER_ERROR

enum VIDEO_TRANSCODER_ERROR

Enumerator
VT_ERR_VIDEO_SOURCE_NOT_READY | The video track of the video source is not started.
VT_ERR_INVALID_VIDEO_SOURCE_TYPE | The video source type is not supported.
VT_ERR_INVALID_IMAGE_PATH | The image url is not correctly of image source.
VT_ERR_UNSUPPORT_IMAGE_FORMAT | The image format not the type png/jpeg/gif of image source.
VT_ERR_INVALID_LAYOUT | The layout is invalid such as width is zero.
VT_ERR_INTERNAL | Internal error.

## ◆ LASTMILE_PROBE_RESULT_STATE

enum LASTMILE_PROBE_RESULT_STATE

The status of the last-mile network tests.

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 because the bandwidth estimation is not available 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.

## ◆ CONNECTION_CHANGED_REASON_TYPE

enum CONNECTION_CHANGED_REASON_TYPE

Reasons causing the change of the connection state.

Enumerator
CONNECTION_CHANGED_CONNECTING | 0: The SDK is connecting to the server.
CONNECTION_CHANGED_JOIN_SUCCESS | 1: The SDK has joined the channel successfully.
CONNECTION_CHANGED_INTERRUPTED | 2: The connection between the SDK and the server is interrupted.
CONNECTION_CHANGED_BANNED_BY_SERVER | 3: The connection between the SDK and the server is banned by the server. This error occurs when the user is kicked out of the channel by the server.
CONNECTION_CHANGED_JOIN_FAILED | 4: The SDK fails to join the channel. When the SDK fails to join the channel for more than 20 minutes, this error occurs and the SDK stops reconnecting to the channel.
CONNECTION_CHANGED_LEAVE_CHANNEL | 5: The SDK has left the channel.
CONNECTION_CHANGED_INVALID_APP_ID | 6: The connection fails because the App ID is not valid.
CONNECTION_CHANGED_INVALID_CHANNEL_NAME | 7: The connection fails because the channel name is not valid. Please rejoin the channel with a valid channel name.
CONNECTION_CHANGED_INVALID_TOKEN | 8: The connection fails because the token is not valid. Typical reasons include: The App Certificate for the project is enabled in Agora Console, but you do not use a token when joining the channel. If you enable the App Certificate, you must use a token to join the channel. The `uid` specified when calling `joinChannel` to join the channel is inconsistent with the `uid` passed in when generating the token.
CONNECTION_CHANGED_TOKEN_EXPIRED | 9: The connection fails because the token has expired.
CONNECTION_CHANGED_REJECTED_BY_SERVER | 10: The connection is rejected by the server. Typical reasons include: The user is already in the channel and still calls a method, for example, `joinChannel`, to join the channel. Stop calling this method to clear this error. The user tries to join the channel when conducting a pre-call test. The user needs to call the channel after the call test ends.
CONNECTION_CHANGED_SETTING_PROXY_SERVER | 11: The connection changes to reconnecting because the SDK has set a proxy server.
CONNECTION_CHANGED_RENEW_TOKEN | 12: The connection state changed because the token is renewed.
CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED | 13: The IP address of the client has changed, possibly because the network type, IP address, or port has been changed.
CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT | 14: Timeout for the keep-alive of the connection between the SDK and the Agora edge server. The connection state changes to CONNECTION_STATE_RECONNECTING.
CONNECTION_CHANGED_REJOIN_SUCCESS | 15: The SDK has rejoined the channel successfully.
CONNECTION_CHANGED_LOST | 16: The connection between the SDK and the server is lost.
CONNECTION_CHANGED_ECHO_TEST | 17: The change of connection state is caused by echo test.
CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED_BY_USER | 18: The local IP Address is changed by user.
CONNECTION_CHANGED_SAME_UID_LOGIN | 19: The connection is failed due to join the same channel on another device with the same uid.
CONNECTION_CHANGED_TOO_MANY_BROADCASTERS | 20: The connection is failed due to too many broadcasters in the channel.
CONNECTION_CHANGED_LICENSE_VALIDATION_FAILURE | 21: The connection is failed due to license validation failure.
CONNECTION_CHANGED_CERTIFICATION_VERYFY_FAILURE | 22: The connection is failed due to certification verify failure.

## ◆ CLIENT_ROLE_CHANGE_FAILED_REASON

enum CLIENT_ROLE_CHANGE_FAILED_REASON

The reason of changing role's failure.

Enumerator
CLIENT_ROLE_CHANGE_FAILED_TOO_MANY_BROADCASTERS | 1: Too many broadcasters in the channel.
CLIENT_ROLE_CHANGE_FAILED_NOT_AUTHORIZED | 2: The operation of changing role is not authorized.
CLIENT_ROLE_CHANGE_FAILED_REQUEST_TIME_OUT | 3: The operation of changing role is timeout.
CLIENT_ROLE_CHANGE_FAILED_CONNECTION_FAILED | 4: The operation of changing role is interrupted since we lost connection with agora service.

## ◆ WLACC_MESSAGE_REASON

enum WLACC_MESSAGE_REASON

The reason of notifying the user of a message.

Enumerator
WLACC_MESSAGE_REASON_WEAK_SIGNAL | WIFI signal is weak.
WLACC_MESSAGE_REASON_CHANNEL_CONGESTION | Channel congestion.

## ◆ WLACC_SUGGEST_ACTION

enum WLACC_SUGGEST_ACTION

Suggest an action for the user.

Enumerator
WLACC_SUGGEST_ACTION_CLOSE_TO_WIFI | Please get close to AP.
WLACC_SUGGEST_ACTION_CONNECT_SSID | The user is advised to connect to the prompted SSID.
WLACC_SUGGEST_ACTION_CHECK_5G | The user is advised to check whether the AP supports 5G band and enable 5G band (the aciton link is attached), or purchases an AP that supports 5G. AP does not support 5G band.
WLACC_SUGGEST_ACTION_MODIFY_SSID | The user is advised to change the SSID of the 2.4G or 5G band (the aciton link is attached). The SSID of the 2.4G band AP is the same as that of the 5G band.

## ◆ NETWORK_TYPE

enum NETWORK_TYPE

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

## ◆ VIDEO_VIEW_SETUP_MODE

enum VIDEO_VIEW_SETUP_MODE

The mode of setting up video views.

Enumerator
VIDEO_VIEW_SETUP_REPLACE | 0: replace one view
VIDEO_VIEW_SETUP_ADD | 1: add one view
VIDEO_VIEW_SETUP_REMOVE | 2: remove one view

## ◆ AUDIO_TRACK_TYPE

enum AUDIO_TRACK_TYPE

The type of custom audio track

Enumerator
AUDIO_TRACK_INVALID | -1: Invalid audio track
AUDIO_TRACK_MIXABLE | 0: Mixable audio track You can push more than one mixable Audio tracks into one RTC connection(channel id + uid), and SDK will mix these tracks into one audio track automatically. However, compare to direct audio track, mixable track might cause extra 30ms+ delay.
AUDIO_TRACK_DIRECT | 1: Direct audio track You can only push one direct (non-mixable) audio track into one RTC connection(channel id + uid). Compare to mixable stream, you can have lower lantency using direct audio track.

## ◆ LOOPBACK_AUDIO_TRACK_TYPE

enum LOOPBACK_AUDIO_TRACK_TYPE

The type of loopback audio source mode

Enumerator
LOOPBACK_SYSTEM | 0: loopback the whole system
LOOPBACK_SYSTEM_EXCLUDE_SELF | 1: loopback the whole system exclude self
LOOPBACK_APPLICATION | 2: loopback the specific application

## ◆ VOICE_BEAUTIFIER_PRESET

enum VOICE_BEAUTIFIER_PRESET

Preset local voice reverberation options. bitmap allocation:

bit31 | bit30 - bit24 | bit23 - bit16 | bit15 - bit8 | bit7 - bit0
--- | --- | --- | --- | ---
reserved | 0x1: voice beauty | 0x1: chat beautification | effect types | effect settings
|  | 0x2: singing beautification |  |
|  | 0x3: timbre transform |  |
|  | 0x4: ultra high_quality |  |
| -----------------— | --------------------------— |  |
| 0x2: audio effect | 0x1: space construction |  |
|  | 0x2: voice changer effect |  |
|  | 0x3: style transform |  |
|  | 0x4: electronic sound |  |
|  | 0x5: magic tone |  |
| -----------------— | --------------------------— |  |
| 0x3: voice changer | 0x1: voice transform |  |

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 | 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.
ULTRA_HIGH_QUALITY_VOICE | A ultra-high quality voice, which makes the audio clearer and restores more details. To achieve better audio effect quality, Agora recommends that you call `setAudioProfile` and set the `profile` to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)` and `scenario` to `AUDIO_SCENARIO_HIGH_DEFINITION(6)` before calling `setVoiceBeautifierPreset`. If you have an audio capturing device that can already restore audio details to a high degree, Agora recommends that you do not enable ultra-high quality; otherwise, the SDK may over-restore audio details, and you may not hear the anticipated voice effect.

## ◆ AUDIO_EFFECT_PRESET

enum AUDIO_EFFECT_PRESET

Preset voice effects.

For better voice effects, Agora recommends setting the `profile` parameter of `setAudioProfile` to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO` before using the following presets:

- `ROOM_ACOUSTICS_KTV`
- `ROOM_ACOUSTICS_VOCAL_CONCERT`
- `ROOM_ACOUSTICS_STUDIO`
- `ROOM_ACOUSTICS_PHONOGRAPH`
- `ROOM_ACOUSTICS_SPACIAL`
- `ROOM_ACOUSTICS_ETHEREAL`
- `VOICE_CHANGER_EFFECT_UNCLE`
- `VOICE_CHANGER_EFFECT_OLDMAN`
- `VOICE_CHANGER_EFFECT_BOY`
- `VOICE_CHANGER_EFFECT_SISTER`
- `VOICE_CHANGER_EFFECT_GIRL`
- `VOICE_CHANGER_EFFECT_PIGKING`
- `VOICE_CHANGER_EFFECT_HULK`
- `PITCH_CORRECTION`

Enumerator
AUDIO_EFFECT_OFF | Turn off voice effects, that is, use the original voice.
ROOM_ACOUSTICS_KTV | The voice effect typical of a KTV venue.
ROOM_ACOUSTICS_VOCAL_CONCERT | The voice effect typical of a concert hall.
ROOM_ACOUSTICS_STUDIO | The voice effect typical of a recording studio.
ROOM_ACOUSTICS_PHONOGRAPH | The voice effect typical of a vintage phonograph.
ROOM_ACOUSTICS_VIRTUAL_STEREO | The virtual stereo effect, which renders monophonic audio as stereo audio. Note Before using this preset, set the `profile` parameter of `setAudioProfile` to `AUDIO_PROFILE_MUSIC_STANDARD_STEREO(3)` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)`; otherwise, the preset setting is invalid.
ROOM_ACOUSTICS_SPACIAL | A more spatial voice effect.
ROOM_ACOUSTICS_ETHEREAL | A more ethereal voice effect.
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 Before using this preset, set the `profile` parameter of `setAudioProfile` to `AUDIO_PROFILE_MUSIC_STANDARD_STEREO` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO`; otherwise, the preset setting is invalid. If the 3D voice effect is enabled, users need to use stereo audio playback devices to hear the anticipated voice effect.
ROOM_ACOUSTICS_VIRTUAL_SURROUND_SOUND | virtual suround sound. Note Agora recommends using this enumerator to process virtual suround sound; 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_UNCLE | A middle-aged man's voice. Note Agora recommends using this enumerator to process a male-sounding voice; otherwise, you may not hear the anticipated voice effect.
VOICE_CHANGER_EFFECT_OLDMAN | A senior man's voice. Note Agora recommends using this enumerator to process a male-sounding voice; otherwise, you may not hear the anticipated voice effect.
VOICE_CHANGER_EFFECT_BOY | A boy's voice. Note Agora recommends using this enumerator to process a male-sounding voice; otherwise, you may not hear the anticipated voice effect.
VOICE_CHANGER_EFFECT_SISTER | A young woman's voice. Note Agora recommends using this enumerator to process a female-sounding voice; otherwise, you may not hear the anticipated voice effect.
VOICE_CHANGER_EFFECT_GIRL | A girl's voice. Note Agora recommends using this enumerator to process a female-sounding voice; otherwise, you may not hear the anticipated voice effect.
VOICE_CHANGER_EFFECT_PIGKING | The voice of Pig King, a character in Journey to the West who has a voice like a growling bear.
VOICE_CHANGER_EFFECT_HULK | The Hulk's voice.
STYLE_TRANSFORMATION_RNB | An audio effect typical of R&B music. Note Before using this preset, set the `profile` parameter of `setAudioProfile` to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO`; otherwise, the preset setting is invalid.
STYLE_TRANSFORMATION_POPULAR | The voice effect typical of popular music. Note Before using this preset, set the `profile` parameter of `setAudioProfile` to `AUDIO_PROFILE_MUSIC_HIGH_QUALITY` or `AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO`; otherwise, the preset setting is invalid.
PITCH_CORRECTION | A pitch correction effect that corrects the user's pitch based on the pitch of the natural C major scale. After setting this voice effect, you can call `setAudioEffectParameters` to adjust the basic mode of tuning and the pitch of the main tone.

## ◆ VOICE_CONVERSION_PRESET

enum VOICE_CONVERSION_PRESET

The options for SDK preset voice conversion.

Enumerator
VOICE_CONVERSION_OFF | Turn off voice conversion 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.
VOICE_CHANGER_CARTOON | A voice like a cartoon character.
VOICE_CHANGER_CHILDLIKE | A voice like a child.
VOICE_CHANGER_PHONE_OPERATOR | A voice like a phone operator.
VOICE_CHANGER_MONSTER | A monster voice.
VOICE_CHANGER_TRANSFORMERS | A voice like Transformers.
VOICE_CHANGER_GROOT | A voice like Groot.
VOICE_CHANGER_DARTH_VADER | A voice like Darth Vader.
VOICE_CHANGER_IRON_LADY | A rough female voice.
VOICE_CHANGER_SHIN_CHAN | A voice like Crayon Shin-chan.
VOICE_CHANGER_GIRLISH_MAN | A voice like a castrato.
VOICE_CHANGER_CHIPMUNK | A voice like chipmunk.

## ◆ HEADPHONE_EQUALIZER_PRESET

enum HEADPHONE_EQUALIZER_PRESET

The options for SDK preset headphone equalizer.

Enumerator
HEADPHONE_EQUALIZER_OFF | Turn off headphone EQ and use the original voice.
HEADPHONE_EQUALIZER_OVEREAR | For over-ear headphones.
HEADPHONE_EQUALIZER_INEAR | For in-ear headphones.

## ◆ AUDIO_RECORDING_QUALITY_TYPE

enum AUDIO_RECORDING_QUALITY_TYPE

Audio recording quality.

Enumerator
AUDIO_RECORDING_QUALITY_LOW | 0: Low quality. The sample rate is 32 kHz, and the file size is around 1.2 MB after 10 minutes of recording.
AUDIO_RECORDING_QUALITY_MEDIUM | 1: Medium quality. The sample rate is 32 kHz, and the file size is around 2 MB after 10 minutes of recording.
AUDIO_RECORDING_QUALITY_HIGH | 2: High quality. The sample rate is 32 kHz, and the file size is around 3.75 MB after 10 minutes of recording.
AUDIO_RECORDING_QUALITY_ULTRA_HIGH | 3: Ultra high audio recording quality.

## ◆ AUDIO_FILE_RECORDING_TYPE

enum AUDIO_FILE_RECORDING_TYPE

Recording content. Set in `startAudioRecording`.

Enumerator
AUDIO_FILE_RECORDING_MIC | 1: Only records the audio of the local user.
AUDIO_FILE_RECORDING_PLAYBACK | 2: Only records the audio of all remote users.
AUDIO_FILE_RECORDING_MIXED | 3: Records the mixed audio of the local and all remote users.

## ◆ AUDIO_ENCODED_FRAME_OBSERVER_POSITION

enum AUDIO_ENCODED_FRAME_OBSERVER_POSITION

Audio encoded frame observer position.

Enumerator
AUDIO_ENCODED_FRAME_OBSERVER_POSITION_RECORD | 1: Only records the audio of the local user.
AUDIO_ENCODED_FRAME_OBSERVER_POSITION_PLAYBACK | 2: Only records the audio of all remote users.
AUDIO_ENCODED_FRAME_OBSERVER_POSITION_MIXED | 3: Records the mixed audio of the local and all remote users.

## ◆ AREA_CODE

enum AREA_CODE

The region for connection, which is the region where the server the SDK connects to is located.

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.

## ◆ AREA_CODE_EX

enum AREA_CODE_EX

Extra region code @technical preview

Enumerator
AREA_CODE_OC | Oceania
AREA_CODE_SA | South-American
AREA_CODE_AF | Africa
AREA_CODE_KR | South Korea
AREA_CODE_HKMC | Hong Kong and Macou
AREA_CODE_US | United States
AREA_CODE_RU | Russia
AREA_CODE_OVS | The global area (except China)

## ◆ CHANNEL_MEDIA_RELAY_ERROR

enum CHANNEL_MEDIA_RELAY_ERROR

The error code of the channel media replay.

Enumerator
RELAY_OK | 0: No error.
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 co-host token authentication. You can contact technical support to enable the service for cohosting 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

enum CHANNEL_MEDIA_RELAY_EVENT

The event code of channel media relay.

Enumerator
RELAY_EVENT_NETWORK_DISCONNECTED | 0: The user disconnects from the server due to poor network connections.
RELAY_EVENT_NETWORK_CONNECTED | 1: The user is connected to the server.
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.
RELAY_EVENT_PAUSE_SEND_PACKET_TO_DEST_CHANNEL_FAILED | 13: The SDK fails to pause relaying the media stream to destination channels.
RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_SUCCESS | 14: The SDK successfully resumes relaying the media stream to destination channels.
RELAY_EVENT_RESUME_SEND_PACKET_TO_DEST_CHANNEL_FAILED | 15: The SDK fails to resume relaying the media stream to destination channels.

## ◆ CHANNEL_MEDIA_RELAY_STATE

enum CHANNEL_MEDIA_RELAY_STATE

The state code of the channel media relay.

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: An error occurs. See `code` in `onChannelMediaRelayStateChanged` for the error code.

## ◆ ENCRYPTION_MODE

enum ENCRYPTION_MODE

The built-in encryption mode.

Agora recommends using AES_128_GCM2 or AES_256_GCM2 encrypted mode. These two modes support the use of salt for higher security.

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.
SM4_128_ECB | 4: 128-bit SM4 encryption, ECB mode.
AES_128_GCM | 5: 128-bit AES encryption, GCM mode.
AES_256_GCM | 6: 256-bit AES encryption, GCM mode.
AES_128_GCM2 | 7: (Default) 128-bit AES encryption, GCM mode. This encryption mode requires the setting of salt (`encryptionKdfSalt`).
AES_256_GCM2 | 8: 256-bit AES encryption, GCM mode. This encryption mode requires the setting of salt (`encryptionKdfSalt`).
MODE_END | Enumerator boundary.

## ◆ ENCRYPTION_ERROR_TYPE

enum ENCRYPTION_ERROR_TYPE

Encryption error type.

Enumerator
ENCRYPTION_ERROR_INTERNAL_FAILURE | 0: Internal reason.
ENCRYPTION_ERROR_DECRYPTION_FAILURE | 1: MediaStream decryption errors. Ensure that the receiver and the sender use the same encryption mode and key.
ENCRYPTION_ERROR_ENCRYPTION_FAILURE | 2: MediaStream encryption errors.
ENCRYPTION_ERROR_DATASTREAM_DECRYPTION_FAILURE | 3: DataStream decryption errors. Ensure that the receiver and the sender use the same encryption mode and key.
ENCRYPTION_ERROR_DATASTREAM_ENCRYPTION_FAILURE | 4: DataStream encryption errors.

## ◆ UPLOAD_ERROR_REASON

enum UPLOAD_ERROR_REASON

Enumerator
UPLOAD_SUCCESS |
UPLOAD_NET_ERROR |
UPLOAD_SERVER_ERROR |

## ◆ PERMISSION_TYPE

enum PERMISSION_TYPE

The type of the device permission.

Enumerator
RECORD_AUDIO | 0: Permission for the audio capture device.
CAMERA | 1: Permission for the camera.
SCREEN_CAPTURE |

## ◆ MAX_USER_ACCOUNT_LENGTH_TYPE

enum MAX_USER_ACCOUNT_LENGTH_TYPE

The maximum length of the user account.

Enumerator
MAX_USER_ACCOUNT_LENGTH | The maximum length of the user account is 256 bytes.

## ◆ STREAM_SUBSCRIBE_STATE

enum 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: The remote user: Calls `muteLocalAudioStream(true)` or `muteLocalVideoStream(true)` to stop sending local media stream. Calls `disableAudio` or `disableVideo`to disable the local audio or video module. Calls `enableLocalAudio(false)` or `enableLocalVideo(false)` to disable the local audio or video capture. The role of the remote user is audience. The local user calls the following methods to stop receiving remote streams: Calls `muteRemoteAudioStream(true)`, `muteAllRemoteAudioStreams(true)` or `setDefaultMuteAllRemoteAudioStreams(true)` to stop receiving the remote audio streams. Calls `muteRemoteVideoStream(true)`, `muteAllRemoteVideoStreams(true)` or `setDefaultMuteAllRemoteVideoStreams(true)` to stop receiving the remote video streams.
SUB_STATE_SUBSCRIBING | 2: Subscribing.
SUB_STATE_SUBSCRIBED | 3: Subscribes to and receives the remote stream successfully.

## ◆ STREAM_PUBLISH_STATE

enum 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: The local user calls `muteLocalAudioStream(true)` or `muteLocalVideoStream(true)` to stop sending the local media stream. The local user calls `disableAudio` or `disableVideo` to disable the local audio or video module. The local user calls `enableLocalAudio(false)` or `enableLocalVideo(false)` to disable the local audio or video capture. The role of the local user is audience.
PUB_STATE_PUBLISHING | 2: Publishing.
PUB_STATE_PUBLISHED | 3: Publishes successfully.

## ◆ EAR_MONITORING_FILTER_TYPE

enum EAR_MONITORING_FILTER_TYPE

The audio filter of in-ear monitoring.

Enumerator
EAR_MONITORING_FILTER_NONE | 1: Do not add an audio filter to the in-ear monitor.
EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS | 2: Enable audio filters to the in-ear monitor. If you implement functions such as voice beautifier and audio effect, users can hear the voice after adding these effects.
EAR_MONITORING_FILTER_NOISE_SUPPRESSION | 4: Enable noise suppression to the in-ear monitor.
EAR_MONITORING_FILTER_REUSE_POST_PROCESSING_FILTER | 32768: Enable audio filters by reuse post-processing filter to the in-ear monitor.

## ◆ THREAD_PRIORITY_TYPE

enum THREAD_PRIORITY_TYPE

Thread priority type.

Enumerator
LOWEST | 0: Lowest priority.
LOW | 1: Low priority.
NORMAL | 2: Normal priority.
HIGH | 3: High priority.
HIGHEST | Highest priority.
CRITICAL | Critical priority.

## ◆ MEDIA_TRACE_EVENT

enum MEDIA_TRACE_EVENT

The tracing event of media rendering.

Enumerator
MEDIA_TRACE_EVENT_VIDEO_RENDERED | 0: The media frame has been rendered.
MEDIA_TRACE_EVENT_VIDEO_DECODED | 1: The media frame has been decoded.

## ◆ CONFIG_FETCH_TYPE

enum CONFIG_FETCH_TYPE

Enumerator
CONFIG_FETCH_TYPE_INITIALIZE | 1: Fetch config when initializing RtcEngine, without channel info.
CONFIG_FETCH_TYPE_JOIN_CHANNEL | 2: Fetch config when joining channel with channel info, such as channel name and uid.

## ◆ LOCAL_PROXY_MODE

enum LOCAL_PROXY_MODE

The local proxy mode type.

Enumerator
ConnectivityFirst | 0: Connect local proxy with high priority, if not connected to local proxy, fallback to sdrtn.
LocalOnly | 1: Only connect local proxy

## ◆ VIDEO_SOURCE_TYPE

enum VIDEO_SOURCE_TYPE

Video source types definition.

Enumerator
VIDEO_SOURCE_CAMERA_PRIMARY | Video captured by the camera.
VIDEO_SOURCE_CAMERA |
VIDEO_SOURCE_CAMERA_SECONDARY | Video captured by the secondary camera.
VIDEO_SOURCE_SCREEN_PRIMARY | Video for screen sharing.
VIDEO_SOURCE_SCREEN |
VIDEO_SOURCE_SCREEN_SECONDARY | Video for secondary screen sharing.
VIDEO_SOURCE_CUSTOM | Not define.
VIDEO_SOURCE_MEDIA_PLAYER | Video for media player sharing.
VIDEO_SOURCE_RTC_IMAGE_PNG | Video for png image.
VIDEO_SOURCE_RTC_IMAGE_JPEG | Video for png image.
VIDEO_SOURCE_RTC_IMAGE_GIF | Video for png image.
VIDEO_SOURCE_REMOTE | Remote video received from network.
VIDEO_SOURCE_TRANSCODED | Video for transcoded.
VIDEO_SOURCE_CAMERA_THIRD | Video captured by the third camera.
VIDEO_SOURCE_CAMERA_FOURTH | Video captured by the fourth camera.
VIDEO_SOURCE_SCREEN_THIRD | Video for third screen sharing.
VIDEO_SOURCE_SCREEN_FOURTH | Video for fourth screen sharing.
VIDEO_SOURCE_SPEECH_DRIVEN | Video for voice drive.
VIDEO_SOURCE_UNKNOWN |

## ◆ AudioRoute

enum AudioRoute

Audio routes.

Enumerator
ROUTE_DEFAULT | -1: The default audio route.
ROUTE_HEADSET | The headset.
ROUTE_EARPIECE | The earpiece.
ROUTE_HEADSETNOMIC | The headset with no microphone.
ROUTE_SPEAKERPHONE | The speakerphone.
ROUTE_LOUDSPEAKER | The loudspeaker.
ROUTE_HEADSETBLUETOOTH | The Bluetooth headset.
ROUTE_USB | The USB
ROUTE_HDMI | The HDMI
ROUTE_DISPLAYPORT | The DISPLAYPORT
ROUTE_AIRPLAY | The AIRPLAY
ROUTE_VIRTUAL | The VIRTUAL SOUND CARD
ROUTE_CONTINUITY | The Continuity

## ◆ BYTES_PER_SAMPLE

enum BYTES_PER_SAMPLE

Bytes per sample

Enumerator
TWO_BYTES_PER_SAMPLE | two bytes per sample

## ◆ RAW_AUDIO_FRAME_OP_MODE_TYPE

enum RAW_AUDIO_FRAME_OP_MODE_TYPE

The use mode of the audio data.

Enumerator
RAW_AUDIO_FRAME_OP_MODE_READ_ONLY | 0: Read-only mode: Users only read the data from `AudioFrame` without modifying anything. For example, when users acquire the data with the Agora SDK, then start the media push.
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 audio-effect processing module and perform some voice pre-processing, such as a voice change.

## ◆ TRACK_AUDIO_MIXED_POLICY_TYPE

enum TRACK_AUDIO_MIXED_POLICY_TYPE

The mix policy of the track per connection. For default, this connections mix policy is REMOTE | LOCAL(3).

Enumerator
TRACK_AUDIO_MIXED_LOCAL | 0: All remote track that created by remote UID would be mixed.
TRACK_AUDIO_MIXED_REMOTE | 1: All local publish track would be mixed, microphone track, mpk track etc.

## ◆ STREAMING_SRC_ERR

enum STREAMING_SRC_ERR

The error code of streaming source.

Enumerator
STREAMING_SRC_ERR_NONE | no error
STREAMING_SRC_ERR_UNKNOWN | unknown error
STREAMING_SRC_ERR_INVALID_PARAM | invalid parameter
STREAMING_SRC_ERR_BAD_STATE | bad status
STREAMING_SRC_ERR_NO_MEM | not enough memory
STREAMING_SRC_ERR_BUFFER_OVERFLOW | buffer overflow
STREAMING_SRC_ERR_BUFFER_UNDERFLOW | buffer underflow
STREAMING_SRC_ERR_NOT_FOUND | buffer underflow
STREAMING_SRC_ERR_TIMEOUT | buffer underflow
STREAMING_SRC_ERR_EXPIRED | expired
STREAMING_SRC_ERR_UNSUPPORTED | unsupported
STREAMING_SRC_ERR_NOT_EXIST | component not exist
STREAMING_SRC_ERR_EXIST | component already exist
STREAMING_SRC_ERR_OPEN | fail to IO open
STREAMING_SRC_ERR_CLOSE | fail to IO close
STREAMING_SRC_ERR_READ | fail to IO read
STREAMING_SRC_ERR_WRITE | fail to IO write
STREAMING_SRC_ERR_SEEK | fail to IO seek
STREAMING_SRC_ERR_EOF | reach to IO EOF, can do nothing
STREAMING_SRC_ERR_CODECOPEN | fail to codec open
STREAMING_SRC_ERR_CODECCLOSE | fail to codec close
STREAMING_SRC_ERR_CODECPROC | fail to codec process

## ◆ STREAMING_SRC_STATE

enum STREAMING_SRC_STATE

The state machine of Streaming Source.

Enumerator
STREAMING_SRC_STATE_CLOSED | streaming source still closed, can do nothing
STREAMING_SRC_STATE_OPENING | after call open() method and start parsing streaming source
STREAMING_SRC_STATE_IDLE | streaming source is ready waiting for play
STREAMING_SRC_STATE_PLAYING | after call play() method, playing & pushing the AV data
STREAMING_SRC_STATE_SEEKING | after call seek() method, start seeking poisition
STREAMING_SRC_STATE_EOF | The position is located at end, can NOT playing.
STREAMING_SRC_STATE_ERROR | The error status and can do nothing except close.

## ◆ H265_TRANSCODE_RESULT

enum H265_TRANSCODE_RESULT

The result of IH265Transcoder interface invoking.

Enumerator
H265_TRANSCODE_RESULT_UNKNOWN | -1: Unknown error.
H265_TRANSCODE_RESULT_SUCCESS | 0: The request of operation is successfully.
H265_TRANSCODE_RESULT_REQUEST_INVALID | 1: This request is invalid. Possible reasons include incorrect parameters.
H265_TRANSCODE_RESULT_UNAUTHORIZED | 2: Authentication failed, please check for correctness of token.
H265_TRANSCODE_RESULT_TOKEN_EXPIRED | 3: The token is expired, please update token.
H265_TRANSCODE_RESULT_FORBIDDEN | 4: No permission to access the interface.
H265_TRANSCODE_RESULT_NOT_FOUND | 5: The url of request is not found.
H265_TRANSCODE_RESULT_CONFLICTED | 6: The request encountered a conflict, please try again.
H265_TRANSCODE_RESULT_NOT_SUPPORTED | 7: Content type not supported.
H265_TRANSCODE_RESULT_TOO_OFTEN | 8: The requests are too frequent.
H265_TRANSCODE_RESULT_SERVER_INTERNAL_ERROR | 9: Internal Server Error, you can try sending the request again.
H265_TRANSCODE_RESULT_SERVICE_UNAVAILABLE | 10: Service is unavailable.

## ◆ MEDIA_DEVICE_TYPE

enum MEDIA_DEVICE_TYPE

The media device types.

Enumerator
UNKNOWN_AUDIO_DEVICE | -1: Unknown device type.
AUDIO_PLAYOUT_DEVICE | 0: The audio playback device.
AUDIO_RECORDING_DEVICE | 1: The audio recording device.
VIDEO_RENDER_DEVICE | 2: The video renderer.
VIDEO_CAPTURE_DEVICE | 3: The video capturer.
AUDIO_APPLICATION_PLAYOUT_DEVICE | 4: The audio playback device of the app.
AUDIO_VIRTUAL_PLAYOUT_DEVICE | 5: The virtual audio playback device.
AUDIO_VIRTUAL_RECORDING_DEVICE | 6: The virtual audio recording device.

## ◆ AUDIO_MIXING_STATE_TYPE

enum AUDIO_MIXING_STATE_TYPE

The playback state of the music file.

Enumerator
AUDIO_MIXING_STATE_PLAYING | 710: The music file is playing.
AUDIO_MIXING_STATE_PAUSED | 711: The music file pauses playing.
AUDIO_MIXING_STATE_STOPPED | 713: The music file stops playing.
AUDIO_MIXING_STATE_FAILED | 714: An error occurs during the playback of the audio mixing file.

## ◆ AUDIO_MIXING_REASON_TYPE

enum AUDIO_MIXING_REASON_TYPE

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

Enumerator
AUDIO_MIXING_REASON_CAN_NOT_OPEN | 701: The SDK cannot open the audio mixing file.
AUDIO_MIXING_REASON_TOO_FREQUENT_CALL | 702: The SDK opens the audio mixing file too frequently.
AUDIO_MIXING_REASON_INTERRUPTED_EOF | 703: The audio mixing file playback is interrupted.
AUDIO_MIXING_REASON_ONE_LOOP_COMPLETED | 715: The audio mixing file is played once.
AUDIO_MIXING_REASON_ALL_LOOPS_COMPLETED | 716: The audio mixing file is all played out.
AUDIO_MIXING_REASON_STOPPED_BY_USER | 716: The audio mixing file stopped by user
AUDIO_MIXING_REASON_OK | 0: The SDK can open the audio mixing file.

## ◆ INJECT_STREAM_STATUS

enum INJECT_STREAM_STATUS

The status of importing an external video stream in a live broadcast.

Enumerator
INJECT_STREAM_STATUS_START_SUCCESS | 0: The media stream is injected successfully.
INJECT_STREAM_STATUS_START_ALREADY_EXISTS | 1: The media stream already exists.
INJECT_STREAM_STATUS_START_UNAUTHORIZED | 2: The media stream injection is unauthorized.
INJECT_STREAM_STATUS_START_TIMEDOUT | 3: Timeout occurs when injecting a media stream.
INJECT_STREAM_STATUS_START_FAILED | 4: The media stream injection fails.
INJECT_STREAM_STATUS_STOP_SUCCESS | 5: The media stream stops being injected successfully.
INJECT_STREAM_STATUS_STOP_NOT_FOUND | 6: The media stream injection that you want to stop is found.
INJECT_STREAM_STATUS_STOP_UNAUTHORIZED | 7: You are not authorized to stop the media stream injection.
INJECT_STREAM_STATUS_STOP_TIMEDOUT | 8: Timeout occurs when you stop injecting the media stream.
INJECT_STREAM_STATUS_STOP_FAILED | 9: Stopping injecting the media stream fails.
INJECT_STREAM_STATUS_BROKEN | 10: The media stream is broken.

## ◆ AUDIO_EQUALIZATION_BAND_FREQUENCY

enum AUDIO_EQUALIZATION_BAND_FREQUENCY

The audio equalization band frequency.

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

enum AUDIO_REVERB_TYPE

The audio reverberation type.

Enumerator
AUDIO_REVERB_DRY_LEVEL | 0: (-20 to 10 dB), the level of the dry signal.
AUDIO_REVERB_WET_LEVEL | 1: (-20 to 10 dB), the level of the early reflection signal (wet signal).
AUDIO_REVERB_ROOM_SIZE | 2: (0 to 100 dB), the room size of the reflection.
AUDIO_REVERB_WET_DELAY | 3: (0 to 200 ms), the length of the initial delay of the wet signal in ms.
AUDIO_REVERB_STRENGTH | 4: (0 to 100), the strength of the late reverberation.

## ◆ STREAM_FALLBACK_OPTIONS

enum STREAM_FALLBACK_OPTIONS

Enumerator
STREAM_FALLBACK_OPTION_DISABLED | 0: No fallback operation for the stream when the network condition is poor. The stream quality cannot be guaranteed.
STREAM_FALLBACK_OPTION_VIDEO_STREAM_LOW | 1: (Default) Under poor network conditions, the SDK will send or receive agora::rtc::VIDEO_STREAM_LOW. You can only set this option in RtcEngineParameters::setRemoteSubscribeFallbackOption. Nothing happens when you set this in RtcEngineParameters::setLocalPublishFallbackOption.
STREAM_FALLBACK_OPTION_AUDIO_ONLY | 2: Under poor network conditions, the SDK may receive agora::rtc::VIDEO_STREAM_LOW first, but if the network still does not allow displaying the video, the SDK will send or receive audio only.

## ◆ PRIORITY_TYPE

enum PRIORITY_TYPE

Enumerator
PRIORITY_HIGH | 50: High priority.
PRIORITY_NORMAL | 100: (Default) normal priority.

## ◆ RTMP_STREAM_LIFE_CYCLE_TYPE

enum RTMP_STREAM_LIFE_CYCLE_TYPE

The video stream lifecycle of CDN Live.

Enumerator
RTMP_STREAM_LIFE_CYCLE_BIND2CHANNEL | Bound to the channel lifecycle.
RTMP_STREAM_LIFE_CYCLE_BIND2OWNER | Bound to the owner identity of the RTMP stream.

## ◆ CAMERA_DIRECTION

enum CAMERA_DIRECTION

The camera direction.

Enumerator
CAMERA_REAR | The rear camera.
CAMERA_FRONT | The front camera.

## ◆ CLOUD_PROXY_TYPE

enum CLOUD_PROXY_TYPE

The cloud proxy type.

Since
  v3.3.0

Enumerator
NONE_PROXY | 0: Do not use the cloud proxy.
UDP_PROXY | 1: The cloud proxy for the UDP protocol.

## ◆ PROXY_TYPE

enum PROXY_TYPE

Enumerator
NONE_PROXY_TYPE | 0: Do not use the cloud proxy.
UDP_PROXY_TYPE | 1: The cloud proxy for the UDP protocol.
TCP_PROXY_TYPE | 2: The cloud proxy for the TCP (encrypted) protocol.
LOCAL_PROXY_TYPE | 3: The local proxy.
TCP_PROXY_AUTO_FALLBACK_TYPE | 4: auto fallback to tcp cloud proxy
HTTP_PROXY_TYPE | 5: The http proxy.
HTTPS_PROXY_TYPE | 6: The https proxy.

## ◆ FeatureType

enum FeatureType

Enumerator
VIDEO_VIRTUAL_BACKGROUND |
VIDEO_BEAUTY_EFFECT |

## ◆ DIRECT_CDN_STREAMING_ERROR

enum DIRECT_CDN_STREAMING_ERROR

Enumerator
DIRECT_CDN_STREAMING_ERROR_OK |
DIRECT_CDN_STREAMING_ERROR_FAILED |
DIRECT_CDN_STREAMING_ERROR_AUDIO_PUBLICATION |
DIRECT_CDN_STREAMING_ERROR_VIDEO_PUBLICATION |
DIRECT_CDN_STREAMING_ERROR_NET_CONNECT |
DIRECT_CDN_STREAMING_ERROR_BAD_NAME |

## ◆ DIRECT_CDN_STREAMING_STATE

enum DIRECT_CDN_STREAMING_STATE

Enumerator
DIRECT_CDN_STREAMING_STATE_IDLE |
DIRECT_CDN_STREAMING_STATE_RUNNING |
DIRECT_CDN_STREAMING_STATE_STOPPED |
DIRECT_CDN_STREAMING_STATE_FAILED |
DIRECT_CDN_STREAMING_STATE_RECOVERING |

## ◆ QUALITY_REPORT_FORMAT_TYPE

enum QUALITY_REPORT_FORMAT_TYPE

Enumerator
QUALITY_REPORT_JSON | 0: The quality report in JSON format,
QUALITY_REPORT_HTML | 1: The quality report in HTML format.

## ◆ MEDIA_DEVICE_STATE_TYPE

enum MEDIA_DEVICE_STATE_TYPE

Media device states.

Enumerator
MEDIA_DEVICE_STATE_IDLE | 0: The device is ready for use.
MEDIA_DEVICE_STATE_ACTIVE | 1: The device is active.
MEDIA_DEVICE_STATE_DISABLED | 2: The device is disabled.
MEDIA_DEVICE_STATE_NOT_PRESENT | 4: The device is not present.
MEDIA_DEVICE_STATE_UNPLUGGED | 8: The device is unplugged.

## ◆ VIDEO_PROFILE_TYPE

enum VIDEO_PROFILE_TYPE

Enumerator
VIDEO_PROFILE_LANDSCAPE_120P | 0: 160 x 120 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_120P_3 | 2: 120 x 120 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_180P | 10: 320 x 180 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_180P_3 | 12: 180 x 180 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_180P_4 | 13: 240 x 180 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_240P | 20: 320 x 240 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_240P_3 | 22: 240 x 240 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_240P_4 | 23: 424 x 240 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_360P | 30: 640 x 360 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_360P_3 | 32: 360 x 360 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_360P_4 | 33: 640 x 360 @ 30 fps
VIDEO_PROFILE_LANDSCAPE_360P_6 | 35: 360 x 360 @ 30 fps
VIDEO_PROFILE_LANDSCAPE_360P_7 | 36: 480 x 360 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_360P_8 | 37: 480 x 360 @ 30 fps
VIDEO_PROFILE_LANDSCAPE_360P_9 | 38: 640 x 360 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_360P_10 | 39: 640 x 360 @ 24 fps
VIDEO_PROFILE_LANDSCAPE_360P_11 | 100: 640 x 360 @ 24 fps
VIDEO_PROFILE_LANDSCAPE_480P | 40: 640 x 480 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_480P_3 | 42: 480 x 480 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_480P_4 | 43: 640 x 480 @ 30 fps
VIDEO_PROFILE_LANDSCAPE_480P_6 | 45: 480 x 480 @ 30 fps
VIDEO_PROFILE_LANDSCAPE_480P_8 | 47: 848 x 480 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_480P_9 | 48: 848 x 480 @ 30 fps
VIDEO_PROFILE_LANDSCAPE_480P_10 | 49: 640 x 480 @ 10 fps
VIDEO_PROFILE_LANDSCAPE_720P | 50: 1280 x 720 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_720P_3 | 52: 1280 x 720 @ 30 fps
VIDEO_PROFILE_LANDSCAPE_720P_5 | 54: 960 x 720 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_720P_6 | 55: 960 x 720 @ 30 fps
VIDEO_PROFILE_LANDSCAPE_1080P | 60: 1920 x 1080 @ 15 fps
VIDEO_PROFILE_LANDSCAPE_1080P_3 | 62: 1920 x 1080 @ 30 fps
VIDEO_PROFILE_LANDSCAPE_1080P_5 | 64: 1920 x 1080 @ 60 fps
VIDEO_PROFILE_LANDSCAPE_1440P | 66: 2560 x 1440 @ 30 fps
VIDEO_PROFILE_LANDSCAPE_1440P_2 | 67: 2560 x 1440 @ 60 fps
VIDEO_PROFILE_LANDSCAPE_4K | 70: 3840 x 2160 @ 30 fps
VIDEO_PROFILE_LANDSCAPE_4K_3 | 72: 3840 x 2160 @ 60 fps
VIDEO_PROFILE_PORTRAIT_120P | 1000: 120 x 160 @ 15 fps
VIDEO_PROFILE_PORTRAIT_120P_3 | 1002: 120 x 120 @ 15 fps
VIDEO_PROFILE_PORTRAIT_180P | 1010: 180 x 320 @ 15 fps
VIDEO_PROFILE_PORTRAIT_180P_3 | 1012: 180 x 180 @ 15 fps
VIDEO_PROFILE_PORTRAIT_180P_4 | 1013: 180 x 240 @ 15 fps
VIDEO_PROFILE_PORTRAIT_240P | 1020: 240 x 320 @ 15 fps
VIDEO_PROFILE_PORTRAIT_240P_3 | 1022: 240 x 240 @ 15 fps
VIDEO_PROFILE_PORTRAIT_240P_4 | 1023: 240 x 424 @ 15 fps
VIDEO_PROFILE_PORTRAIT_360P | 1030: 360 x 640 @ 15 fps
VIDEO_PROFILE_PORTRAIT_360P_3 | 1032: 360 x 360 @ 15 fps
VIDEO_PROFILE_PORTRAIT_360P_4 | 1033: 360 x 640 @ 30 fps
VIDEO_PROFILE_PORTRAIT_360P_6 | 1035: 360 x 360 @ 30 fps
VIDEO_PROFILE_PORTRAIT_360P_7 | 1036: 360 x 480 @ 15 fps
VIDEO_PROFILE_PORTRAIT_360P_8 | 1037: 360 x 480 @ 30 fps
VIDEO_PROFILE_PORTRAIT_360P_9 | 1038: 360 x 640 @ 15 fps
VIDEO_PROFILE_PORTRAIT_360P_10 | 1039: 360 x 640 @ 24 fps
VIDEO_PROFILE_PORTRAIT_360P_11 | 1100: 360 x 640 @ 24 fps
VIDEO_PROFILE_PORTRAIT_480P | 1040: 480 x 640 @ 15 fps
VIDEO_PROFILE_PORTRAIT_480P_3 | 1042: 480 x 480 @ 15 fps
VIDEO_PROFILE_PORTRAIT_480P_4 | 1043: 480 x 640 @ 30 fps
VIDEO_PROFILE_PORTRAIT_480P_6 | 1045: 480 x 480 @ 30 fps
VIDEO_PROFILE_PORTRAIT_480P_8 | 1047: 480 x 848 @ 15 fps
VIDEO_PROFILE_PORTRAIT_480P_9 | 1048: 480 x 848 @ 30 fps
VIDEO_PROFILE_PORTRAIT_480P_10 | 1049: 480 x 640 @ 10 fps
VIDEO_PROFILE_PORTRAIT_720P | 1050: 720 x 1280 @ 15 fps
VIDEO_PROFILE_PORTRAIT_720P_3 | 1052: 720 x 1280 @ 30 fps
VIDEO_PROFILE_PORTRAIT_720P_5 | 1054: 720 x 960 @ 15 fps
VIDEO_PROFILE_PORTRAIT_720P_6 | 1055: 720 x 960 @ 30 fps
VIDEO_PROFILE_PORTRAIT_1080P | 1060: 1080 x 1920 @ 15 fps
VIDEO_PROFILE_PORTRAIT_1080P_3 | 1062: 1080 x 1920 @ 30 fps
VIDEO_PROFILE_PORTRAIT_1080P_5 | 1064: 1080 x 1920 @ 60 fps
VIDEO_PROFILE_PORTRAIT_1440P | 1066: 1440 x 2560 @ 30 fps
VIDEO_PROFILE_PORTRAIT_1440P_2 | 1067: 1440 x 2560 @ 60 fps
VIDEO_PROFILE_PORTRAIT_4K | 1070: 2160 x 3840 @ 30 fps
VIDEO_PROFILE_PORTRAIT_4K_3 | 1072: 2160 x 3840 @ 60 fps
VIDEO_PROFILE_DEFAULT | Default 640 x 360 @ 15 fps

## Function Documentation

## ◆ SetFrom()

static void agora::rtc::SetFrom | ( | Optional< T > * | s,
|  | const Optional< T > & | o
| ) |  |
| static

## ◆ ReplaceBy()

static void agora::rtc::ReplaceBy | ( | Optional< T > * | s,
|  | const Optional< T > & | o
| ) |  |
| static

## Variable Documentation

## ◆ kIntervalInMillseconds

const int kIntervalInMillseconds = 200
| static

## ◆ kDeviceIdSize

const int kDeviceIdSize = 128
| static

## ◆ VideoFrameMetaDataType

OPTIONAL_ENUM_CLASS VideoFrameMetaDataType

Initial value:
{
kAlphaChannel,
kScreenMetaInfo,
kVideoSourceType,
kFaceInfo,
kFaceCaptureInfo,
}

## ◆ STANDARD_BITRATE

const int STANDARD_BITRATE = 0

(Recommended) 0: Standard bitrate mode.

In this mode, the video bitrate is twice the base bitrate.

## ◆ COMPATIBLE_BITRATE

const int COMPATIBLE_BITRATE = -1

-1: Compatible bitrate mode.

In this mode, the video bitrate is the same as the base bitrate.. If you choose this mode in the live-broadcast profile, the video frame rate may be lower than the set value.

## ◆ DEFAULT_MIN_BITRATE

const int DEFAULT_MIN_BITRATE = -1

-1: (For future use) The default minimum bitrate.

## ◆ DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE

const int DEFAULT_MIN_BITRATE_EQUAL_TO_TARGET_BITRATE = -2

-2: (For future use) Set minimum bitrate the same as target bitrate.

## ◆ INVALID_TRACK_ID

const unsigned int INVALID_TRACK_ID = 0xffffffff
| static

## ◆ DEFAULT_CONNECTION_ID

const unsigned int DEFAULT_CONNECTION_ID = 0
| static

## ◆ DUMMY_CONNECTION_ID

const unsigned int DUMMY_CONNECTION_ID = (std::numeric_limits<unsigned int>::max)()
| static

## ◆ kAdmMaxDeviceNameSize

const int kAdmMaxDeviceNameSize = 128
| static

## ◆ kAdmMaxGuidSize

const int kAdmMaxGuidSize = 128
| static