**【histreamer_必现】简要描述:**修复xts的状态修改后Win播放无声音
【环境信息】:
【预置条件】:
编译运行 histreamer_st
【测试步骤】:
运行 histreamer_st
【预期结果】:
有声音。
【实际结果】:
无声音。
【恢复手段】:
暂无。
【出现概率】:问题出现次数/实际测试次数
必现。
【定位信息】:
有声音的:
无声音的:音量为0
由此可见,sdl plugin 音量为0,是关键问题。
单步跟踪,有音量时,SetVolume是根本没设置到 sink 节点。
应该是修改后,设置了音量到 sink 节点,但是音量单位未统一,设置成了0.
下面是无声音的:直接设置音量为0.
进一步发现 audio sink filter 成员音量为0
发现 AudioSinkFilter::SetVolume 没有人调用,volume_ 一直是默认值 0.
在 HiPlayerImpl::SetVolume 设置断点。发现它根本没被调用。
实际上就是应用没有调用 SetVolume。
那么 HiPlayerImpl::volume_ 默认值是 -1,也不会往下设值。
总结:
所有问题都清楚了。 HiPlayerImpl::SetVolume 没有被调用, AudioSinkFilter 的 volume_ 默认值是0,在Configure参数时设置到 sink plugin,使得最终声音为0.
=> 【修改点】HiPlayerImpl::volume_ 可以改为 默认值为 1.0f,默认最大值。改后,事实上,HiPlayerImpl也默认最大音量。实际效果是一样。这样默认值在 HiPlayerImpl 一处控制更好点,(而且还可能减少负值条件判断,当然可以保留,防止应用设置负值)。(这个不改也可以,而且lite/std两种播放器,统一不改好了)
登录 后才可以发表评论