更新订阅逻辑
2021-11-26 18:25:51 0 举报
画面轮询逻辑
作者其他创作
大纲/内容
多视图订阅
否
如果 newUserRenderNum > 0 oldUserRenderNum =1 此时新用户使用他原有的ssrc走多视图订阅,原来用户没有订阅了需要取消订阅。
newUservideo_render_viewspush(renderItemPtr)
如果 newUserRenderNum = 0 oldUserRenderNum =1 此时 新用户直接使用旧用户的ssrc然后去更新订阅
取消订阅oldUser
更新订阅,更换user
renderItemPtr是否为空
oldUser清理 video_render_viewssrc置0
<=1 说明没有多视图渲染此时需要把旧用户的订阅信息删除
是
oldUserGetHighestQualitySubscription
添加新用户的renderaddVideoOutput
是否找到用户
renderItemPtr->subscribeQuality > item.subscribeQuality
更新用户
oldUserRenderNum <=1
新的订阅流程,新的ssrc对应老的render
获取 newUserRenderNum
item.subscribeQuality < renderItemPtr->subscribeQuality
根据render查找用户
根据olduuid查找用户
addVideoOutput
如果 newUserRenderNum > 0 oldUserRenderNum >1 老用户与新用户有自己的ssrc此时老用户走多视图取消订阅,新用户走多视图订阅需要注意 render不应该被析构在前面老用户已经判断过是否需要更新订阅了,这里只需要处理新用户的订阅
结束
removeExtendVideoOutput
更换底层renderInfo的User
多视图订阅订阅item.subscribeQuality
根据joldUser获取需要renderItemPtr
移除老用户的(render)removeVideoOutput(oldUser.ssrc)
tryBindSubRenderToActiveUser
oldUser被移除的是不是最后一个render
newUserRenderNum<=0
newUser获取 itemGetHighestQualitySubscription
更新订阅,订阅render的分辨率
rtcMediaengine新加接口,主要操作就是 从原来的ssrc移除了render移除主render时做了一些特殊处理
oldUser有多视图订阅的时候,需要判断移除的是不是最大分辨率,如果是需要更新订阅的分辨率
newUser走多视图订阅逻辑
获取旧用户的redner数oldUserRenderNum
oldUser移除renderView
0 条评论
下一页