Source: ZegoExpressDefines.js


/**
 * 应用使用场景
 * @enum {number}
 */
const ZegoScenario =
{
    /** 
     * @description 通用场景,SDK 为大多数使用场景提供的默认模式,开发者如果不是很确定自己产品的使用场景,可选择此场景模式。
     */
    General: 0,
    /** 
     * @description 实时通讯场景,常用于 1V1 通话、多人通话等对实时性要求较高的通讯场景。
     */
    Communication: 1,
    /** 
     * @description 直播场景,常用于 1 对多直播 等直播场景。
     */
    Live: 2,
}

/**
 * 语言
 * @enum {number}
 */
const ZegoLanguage =
{
    /** 
     * @description 英文
     */
    English: 0,
    /** 
     * @description 中文
     */
    Chinese: 1,
}

/**
 * 引擎状态
 * @enum {number}
 */
const ZegoEngineState =
{
    /** 
     * @description 引擎已开启
     */
    Start: 0,
    /** 
     * @description 引擎已停止
     */
    Stop: 1,
}

/**
 * 房间状态
 * @enum {number}
 */
const ZegoRoomState =
{
    /** 
     * @description 未连接状态,在登陆房间前和退出房间之后进入该状态。如果登陆房间的过程出现稳态异常,例如 AppID 和 AppSign 不正确,或者有相同用户名在其他地方登陆导致本端被 KickOut,都会进入该状态
     */
    Disconnected: 0,
    /** 
     * @description 正在请求连接状态,登陆房间动作执行成功后会进入此状态。通常通过该状态进行应用界面的展示。如果因为网络质量不佳产生的中断, SDK 会进行内部重试,也会回到正在请求连接状态
     */
    Connecting: 1,
    /** 
     * @description 连接成功状态,进入该状态表示登陆房间已经成功,用户可以正常收到房间内的用户和流信息增删的回调通知
     */
    Connected: 2,
}

/**
 * 推流通道
 * @enum {number}
 */
const ZegoPublishChannel =
{
    /** 
     * @description 主推流通道,默认通道
     */
    Main: 0,
    /** 
     * @description 辅推流通道(第二路推流通道)
     */
    Aux: 1,
    /** 
     * @description 第三路推流通道
     */
    Third: 2,
    /** 
     * @description 第四路推流通道
     */
    Fourth: 3,
}

/**
 * 视频渲染填充模式
 * @enum {number}
 */
const ZegoViewMode =
{
    /** 
     * @description 等比缩放,可能有黑边
     */
    AspectFit: 0,
    /** 
     * @description 等比缩放填充整个 View,可能有部分被裁减
     */
    AspectFill: 1,
    /** 
     * @description 填充整个 View,图像可能被拉伸
     */
    ScaleToFill: 2,
}

/**
 * 预览或拉流端的镜像模式。
 * @enum {number}
 */
const ZegoVideoMirrorMode =
{
    /** 
     * @description 只有本地预览时才是镜像画面,默认采用此模式。
     */
    OnlyPreviewMirror: 0,
    /** 
     * @description 本地预览和拉流端看到的视频都是镜像画面。
     */
    BothMirror: 1,
    /** 
     * @description 本地预览和拉流端看到的视频都不是镜像画面。
     */
    NoMirror: 2,
    /** 
     * @description 只有拉流端看到的视频才是镜像画面。
     */
    OnlyPublishMirror: 3,
}

/**
 * SEI 类型
 * @enum {number}
 */
const ZegoSEIType =
{
    /** 
     * @description 采用 H.264 的 SEI (nalu type = 6, payload type = 243) 类型打包,此类型是 SEI 标准未规定的类型,跟视频编码器或者视频文件中的 SEI 不存在冲突性,用户不需要根据 SEI 的内容做过滤,SDK 默认采用此种类型。
     */
    ZegoDefined: 0,
    /** 
     * @description 采用 H.264 的 SEI (nalu type = 6, payload type = 5) 类型打包,H.264 标准对于此类型有规定的格式:startcode + nalu type (6) + payload type (5) + len + payload (uuid + context) + trailing bits;因为视频编码器自身会产生 payload type 为 5 的 SEI,或者使用视频文件推流时,视频文件中也可能存在这样的 SEI,所以使用此类型时,用户需要把 uuid + content 当作 buffer 塞给发送 SEI 的函数;此时为了区别视频编码器自身产生的 SEI, App 在发送此类型 SEI 时,可以填写业务特定的 uuid (uuid 长度为 16 字节),接收方使用 SDK 解析 payload type 为 5 的 SEI 时,会根据设置的过滤字符串过滤出 uuid 相符的 SEI 抛给业务,如果没有设置过滤字符串,SDK 会把所有收到的 SEI 都抛给开发者。
     */
    UserUnregister: 1,
}

/**
 * 推流状态
 * @enum {number}
 */
const ZegoPublisherState =
{
    /** 
     * @description 未推流状态,在推流前处于该状态。如果推流过程出现稳态的异常,例如 AppID 和 AppSign 不正确,或者如果其他用户已经在推送流,推送相同流 ID 的流会失败,都会进入未推流状态
     */
    NoPublish: 0,
    /** 
     * @description 正在请求推流状态,推流操作执行成功后会进入正在请求推流状态,通常通过该状态进行 UI 界面的展示。如果因为网络质量不佳产生的中断,SDK 会进行内部重试,也会回到正在请求推流状态
     */
    PublishRequesting: 1,
    /** 
     * @description 正在推流状态,进入该状态表明推流已经成功,用户可以正常通信
     */
    Publishing: 2,
}

/**
 * 变声器预设值
 * @enum {number}
 */
const ZegoVoiceChangerPreset =
{
    /** 
     * @description 无变声
     */
    None: 0,
    /** 
     * @description 男声变童声(萝莉声效)
     */
    MenToChild: 1,
    /** 
     * @description 男声变女声(幼儿园声效)
     */
    MenToWomen: 2,
    /** 
     * @description 女声变童声
     */
    WomenToChild: 3,
    /** 
     * @description 女声变男声
     */
    WomenToMen: 4,
    /** 
     * @description 歪果仁声效
     */
    Foreigner: 5,
    /** 
     * @description 汽车人擎天柱声效
     */
    OptimusPrime: 6,
    /** 
     * @description 机器人声效
     */
    Android: 7,
    /** 
     * @description 空灵声效
     */
    Ethereal: 8,
    /** 
     * @description 磁性男声效
     */
    MaleMagnetic: 9,
    /** 
     * @description 清新女声效
     */
    FemaleFresh: 10,
    /** 
     * @description C大调电音音效
     */
    MajorC: 11,
    /** 
     * @description A小调电音音效
     */
    MinorA: 12,
    /** 
     * @description 和声小调电音音效
     */
    HarmonicMinor: 13,
}

/**
 * 混响预设值
 * @enum {number}
 */
const ZegoReverbPreset =
{
    /** 
     * @description 无混响
     */
    None: 0,
    /** 
     * @description 小房间混响效果
     */
    SoftRoom: 1,
    /** 
     * @description 大房间混响效果
     */
    LargeRoom: 2,
    /** 
     * @description 音乐厅混响效果
     */
    ConcertHall: 3,
    /** 
     * @description 山谷混响效果
     */
    Valley: 4,
    /** 
     * @description 录音棚混响效果
     */
    RecordingStudio: 5,
    /** 
     * @description 地下室混响效果
     */
    Basement: 6,
    /** 
     * @description KTV 混响效果
     */
    KTV: 7,
    /** 
     * @description 流行混响效果
     */
    Popular: 8,
    /** 
     * @description 摇滚混响效果
     */
    Rock: 9,
    /** 
     * @description 演唱会混响效果
     */
    VocalConcert: 10,
    /** 
     * @description 留声机混响效果
     */
    GramoPhone: 11,
}

/**
 * 视频配置分辨率与比特率预设枚举。预设的分辨率分别针对移动端与桌面端做了适配。在移动端上 height 长于 width,而桌面端相反。例如 1080p 在移动端上实际为 1080(w) x 1920(h),而在桌面端上实际为 1920(w) x 1080(h)
 * @enum {number}
 */
const ZegoVideoConfigPreset =
{
    /** 
     * @description 设置分辨率为 320x180,默认采用 15 fps,码率 300 kbps
     */
    Preset180P: 0,
    /** 
     * @description 设置分辨率为 480x270,默认采用 15 fps,码率 400 kbps
     */
    Preset270P: 1,
    /** 
     * @description 设置分辨率为 640x360,默认采用 15 fps,码率 600 kbps
     */
    Preset360P: 2,
    /** 
     * @description 设置分辨率为 960x540,默认采用 15 fps,码率 1200 kbps
     */
    Preset540P: 3,
    /** 
     * @description 设置分辨率为 1280x720,默认采用 15 fps,码率 1500 kbps
     */
    Preset720P: 4,
    /** 
     * @description 设置分辨率为 1920x1080,默认采用 15 fps,码率 3000 kbps
     */
    Preset1080P: 5,
}

/**
 * 流质量等级
 * @enum {number}
 */
const ZegoStreamQualityLevel =
{
    /** 
     * @description 质量极好
     */
    Excellent: 0,
    /** 
     * @description 质量好
     */
    Good: 1,
    /** 
     * @description 质量正常
     */
    Medium: 2,
    /** 
     * @description 质量差
     */
    Bad: 3,
    /** 
     * @description 质量异常
     */
    Die: 4,
    /** 
     * @description 质量未知
     */
    Unknown: 5,
}

/**
 * 音频声道
 * @enum {number}
 */
const ZegoAudioChannel =
{
    /** 
     * @description 未知
     */
    Unknown: 0,
    /** 
     * @description 单声道
     */
    Mono: 1,
    /** 
     * @description 双声道
     */
    Stereo: 2,
}

/**
 * 音频采集双声道模式
 * @enum {number}
 */
const ZegoAudioCaptureStereoMode =
{
    /** 
     * @description 不开启双声道采集,即单声道采集
     */
    None: 0,
    /** 
     * @description 始终开启双声道采集
     */
    Always: 1,
    /** 
     * @description 自适应模式,当仅推流时采集双声道,当推拉流(如通话/连麦场景)时采集单声道
     */
    Adaptive: 2,
}

/**
 * 音频编码器
 * @enum {number}
 */
const ZegoAudioCodecID =
{
    /** 
     * @description default
     */
    Default: 0,
    /** 
     * @description Normal
     */
    Normal: 1,
    /** 
     * @description Normal2
     */
    Normal2: 2,
    /** 
     * @description Normal3
     */
    Normal3: 3,
    /** 
     * @description Low
     */
    Low: 4,
    /** 
     * @description Low2
     */
    Low2: 5,
    /** 
     * @description Low3
     */
    Low3: 6,
}

/**
 * 视频编码格式
 * @enum {number}
 */
const ZegoVideoCodecID =
{
    /** 
     * @description 默认编码 (H.264)
     */
    Default: 0,
    /** 
     * @description 分层编码 (H.264 SVC)
     */
    SVC: 1,
    /** 
     * @description VP8
     */
    VP8: 2,
    /** 
     * @description H.265
     */
    H265: 3,
}

/**
 * 拉流播放的视频分层
 * @enum {number}
 */
const ZegoPlayerVideoLayer =
{
    /** 
     * @description 根据网络状态选择图层
     */
    Auto: 0,
    /** 
     * @description 指定拉基本层(小分辨率)
     */
    Base: 1,
    /** 
     * @description 指定拉扩展层(大分辨率)
     */
    BaseExtend: 2,
}

/**
 * 视频流类型
 * @enum {number}
 */
const ZegoVideoStreamType =
{
    /** 
     * @description 根据网络状态自动选择流类型
     */
    Default: 0,
    /** 
     * @description 小分辨率类型
     */
    Small: 1,
    /** 
     * @description 大分辨率类型
     */
    Big: 2,
}

/**
 * 回声消除模式。
 * @enum {number}
 */
const ZegoAECMode =
{
    /** 
     * @description 激进的回声抵消,可能会影响音质稍微明显,但是回声会消除得很干净。
     */
    Aggressive: 0,
    /** 
     * @description 适度的回声抵消,就是可能会稍微影响一点点音质,但是残留的回声会更少。
     */
    Medium: 1,
    /** 
     * @description 舒适的回声抵消,就是回声抵消基本不会影响声音的音质,可能有时会残留一点回声,但不会影响正常听音。
     */
    Soft: 2,
}

/**
 * 噪声抑制模式
 * @enum {number}
 */
const ZegoANSMode =
{
    /** 
     * @description 轻度的噪声抑制,基本不会损伤音质,但会残留一些噪声。
     */
    Soft: 0,
    /** 
     * @description 适度的噪声抑制,有可能损伤一些音质,但有不错的降噪效果。
     */
    Medium: 1,
    /** 
     * @description 激进的噪声抑制,有可能明显损伤音质,但有很好的降噪效果。
     */
    Aggressive: 2,
}

/**
 * 当发生流量控制时可供调节的属性(位掩码枚举)
 * @enum {number}
 */
const ZegoTrafficControlProperty =
{
    /** 
     * @description 基础属性(自适应(降低)视频码率)
     */
    Basic: 0,
    /** 
     * @description 自适应(降低)视频帧率
     */
    AdaptiveFPS: 1,
    /** 
     * @description 自适应(降低)视频分辨率
     */
    AdaptiveResolution: 1 << 1,
    /** 
     * @description 自适应(降低)音频码率
     */
    AdaptiveAudioBitrate: 1 << 2,
}

/**
 * 流控触发最低码率时的视频发送模式
 * @enum {number}
 */
const ZegoTrafficControlMinVideoBitrateMode =
{
    /** 
     * @description 低于设置的最低码率时,停止视频发送
     */
    NoVideo: 0,
    /** 
     * @description 低于设置的最低码率时,视频以极低的频率发送(不超过 2 FPS)
     */
    UltraLowFPS: 1,
}

/**
 * 触发流量控制的因素
 * @enum {number}
 */
const ZegoTrafficControlFocusOnMode =
{
    /** 
     * @description 只关注本地网络
     */
    ZegoTrafficControlFounsOnLocalOnly: 0,
    /** 
     * @description 关注本地网络, 同时也兼顾远端网络,目前只在 1v1 场景下有效
     */
    ZegoTrafficControlFounsOnRemote: 1,
}

/**
 * 拉流状态
 * @enum {number}
 */
const ZegoPlayerState =
{
    /** 
     * @description 未拉流状态,在拉流前处于该状态。如果拉流过程出现稳态的异常,例如 AppID 和 AppSign 不正确,都会进入未拉流状态
     */
    NoPlay: 0,
    /** 
     * @description 正在请求拉流状态,拉流操作执行成功后会进入正在请求拉流状态,通常通过该状态进行应用界面的展示。如果因为网络质量不佳产生的中断,SDK 会进行内部重试,也会回到正在请求拉流状态
     */
    PlayRequesting: 1,
    /** 
     * @description 正在拉流状态,进入该状态表明拉流已经成功,用户可以正常通信
     */
    Playing: 2,
}

/**
 * 拉流媒体事件
 * @enum {number}
 */
const ZegoPlayerMediaEvent =
{
    /** 
     * @description 拉流端出现音频卡顿事件
     */
    AudioBreakOccur: 0,
    /** 
     * @description 拉流端音频卡顿事件结束
     */
    AudioBreakResume: 1,
    /** 
     * @description 拉流端出现视频卡顿事件
     */
    VideoBreakOccur: 2,
    /** 
     * @description 拉流端视频卡顿事件结束
     */
    VideoBreakResume: 3,
}

/**
 * 拉流资源策略模式
 * @enum {number}
 */
const ZegoStreamResourceMode =
{
    /** 
     * @description 默认模式。SDK 会根据拉流设置的 cdnConfig 参数以及即构的后台配置自动选择拉流资源
     */
    Default: 0,
    /** 
     * @description 仅从 CDN 拉流
     */
    OnlyCDN: 1,
    /** 
     * @description 仅从 L3 拉流
     */
    OnlyL3: 2,
    /** 
     * @description 仅从 RTC 拉流
     */
    OnlyRTC: 3,
}

/**
 * 更新类型
 * @enum {number}
 */
const ZegoUpdateType =
{
    /** 
     * @description 添加
     */
    Add: 0,
    /** 
     * @description 删除
     */
    Delete: 1,
}

/**
 * 转推 CDN 状态
 * @enum {number}
 */
const ZegoStreamRelayCDNState =
{
    /** 
     * @description 未转推状态,在转推前处于该状态。如果转推过程出现稳态的异常,例如 转推地址 不正确,都会进入未转推状态
     */
    NoRelay: 0,
    /** 
     * @description 正在请求转推状态,转推操作执行成功后会进入正在请求转推状态,通常通过该状态进行应用界面的展示。如果因为网络质量不佳产生的中断,SDK 会进行内部重试,也会回到正在转推状态
     */
    RelayRequesting: 1,
    /** 
     * @description 正在转推状态,进入该状态表明转推已成功
     */
    Relaying: 2,
}

/**
 * 转发 CDN 状态改变原因
 * @enum {number}
 */
const ZegoStreamRelayCDNUpdateReason =
{
    /** 
     * @description 无
     */
    None: 0,
    /** 
     * @description 服务器错误
     */
    ServerError: 1,
    /** 
     * @description 握手失败
     */
    HandshakeFailed: 2,
    /** 
     * @description 接入点错误
     */
    AccessPointError: 3,
    /** 
     * @description 创建流失败
     */
    CreateStreamFailed: 4,
    /** 
     * @description 流 ID 不合法
     */
    BadName: 5,
    /** 
     * @description CDN 服务器主动断开
     */
    CDNServerDisconnected: 6,
    /** 
     * @description 主动断开
     */
    Disconnected: 7,
    /** 
     * @description 混流的全部输入流会话关闭
     */
    MixStreamAllInputStreamClosed: 8,
    /** 
     * @description 混流的全部输入流没有数据
     */
    MixStreamAllInputStreamNoData: 9,
    /** 
     * @description 混流服务器内部错误
     */
    MixStreamServerInternalError: 10,
}

/**
 * 远端设备状态
 * @enum {number}
 */
const ZegoRemoteDeviceState =
{
    /** 
     * @description 设备开启
     */
    Open: 0,
    /** 
     * @description 设备关闭:一般性设备错误
     */
    GenericError: 1,
    /** 
     * @description 设备关闭:无效的设备 ID
     */
    InvalidID: 2,
    /** 
     * @description 设备关闭:无权限
     */
    NoAuthorization: 3,
    /** 
     * @description 设备关闭:采集帧率为 0
     */
    ZeroFPS: 4,
    /** 
     * @description 设备关闭:设备被占用
     */
    InUseByOther: 5,
    /** 
     * @description 设备关闭:设备未插入或被拔出
     */
    Unplugged: 6,
    /** 
     * @description 设备关闭:由于系统原因需要重启后才能进行下一次修改,否则重新打开也不生效
     */
    RebootRequired: 7,
    /** 
     * @description 设备关闭:系统媒体服务停止,如 iOS 平台下,当系统检测到当前压力巨大(如播放大量动画),则有可能会将媒体相关服务全部停用
     */
    SystemMediaServicesLost: 8,
    /** 
     * @description 设备关闭:禁用采集
     */
    Disable: 9,
    /** 
     * @description 设备关闭:远端设备被静音
     */
    Mute: 10,
    /** 
     * @description 设备关闭:设备被中断,如电话事件打断等
     */
    Interruption: 11,
    /** 
     * @description 设备关闭:用户 App 退到后台
     */
    InBackground: 12,
    /** 
     * @description 设备关闭:当前前台同时存在多个 App,如 iPad 应用分屏下,系统会禁止所有应用使用摄像头
     */
    MultiForegroundApp: 13,
    /** 
     * @description 设备关闭:系统处于高负载压力下,可能导致设备异常
     */
    BySystemPressure: 14,
    /** 
     * @description 设备状态未知:远端的 SDK 版本过低,不支持发布该设备状态信息
     */
    NotSupport: 15,
}

/**
 * 音频设备类型
 * @enum {number}
 */
const ZegoAudioDeviceType =
{
    /** 
     * @description 音频输入设备
     */
    Input: 0,
    /** 
     * @description 音频输出设备
     */
    Output: 1,
}

/**
 * 音频路由
 * @enum {number}
 */
const ZegoAudioRoute =
{
    /** 
     * @description 扬声器
     */
    Speaker: 0,
    /** 
     * @description 耳机
     */
    Headphone: 1,
    /** 
     * @description 蓝牙设备
     */
    Bluetooth: 2,
    /** 
     * @description 听筒
     */
    Receiver: 3,
    /** 
     * @description USB 音频外接设备
     */
    ExternalUSB: 4,
    /** 
     * @description Apple 隔空播放
     */
    AirPlay: 5,
}

/**
 * 混流内容类型
 * @enum {number}
 */
const ZegoMixerInputContentType =
{
    /** 
     * @description 音频混流内容类型
     */
    Audio: 0,
    /** 
     * @description 视频混流内容类型
     */
    Video: 1,
    /** 
     * @description 仅视频混流内容类型
     */
    VideoOnly: 2,
}

/**
 * 视频采集缩放时机
 * @enum {number}
 */
const ZegoCapturePipelineScaleMode =
{
    /** 
     * @description 采集后立即进行缩放,默认
     */
    Pre: 0,
    /** 
     * @description 编码时进行缩放
     */
    Post: 1,
}

/**
 * 视频帧格式
 * @enum {number}
 */
const ZegoVideoFrameFormat =
{
    /** 
     * @description 未知格式,将取平台默认值
     */
    Unknown: 0,
    /** 
     * @description I420 (YUV420Planar) 格式
     */
    I420: 1,
    /** 
     * @description NV12 (YUV420SemiPlanar) 格式
     */
    NV12: 2,
    /** 
     * @description NV21 (YUV420SemiPlanar) 格式
     */
    NV21: 3,
    /** 
     * @description BGRA32 格式
     */
    BGRA32: 4,
    /** 
     * @description RGBA32 格式
     */
    RGBA32: 5,
    /** 
     * @description ARGB32 格式
     */
    ARGB32: 6,
    /** 
     * @description ABGR32 格式
     */
    ABGR32: 7,
    /** 
     * @description I422 (YUV422Planar) 格式
     */
    I422: 8,
}

/**
 * 视频帧数据类型
 * @enum {number}
 */
const ZegoVideoBufferType =
{
    /** 
     * @description 未知类型
     */
    Unknown: 0,
    /** 
     * @description 裸数据类型视频帧
     */
    RawData: 1,
    /** 
     * @description 编码类型视频帧
     */
    EncodedData: 2,
    /** 
     * @description OpenGL Texture 2D 类型视频帧
     */
    GLTexture2D: 3,
    /** 
     * @description CVPixelBuffer 类型视频帧
     */
    CVPixelBuffer: 4,
    /** 
     * @description SurfaceTexture 类型视频帧
     */
    SurfaceTexture: 5,
    /** 
     * @description OpenGL GL_TEXTURE_EXTERNAL_OES 类型视频帧
     */
    GLTextureExternalOES: 6,
}

/**
 * 视频帧格式系列
 * @enum {number}
 */
const ZegoVideoFrameFormatSeries =
{
    /** 
     * @description RGB 系列
     */
    RGB: 0,
    /** 
     * @description YUV 系列
     */
    YUV: 1,
}

/**
 * 视频帧翻转模式
 * @enum {number}
 */
const ZegoVideoFlipMode =
{
    /** 
     * @description 不翻转
     */
    None: 0,
    /** 
     * @description X 轴翻转
     */
    X: 1,
    /** 
     * @description 垂直翻转
     */
    Y: 2,
    /** 
     * @description XY 轴翻转
     */
    XY: 3,
}

/**
 * 音频配置类型
 * @enum {number}
 */
const ZegoAudioConfigPreset =
{
    /** 
     * @description 基础音质 (16 kbps, Mono, ZegoAudioCodecIDDefault)
     */
    BasicQuality: 0,
    /** 
     * @description 标准音质 (48 kbps, Mono, ZegoAudioCodecIDDefault)
     */
    StandardQuality: 1,
    /** 
     * @description 标准音质 (56 kbps, Stereo, ZegoAudioCodecIDDefault)
     */
    StandardQualityStereo: 2,
    /** 
     * @description 高音质 (128 kbps, Mono, ZegoAudioCodecIDDefault)
     */
    HighQuality: 3,
    /** 
     * @description 高音质 (192 kbps, Stereo, ZegoAudioCodecIDDefault)
     */
    HighQualityStereo: 4,
}

/**
 * 播放器状态
 * @enum {number}
 */
const ZegoMediaPlayerState =
{
    /** 
     * @description 不在播放
     */
    NoPlay: 0,
    /** 
     * @description 播放中
     */
    Playing: 1,
    /** 
     * @description 暂停播放
     */
    Pausing: 2,
    /** 
     * @description 播放结束
     */
    PlayEnded: 3,
}

/**
 * 播放器网络事件
 * @enum {number}
 */
const ZegoMediaPlayerNetworkEvent =
{
    /** 
     * @description 网络资源播放不畅,开始尝试缓存数据
     */
    BufferBegin: 0,
    /** 
     * @description 网络资源可以顺畅播放
     */
    BufferEnded: 1,
}

/**
 * 播放器声道
 * @enum {number}
 */
const ZegoMediaPlayerAudioChannel =
{
    /** 
     * @description 左声道
     */
    Left: 0,
    /** 
     * @description 右声道
     */
    Right: 1,
    /** 
     * @description 全部声道
     */
    All: 2,
}

/**
 * 音效播放器状态
 * @enum {number}
 */
const ZegoAudioEffectPlayState =
{
    /** 
     * @description 不在播放
     */
    NoPlay: 0,
    /** 
     * @description 播放中
     */
    Playing: 1,
    /** 
     * @description 暂停播放
     */
    Pausing: 2,
    /** 
     * @description 播放结束
     */
    PlayEnded: 3,
}

/**
 * 录制类型
 * @enum {number}
 */
const ZegoDataRecordType =
{
    /** 
     * @description 该字段表示纯音频 SDK 默认录制音频,音视频 SDK 默认录制音视频,当录制 .aac 格式的文件时默认也是录制音频
     */
    Default: 0,
    /** 
     * @description 只录制音频
     */
    OnlyAudio: 1,
    /** 
     * @description 只录制视频,音频的 SDK 和录制 .aac 格式文件时无效
     */
    OnlyVideo: 2,
    /** 
     * @description 同时录制音频、视频。音频的 SDK 和录制 .aac 格式文件时录制出来也只有音频
     */
    AudioAndVideo: 3,
}

/**
 * 录制状态
 * @enum {number}
 */
const ZegoDataRecordState =
{
    /** 
     * @description 未录制状态,当录制出错或者未开始录制之前处于此状态
     */
    NoRecord: 0,
    /** 
     * @description 正在录制中,当成功调用 [startRecordingCapturedData] 函数之后处于此状态
     */
    Recording: 1,
    /** 
     * @description 录制成功
     */
    Success: 2,
}

/**
 * 网络模式
 * @enum {number}
 */
const ZegoNetworkMode =
{
    /** 
     * @description 离线(无网络)
     */
    Offline: 0,
    /** 
     * @description 未知网络模式
     */
    Unknown: 1,
    /** 
     * @description 有线以太网 (LAN)
     */
    Ethernet: 2,
    /** 
     * @description 无线局域网 (WLAN)
     */
    Wifi: 3,
    /** 
     * @description 2G 网络 (GPRS/EDGE/CDMA1x/etc.)
     */
    Mode2G: 4,
    /** 
     * @description 3G 网络 (WCDMA/HSDPA/EVDO/etc.)
     */
    Mode3G: 5,
    /** 
     * @description 4G 网络 (LTE)
     */
    Mode4G: 6,
    /** 
     * @description 5G 网络 (NR (NSA/SA))
     */
    Mode5G: 7,
}

/**
 * 网速测试类型
 * @enum {number}
 */
const ZegoNetworkSpeedTestType =
{
    /** 
     * @description 上行测速
     */
    Uplink: 0,
    /** 
     * @description 下行测速
     */
    Downlink: 1,
}

/**
 * @typedef {Object} ZegoLogConfig - 日志配置
 * @property {string} logPath - 日志文件的存储路径。详情描述:用于自定义日志文件的存储路径。业务场景:当需要自定义日志存储路径时,需要这个配置。是否必填:否。默认值:各平台的默认路径有所不同,具体参考官网文档:https://doc-zh.zego.im/article/6467。注意事项:开发者需要确保对该路径下文件的读写权限。
 * @property {number} logSize - 日志文件大小上限,单位Bytes。详情描述:用于自定义日志文件大小上限。业务场景:当需要自定义日志文件大小上限时,需要这个配置。是否必填:否。默认值:5MB (5 * 1024 * 1024 Bytes)。取值范围:最小1MB (1 * 1024 * 1024 Bytes),最大100M (100 * 1024 * 1024 Bytes),0表示不需要写日志。注意事项:日志文件大小上限越大,承载的日志信息越多,但是日志上传时间也会更长。
 */

/**
 * @typedef {Object} ZegoEngineProfile - 创建引擎的配置
 * @property {number} appID - ZEGO 为开发者签发的应用 ID,请从 ZEGO 管理控制台 https://console-express.zego.im 申请。appID 取值范围 0~4294967295。
 * @property {string} appSign - 每个 AppID 对应的应用签名,请从 ZEGO 管理控制台申请。该参数为包含 64 个字符的字符串,字符取值范围:'0' ~ '9', 'a' ~ 'z'。例:"9dc9a25bh2f2137446897071c8c033fa33b91c3dd2a85e0c000ae82c0dad3"。
 * @property {ZegoScenario} scenario - 产品的应用场景,开发者可根据所开发的 App 的场景选择其中一个,SDK 会针对该场景的作一些优化。当设置具体场景后,开发者若需要定制化更多参数,依然可以调用具体函数来设置具体参数。不同应用场景的建议配置可以参考:https://doc-zh.zego.im/faq/profile_difference。
 */

/**
 * @typedef {Object} ZegoEngineConfig - 引擎进阶配置
 * @property {ZegoLogConfig} logConfig - 日志配置,未设置时使用默认配置(详见 [ZegoLogConfig])。
 * @property {map<string, string>} advancedConfig - 进阶功能配置,未设置时默认不使用任何特殊功能,如需使用,请联系 ZEGO 技术支持。
 */

/**
 * @typedef {Object} ZegoRoomConfig - 房间进阶配置
 * @property {number} maxMemberCount - 房间最大用户数量,传 0 视为不限制,默认无限制
 * @property {boolean} isUserStatusNotify - 是否开启用户进出房间回调通知 [onRoomUserUpdate],默认关闭。若开发者需要使用 ZEGO 房间用户广播通知,请确保每个登录的用户都将此标记设置为true
 * @property {string} token - 由开发者业务服务器下发的 token,用以保证安全性,生成规则详见 用户权限控制 https://doc-zh.zego.im/article/10360,默认为空字符串,即不鉴权。
 */

/**
 * @typedef {Object} ZegoVideoConfig - 视频配置
 * @property {number} captureWidth - 采集分辨率宽度,控制摄像头图像采集的宽度。SDK 要求设置此成员为偶数。仅摄像头启动前且没有使用自定义视频采集时,设置有效。出于性能考虑,SDK 在采集摄像头画面后、渲染预览画面之前,就将视频帧缩放为编码分辨率,因此预览画面的分辨率是编码分辨率,如果您需要预览画面的分辨率为此值,请先调用 [setCapturePipelineScaleMode] 将采集缩放模式改为 [Post]
 * @property {number} captureHeight - 采集分辨率高度,控制摄像头图像采集的高度。SDK 要求设置此成员为偶数。仅摄像头启动前且没有使用自定义视频采集时,设置有效。出于性能考虑,SDK 在采集摄像头画面后、渲染预览画面之前,就将视频帧缩放为编码分辨率,因此预览画面的分辨率是编码分辨率,如果您需要预览画面的分辨率为此值,请先调用 [setCapturePipelineScaleMode] 将采集缩放模式改为 [Post]
 * @property {number} encodeWidth - 编码分辨率宽度,控制编码器编码推流的图像宽度。SDK 要求设置此成员为偶数。推流前后设置均可生效
 * @property {number} encodeHeight - 编码分辨率高度,控制编码器编码推流的图像高度。SDK 要求设置此成员为偶数。推流前后设置均可生效
 * @property {number} fps - 帧率,控制摄像头采集帧率以及编码器编码帧率的大小。仅摄像头启动前设置有效
 * @property {number} bitrate - 码率,单位为 kbps。推流前后设置均可生效
 * @property {ZegoVideoCodecID} codecID - 要使用的编码器,默认为 default。仅在推流前设置生效
 */

/**
 * @typedef {Object} ZegoSEIConfig - SEI 配置
 * @property {ZegoSEIType} type - SEI 类型
 */

/**
 * @typedef {Object} ZegoVoiceChangerParam - 变声器参数
 * @property {number} pitch - 音高参数,取值范围 [-8.0, 8.0],数值越大声音越尖,设为 0.0 即关闭变声器。注意:变声音效只针对采集的声音有效。
 */

/**
 * @typedef {Object} ZegoReverbParam - 音频混响参数
 * @property {number} roomSize - 房间大小,取值范围 [0.0, 1.0],用于控制产生混响模拟的 “房间” 的大小,房间越大,混响越强
 * @property {number} reverberance - 余响,取值范围 [0.0, 0.5],用于控制混响的拖尾长度
 * @property {number} damping - 混响阻尼,取值范围 [0.0, 2.0],控制混响的衰减程度,阻尼越大,衰减越大
 * @property {number} dryWetRatio - 干湿比,取值范围大于等于 0.0,控制混响与直达声和早期反射声之间的比 例,干(dry)的部分默认定为1,当干湿比设为较小时,湿(wet)的比例较大,此时混响较强
 */

/**
 * @typedef {Object} ZegoReverbAdvancedParam - 音频混响高级参数
 * @property {number} roomSize - 房间大小(百分比),取值范围 [0.0, 100.0],用于控制产生混响模拟的 “房间” 的大小,房间越大,混响越强
 * @property {number} reverberance - 余响(百分比),取值范围 [0.0, 100.0],用于控制混响的拖尾长度
 * @property {number} damping - 混响阻尼(百分比),取值范围 [0.0, 100.0],控制混响的衰减程度,阻尼越大,衰减越大
 * @property {boolean} wetOnly - 只有湿信号。设置只输出混响声音,不叠加原始输入声音,默认是false。
 * @property {number} wetGain - 湿信号增益(dB),取值范围 [-20.0, 10.0]
 * @property {number} dryGain - 干信号增益(dB),取值范围 [-20.0, 10.0]
 * @property {number} toneLow - 低频衰减,默认为不衰减(100%)
 * @property {number} toneHigh - 高频衰减,默认为不衰减(100%)
 * @property {number} preDelay - 初始延迟时间(ms)。取值范围[0, 200]
 * @property {number} stereoWidth - 立体声宽度(百分比),默认值为 0%
 */

/**
 * @typedef {Object} ZegoReverbEchoParam - 音频混响回声参数
 * @property {number} inGain - 输入音频信号的增益,取值范围 [0.0, 1.0]
 * @property {number} outGain - 输出音频信号的增益,取值范围 [0.0, 1.0]
 * @property {number} numDelays - 回声数量,取值范围 [0, 7]
 * @property {number[]} delay - 回声信号分别的延时,单位为毫秒,取值范围 [0, 5000] ms
 * @property {number[]} decay - 回声信号分别的衰减系数,取值范围 [0.0, 1.0]
 */

/**
 * @typedef {Object} ZegoUser - 用户对象
 * @property {string} userID - 用户 ID,最大 64 字节的字符串。请勿在此字段填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '/', '\'。
 * @property {string} userName - 用户名,最大长度不超过 256 字节的字符串。请勿在此字段填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
 */

/**
 * @typedef {Object} ZegoStream - 音视频流对象
 * @property {ZegoUser} user - 用户对象实例。请勿在此字段填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
 * @property {string} streamID - 流 ID,长度不超过256的字符串。不可以包含 URL 关键字,否则推拉流失败。仅支持数字,英文字符 和 '~', '!', '@', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '/', '\'。
 * @property {string} extraInfo - 流附加信息
 */

/**
 * @typedef {Object} ZegoRoomExtraInfo - 房间附加消息
 * @property {string} key - 房间附加消息的键
 * @property {string} value - 房间附加消息的值
 * @property {ZegoUser} updateUser - 更新房间附加消息的用户。请勿在此字段填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
 * @property {number} updateTime - 房间附加消息的更新时间,UNIX 时间戳,单位为毫秒
 */

/**
 * @typedef {Object} ZegoRect - 视图相关所使用的坐标
 * @property {number} x - 矩形左上角在坐标系 X 轴上的值
 * @property {number} y - 矩形左上角在坐标系 Y 轴上的值
 * @property {number} width - 矩形宽度
 * @property {number} height - 矩形高度
 */

/**
 * @typedef {Object} ZegoView - 视图对象
 * @property {ZegoViewMode} viewMode - 视图模式,默认为 ZegoViewModeAspectFit
 * @property {number} backgroundColor - 背景颜色,格式为 0xRRGGBB,默认为黑色即 0x000000
 * @property {canvas} canvas - html canvas element
 * @property {boolean} preserveDrawingBuffer - webgl context 保存缓存
 */

/**
 * @typedef {Object} ZegoPublishStreamQuality - 推流质量对象
 * @property {number} videoCaptureFPS - 视频采集帧率,单位为 f/s
 * @property {number} videoEncodeFPS - 视频编码帧率,单位为 f/s
 * @property {number} videoSendFPS - 视频发送帧率,单位为 f/s
 * @property {number} videoKBPS - 视频码率,单位为 kbps
 * @property {number} audioCaptureFPS - 音频采集帧率,单位为 f/s
 * @property {number} audioSendFPS - 音频发送帧率,单位为 f/s
 * @property {number} audioKBPS - 音频码率,单位为 kbps
 * @property {number} rtt - 本端至服务端的延迟,单位为毫秒
 * @property {number} packetLostRate - 丢包率,单位为百分比,0.0 ~ 1.0
 * @property {ZegoStreamQualityLevel} level - 推流质量级别
 * @property {boolean} isHardwareEncode - 是否开启硬件编码
 * @property {ZegoVideoCodecID} videoCodecID - 视频编码格式
 * @property {number} totalSendBytes - 已发送的总字节数,包括音频、视频和SEI等
 * @property {number} audioSendBytes - 已发送的音频字节数
 * @property {number} videoSendBytes - 已发送的视频字节数
 */

/**
 * @typedef {Object} ZegoCDNConfig - CDN 配置对象
 * @property {string} url - CDN 的 URL
 * @property {string} authParam - URL 的鉴权参数
 */

/**
 * @typedef {Object} ZegoStreamRelayCDNInfo - 转推 CDN 信息
 * @property {string} url - CDN 推流的 URL
 * @property {ZegoStreamRelayCDNState} state - 转推状态
 * @property {ZegoStreamRelayCDNUpdateReason} updateReason - 转推状态变更的原因
 * @property {number} stateTime - 状态发生的时间,UNIX 时间戳,单位为毫秒
 */

/**
 * @typedef {Object} ZegoPlayerConfig - 拉流进阶配置。
 * @property {ZegoStreamResourceMode} resourceMode - 拉流资源策略模式。
 * @property {ZegoCDNConfig} cdnConfig - 拉流的 CDN 配置,若设置后,则按照 URL 拉流而不是按照 streamID 拉流,此后 streamID 仅作为 SDK 内部回调的标识。
 * @property {ZegoPlayerVideoLayer} videoLayer - 设置拉流的视频分层。
 * @property {string} roomID - 房间 ID。
 */

/**
 * @typedef {Object} ZegoPlayStreamQuality - 拉流质量对象
 * @property {number} videoRecvFPS - 视频接收帧率,单位为 f/s
 * @property {number} videoDejitterFPS - 视频抗抖动帧率,单位为 f/s
 * @property {number} videoDecodeFPS - 视频解码帧率,单位为 f/s
 * @property {number} videoRenderFPS - 视频渲染帧率,单位为 f/s
 * @property {number} videoKBPS - 视频码率,单位为 kbps
 * @property {number} videoBreakRate - 视频卡顿率,单位为(卡顿次数/每10秒)
 * @property {number} audioRecvFPS - 音频接收帧率,单位为 f/s
 * @property {number} audioDejitterFPS - 音频抗抖动帧率,单位为 f/s
 * @property {number} audioDecodeFPS - 音频解码帧率,单位为 f/s
 * @property {number} audioRenderFPS - 音频渲染帧率,单位为 f/s
 * @property {number} audioKBPS - 音频码率,单位为 kbps
 * @property {number} audioBreakRate - 音频卡顿率,单位为(卡顿次数/每10秒)
 * @property {number} rtt - 服务端至本端的延迟,单位为毫秒
 * @property {number} packetLostRate - 丢包率,单位为百分比,0.0 ~ 1.0
 * @property {number} peerToPeerDelay - 端到端延迟,单位为毫秒
 * @property {number} peerToPeerPacketLostRate - 端到端丢包率,单位为百分比,0.0 ~ 1.0
 * @property {ZegoStreamQualityLevel} level - 拉流质量级别
 * @property {number} delay - 本端接收到数据后到播放的延迟,单位为毫秒
 * @property {number} avTimestampDiff - 视频时间戳相对于音频时间戳的差值,用于反映音画同步情况,单位为毫秒。此值小于 0 表示视频超前音频的毫秒数, 大于 0 表示视频滞后音频的毫秒数, 等于0表示无差别。 当绝对值小于200,可基本认为音画同步,当绝对值连续 10 秒大于 200 可以认为异常
 * @property {boolean} isHardwareDecode - 是否开启硬件解码
 * @property {ZegoVideoCodecID} videoCodecID - 视频编码格式
 * @property {number} totalRecvBytes - 已接收的总字节数,包括音频、视频和 SEI 等
 * @property {number} audioRecvBytes - 已接收的音频字节数
 * @property {number} videoRecvBytes - 已接收的视频字节数
 */

/**
 * @typedef {Object} ZegoDeviceInfo - 设备信息
 * @property {string} deviceID - 设备 ID
 * @property {string} deviceName - 设备名称
 */

/**
 * @typedef {Object} ZegoPerformanceStatus - 系统性能监控状态
 * @property {number} cpuUsageApp - 当前 App 的 CPU 使用率,取值范围 [0, 1]
 * @property {number} cpuUsageSystem - 当前系统的 CPU 使用率,取值范围 [0, 1]
 * @property {number} memoryUsageApp - 当前 App 的运行内存使用率,取值范围 [0, 1]
 * @property {number} memoryUsageSystem - 当前系统的运行内存使用率,取值范围 [0, 1]
 * @property {number} memoryUsedApp - 当前 App 的运行内存使用量,单位为 MB
 */

/**
 * @typedef {Object} ZegoMixerAudioConfig - 混流音频配置
 * @property {number} bitrate - 音频码率,单位为 kbps,默认为 48 kbps,开始混流任务后不能修改
 * @property {ZegoAudioChannel} channel - 音频声道,默认为 Mono 单声道
 * @property {ZegoAudioCodecID} codecID - 编码 ID,默认为 ZegoAudioCodecIDDefault
 */

/**
 * @typedef {Object} ZegoMixerVideoConfig - 混流视频配置
 * @property {number} width - 视频分辨率宽
 * @property {number} height - 视频分辨率高
 * @property {number} fps - 视频帧率,开始混流任务后不能修改
 * @property {number} bitrate - 视频码率,单位为 kbps
 */
/**
 * @typedef {Object} ZegoMixerInput - 混流输入
 * @property {string} streamID - 流 ID,长度不超过256的字符串。不可以包含 URL 关键字,否则推拉流失败。仅支持数字,英文字符 和 '~', '!', '@', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '/', '\'。
 * @property {ZegoMixerInputContentType} contentType - 混流内容类型
 * @property {ZegoRect} layout - 流的布局。当混入的流为音频流时(即 ContentType 参数设置为音频混流类型),SDK内部不处理布局字段,此时无需关注该参数。
 * @property {number} soundLevelID - 当混流任务开启了声浪回调时,需要为每条输入流指定唯一的 soundLevelID
 * @property {boolean} isAudioFocus - 当前输入流是否开启焦点语音,开启了会突出此路流的声音
 */

/**
 * @typedef {Object} ZegoMixerOutput - 混流输出对象
 * @property {string} target - 混流输出目标,URL 或者流 ID,若为 URL 格式 目前只支持 RTMP URL 格式:rtmp://xxxxxxxx, 且不能传入两个相同的混流输出的地址。
 */

/**
 * @typedef {Object} ZegoWatermark - 水印对象
 * @property {string} imageURL - 水印图片路径。支持本地文件绝对路径 (file://xxx)。 格式支持 png、jpg。
 * @property {ZegoRect} layout - 水印图片的大小方位
 */

/**
 * @typedef {Object} ZegoMixerTask - 混流任务对象
 * @property {string} taskID - 混流任务 ID
 * @property {ZegoMixerInput[]} inputList - 混流任务的输入流列表
 * @property {ZegoMixerOutput[]} outputList - 混流任务的输出流列表
 * @property {ZegoMixerVideoConfig} videoConfig - 混流任务的视频配置
 * @property {ZegoMixerAudioConfig} audioConfig - 混流任务的音频配置
 * @property {ZegoWatermark} watermark - 混流任务的水印
 * @property {string} backgroundImageURL - 混流任务的背景图 URL
 * @property {boolean} enableSoundLevel - 是否开启混流的声浪回调通知,开启后拉混流时可通过 [onMixerSoundLevelUpdate] 回调收到每条单流的声浪信息
 * @property {map<string, string>} advancedConfig - 设置高级配置,如可用于指定视频编码等功能。如需使用,联系 ZEGO 技术支持。
 */

/**
 * @typedef {Object} ZegoBroadcastMessageInfo - 房间广播消息
 * @property {string} message - 消息内容
 * @property {number} messageID - 消息 ID
 * @property {number} sendTime - 消息的发送时间,UNIX 时间戳,单位为毫秒
 * @property {ZegoUser} fromUser - 消息的发送者。请勿在此字段填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
 */

/**
 * @typedef {Object} ZegoBarrageMessageInfo - 房间弹幕消息
 * @property {string} message - 消息内容
 * @property {string} messageID - 消息 ID
 * @property {number} sendTime - 消息的发送时间,UNIX 时间戳,单位为毫秒
 * @property {ZegoUser} fromUser - 消息的发送者。请勿在此字段填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。
 */

/**
 * @typedef {Object} ZegoAudioConfig - 推流音频配置
 * @property {number} bitrate - 音频码率,单位为 kbps,默认为 48 kbps. 该配置推流前后设置均可生效
 * @property {ZegoAudioChannel} channel - 音频编码声道,控制编码器编码的声道数。默认为 Mono 单声道。仅在推流前设置生效。
 * @property {ZegoAudioCodecID} codecID - 编码 ID,默认为 ZegoAudioCodecIDDefault。仅在推流前设置生效。
 */

/**
 * @typedef {Object} ZegoDataRecordConfig - 录制配置
 * @property {string} filePath - 录制文件保存路径,绝对路径,需要包含文件名, 文件名需指明后缀,目前支持 .mp4/.flv/.aac 格式文件。若多次录制为同一个路径,会覆盖同名的文件。最大长度应小于 1024 字节。
 * @property {ZegoDataRecordType} recordType - 录制文件媒体类型
 */

/**
 * @typedef {Object} ZegoDataRecordProgress - 文件录制进度
 * @property {number} duration - 当前录制时长, 单位为毫秒
 * @property {number} currentFileSize - 当前录制文件大小, 单位为字节
 */

/**
 * @typedef {Object} ZegoNetworkSpeedTestConfig - 网络测速配置
 * @property {boolean} testUplink - 是否进行上行测速
 * @property {number} expectedUplinkBitrate - 单位 kbps。用于确定网络上行环境是否适合推送指定码率的数据,建议用推流的码率来测试。
 * @property {boolean} testDownlink - 是否进行下行测速
 * @property {number} expectedDownlinkBitrate - 单位 kbps。用于确定网络下行环境是否适合拉取指定码率的数据,建议用推流的码率来测试。
 */

/**
 * @typedef {Object} ZegoNetworkSpeedTestQuality - 网络测速质量
 * @property {number} connectCost - 连接服务器耗时,单位毫秒。测速过程中如果网络连接断开会自动发起重连,此变量会相应更新。
 * @property {number} rtt - rtt,单位毫秒
 * @property {number} packetLostRate - 丢包率,单位为百分比,0.0 ~ 1.0
 */

/**
 * @typedef {Object} ZegoAudioEffectPlayConfig - 音效播放器播放配置
 * @property {number} playCount - 播放次数,当设为 0 时则无限循环播放,直到用户调用 [stop],默认为 1 即仅播放一次。
 * @property {boolean} isPublishOut - 是否将音效混入推流中,默认 false。
 */

module.exports = {
    ZegoScenario,
    ZegoLanguage,
    ZegoEngineState,
    ZegoRoomState,
    ZegoPublishChannel,
    ZegoViewMode,
    ZegoVideoMirrorMode,
    ZegoSEIType,
    ZegoPublisherState,
    ZegoVoiceChangerPreset,
    ZegoReverbPreset,
    ZegoVideoConfigPreset,
    ZegoStreamQualityLevel,
    ZegoAudioChannel,
    ZegoAudioCaptureStereoMode,
    ZegoAudioCodecID,
    ZegoVideoCodecID,
    ZegoPlayerVideoLayer,
    ZegoAECMode,
    ZegoANSMode,
    ZegoTrafficControlProperty,
    ZegoTrafficControlMinVideoBitrateMode,
    ZegoPlayerState,
    ZegoPlayerMediaEvent,
    ZegoStreamResourceMode,
    ZegoUpdateType,
    ZegoStreamRelayCDNState,
    ZegoStreamRelayCDNUpdateReason,
    ZegoRemoteDeviceState,
    ZegoAudioDeviceType,
    ZegoAudioRoute,
    ZegoMixerInputContentType,
    ZegoCapturePipelineScaleMode,
    ZegoVideoFrameFormat,
    ZegoVideoBufferType,
    ZegoVideoFrameFormatSeries,
    ZegoVideoFlipMode,
    ZegoAudioConfigPreset,
    ZegoMediaPlayerState,
    ZegoMediaPlayerNetworkEvent,
    ZegoMediaPlayerAudioChannel,
    ZegoAudioEffectPlayState,
    ZegoDataRecordType,
    ZegoDataRecordState,
    ZegoNetworkMode,
    ZegoNetworkSpeedTestType,
	ZegoTrafficControlFocusOnMode,
    ZegoVideoStreamType
}