如果你希望从此前版本的 Windows 客户端 SDK 升级到最新的客户端 SDK,请在工程文件中,替换最新的客户端 SDK 文件,并参考本文完成 API,回调,参数类型等的替换。

升级过程中,你可能需要参考历史版本文档归档。

3.54
重要更新
  1. 该版本 Windows 端新增音频编解码器插件、视频编解码器插件,详情参看按需集成插件文档。
  2. 该版本为全部 API 增加返回值,通过返回值可以明确发现失败的 API 调用,定位失败原因。具体返回值的含义参看各 API 注释。
方法变更
变更详情功能模块变动前方法变动后方法说明
将混音相关的类和接口按音效和音乐进行拆分,具体变动情况请参看混音相关的新旧接口对应表混音一般来说,对于短时间的音效(比如小于 20s),可以使用音效类;对于较长的音频或 PCM 数据,可以使用音乐类。
行为变更音频管理等待超时后返回空列表,超时时间默认为 10 s
行为变更视频管理enumerateVideoCaptureDevices等待超时后返回空列表,超时时间默认为 10 s

附:混音相关的新旧接口对应表

接口分类接口用途
废弃类/接口
新类/接口(音效)
新类/接口(音乐)
备注
获取实例获取播放器实例getAudioMixingManagergetAudioEffectManagergetAudioMediaManager
混音类IAudioMixingManagerIAudioEffectManagerIAudioMediaManager

混音主调接口

将音效文件加载至内存

  • preloadAudioMixing
  • unloadAudioMixing
  • preload
  • unload
  • unloadAll
  • open
  • openWithCustomSource

播放/停止/暂停/恢复

  • startAudioMixing
  • stopAudioMixing
  • stopAllAudioMixing
  • pauseAudioMixing
  • pauseAllAudioMixing
  • resumeAudioMixing
  • resumeAllAudioMixing
  • start
  • stop
  • stopAll
  • pause
  • pauseAll
  • resume
  • resumeAll
  • start
  • stop
  • stopAll
  • pause
  • resume

获取/指定位置/时长

  • setAudioMixingPosition
  • getAudioMixingCurrentPosition
  • getAudioMixingDuration
  • setPosition
  • getPosition
  • getDuration
  • setPosition
  • getTotalDuration
  • getPlaybackDuration

获取/指定音量

  • setAudioMixingVolume
  • NA
  • setVolume
  • getVolume
  • setVolume
  • getVolume
调整音调setAudioMixingPitchNAsetAudioPitch
设置声道模式setAudioMixingDualMonoModeNAsetAudioDualMonoMode

获取/设置音轨数

  • getAudioTrackCount
  • selectAudioTrack

NA

  • getAudioTrackCount
  • selectAudioTrack

Index 取值修改为从 0 开始

设置播放速度setAudioMixingPlaybackSpeedNAsetPlaybackSpeed
设置播放进度回调间隔setAudioMixingProgressIntervalNAsetProgressInterval
设置响度setAudioMixingLoudnessNAsetLoudness

播放外部音频源

  • enableAudioMixingFrame
  • disableAudioMixingFrame
  • pushAudioMixingFrame

NA

  • openWithCustomSource
  • pushExternalAudioFrame

混音回调接口

播放状态回调

onAudioMixingStateChanged

  • setEventHandler
  • onAudioEffectPlayerStateChanged
  • setEventHandler
  • onMediaPlayerStateChanged
  • onMediaPlayerPlayingProgress

音频数据回调

  • registerAudioFileFrameObserver
  • onAudioFileFrame

NA

  • IMediaPlayerAudioFrameObserver
  • onFrame
3.52
方法变更
变更详情功能模块变动前方法变动后方法说明
参数变更引擎管理feedback参数数据类型变更
废弃CDN 推流virtual int startLiveTranscoding(const char* task_id, ITranscoderParam* param, ITranscoderObserver* observer) = 0;virtual int startPushMixedStreamToCDN(const char* task_id, IMixedStreamConfig* config, IMixedStreamObserver* observer) = 0;合流转推直播接口/参数类型重命名,行为逻辑无变化,新旧版本类名对应关系参看该版本中“类型变更”。
virtual int stopLiveTranscoding(const char* task_id) = 0;virtual int stopPushStreamToCDN(const char* task_id) = 0;
virtual int updateLiveTranscoding(const char* task_id, ITranscoderParam* param) = 0;virtual int updatePushMixedStreamToCDN(const char* task_id, IMixedStreamConfig* config) = 0;

合并

高级功能

  • virtual int updatePosition(const Position& pos) = 0;
  • virtual int updateSelfOrientation(const HumanOrientation& orientation) = 0;

virtual int updateSelfPosition(const PositionInfo& position_info) = 0;

新接口支持本地用户同时设置自己的发声位置和发声朝向。

  • virtual int updateListenerPosition(const Position &pos) = 0;
  • virtual int updateListenerOrientation(const HumanOrientation& orientation) = 0;

virtual int updateRemotePosition(const char* uid, const PositionInfo& position_info) = 0;

新接口支持本地用户设置远端用户的发声位置和发声朝向。

回调变更
变更详情方法说明

参数变更

onPublicStreamSEIMessageReceived

参数 sourceType 的类型由 SEIMessageSourceType 变更为 DataMessageSourceType
拆分为:

类型变更
变更详情类型变更前变更后说明
重命名转推直播一级结构体ITranscoderParamIMixedStreamConfig结构体中变量名称/方法名称均有变更,请至对应的类型详情中查看
转推直播 ObserverITranscoderObserverIMixedStreamObserver
转推直播二级结构体TranscoderVideoParamMixedStreamVideoConfig结构体中变量名称/方法名称均有变更,请至对应的类型详情中查看
TranscoderAudioParamMixedStreamAudioConfig
TranscoderSpatialConfigMixedStreamSpatialAudioConfig
TranscoderClientMixParamMixedStreamClientMixConfig
TranscoderLayoutRegionMixedStreamLayoutRegionConfig
转推直播相关枚举类型TranscoderClientMixVideoFormatMixedStreamClientMixVideoFormat各枚举类中的枚举值名称均有变更,请至对应的类型详情中查看
TranscoderContentControlTypeMixedStreamMediaType
TranscoderRenderModeMixedStreamRenderMode
TranscoderLayoutRegionTypeMixedStreamLayoutRegionType
TranscoderAudioCodecProfileMixedStreamAudioProfile
TranscoderVideoCodecTypeMixedStreamVideoCodecType
TranscoderAudioCodecTypeMixedStreamAudioCodecType
StreamMixingTypeMixedStreamType
错误码变更
变更详情错误码说明

枚举值变更

PublicStreamErrorCode

新增枚举值:

  • kPublicStreamErrorCodePullNoPushStream = 1300

名称变更:

  • kPublicStreamOK = 0 更新为 kPublicStreamErrorCodeOK = 0

  • kPublicStreamPushInvalidParam = 1191 更新为 kPublicStreamErrorCodePushInvalidParam = 119

  • kPublicStreamPushInvalidStatus = 1192 更新为 kPublicStreamErrorCodePushInvalidStatus = 1192

  • kPublicStreamPushInternalError = 1193 更新为 kPublicStreamErrorCodePushInternalError = 1193

  • kPublicStreamPushFailed = 1195 更新为 kPublicStreamErrorCodePushFailed = 1195

  • kPublicStreamPushTimeout = 1196 更新为 kPublicStreamErrorCodePushTimeout = 1196

ErrorCode

新增枚举值 kErrorCodeJoinRoomRoomForbidden=-1025 和 kErrorCodeJoinRoomUserForbidden=-1026。
当服务端在指定房间封禁指定用户,而此用户加入房间失败,或从房间中被踢出时收到。

废弃枚举值 kErrorCodeOverScreenPublishLimit=-1081,用 kErrorCodeOverStreamPublishLimit=-1080 代替。
3.50
头文件变更

原 bytertc_common_defines.h 文件拆分为 bytertc_media_defines.h 及 bytertc_rts_defines.h

方法变更
变更详情功能模块变动前方法变动后方法备注

拆分

视频管理

virtual int registerFaceDetectionObserver(IFaceDetectionObserver* observer, int interval_ms) = 0;

解除人脸识别与视频特效之间的耦合,提升接口易用性。

参数类型变更

屏幕共享

virtual int setScreenVideoEncoderConfig(const VideoEncoderConfig& screen_solution) = 0;

virtual int setScreenVideoEncoderConfig(const ScreenVideoEncoderConfig& screen_solution) = 0;

参数类型变更为新增的 ScreenVideoEncoderConfig

行为变更

屏幕共享

  • setVideoSourceType: 屏幕流默认为外部源

  • setScreenAudioSourceType: 当前设置为内部源时,且已开启了采集,调用该接口切换为外部源时,不会停止内部采集

  • startScreenAudioCapture/ startScreenVideoCapture: 当前为外部源时,调用本接口将自动切换为内部源,并开启采集

  • stopScreenAudioCapture/ stopScreenVideoCapture: 当前为外部源时,调用本接口将关闭外部采集

优化屏幕共享接口的行为

名称和参数变更

音视频处理

  • virtual int checkLicense(void* androidContext, void* jnienv, const char* licensePath) = 0;

  • virtual void setAlgoModelPath(const char* modelPath) = 0;

virtual int initCVResource(const char* license_file_path, const char* algo_model_dir) = 0;

统一返回值

virtual int enableEffect(bool enabled) = 0;

virtual int updateNode(const char* nodePath, const char* nodeKey, float nodeValue) = 0;virtual int updateEffectNode(const char* effectNodePath, const char* nodeKey, float nodeValue) = 0;

virtual int setBackgroundSticker(const char* modelPath, const VirtualBackgroundSource& source) = 0;

屏幕分享

virtual bool pushScreenFrame(IVideoFrame* frame)

virtual int pushScreenVideoFrame(IVideoFrame* frame)

  • 返回值由 bool 变更为 int。

  • 名称由 pushScreenFrame 变更为 pushScreenVideoFrame

参数变更

消息

virtual int sendSEIMessage(StreamIndex stream_index, const uint8_t* message, int length, int repeat_count) = 0;

virtual int sendSEIMessage(StreamIndex stream_index, const uint8_t* message, int length, int repeat_count, SEICountPerFrame mode) = 0;

支持 SEI 多发模式,即在 1 帧间隔内多次发送 SEI 数据时,多个 SEI 随下个视频帧同时发送。

多个模块

返回值类型变化,例如:

  • 旧方法——virtual void updateToken(const char* token) = 0;

  • 新方法——virtual int updateToken(const char* token) = 0;

以下接口返回值类型由 void 变为 int,具体 int 值含义参考新增数据结构 ReturnStatus:
updateToken
setRemoteVideoConfig
subscribeStream
unsubscribeStream
subscribeScreen
unsubscribeScreen
setRemoteAudioPlaybackVolume
setPublicStreamVideoSink
以下接口返回值类型由 bool 变为 int,具体 int 值含义参考新增数据结构 ReturnStatus:
pushExternalAudioFrame
pullExternalAudioFrame
pushExternalVideoFrame
pushExternalEncodedVideoFrame
pullAudioFrame
pushAudioFrame
pushVideoFrame
pushEncodedVideoFrame
以下接口返回值类型由 int 变为 void:
enableSimulcastMode
setPublishFallbackOption
setSubscribeFallbackOption

名称变更视频管理setRemoteStreamVideoCanvassetRemoteVideoCanvas

接口声明位置变更

视频管理

新版本中使用以下两个方法需要引入bytertc_video_frame.h 头文件

回调变更
变更详情功能模块变动前方法变动后方法
废弃音频管理onLocalAudioStateChanged 和 onLocalVideoStateChanged使用 onAudioDeviceStateChanged 和 onVideoDeviceStateChanged 代替

参数变更

消息

virtual void onPublicStreamSEIMessageReceived(const char* public_stream_id, const uint8_t* message, int message_length) { (void)public_stream_id; (void)message; (void)message_length; }

virtual void onPublicStreamSEIMessageReceived(const char* public_stream_id, const uint8_t* message, int message_length, SEIMessageSourceType source_type) { (void)public_stream_id; (void)message; (void)message_length; (void)source_type; }

删除回调类

范围语音

IRangeAudioObserver 类和相关的接口

此前,在手动订阅的场景下,如果你希望使用范围语音功能,你必须根据此回调获取的衰减系数,设定音量。
自此版本起,无论是手动订阅还是自动订阅,衰减效果都由 SDK 实现,无需使用此接口。

名称变更CDN 推流onStreamMixingVideoFrameonMixingVideoFrame
onStreamMixingAudioFrameonMixingAudioFrame
onStreamMixingDataFrameonMixingDataFrame
类型变更
变更详情数据类型备注
取值范围拓展TranscoderLayoutRegion 中,width 和 height取值范围由 (0.0, 1.0] 拓展为 [0.0, 1.0]。
枚举值增删UserMessageSendResult新增枚举值:kUserMessageSendResultExceedQPS = 5
RoomMessageSendResult新增枚举值:kRoomMessageSendResultExceedQPS = 5
AudioProcessorMethod新增枚举值:kAudioFrameProcessorEarMonitor = 3
成员变量变更FaceDetectResult新增成员变量:frame_timestamp_us

ContentHint

废弃屏幕共享内部采集的变量content_hint。可通过 VideoEncodePreference设置视频流编码偏好,通过ScreenVideoEncodePreference设置屏幕流编码偏好。

AudioDeviceInfo

增加成员变量 device_short_name[MAX_DEVICE_ID_LENGTH]

ITranscoderParam新增成员变量:TranscoderClientMixParam
变量类型变更空间音频功能中表示空间坐标的 position 的 变量 x, y, z 类型由 int 更改为 float。提升球面立体声渲染效果。

枚举值名称变更

VideoSourceType

枚举值名称增加前缀 k,更改后的枚举值如下:
enum VideoSourceType {
kVideoSourceTypeExternal = 0,
kVideoSourceTypeInternal = 1,
kVideoSourceTypeEncodedWithAutoSimulcast = 2,
kVideoSourceTypeEncodedWithoutAutoSimulcast = 3,
};

配置变更RoomProfileType房间属性的默认值 kRoomProfileTypeCommunication = 0,对应的由 kRoomProfileTypeChatRoom = 6 变更为 kRoomProfileTypeMeeting = 16。
新增PublicStreamErrorCodeonPlayPublicStreamResult 和 onPushPublicStreamResult 中的 errorCode 参数类型由 int 改为 PublicStreamErrorCode
错误码变更
变更详情错误码备注
枚举值增删ErrorCode新增枚举值:kErrorCodeUserIDDifferent = -1014
3.45.6
类型变更

以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

变更详情数据类型备注
枚举值增删AudioProcessorMethod新增屏幕共享音频的枚举值: kAudioFrameProcessorScreen = 4
枚举值增删MediaDeviceWarning新增无声设备播放相关的错误码:kMediaDeviceWarningRecordingUseSilentDevice 和 kMediaDeviceWarningPlayoutUseSilentDevice
枚举值增删SubscribeState新增无声设备采集相关的错误码:kWarningCodeUseSilentRecordDevice 和 kWarningCodeUseSilentPlayOutDevice
3.45.4
方法变更

以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

变更详情功能模块
方法
备注
参数数据结构改动音频管理virtual void enableAudioPropertiesReport(const AudioPropertiesConfig& config) = 0;数据结构中,新增参数:
  • AudioPropertiesMode
  • AudioReportMode
  • 类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增删DeviceTransportType新增枚举值:kDeviceTransportTypeUSB,kDeviceTransportTypePCI,kDeviceTransportTypeAirPlay
    3.45.2
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块
    变动前方法
    变动后方法
    备注
    废弃原方法音频处理virtual void muteAudioPlayback(MuteState mute_state) = 0;virtual void setPlaybackVolume(const int volume) = 0;设置远端用户音量为 0 即可停止播放本地收到的音频流
    3.44
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块
    变动前方法
    变动后方法
    备注

    合并、名称和参数变化

    音视频处理

    • virtual int initVirtualBackground(void* androidContext, void* jnienv, const char* licensePath,const char* modelPath) = 0;
    • virtual int enableVirtualBackground(const VirtualBackgroundSource& source) = 0;
    • virtual int disableVirtualBackground() = 0;

    virtual int setBackgroundSticker(const char* modelPath, const VirtualBackgroundSource& source) = 0;

    3.43

    该版本部分头文件名称及路径发生变化,请参照下表在工程文件中进行调整:

    平台3.423.43备注
    WindowsVolcEngineRTC/include/rtc/bytertc_room_interface.hVolcEngineRTC/include/bytertc_room.h文件名变更,并迁移至上级目录 include 中
    VolcEngineRTC/include/rtc/bytertc_room_event_handler_interface.hVolcEngineRTC/include/bytertc_room_event_handler.h
    VolcEngineRTC/include/rtc/bytertc_engine_lite_interface.hVolcEngineRTC/include/bytertc_video.h
    VolcEngineRTC/include/rtc/bytertc_engine_lite_event_handler.hVolcEngineRTC/include/bytertc_video_event_handler.h
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情
    功能模块
    变动前方法变动后方法备注
    基础类名变更所有模块class IRtcEngineclass IRTCVideo
    名称和参数变化引擎管理BYTERTC_API bytertc::IRtcEngine* CreateRtcEngine(const char* app_id, bytertc::IRtcEngineEventHandler* event_handler, const char* parameters);BYTERTC_API bytertc::IRTCVideo* createRTCVideo(const char* app_id, bytertc::IRTCVideoEventHandler *event_handler, const char* parameters);
    BYTERTC_API void DestroyRtcEngine(bytertc::IRtcEngine* engine);BYTERTC_API void destroyRTCVideo(bytertc::IRTCVideo* engine);
    多房间virtual IRtcRoom* CreateRtcRoom(const char* room_id) = 0;virtual IRTCRoom* createRTCRoom(const char* room_id) = 0;

    位置迁移,所属类型变更

    • 多房间
    • 房间管理
    • 音频管理
    • 转推直播
    • 公共流管理

    以下方法从 IRTCVideo(原 IRtcEngine)类下移除,使用 IRTCRoom 类中的同名方法代替:

    • joinRoom

    • publishStream

    • unpublishStream

    • publishScreen

    • unpublishScreen

    • startForwardStreamToRooms

    • updateForwardStreamToRooms

    • stopForwardStreamToRooms

    • pauseForwardStreamToAllRooms

    • resumeForwardStreamToAllRooms

    参数变更音频管理virtual void setRemoteAudioPlaybackVolume(const char* user_id, int volume) = 0;virtual void setRemoteAudioPlaybackVolume(const char* room_id,const char* user_id, int volume) = 0;新增 room_id 参数,且为必填。
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情
    功能模块
    变动前方法变动后方法备注
    基础类名变更所有模块class IRtcEngineEventHandlerclass IRTCVideoEventHandler
    参数变更音频管理virtual void OnUserStartAudioCapture(const char* user_id) {(void)user_id;}virtual void onUserStartAudioCapture(const char* room_id, const char* user_id) {(void)user_id;}
    virtual void OnUserStopAudioCapture(const char* user_id) {(void)user_id;}virtual void onUserStopAudioCapture(const char* room_id, const char* user_id) {(void)user_id;}
    音视频传输virtual void OnUserStartVideoCapture(const char* user_id) {(void)user_id;}virtual void onUserStartVideoCapture(const char* room_id, const char* user_id) {(void)user_id;}
    virtual void OnUserStopVideoCapture(const char* user_id) {(void)user_id;}virtual void onUserStopVideoCapture(const char* room_id, const char* user_id) {(void)user_id;}
    房间管理virtual void OnAudioFrameSendStateChanged(const RtcUser& user, FirstFrameSendState state) {(void)user;(void)state;}virtual void onAudioFrameSendStateChanged(const char* room_id, const RtcUser& user, FirstFrameSendState state) {(void)user;(void)state;}
    virtual void OnVideoFrameSendStateChanged(const RtcUser& user, FirstFrameSendState state) {(void)user;(void)state;}virtual void onVideoFrameSendStateChanged(const char* room_id, const RtcUser& user, FirstFrameSendState state) {(void)user;(void)state;}
    virtual void OnScreenVideoFrameSendStateChanged(const RtcUser& user, FirstFrameSendState state) {(void)user;(void)state;}virtual void onScreenVideoFrameSendStateChanged(const char* room_id, const RtcUser& user, FirstFrameSendState state) {(void)user;(void)state;}
    virtual void OnAudioFramePlayStateChanged(const RtcUser& user, FirstFramePlayState state) {(void)user;(void)state;}virtual void onAudioFramePlayStateChanged(const char* room_id, const RtcUser& user, FirstFramePlayState state) {(void)user;(void)state;}
    virtual void OnVideoFramePlayStateChanged(const RtcUser& user, FirstFramePlayState state) {(void)user;(void)state;}virtual void onVideoFramePlayStateChanged(const char* room_id, const RtcUser& user, FirstFramePlayState state) {(void)user;(void)state;}
    virtual void OnScreenVideoFramePlayStateChanged(const RtcUser& user, FirstFramePlayState state) {(void)user;(void)state;}virtual void onScreenVideoFramePlayStateChanged(const char* room_id, const RtcUser& user, FirstFramePlayState state) {(void)user;(void)state;}
    公共流管理virtual void OnPushPublicStreamResult(const char* public_stream_id, int errorCode) {(void)public_stream_id;(void)errorCode;}virtual void onPushPublicStreamResult(const char* room_id, const char* public_streamid, int errorCode) {(void)room_id;(void)public_streamid;(void)errorCode;}
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    成员变量增删VideoSolution删除成员变量:scale_mode
    VideoEncoderConfig删除成员变量:scaleMode
    枚举值增删ConnectionState增加枚举值:kConnectionStateFailed
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删ErrorCode增加枚举值:-1084
    3.42

    在此版本中,进行了接口命名风格的改动,由大驼峰变为小驼峰。此改动适用于所有 C++ SDK 中的主调接口和回调接口。

    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    基础类名变更所有模块class IRtcEngineLiteclass IRtcEngine
    class IRtcRoomclass IRTCRoom
    位置迁移,所属类型变更多房间以下方法由 IRTCRoom(原 IRtcRoom)类迁移至 IRtcEngine(原 IRtcEngineLite)类下:
  • setRemoteAudioPlaybackVolume
  • startLiveTranscoding
  • stopLiveTranscoding
  • updateLiveTranscoding
  • startPushPublicStream
  • stopPushPublicStream
  • updatePublicStreamParam
  • 由于新方法变更为从引擎类上调用,因此增加了 roomId 相关的字段,且均为必填字段。
    名称和参数变化引擎管理virtual int Feedback(const char* data) = 0;virtual int feedback(ProblemFeedbackOption *type, int count, const char* problem_desc) = 0;
    多房间virtual void SetRtcRoomEventHandler(IRTCRoomEventHandler* room_event_handler) = 0;virtual void setRTCRoomEventHandler(IRTCRoomEventHandler* room_event_handler) = 0;
    名称和参数变化,行为变化音频设备管理virtual int bytertc::IAudioDeviceManager::StartAudioPlaybackDeviceTest( const char* test_audio_file_path)virtual int bytertc::IAudioDeviceManager::startAudioPlaybackDeviceTest( const char* test_audio_file_path, int indication_interval)增加 indication_interval 参数设置回调音量频率
    virtual int bytertc::IAudioDeviceManager::StopAudioPlaybackDeviceTest()virtual int bytertc::IAudioDeviceManager::stopAudioPlaybackDeviceTest()名称变更
    virtual int bytertc::IAudioDeviceManager::StartAudioCaptureDeviceTest(int indication_interval)virtual int bytertc::IAudioDeviceManager::startAudioDeviceRecordTest( int indication_interval)新方法不仅开启音量回调,还将在录音结束后开始自动播放
    virtual int bytertc::IAudioDeviceManager::StopAudioCaptureDeviceTest()
  • virtual int bytertc::IAudioDeviceManager::stopAudioDeviceRecordAndPlayTest()
  • virtual int bytertc::IAudioDeviceManager::stopAudioDevicePlayTest()
  • 由于新的设备测试方法能启动麦克风和音频播放设备,因此停止方法也分为两个:
  • 停止录音并开始播放
  • 终止设备测试,包括录音和回放
  • 参数变更消息virtual int64_t SendUserMessageOutsideRoom(const char* uid, const char* message) = 0;virtual int64_t SendUserMessageOutsideRoom(const char* uid, const char* message, MessageConfig config) = 0;
    virtual int64_t SendUserBinaryMessageOutsideRoom(const char* uid, int length, const uint8_t* message) = 0;virtual int64_t SendUserBinaryMessageOutsideRoom(const char* uid, int length, const uint8_t* message, MessageConfig config) = 0;
    virtual int64_t SendUserBinaryMessage(const char* uid, int length, const uint8_t* message) = 0;virtual int64_t SendUserBinaryMessage(const char* uid, int length, const uint8_t* message, MessageConfig config) = 0;
    virtual int64_t SendUserMessage(const char* uid, const char* message) = 0;virtual int64_t SendUserMessage(const char* uid, const char* message, MessageConfig config) = 0;
    返回值变更音视频设备管理virtual IDeviceCollection* EnumerateVideoCaptureDevices() = 0;virtual IVideoDeviceCollection* EnumerateVideoCaptureDevices() = 0;
    virtual IDeviceCollection* EnumerateAudioPlaybackDevices() = 0;virtual IAudioDeviceCollection* EnumerateAudioPlaybackDevices() = 0;
    virtual IDeviceCollection* EnumerateAudioCaptureDevices() = 0;virtual IAudioDeviceCollection* EnumerateAudioCaptureDevices() = 0;
    方法重构自定义音频处理virtual void RegisterLocalAudioProcessor(IAudioProcessor* processor, AudioFormat audioFormat) = 0;
  • virtual void registerAudioProcessor(IAudioFrameProcessor* processor) = 0;
  • virtual void enableAudioProcessor(AudioProcessorMethod method, AudioFormat format) = 0;
  • virtual void disableAudioProcessor(AudioProcessorMethod method) = 0;
  • 回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    基础类名变更所有模块class IRtcEngineLiteEventHandlerclass IRtcEngineEventHandler
    位置迁移,所属类型变更
  • 音频管理
  • 网络管理
  • 视频管理
  • 音视频传输
  • 房间管理
  • 以下回调由 IRTCRoomEventHandler 类迁移至 IRtcEngineEventHandler(原 IRtcEngineLiteEventHandler)类下:
  • onUserStartAudioCapture
  • onUserStopAudioCapture
  • onFirstLocalAudioFrame
  • onFirstRemoteAudioFrame
  • onSimulcastSubscribeFallback
  • onFirstLocalVideoFrameCaptured
  • onLocalVideoSizeChanged
  • onRemoteVideoSizeChanged
  • onFirstRemoteVideoFrameRendered
  • onFirstRemoteVideoFrameDecoded
  • onUserStartVideoCapture
  • onUserStopVideoCapture
  • onLocalAudioStateChanged
  • onRemoteAudioStateChanged
  • onLocalVideoStateChanged
  • onRemoteVideoStateChanged
  • onAudioFrameSendStateChanged
  • onVideoFrameSendStateChanged
  • onScreenVideoFrameSendStateChanged
  • onAudioFramePlayStateChanged
  • onVideoFramePlayStateChanged
  • onScreenVideoFramePlayStateChanged
  • 回调重构自定义音频处理class IAudioProcessor{ public: virtual int ProcessAudioFrame(const IAudioFrame& audioFrame) = 0; };class IAudioFrameProcessor{
    virtual int onProcessRecordAudioFrame(IAudioFrame& audioFrame) = 0;
    virtual int onProcessPlayBackAudioFrame(IAudioFrame& audioFrame) = 0;
    virtual int onProcessRemoteUserAudioFrame(const RemoteStreamKey& stream_info, IAudioFrame& audioFrame) = 0;
    };
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注

    枚举值增删

    RoomProfileType

    增加以下枚举值:

    • kRoomProfileTypeChat = 5
    • kRoomProfileTypeChatRoom = 6
    • kRoomProfileTypeLwTogether = 7
    • kRoomProfileTypeGameHD = 8
    • kRoomProfileTypeCoHost = 9
    • kRoomProfileTypeInteractivePodcast = 10
    • kRoomProfileTypeKTV = 11
    • kRoomProfileTypeChorus = 12
    • kRoomProfileTypeVRChat = 13
    • kRoomProfileTypeGameStreaming = 14
    • kRoomProfileTypeLanLiveStreaming = 15
    • kRoomProfileTypeMeeting = 16
    • kRoomProfileTypeMeetingRoom = 17
    • kRoomProfileTypeClassroom = 18
      删除了 kRoomProfileTypeLiveBroadcasting = 1,建议根据实际业务情况,替换为以下模式:
    • kRoomProfileTypeChatRoom = 6
    • kRoomProfileTypeCoHost = 9
    • kRoomProfileTypeInteractivePodcast = 10
    • kRoomProfileTypeKTV = 11
    • kRoomProfileTypeChorus = 12

    枚举值增删

    AudioProfileType

    增加以下枚举值:

    • kAudioProfileTypeStandardStereo = 4
    • kAudioProfileTypeHDMono = 5

    成员变量增删

    LocalVideoStats

    删除以下成员变量:

    • target_kbitrate
    • target_frame_rate

    成员变量增删

    RtcRoomStats

    增加以下成员变量:

    • rx_screen_kbitrate
    • tx_screen_kbitrate

    成员变量增删

    ScreenCaptureSourceInfo

    新增以下成员变量:

    • application
    • pid
    • primaryMonitor
    • region_rect
    类型增删AudioAbilityType新增枚举类
    类型增删AudioDeviceInfo新增类型
    类型名称变化IDeviceCollection变更为 IVideoDeviceCollection 和 IAudioDeviceCollection

    枚举值增删

    MediaDeviceState

    增加以下枚举值:

    • kMediaDeviceBecomeSystemDefault
    • kMediaDeviceResignSystemDefault
    常量增删MAX_DEVICE_ID_LENGTH新增常量
    类型增删DeviceTransportType新增枚举类
    类型增删VideoDeviceInfo新增类型

    枚举值增删

    MediaDeviceWarning

    新增以下枚举值:

    • kMediaDeviceWarningSetAudioRouteInvalidScenario = 20
    • *kMediaDeviceWarningSetAudioRouteNotExists = 21*
    • *kMediaDeviceWarningSetAudioRouteFailedByPriority = 22*
    • kMediaDeviceWarningSetAudioRouteNotVoipMode = 23
    • kMediaDeviceWarningSetAudioRouteDeviceNotStart = 24
    类型名称变化AudioRouteDevice变更为AudioRoute
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删WarningCode新增枚举值:-2014
    枚举值增删ErrorCode删除枚举值:-1008
    3.41
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    合并或拆分房间管理
  • virtual void OnJoinRoomResult( const char* room_id, const char* uid, int error_code, JoinRoomType join_type, int elapsed) { (void)room_id; (void)error_code; (void)join_type; (void)elapsed; }
  • virtual void OnRoomWarning(int warn) { (void)warn; }
  • virtual void OnRoomError(int err) { (void)err; }
  • virtual void onRoomStateChanged( const char* room_id, const char* uid, int state, const char* extra_info) { (void)room_id; (void)state; (void)extra_info; }
  • virtual void onStreamStateChanged( const char* room_id, const char* uid, int state, const char* extra_info) { (void)room_id; (void)state; (void)extra_info; }
  • 3.40
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    名称和参数变更音频管理virtual IPositionAudioRenderInterface* GetPositionAudioRender() = 0;virtual ISpatialAudio* GetSpatialAudio() = 0;接口由 IRtcEngineLite 类移动至 IRtcRoom 类
    名称变化音频管理virtual void EnableAudioSpatialRender(bool enable) = 0;virtual void EnableSpatialAudio(bool enable) = 0;

    原接口废弃,使用新接口代替

    音频管理

    • void EnableExternalAudioDevice(const AudioFormat &recording_format, const AudioFormat &playback_format) = 0;
    • void DisableExternalAudioDevice() = 0;

    参数变更

    音频管理

    • bool PushExternalAudioFrame(int8_t* data, int samples) = 0;
    • bool PullExternalAudioFrame(int8_t* data, int samples) = 0;
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注

    枚举值增删

    TranscoderAudioCodecProfile

    删除枚举值:kByteAACProfileMain。
    枚举值kByteAACProfileHEv1的值变为 1,枚举值kByteAACProfileHEv2的值变为 2。

    类型名称变化ByteRTCAudioRouteDevice修改为 ByteRTCAudioRoute
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删ErrorCode新增枚举值:-1083
    3.39
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    返回值变更实时消息void Login(const char* token, const char* uid)int64_t Login(const char* token, const char* uid)---

    API 行为变更

    订阅媒体流
    subscribeStream
    unsubscribeStream
    subscribeScreen
    unsubscribeScreen

    SDK 在每条远端流属性中维护订阅关系。如果该流被移除,订阅关系也将取消

    SDK 在房间属性中维护订阅关系列表。订阅关系将在用户退房后才会取消。

    ---

    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化实时消息virtual void OnServerMessageSendResult(int64_t msgid, int error)virtual void OnServerMessageSendResult(int64_t msgid, int error, const bytertc::ServerACKMsg& msg)
    参数变化转推直播virtual void OnStreamMixingEvent(StreamMixingEvent event, const char* task_id, int error, StreamMixingType mix_type) = 0;virtual void OnStreamMixingEvent(StreamMixingEvent event, const char* task_id, StreamMixingErrorCode error, StreamMixingType mix_type) = 0;
    类型变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举类新增StreamMixingEvent
    3.38
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    成员变量增删ScreenCaptureParameters新增 content_hint
    成员变量增删SubscribeConfig新增成员变量 framerate
    成员变量变化RemoteVideoConfig成员变量 frame_rate_ratio 变为 framerate, 由输入与原始帧率的比例变为输入期望订阅的最大帧率
    枚举值增删AudioMixingError新增枚举值:kAudioMixingErrorInValidPlaybackSpeed
    枚举值增删MediaDeviceState新增枚举值:kMediaDeviceInterruptionBegan,表示媒体设备采集暂停,等待自动恢复
    枚举值增删MediaDeviceState新增枚举值:kMediaDeviceInterruptionEnded,表示媒体设备采集已自动恢复
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值改名ErrorCode表示用户被踢出房间的错误码由 kBrerrKickedOut 变更为 kErrorCodeKickedOut
    枚举值增删ErrorCode新增错误码:kRoomErrorTokenExpired,表示用户因 Token 过期被踢出房间
    枚举值增删ErrorCode新增枚举值:kRoomErrorUpdateTokenWithInvalidToken,表示调用 UpdateToken 使用的 Token 无效
    3.37
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    合并音频数据回调
  • virtual void SetRecordingAudioFrameParameters(int sample_rate, int channels) = 0;
  • virtual void SetPlaybackAudioFrameParameters(int sample_rate, int channels) = 0;
  • virtual void SetMixedAudioFrameParameters(int sample_rate, int channels) = 0;
  • virtual void EnableAudioFrameCallback(AudioFrameCallbackMethod method, AudioFormat format) = 0;在format中设置回调的音频数据类型
    参数增加本地录制virtual int StartFileRecording(StreamIndex type, RecordingConfig config) = 0;virtual int StartFileRecording(StreamIndex type, RecordingConfig config, RecordingType recording_type) = 0;
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前回调变动后回调备注
    拆分引擎管理virtual void OnMediaDeviceStateChanged(const char* device_id,bytertc::MediaDeviceType device_type,bytertc::MediaDeviceState device_state,bytertc::MediaDeviceError device_error) {(void)device_id;(void)device_type;(void)device_state;(void)device_error;}
  • virtual void OnAudioDeviceStateChanged(const char* device_id, bytertc::RTCAudioDeviceType device_type,bytertc::MediaDeviceState device_state, bytertc::MediaDeviceError device_error) {(void)device_id;(void)device_type;(void)device_state;(void)device_error;}
  • virtual void OnVideoDeviceStateChanged(const char* device_id, bytertc::RTCVideoDeviceType device_type,bytertc::MediaDeviceState device_state, bytertc::MediaDeviceError device_error) {(void)device_id;(void)device_type;(void)device_state;(void)device_error;}
  • 媒体设备状态回调拆分为音频和视频设备状态回调
    拆分引擎管理virtual void OnMediaDeviceWarning(const char* device_id, bytertc::MediaDeviceType device_type,bytertc::MediaDeviceWarning device_warning){(void)device_id;(void)device_type;(void)device_warning;}
  • virtual void OnAudioDeviceWarning(const char* device_id, bytertc::RTCAudioDeviceType device_type,bytertc::MediaDeviceWarning device_warning) {(void)device_id;(void)device_type;(void)device_warning;}
  • virtual void OnVideoDeviceWarning(const char* device_id, bytertc::RTCVideoDeviceType device_type,bytertc::MediaDeviceWarning device_warning) {(void)device_id;(void)device_type;(void)device_warning;}
  • 媒体设备警告回调拆分成音频和视频设备警告回调
    参数变化音频数据回调virtual void OnRecordAudioFrame(const AudioFrame& audio_frame) = 0;virtual void OnRecordAudioFrame(const IAudioFrame& audio_frame) = 0;IAudioFrame与AudioFrame之间的相互转换,参看示例代码转换samples与data_size()。
    参数变化音频数据回调virtual void OnPlaybackAudioFrame(const AudioFrame& audio_frame) = 0;virtual void OnPlaybackAudioFrame(const IAudioFrame& audio_frame) = 0;
    参数变化音频数据回调virtual void OnMixedAudioFrame(const AudioFrame& audio_frame) = 0;virtual void OnMixedAudioFrame(const IAudioFrame& audio_frame) = 0;

    转换samples与data_size(),示例代码:

    samples = data_size() / (channel() * 2)
    
    3.36
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化多房间
  • virtual void StartLiveTranscoding(ITranscoderParam* param, ITranscoderObserver* observer) = 0;
  • virtual void StopLiveTranscoding() = 0;
  • virtual void UpdateLiveTranscoding(ITranscoderParam* param) = 0;
  • virtual void StartLiveTranscoding(const char* task_id, ITranscoderParam* param, ITranscoderObserver* observer) = 0;
  • virtual void StopLiveTranscoding(const char* task_id) = 0;
  • virtual void UpdateLiveTranscoding(const char* task_id, ITranscoderParam* param) = 0;
  • 增加参数,设置转推直播任务 ID
    参数变化多房间
  • virtual void PublishScreen() = 0;
  • virtual void UnpublishScreen() = 0;
  • virtual void PublishScreen(MediaStreamType type) = 0;
  • virtual void UnpublishScreen(MediaStreamType type) = 0;
  • 新增参数,设置发布/取消发布的媒体类型
    名称和参数变化视频管理virtual void SetRemoteVideoCanvas(const char* user_id, StreamIndex index, const VideoCanvas& canvas) = 0;virtual void SetRemoteStreamVideoCanvas(RemoteStreamKey stream_key, const VideoCanvas& canvas) = 0;
    拆分多房间virtual void SubscribeUserStream(const char* user_id, StreamIndex stream_type, SubscribeMediaType media_type, const SubscribeVideoConfig& video_config) = 0;
  • virtual void SubscribeStream(const char *user_id,MediaStreamType type) = 0;
  • virtual void UnsubscribeStream(const char *user_id,MediaStreamType type) = 0;
  • virtual void SubscribeScreen(const char *user_id,MediaStreamType type) = 0;
  • virtual void UnsubscribeScreen(const char *user_id,MediaStreamType type) = 0;
  • 解耦摄像头/麦克风采集的媒体流与屏幕共享媒体流的订阅/取消订阅
    拆分视频管理virtual int SetVideoEncoderConfig(StreamIndex index, const VideoSolution* solutions, int solution_num) = 0;
  • virtual int SetVideoEncoderConfig(const VideoEncoderConfig* channel_solutions, int solution_num) = 0;
  • virtual int SetScreenVideoEncoderConfig(const VideoEncoderConfig& screen_solution) = 0;
  • 使用独立的接口分别设置摄像头视频流和屏幕视频流的发布参数
    合并多房间
  • virtual void Publish() = 0;
  • virtual void Unpublish() = 0;
  • virtual void MuteLocalAudio(MuteState mute_state) = 0;
  • virtual void MuteLocalVideo(MuteState muteState) = 0;
  • virtual void PublishStream(MediaStreamType type) = 0;
  • virtual void UnpublishStream(MediaStreamType type) = 0;
  • 新版本中新增独立的接口单独控制摄像头/麦克风采集的音频/视频的发布/取消发布
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前回调变动后回调备注
    参数变化房间管理virtual void bytertc::IRTCRoomEventHandler::OnUserLeave(const char* uid, UserOfflineReason reason)virtual void bytertc::IRTCRoomEventHandler::OnUserLeave(const char* uid, UserOfflineReason reason)reason 参数变化
    拆分或合并多房间
  • virtual void OnStreamAdd(const MediaStreamInfo& stream)
  • virtual void OnStreamRemove(const MediaStreamInfo& stream, StreamRemoveReason reason)
  • virtual void OnUserMuteAudio(const char* user_id, MuteState mute_state)
  • virtual void OnUserMuteVideo(const char* uid, MuteState mute)
  • virtual void OnUserPublishStream(const char* uid, MediaStreamType type) {(void)uid;(void)type;}
  • virtual void OnUserPublishScreen(const char* uid, MediaStreamType type) {(void)uid; (void)type;}
  • virtual void OnUserUnPublishStream(const char* uid, MediaStreamType type,StreamRemoveReason reason) {(void)uid; (void)type; (void)reason;}
  • virtual void OnUserUnPublishScreen(const char* uid, MediaStreamType type,StreamRemoveReason reason) {(void)uid;(void)type;(void)reason;}
  • 解耦新增或移除摄像头/麦克风采集的媒体流与新增屏幕共享媒体流的回调,同时去除旧版本回调在功能上的重合
    删除转推直播virtual void OnLiveTranscodingResult(const char* url, int error) {(void)url;(void)error;}/
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    成员变量变化LocalStreamStats 和 RemoteStreamStatstxQuality 和 rxQuality 成员变量移动到了新增类型 NetworkQualityStats 中,通过 OnNetworkQuality 回调获取
    成员变量变化AudioPropertiesInfo成员变量 volume 拆分成 linear_volume 和 nonlinear_volume
    成员变量增删RTCRoomConfig新增 remote_video_config
    成员变量增删MultiRoomConfig新增 remote_video_config
    3.35
    行为变更

    自此版本起,本地视频采集参数默认由系统自动设置,而不是和编码参数保持一致。你可以通过 VideoCaptureConfig 进行相关设置。如果你的代码逻辑中对采集到的视频帧进行了自定义处理,应对处理逻辑进行相应修改。

    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化视频管理virtual int SetVideoCaptureConfig(const VideoCaptureConfig& videoCaptureConfig) = 0;virtual int SetVideoCaptureConfig(const VideoCaptureConfig& videoCaptureConfig) = 0;增加摄像头采集参数中的模式设置
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前回调变动后回调备注
    名称变化视频管理virtual void OnFirstRemoteVideoFrameRendered(const RemoteStreamKey key, const VideoFrameInfo& info) {(void)key; (void)info;}virtual void OnFirstRemoteVideoFrameDecoded(const RemoteStreamKey key, const VideoFrameInfo& info) {(void)key; (void)info;}
    3.34
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增减NetworkDetectionStopReason新增了枚举值:kNetworkDetectionStopReasonInnerErr
    枚举值增减AudioMixingError新增了枚举值:kAudioMixingErrorInValidPitch
    成员变量变化AudioMixingConfig新增成员变量:position 和 callback_on_progress_interval
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增减WarningCode新增了枚举值:-5011
    3.33
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化音频管理
  • virtual void EnableAudioMixingFrame(AudioMixingType type) = 0;
  • virtual void DisableAudioMixingFrame() = 0;
  • virtual int PushAudioMixingFrame(IAudioFrame* audio_frame) = 0;
  • virtual void EnableAudioMixingFrame(int id, AudioMixingType type) = 0;
  • virtual void DisableAudioMixingFrame(int id) = 0;
  • virtual int PushAudioMixingFrame(int id, IAudioFrame* audio_frame) = 0;
  • 类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增减VideoPixelFormat新增了枚举值:
  • kVideoPixelFormatTexture2D
  • kVideoPixelFormatTextureOES
  • 成员变量变化IVideoFrame
  • virtual int frame_type() const = 0; 变更为 virtual VideoFrameType frame_type() const = 0;
  • virtual int pixel_format() const = 0; 变更为 virtual VideoPixelFormat pixel_format() const = 0;
  • virtual int rotation() const = 0; 变更为 virtual VideoRotation rotation() const = 0;
  • virtual int color_space() const = 0; 变更为 virtual ColorSpace color_space() const = 0;
  • 错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增减WarningCode废弃了枚举值 -5002 ~ -5008。
    使用 OnMediaDeviceStateChanged 代替。
    3.30
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    成员变量变化LocalAudioStats新增了成员变量:jitter
    成员变量变化RemoteAudioStats新增了成员变量:jitter
    成员变量变化LocalVideoStats新增了成员变量:jitter
    成员变量变化RemoteVideoStats新增了成员变量:jitter
    3.29
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化多房间virtual void JoinRoom(const char* token, const UserInfo& user_info, const MultiRoomConfig& config) = 0;virtual int JoinRoom(const char* token, const UserInfo& user_info, const MultiRoomConfig& config) = 0;
    参数变化房间管理virtual void JoinRoom(const char* token, const char* room_id, const UserInfo& user_info, const RTCRoomConfig& room_config) = 0;virtual int JoinRoom(const char* token, const char* room_id, const UserInfo& user_info, const RTCRoomConfig& room_config) = 0;
    参数变化视频管理virtual void SetVideoSourceType(VideoSourceType type) = 0;virtual void SetVideoSourceType(StreamIndex stream_index, VideoSourceType type) = 0;
    名称和参数变化音频管理virtual void SetAudioVolumeIndicationInterval(int interval) = 0;virtual void EnableAudioPropertiesReport(const AudioPropertiesConfig& config) = 0;
    名称和参数变化视频管理virtual void SetLocalVideoMirrorMode(MirrorMode mirrorMode) = 0;virtual void SetLocalVideoMirrorType(MirrorType mirrorType) = 0;
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前回调变动后回调备注
    拆分或合并音频管理virtual void SetAudioVolumeIndicationInterval(int interval) = 0;
  • virtual void OnLocalAudioPropertiesReport(const LocalAudioPropertiesInfo * audio_properties_infos, int audio_properties_info_number)
  • virtual void OnRemoteAudioPropertiesReport(const RemoteAudioPropertiesInfo* audio_properties_infos, int audio_properties_info_number, int total_remote_volume)
  • 旧版接口拆分为 OnLocalAudioPropertiesReport 和 OnRemoteAudioPropertiesReport
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增减ErrorCode增加枚举值:-1007、-1008
    3.28
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增减AudioSampleRate新增了枚举值:kAudioSampleRateAuto
    枚举值增减AudioChannel新增了枚举值:kAudioChannelAuto
    3.27
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化引擎管理BYTERTC_API int Feedback(const char* data);virtual int Feedback(const char* data) = 0;
    参数变化视频管理virtual int SetVideoEncoderConfig(const VideoSolution* solutions, int solution_num) = 0;virtual int SetVideoEncoderConfig(StreamIndex index, const VideoSolution* solutions, int solution_num) = 0;
    参数变化屏幕共享virtual void PublishScreen(const ScreenParameters& paramters) = 0;virtual void PublishScreen() = 0;
    名称和参数变化音频管理virtual void SetRecordingVolume(const int volume) = 0;virtual void SetCaptureVolume(StreamIndex index, int volume) = 0;
    名称和参数变化视频管理virtual void RegisterMetadataObserver(IMetadataObserver* observer) = 0;virtual int SendSEIMessage(StreamIndex stream_index, const uint8_t* message, int length, int repeat_count) = 0;
    名称和参数变化屏幕共享virtual void StopScreenCapture() = 0;virtual void StopScreenVideoCapture() = 0;变更后接口仅停止采集,不取消发布
    拆分或合并屏幕共享
  • virtual int StartScreenCaptureByWindowId(view_t window_id, const Rectangle& region_rect, const DesktopCaptureParameters& capture_params) = 0;
  • virtual int StartScreenCaptureByDisplayId(unsigned int display_id, const Rectangle& region_rect, const DesktopCaptureParameters& capture_params) = 0;
  • virtual int StartScreenCaptureByScreenRect(const Rectangle& screen_rect, const Rectangle& region_rect, const DesktopCaptureParameters& capture_params) = 0;
  • virtual int StartScreenVideoCapture(const ScreenCaptureSourceInfo& source_info, const ScreenCaptureParameters& capture_params) = 0;
  • 回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前回调变动后回调备注
    名称和参数变化视频数据回调virtual void OnMetadataReceived(const char* roomid, const char* uid, const VideoMetadataBuffer& metadata) = 0;virtual void OnSEIMessageReceived(RemoteStreamKey stream_key, const uint8_t* message, int length){(void)stream_key; (void)message; (void)length; }
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增减ProblemFeedbackOption删除了枚举值:
  • kProblemFeedbackOptionConnectionFailed
  • kProblemFeedbackOptionAudioDelay
  • kProblemFeedbackOptionVideoDelay
  • 新增了枚举值:
  • KFeedbackOptionEarBackDelay
  • 错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增减WarningCode新增了枚举值:
  • kWarningCodeSetScreenAudioSourceTypeFailed
  • kWarningCodeSetScreenAudioStreamIndexFailed
  • 3.26
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化房间管理virtual int JoinRoom(const char* token, const char* room_id, const UserInfo& user_info, RoomProfileType profile_type) = 0;virtual int JoinRoom(const char* token, const char* room_id, const UserInfo& user_info, const RTCRoomConfig& room_config) = 0;
    名称和参数变化房间管理virtual void SubscribeStream(const char* user_id, const SubscribeConfig& info) = 0;virtual void SubscribeUserStream(const char* user_id, StreamIndex stream_type, SubscribeMediaType media_type, const SubscribeVideoConfig& video_config) = 0;
    名称和参数变化房间管理virtual void SetUserRole(UserRoleType role) = 0;virtual void SetUserVisibility(bool enable) = 0;
    拆分或合并视频管理/音频管理
  • virtual void MuteAllRemoteVideo(MuteState muteState) = 0;
  • virtual void MuteAllRemoteAudio(MuteState mute_state) = 0;
  • virtual void PauseAllSubscribedStream(PauseResumeControlMediaType media_type) = 0;
  • 通过 PauseAllSubscribedStream 和 ResumeAllSubscribedStream 可以暂停或恢复接收所有远端媒体流
    删除房间管理virtual void EnableAutoPublish(bool auto_publish) = 0;/使用 JoinRoom 中的 room_config 进行设置
    删除房间管理virtual void EnableAutoSubscribe(SubscribeMode audio_mode, SubscribeMode video_mode) = 0;/使用 JoinRoom 中的 room_config 进行设置
    删除视频管理virtual void RemoveAllRemoteVideo() = 0;/
    删除视频管理virtual void RemoveAllRemoteScreen() = 0;/
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增减WarningCode新增了枚举值:
  • kWarningCodePublishStreamForbiden
  • kWarningCodeUserNotifyStop
  • 枚举值增减UserMessageSendResult新增了枚举值:
  • kUserMessageSendResultNotLogin
  • kUserMessageSendResultServerParamsNotSet
  • 3.25
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化混音virtual int GetAudioMixingDuration() = 0;virtual int GetAudioMixingDuration(int id) = 0;
    参数变化混音virtual int GetAudioMixingCurrentPosition() = 0;virtual int GetAudioMixingCurrentPosition(int id) = 0;
    参数变化混音virtual int SetAudioMixingPosition(int pos) = 0;virtual void SetAudioMixingPosition(int id, int position) = 0;
    名称和参数变化混音virtual int PreloadEffect(int sound_id, const char* file_path) = 0;virtual void PreloadAudioMixing(int id, const char* file_path) = 0;
    拆分或合并自定义视频采集渲染
  • void SetRemoteVideoRender(const char* uid, IVideoSink* render)
  • void SetRemoteScreenRender(const char* uid, IVideoSink* render)
  • virtual void SetRemoteVideoSink(RemoteStreamKey stream_key, IVideoSink* video_sink,IVideoSink::PixelFormat required_format) = 0;多个旧版接口合并为 SetRemoteVideoSink
    拆分或合并自定义视频采集渲染
  • void SetLocalVideoRender(IVideoSink* render)
  • void SetLocalScreenRender(IVideoSink* render)
  • virtual void SetLocalVideoSink(StreamIndex index, IVideoSink* video_sink,IVideoSink::PixelFormat required_format) = 0;多个旧版接口合并为 SetLocalVideoSink
    拆分或合并混音
  • virtual int StartAudioMixing(const char* file_path, bool loopback, bool replace, int cycle) = 0;
  • virtual int PlayEffect(int sound_id, const char* file_path, bool loopback, int cycle, int volume) = 0;
  • virtual void StartAudioMixing(int id, const char * file_path, const AudioMixingConfig& config) = 0;多个接口合并为StartAudioMixing
    拆分或合并混音
  • virtual void StopAudioMixing() = 0;
  • virtual int StopEffect(int sound_id) = 0;
  • virtual void StopAllEffects() = 0;
  • virtual void StopAudioMixing(int id) = 0;多个接口合并为StopAudioMixing
    拆分或合并混音
  • virtual int PauseAudioMixing() = 0;
  • virtual int PauseEffect(int sound_id) = 0;
  • virtual void PauseAllEffects() = 0;
  • virtual void PauseAudioMixing(int id) = 0;多个接口合并为PauseAudioMixing
    拆分或合并混音
  • virtual int ResumeAudioMixing() = 0;
  • virtual int ResumeEffect(int sound_id) = 0;
  • virtual void ResumeAllEffects() = 0;
  • virtual void ResumeAudioMixing(int id) = 0;多个接口合并为ResumeAudioMixing
    拆分或合并混音
  • virtual int UnloadEffect(int sound_id) = 0;
  • virtual void UnloadAllEffects() = 0;
  • virtual void UnloadAudioMixing(int id) = 0;多个接口合并为UnloadAudioMixing
    拆分或合并混音
  • virtual int AdjustAudioMixingVolume(int volume) = 0;
  • virtual int SetVolumeOfEffect(int sound_id, int volume) = 0;
  • virtual int AdjustAudioMixingPlayoutVolume(int volume) = 0;
  • virtual int AdjustAudioMixingPublishVolume(int volume) = 0;
  • virtual void SetEffectsVolume(int volume) = 0;
  • virtual void SetAudioMixingVolume(int id, int volume, AudioMixingType type) = 0;多个接口合并为SetAudioMixingVolume
    拆分或合并混音virtual void SetAudioPlayoutMixStream(bool enable, int sample_rate, int channel_num) = 0;
  • virtual void EnableAudioMixingFrame(AudioMixingType type) = 0;
  • virtual void DisableAudioMixingFrame() = 0;
  • 旧版接口拆分为EnableAudioMixingFrame 和 DisableAudioMixingFrame
    删除混音virtual int GetEffectVolume(int sound_id) = 0;/
    删除混音virtual int GetAudioMixingStreamCachedFrameNum() = 0;/
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前回调变动后回调备注
    参数变化混音virtual void OnAudioMixingStateChanged(bytertc::AudioMixingState state, bytertc::AudioMixingError error) {}virtual void OnAudioMixingStateChanged(int id, bytertc::AudioMixingState state, bytertc::AudioMixingError error) {}
    删除视频管理virtual void OnStart() = 0;/
    删除视频管理virtual void OnStop() = 0;/
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增减AudioMixingState新增了枚举值:
  • kAudioMixingStatePreloaded
  • kAudioMixingStateFinished
  • 枚举值增减AudioMixingError删除了枚举值:
  • kAudioMixingErrorCanNotOpen
  • 新增了枚举值:
  • kAudioMixingErrorPreloadFailed
  • kAudioMixingErrorStartFailed
  • kAudioMixingErrorIdNotFound
  • kAudioMixingErrorSetPositionFailed
  • kAudioMixingErrorInValidVolume
  • kAudioMixingErrorLoadConflict
  • 3.24
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化视频特效virtual void SetEffectNodes(const char** effectNodePaths, int nodeNum) = 0;virtual int SetEffectNodes(const char** effectNodePaths, int nodeNum) = 0;
    参数变化视频特效virtual void UpdateNode(const char* nodePath, const char* nodeKey, float nodeValue) = 0;virtual int UpdateNode(const char* nodePath, const char* nodeKey, float nodeValue) = 0;
    参数变化视频特效virtual void SetColorFilter(const char* resPath) = 0; virtual int SetColorFilter(const char* resPath) = 0;
    参数变化视频特效virtual void SetColorFilterIntensity(float intensity) = 0; virtual int SetColorFilterIntensity(float intensity) = 0;
    参数变化视频管理virtual int MuteLocalVideo(MuteState muteState) = 0;virtual void MuteLocalVideo(MuteState muteState) = 0;
    名称和参数变化视频管理virtual void SetExternalVideoSource(bool enable) = 0;virtual void SetVideoSourceType(VideoSourceType type) = 0;
    删除视频特效virtual int CheckSupport() = 0;/
    删除视频特效virtual void AddEffectNodes(const char** effectNodePaths, int nodeNum) = 0;/
    删除视频特效virtual void RemoveEffectNodes(const char** effectNodePaths, int nodeNum) = 0;/
    删除视频管理virtual bool GetLocalVideoMirrorMode() = 0;/
    删除视频管理virtual void SetDefaultMuteAllRemoteVideoStreams(bool mute) = 0;/
    删除音频管理virtual void SetAudioPerformanceProfile(AudioPerformanceProfile profile) = 0;/
    删除自定义音频采集渲染virtual void SetAudioDeviceObserver(IAudioDeviceObserver* obs) = 0;/
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前回调变动后回调备注
    删除视频管理virtual void OnMirrorStateChanged(bool mirrored)/
    3.23
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    拆分或合并音频管理virtual int EnableLocalAudio(bool enable) = 0;
  • virtual void StartAudioCapture() = 0;
  • virtual void StopAudioCapture() = 0;
  • 拆分后的接口解除了音频采集与发布的绑定关系。无论是否发布音频,你都可以开启音频采集,并且停止发布后不再自动关闭采集
  • 新接口解除了对外部源的推送控制,仅控制是否进行内部音频采集
  • 拆分或合并视频管理virtual int EnableLocalVideo(bool enable) = 0;
  • virtual void StartVideoCapture() = 0;
  • virtual void StopVideoCapture() = 0;
  • 拆分后的接口解除了视频采集与发布的绑定关系。无论是否发布视频,你都可以开启视频采集,并且停止发布后不再自动关闭采集
  • 新接口解除了对外部源的推送控制,仅控制是否进行内部音频采集
  • 方法行为变化视频管理virtual void SetExternalVideoSource(bool enable) = 0;virtual void SetExternalVideoSource(bool enable) = 0;
  • 由内部采集切换至自定义采集时会自动关闭内部采集
  • 由自定义采集切换至内部采集时,必须先关闭自定义采集,后手动开启内部采集
  • 进房前后均可切换
  • 方法行为变化自定义音频采集渲染virtual void SetExternalVideoSource(bool enable) = 0;virtual void SetExternalVideoSource(bool enable) = 0;
  • 由内部采集切换至自定义采集时会自动关闭内部采集
  • 由自定义采集切换至内部采集时,必须先关闭自定义采集,后手动开启内部采集
  • 仅支持进房前切换
  • 删除视频管理virtual int StartPreview() = 0;/
    删除视频管理virtual int StopPreview() = 0;/
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增减WarningCode新增了枚举值:
  • kWarningCodeMediaDeviceOperationDenied
  • kWarningCodeInvalidCanvasHandle
  • 3.22
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    名称变化视频设备管理virtual int InitRecordingDeviceForTest(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;virtual int InitAudioCaptureDeviceForTest(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
    名称变化视频设备管理virtual int InitPlaybackDeviceForTest(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;virtual int InitAudioPlaybackDeviceForTest(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
    名称变化视频设备管理virtual int StopAudioRecordingDeviceTest() = 0;virtual int StopAudioCaptureDeviceTest() = 0;
    名称变化视频设备管理virtual int StartAudioRecordingDeviceTest(int indication_interval) = 0;virtual int StartAudioCaptureDeviceTest(int indication_interval) = 0;
    名称变化视频设备管理virtual int StopPlaybackDeviceTest() = 0;virtual int StopAudioPlaybackDeviceTest() = 0;
    名称变化视频设备管理virtual int StartPlaybackDeviceTest(const char* test_audio_file_path) = 0;virtual int StartAudioPlaybackDeviceTest(const char* test_audio_file_path) = 0;
    名称变化视频设备管理virtual int GetRecordingDevice(char device_id[MAX_DEVICE_ID_LENGTH]) = 0;virtual int GetAudioCaptureDevice(char device_id[MAX_DEVICE_ID_LENGTH]) = 0;
    名称变化视频设备管理virtual int GetPlaybackDevice(char device_id[MAX_DEVICE_ID_LENGTH]) = 0;virtual int GetAudioPlaybackDevice(char device_id[MAX_DEVICE_ID_LENGTH]) = 0;
    名称变化视频设备管理virtual int GetRecordingDeviceMute(bool* mute) = 0;virtual int GetAudioCaptureDeviceMute(bool* mute) = 0;
    名称变化视频设备管理virtual int SetRecordingDeviceMute(bool mute) = 0;virtual int SetAudioCaptureDeviceMute(bool mute) = 0;
    名称变化视频设备管理virtual int GetPlaybackDeviceMute(bool* mute) = 0;virtual int GetAudioPlaybackDeviceMute(bool* mute) = 0;
    名称变化视频设备管理virtual int SetPlaybackDeviceMute(bool mute) = 0;virtual int SetAudioPlaybackDeviceMute(bool mute) = 0;
    名称变化视频设备管理virtual int GetRecordingDeviceVolume(unsigned int* volume) = 0;virtual int GetAudioCaptureDeviceVolume(unsigned int* volume) = 0;
    名称变化视频设备管理virtual int SetRecordingDeviceVolume(unsigned int volume) = 0;virtual int SetAudioCaptureDeviceVolume(unsigned int volume) = 0;
    名称变化视频设备管理virtual int GetPlaybackDeviceVolume(unsigned int* volume) = 0;virtual int GetAudioPlaybackDeviceVolume(unsigned int* volume) = 0;
    名称变化视频设备管理virtual int SetPlaybackDeviceVolume(unsigned int volume) = 0;virtual int SetAudioPlaybackDeviceVolume(unsigned int volume) = 0;
    名称变化视频设备管理virtual int SetRecordingDevice(const char device_id[MAX_DEVICE_ID_LENGTH]) = 0;virtual int SetAudioCaptureDevice(const char device_id[MAX_DEVICE_ID_LENGTH]) = 0;
    名称变化视频设备管理virtual int SetPlaybackDevice(const char device_id[MAX_DEVICE_ID_LENGTH]) = 0;virtual int SetAudioPlaybackDevice(const char device_id[MAX_DEVICE_ID_LENGTH]) = 0;
    名称变化视频设备管理virtual IAudioDeviceCollection* EnumerateRecordingDevices() = 0;virtual IDeviceCollection* EnumerateAudioCaptureDevices() = 0;
    名称变化视频设备管理virtual IAudioDeviceCollection* EnumeratePlaybackDevices() = 0;virtual IDeviceCollection* EnumerateAudioPlaybackDevices() = 0;
    名称变化视频设备管理virtual int GetDevice(char device_id[MAX_DEVICE_ID_LENGTH]) = 0;virtual int GetVideoCaptureDevice(char device_id[MAX_DEVICE_ID_LENGTH]) = 0;
    名称变化视频设备管理virtual int SetDevice(const char device_id[MAX_DEVICE_ID_LENGTH]) = 0;virtual int SetVideoCaptureDevice(const char device_id[MAX_DEVICE_ID_LENGTH]) = 0;
    名称变化视频设备管理virtual IVideoDeviceCollection* EnumerateVideoDevices() = 0;virtual IDeviceCollection* EnumerateVideoCaptureDevices() = 0;
    参数变化视频设备管理virtual int SwitchCamera() = 0;virtual int SwitchCamera(CameraID camera_id) = 0;
    名称和参数变化视频设备管理virtual void SetEnableSpeakerphone(bool enable) = 0;virtual int SetAudioPlaybackDevice(AudioPlaybackDevice device) = 0;
    删除视频设备管理virtual void Release() = 0;/IVideoDeviceManager 类型下 Release 删除
    删除音频设备管理virtual void Release() = 0;/IAudioDeviceManager 类型下 Release 删除
    删除音频设备管理virtual void SetEnableSpeakerphone(bool enable) = 0;/
    删除音频设备管理virtual int GetPlaybackDeviceInfo(char device_id[MAX_DEVICE_ID_LENGTH], char device_name[MAX_DEVICE_ID_LENGTH]) = 0;/
    删除音频设备管理virtual int GetRecordingDeviceInfo(char device_id[MAX_DEVICE_ID_LENGTH], char device_name[MAX_DEVICE_ID_LENGTH]) = 0;/
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前回调变动后回调备注
    参数变化引擎管理virtual void OnMediaDeviceStateChanged(const char* device_id, bytertc::MediaDeviceType device_type, bytertc::MediaDeviceState device_state)virtual void OnMediaDeviceStateChanged(const char* device_id, bytertc::MediaDeviceType device_type, bytertc::MediaDeviceState device_state, bytertc::MediaDeviceError device_error)MediaDeviceType 枚举值名称变更
    参数变化房间管理virtual void OnUserJoined(const UserInfo& user_info, const char* team_id, const RangeAudioMode send_mode, int elapsed)virtual void OnUserJoined(const UserInfo& user_info, int elapsed)
    删除引擎管理virtual void OnMediaDeviceNotification(const char* device_id,bytertc::MediaDeviceType device_type,bytertc::MediaDeviceNotification notification_type) {(void)device_id;(void)device_type;(void)notification_type;}/枚举类 MediaDeviceNotification 已删除 |
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增减MediaDeviceState删除了枚举值:
  • kMediaDeviceStateStartFailed
  • kMediaDeviceStateStopFailed
  • 新增了枚举值:
  • kMediaDeviceStateRuntimeError
  • kMediaDeviceStateAdded
  • kMediaDeviceStateRemoved
  • 错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增减WarningCode新增了枚举值:kWarningCodeRecordingSilence
    枚举值增减LocalVideoStreamError新增了枚举值:kLocalVideoStreamErrorDeviceDisconnected
    3.21
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    名称变化引擎管理BYTE_API void DestroyByteRtcEngine(bytertc::IRtcEngine* engine);BYTERTC_API void DestroyRtcEngine(bytertc::IRtcEngine* engine);
    名称变化视频管理int SetVideoProfiles(const VideoSolution* solutions, int solution_num)int SetVideoEncoderConfig(const VideoSolution* solutions, int solution_num)
    名称变化房间管理virtual void LeaveChannel()virtual void LeaveRoom()
    名称变化房间管理virtual void RenewToken(const char* token)virtual void UpdateToken(const char* token)
    参数变化加密void SetEncryptInfo(ByteEngineEncryptType encrypt_type, const char* key, int key_size)void SetEncryptInfo(EncryptType encrypt_type, const char* key, int key_size)
    参数变化加密void SetCustomizeEncryptHandler(IByteEngineEncryptHandler* handler)void SetCustomizeEncryptHandler(IEncryptHandler* handler))
    参数变化房间管理virtual void EnableAutoSubscribe(SubscribeMode audio_mode, SubscribeMode video_mode) = 0;virtual void EnableAutoSubscribe(SubscribeMode audio_mode, SubscribeMode video_mode) = 0;SubscribeMode 枚举值名称变化
    参数变化性能回退virtual int SetPublishFallbackOption(int option) = 0;virtual int SetPublishFallbackOption(PublishFallbackOption option)
    参数变化性能回退virtual int SetSubscribeFallbackOption(SubscribeFallbackOptions option)virtual int SetSubscribeFallbackOption(SubscribeFallbackOption option)
    参数变化视频管理int ReplaceBackground(BACKGROUND_MODE mode, DIVIDE_MODEL divide_model)int ReplaceBackground(BackgroundMode mode, DivideMode divide_model) = 0;
    参数变化视频管理void SetLocalVideoMirrorMode(bool enable)void SetLocalVideoMirrorMode(MirrorMode mode)
    参数变化视频管理virtual bool PushScreenFrame(IByteVideoFrame* frame)virtual bool PushScreenFrame(IVideoFrame* frame)
    参数变化视频管理virtual bool PushExternalVideoFrame(IByteVideoFrame* frame)virtual bool PushExternalVideoFrame(IVideoFrame* frame)
    名称和参数变化视频管理int MuteLocalVideoStream(bool mute)void MuteLocalVideo(MuteState state)
    名称和参数变化视频管理BYTE_API IByteVideoFrame* BuildByteVideoFrame(const ByteVideoFrameBuilder& builder)BYTERTC_API IVideoFrame* BuildVideoFrame(const VideoFrameBuilder& builder)
    名称和参数变化引擎管理virtual const char* GetVersion(int* build) = 0;BYTERTC_API const char* GetSDKVersion()
    名称和参数变化房间管理virtual int JoinChannel(const char* token, const char* channel_id, const char* uid, const char* info)virtual int JoinRoom(const char* token, const char* room_id, const UserInfo& user_info, RoomProfileType profile_type)
    名称和参数变化房间管理virtual void SetClientRole(CLIENT_ROLE_TYPE role)virtual void SetUserRole(UserRoleType role)
    拆分或合并视频管理
  • int SetupLocalVideo(const VideoCanvas& canvas)
  • int SetupLocalScreen(const VideoCanvas& canvas)
  • void SetLocalVideoCanvas(StreamIndex index, const VideoCanvas& canvas)
    拆分或合并视频管理
  • void SetupRemoteVideo(const VideoCanvas& canvas)
  • void SetupRemoteScreen(const VideoCanvas& canvas)
  • void SetRemoteVideoCanvas(char* user_id, StreamIndex index, const VideoCanvas& canvas)
    拆分或合并视频管理
  • void MuteRemoteVideoStream(const char* userid)
  • void UnmuteRemoteVideoStream(const char* userid)
  • void MuteRemoteVideo(const char* uid, MuteState state)
    拆分或合并视频管理
  • void MuteAllRemoteVideoStreams()
  • void UnmuteAllRemoteVideoStreams()
  • void MuteAllRemoteVideo(MuteState state)
    拆分或合并引擎管理
  • BYTE_API bytertc::IRtcEngine* CreateByteRtcEngine(const char* app_id, bytertc::IRtcEngineEventHandler* event_handler);
  • BYTE_API bytertc::IRtcEngine* CreateByteRtcEngineWithParameters(const char* app_id, bytertc::IRtcEngineEventHandler* event_handler, const char* parameters);
  • BYTERTC_API bytertc::IRtcEngine* CreateRtcEngine(const char* app_id, bytertc::IRtcEngineEventHandler* event_handler, const char* parameters);
    拆分或合并音频管理void SetExternalAudioSource(bool enable, int sample_rate, unsigned int record_channels, unsigned int playout_channels)
  • void EnableExternalAudioDevice(const AudioFormat &recording_format, const AudioFormat &playback_format)
  • void DisableExternalAudioDevice()
  • 旧版接口拆分为 EnableExternalAudioDevice 和 DisableExternalAudioDevice
    删除房间管理virtual void SetChannelProfile(CHANNEL_PROFILE_TYPE profile_type)/删除旧版接口,设置 channelProfile 使用 joinRoom
    删除房间管理virtual int JoinChannel( const char* token, const char* channel_id, const char* uid, const char* info, const char* trace_id)/
    删除引擎管理BYTE_API void EnablePerformanceCollect(bool enable);/
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前回调变动后回调备注
    名称变化房间管理virtual void OnChannelError(int err)virtual void OnRoomError(int err)
    名称变化房间管理virtual void OnChannelWarning(int warn)virtual void OnRoomWarning(int warn)
    名称变化性能回退virtual void OnRemoteStreamSwitch(const RemoteStreamSwitch& event)virtual void OnSimulcastSubscribeFallback(const RemoteStreamSwitch& event)
    参数变化网络连接void OnConnectionStateChanged(bytertc::CONNECTION_STATE state)void OnConnectionStateChanged(bytertc::ConnectionState state)
    参数变化房间管理virtual void OnStreamRemove(const ByteStream& stream, RtcStreamRemoveReason reason)virtual void OnStreamRemove(const MediaStreamInfo& stream, StreamRemoveReason reason)
    参数变化房间管理virtual void OnStreamAdd(const ByteStream& stream)virtual void OnStreamAdd(const MediaStreamInfo& stream)
    参数变化房间管理virtual void OnUserJoined(const char* uid, const char* team_id, const RangeAudioMode send_mode, int elapsed)virtual void OnUserJoined(const UserInfo& user_info, const char* team_id, const RangeAudioMode send_mode, int elapsed)
    参数变化引擎管理virtual void OnMediaDeviceStateChanged(const char* device_id, bytertc::MediaDeviceType device_type, bytertc::MediaDeviceState device_state)virtual void OnMediaDeviceStateChanged(const char* device_id, bytertc::MediaDeviceType device_type, bytertc::MediaDeviceState device_state)MediaDeviceType 和 MediaDeviceState 枚举值名称变化
    参数变化性能回退void OnPerformanceAlarms(``**int** level, **const** bytertc::SourceWantedData& data)virtual void OnPerformanceAlarms(bytertc::PerformanceAlarmMode mode, const char* room_id, bytertc::PerformanceAlarmReason reason, const bytertc::SourceWantedData& data)
    参数变化视频管理virtual bool OnRemoteVideoFrame(const char* roomid, const char* uid, IByteVideoFrame* videoFrame)virtual bool OnRemoteVideoFrame(const char* roomid, const char* uid, IVideoFrame* videoFrame)IVideoFrame 类型名称变化
    参数变化视频管理virtual bool OnLocalVideoFrame(IByteVideoFrame* videoFrame)virtual bool OnLocalVideoFrame(IVideoFrame* videoFrame)IVideoFrame 类型名称变化
    参数变化视频管理virtual bool OnLocalScreenFrame(IByteVideoFrame* videoFrame) ;virtual bool OnLocalScreenFrame(IVideoFrame* videoFrame)IVideoFrame 类型名称变化
    参数变化视频管理virtual bool OnRemoteScreenFrame(const char* roomid, const char* uid, IByteVideoFrame* videoFrame)virtual bool OnRemoteScreenFrame(const char* roomid, const char* uid, IVideoFrame* videoFrame)IVideoFrame 类型名称变化
    参数变化视频管理void OnLocalVideoStateChanged(LocalVideoStreamState state, LocalVideoStreamError error)void OnLocalVideoStateChanged(StreamIndex stream_index,LocalVideoStreamState state, LocalVideoStreamError error)
    参数变化视频管理void OnRemoteVideoStateChanged(const char* uid, RemoteVideoState state, RemoteVideoStateReason reason, int elapsed)void OnRemoteVideoStateChanged( RemoteStreamKey key, RemoteVideoState state, RemoteVideoStateReason reason)
    参数变化视频管理void OnUserMuteVideo(const char* uid, bool muted)void OnUserMuteVideo(const char* uid, MuteState mute)
    参数变化视频管理void OnMuteAllRemoteVideo(const char* uid, bool muted)void OnMuteAllRemoteVideo(const char* uid, MuteState mute)
    参数变化视频数据回调virtual bool OnReadyToSendMetadata(ByteMetadataBuffer* metadata)virtual bool OnReadyToSendMetadata(VideoMetadataBuffer* metadata)VideoMetadataBuffer 类型变化
    参数变化视频数据回调virtual void OnMetadataReceived(const char* roomid, const char* uid, const ByteMetadataBuffer& metadata)virtual void OnMetadataReceived(const char* roomid, const char* uid, const VideoMetadataBuffer& metadata)VideoMetadataBuffer 类型变化
    参数变化音频管理OnRemoteAudioStateChanged(const RemoteStreamKey& key, RemoteAudioState state, RemoteAudioStateReason reason)OnRemoteAudioStateChanged(const RemoteStreamKey& key, RemoteAudioState state, RemoteAudioStateChangeReason reason)
    参数变化流消息virtual void OnUserMessageSendResult(int64_t msgid, int error)virtual void OnUserMessageSendResult(int64_t msgid, int error)UserMessageSendResult 枚举值名称变更 & 新增枚举值 |
    拆分或合并房间管理
  • virtual void OnJoinChannelSuccess(const char* room_id, const char* uid, int elapsed)
  • virtual void OnRejoinChannelSuccess(const char* room_id, const char* uid, int elapsed)
  • virtual void OnJoinRoomResult(const char* room_id, const char* uid, int error_code, JoinRoomType join_type, int elapsed)旧版接口合并为 OnJoinRoomResult
    拆分或合并视频管理
  • void OnFirstLocalVideoFrame(int width, int height, int elapsed)
  • void OnFirstLocalScreenFrame(int width, int height, int elapsed)
  • void OnFirstLocalVideoFrameCaptured(StreamIndex index, VideoFrameInfo info)旧版接口合并为 OnFirstLocalVideoFrameCaptured
    拆分或合并视频管理
  • void OnFirstRemoteScreenFrame(const char* uid, int width, int height, int elapsed)
  • void OnFirstRemoteVideoFrame(const char* uid, int width, int height, int elapsed)
  • void OnFirstRemoteVideoFrameRendered(const RemoteStreamKey key, const FrameInfo& info)旧版接口合并为 OnFirstRemoteVideoFrameRendered
    拆分或合并视频管理void OnVideoSizeChanged(const char* uid, int width, int height, int rotation)
  • void OnLocalVideoSizeChanged(StreamIndex index, const FrameInfo& info)
  • void OnRemoteVideoSizeChanged(RemoteStreamKey key, const FrameInfo& info)
  • 拆分或合并数据统计
  • void OnRemoteAudioStats(const RemoteAudioStats& stats)
  • void OnRemoteVideoStats(const RemoteVideoStats& stats)
  • void OnNetworkQuality(const char* uid, NetworkQuality tx_quality, NetworkQuality rx_quality)
  • void OnRemoteStreamStats(const RemoteStreamStats& stats)旧版接口合并为 OnRemoteStreamStats
    拆分或合并数据统计
  • void OnLocalAudioStats(const LocalAudioStats& stats)
  • void OnLocalVideoStats(const LocalVideoStats& stats)
  • void OnNetworkQuality(const char* uid, NetworkQuality tx_quality, NetworkQuality rx_quality)
  • void OnLocalStreamStats(const LocalStreamStats& stats)旧版接口合并为 OnLocalStreamStats
    删除房间管理virtual void OnLoginCompletion(int error_code, const ByteStream* list_streams, int stream_number)/
    删除数据统计void OnAudioQuality(const char* uid, int quality, unsigned short delay, unsigned short lost)/
    名称和参数变化房间管理virtual void OnUserOffline(const char* uid, USER_OFFLINE_REASON_TYPE reason)virtual void OnUserLeave(const char* uid, UserOfflineReason reason)
    名称和参数变化房间管理virtual void OnLeaveChannel(const RtcStats& stats)virtual void OnLeaveRoom(const RtcRoomStats& stats)
    名称和参数变化数据统计void OnRtcStats(const RtcStats& stats)void OnRoomStats(const RtcRoomStats& stats)
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    名称变化ProblemFeedbackOption替代PROBLEM_FEEDBACK
    名称变化ManagedMemory替代ByteManagedMemory
    枚举值增减UserMessageSendResult新增了枚举值:kUserMessageSendResultInit
    枚举值增减RemoteAudioStats删除了枚举值:uid,此变量请参考 RemoteStreamStats 中的 uid
    枚举值增减RemoteVideoStats删除了枚举值:uid,此变量请参考 RemoteStreamStats 中的 uid
    3.20
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    名称变化视频管理int SetVideoProfiles(const VideoSolution* solutions, int solution_num)int SetVideoEncoderConfig(const VideoSolution* solutions, int solution_num)
    名称变化音频管理void AdjustRecordingSignalVolume(const int volume)void SetRecordingVolume(const int volume)
    名称变化音频管理void AdjustPlaybackSignalVolume(const int volume)void SetPlaybackVolume(const int volume)
    名称变化音频管理void AdjustAudioLoopbackCaptureVolume(int volume)void SetScreenAudioVolumeBeforeMixing(int volume)
    名称变化音频管理void AdjustRemoteAudioVolume(const char* uid, int volume)void SetRemoteAudioPlaybackVolume(const char* uid, int volume)
    参数变化视频管理void SetLocalVideoMirrorMode(bool enable)void SetLocalVideoMirrorMode(MirrorMode mode)
    名称和参数变化视频管理int MuteLocalVideoStream(bool mute)void MuteLocalVideo(MuteState state)
    名称和参数变化音频管理int MuteLocalAudioStream(bool mute)void MuteLocalAudio(MuteState mute_state)
    名称和参数变化音频管理void SetAudioPerfProfile(AudioPerfProfile profile)void SetAudioPerformanceProfile(AudioPerformanceProfile profile)
    名称和参数变化音频管理void EnableAudioVolumeIndication(int interval, int smooth)void SetAudioVolumeIndicationInterval(int interval)
    拆分或合并视频管理
  • int SetupLocalVideo(const VideoCanvas& canvas)
  • int SetupLocalScreen(const VideoCanvas& canvas)
  • void SetLocalVideoCanvas(StreamIndex index, const VideoCanvas& canvas)
    拆分或合并视频管理
  • void SetupRemoteVideo(const VideoCanvas& canvas)
  • void SetupRemoteScreen(const VideoCanvas& canvas)
  • void SetRemoteVideoCanvas(char* user_id, StreamIndex index, const VideoCanvas& canvas)
    拆分或合并视频管理
  • void MuteRemoteVideoStream(const char* userid)
  • void UnmuteRemoteVideoStream(const char* userid)
  • void MuteRemoteVideo(const char* uid, MuteState state)
    拆分或合并视频管理
  • void MuteAllRemoteVideoStreams()
  • void UnmuteAllRemoteVideoStreams()
  • void MuteAllRemoteVideo(MuteState state)
    拆分或合并音频管理void EnableAudioLoopBackCapture(bool enable)
  • void StartMixScreenAudioToMainStream();
  • void StopMixScreenAudioToMainStream()
  • 拆分或合并音频管理
  • void SetDefaultMuteAllRemoteAudioStreams(bool mute)
  • void MuteAllRemoteAudio()
  • void UnmuteAllRemoteAudioStreams()
  • void MuteAllRemoteAudio(MuteState mute_state)
    拆分或合并音频管理
  • void MuteRemoteAudioStream(const char* uid)
  • void UnmuteRemoteAudioStream(const char* uid)
  • void MuteRemoteAudio(const char* user_id, MuteState mute_state)
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前回调变动后回调备注
    参数变化视频管理void OnLocalVideoStateChanged(LocalVideoStreamState state, LocalVideoStreamError error)void OnLocalVideoStateChanged(StreamIndex stream_index,LocalVideoStreamState state, LocalVideoStreamError error)
    参数变化视频管理void OnRemoteVideoStateChanged(const char* uid, RemoteVideoState state, RemoteVideoStateReason reason, int elapsed)void OnRemoteVideoStateChanged( RemoteStreamKey key, RemoteVideoState state, RemoteVideoStateReason reason)
    参数变化视频管理void OnUserMuteVideo(const char* uid, bool muted)void OnUserMuteVideo(const char* uid, MuteState mute)
    参数变化视频管理void OnMuteAllRemoteVideo(const char* uid, bool muted)virtual void OnMuteAllRemoteVideo(const char* uid, MuteState mute)
    参数变化音频管理void OnMuteAllRemoteAudio(const char* uid, bool muted)void OnMuteAllRemoteAudio(const char* user_id, MuteState mute_state)
    参数变化音频管理void OnAudioVolumeIndication(const AudioVolumeInfo* speakers, unsigned int speaker_number, int total_volume)void OnAudioVolumeIndication(const AudioVolumeInfo* speakers, unsigned int speaker_number, int total_remote_volume)
    参数变化音频管理void OnUserMuteAudio(const char* uid, bool muted)void OnUserMuteAudio(const char* user_id, MuteState mute_state)
    参数变化音频管理void OnFirstLocalAudioFrame(int elapsed)void OnFirstLocalAudioFrame(StreamIndex index)
    参数变化音频管理void OnFirstRemoteAudioFrame(const char* uid, int elapsed)void OnFirstRemoteAudioFrame(RemoteStreamKey key)
    参数变化音频管理void OnRemoteAudioStateChanged(const char* uid, RemoteAudioState state, RemoteAudioStateReason reason, int elapsed)void OnRemoteAudioStateChanged(RemoteStreamKey key, RemoteAudioState state, RemoteAudioStateReason reason)
    拆分或合并视频管理
  • void OnFirstLocalVideoFrame(int width, int height, int elapsed)
  • void OnFirstLocalScreenFrame(int width, int height, int elapsed)
  • void OnFirstLocalVideoFrameCaptured(StreamIndex index, VideoFrameInfo info)/
    拆分或合并视频管理
  • void OnFirstRemoteScreenFrame(const char* uid, int width, int height, int elapsed)
  • void OnFirstRemoteVideoFrame(const char* uid, int width, int height, int elapsed)
  • void OnFirstRemoteVideoFrameRendered(const RemoteStreamKey key, const FrameInfo& info)/
    拆分或合并视频管理void OnVideoSizeChanged(const char* uid, int width, int height, int rotation)
  • void OnLocalVideoSizeChanged(StreamIndex index, const FrameInfo& info)
  • void OnRemoteVideoSizeChanged(RemoteStreamKey key, const FrameInfo& info)
  • /
    拆分或合并引擎管理
  • void OnConnecting()
  • void OnReconnecting()
  • void OnConnected()
  • void OnDisconnected()
  • void OnConnectionLost()
  • void OnConnectionInterrupted()
  • void OnConnectionStateChanged(CONNECTION_STATE state)多个旧版回调合并为 OnConnectionStateChanged 中的多个状态
    删除视频管理void OnFirstRemoteVideoDecoded(const char* uid, int width, int height, int elapsed)/
    3.19.2
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化房间管理void EnableAutoSubscribe(bool auto_subscribe)void EnableAutoSubscribe(SubscribeMode audio_mode, SubscribeMode video_mode)
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增减CLIENT_ROLE_TYPE删除了枚举值:CLIENT_ROLE_AUDIENCE,建议使用 CLIENT_ROLE_SILENT_AUDIENCE 代替。
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增减RTC_ERROR_CODE新增了枚举值:
  • BRERR_OVER_STREAM_PUBLISH_LIMIT
  • BRERR_OVER_SCREEN_PUBLISH_LIMIT
  • BRERR_OVER_VIDEO_PUBLISH_LIMIT
  • 3.19.1
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    删除/int Feedback(const char* data)/
    删除音频管理int SetAudioProfile(AUDIO_PROFILE_TYPE profile, AUDIO_SCENARIO_TYPE scenario)/
    删除视频管理void RemoveLocalVideo()/
    删除视频管理void RemoveLocalScreen()/
    删除视频管理void RemoveRemoteVideo(const char* userid)/
    删除视频管理void RemoveRemoteScreen(const char* userid)/
    删除视频管理void RemoteFristVideoFrameRendered(const char* userid, unsigned int elapse)/
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前回调变动后回调备注
    删除音频管理void OnRemoteAudioMixingBegin()/
    3.18.3
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化房间管理void Unsubscribe(const char* stream_id)void Unsubscribe(const char* user_id, bool is_screen)
    参数变化房间管理void SubscribeStream(const char* stream_id, const SubscribeConfig& info)void SubscribeStream(const char* user_id, const SubscribeConfig& info)
    删除/CreateByteRtcEngineWithParameters(const char* app_id, bytertc::IRtcEngineEventHandler* event_handler, const char* parameters)/
    删除/createByteRtcEngineWithPtrAndParameters(const char* app_id, std::unique_ptr<bytertc::IRtcEngineEventHandler> event_handler, const char* parameters);/
    删除/void UpdateCloudRending(const char* cloudrenderJsonString) override/
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前回调变动后回调备注
    参数变化音频管理void OnRemoteAudioFrame(const char* stream_id, const IByteAudioFrame& audio_frame, const ByteStreamInfo& stream_info)void OnRemoteAudioFrame(const IByteAudioFrame& audio_frame, const ByteStreamInfo& stream_info)
    参数变化房间管理void OnStreamRemove(const ByteStream& stream)void OnStreamRemove(const ByteStream& stream, RtcStreamRemoveReason reason)
    删除音频设备管理void OnAudioDeviceStateChanged(const char* device_id, bytertc::MediaDeviceType device_type, bytertc::MediaDeviceStateType device_state)/
    删除视频设备管理void OnVideoDeviceStateChanged(const char* device_id, bytertc::MediaDeviceType device_type, ytertc::MediaDeviceStateType device_state)/