24 Star 30 Fork 263

OpenHarmony / multimedia_media_foundation

 / 详情

修复xts的状态修改后Win播放无声音

已完成
任务 成员
创建于  
2022-05-09 06:35

**【histreamer_必现】简要描述:**修复xts的状态修改后Win播放无声音

【环境信息】:

  • 网络环境
  • 硬件开发板型号
  • 软件版本信息或tag节点
  • 测试环境
  • 其他

【预置条件】:
编译运行 histreamer_st

【测试步骤】:
运行 histreamer_st

【预期结果】:
有声音。

【实际结果】:
无声音。

【恢复手段】:
暂无。

【出现概率】:问题出现次数/实际测试次数
必现。

【定位信息】:

    1. Log、截图、多媒体文件等,所有和问题有关的信息:

分析过程

先单步跟踪对比 sdl 输出时,音量参数有何不同

有声音的:
输入图片说明

无声音的:音量为0
输入图片说明

由此可见,sdl plugin 音量为0,是关键问题。

下一步找谁设置的音量

单步跟踪,有音量时,SetVolume是根本没设置到 sink 节点。
应该是修改后,设置了音量到 sink 节点,但是音量单位未统一,设置成了0.
下面是无声音的:直接设置音量为0.
输入图片说明
进一步发现 audio sink filter 成员音量为0
输入图片说明

下一步需要找 audio sink filter 的 volume_ 成员为啥是0

发现 AudioSinkFilter::SetVolume 没有人调用,volume_ 一直是默认值 0.

下一步正向找 SetVolume 为啥没调用下去

在 HiPlayerImpl::SetVolume 设置断点。发现它根本没被调用。
实际上就是应用没有调用 SetVolume。
那么 HiPlayerImpl::volume_ 默认值是 -1,也不会往下设值。

总结:
所有问题都清楚了。 HiPlayerImpl::SetVolume 没有被调用, AudioSinkFilter 的 volume_ 默认值是0,在Configure参数时设置到 sink plugin,使得最终声音为0.

解决办法

1:【修改点】AudioSinkFilter::volume_ 默认值不要用0,默认音量最大1.0f。减少无声的风险。

2: 【原有行为】HiPlayerImpl::volume_ 默认值原为 -1, 表示应用不设置音量,则不往下设置音量.(那么音量默认值就由AudioSinkFilter的默认值决定了)

=> 【修改点】HiPlayerImpl::volume_ 可以改为 默认值为 1.0f,默认最大值。改后,事实上,HiPlayerImpl也默认最大音量。实际效果是一样。这样默认值在 HiPlayerImpl 一处控制更好点,(而且还可能减少负值条件判断,当然可以保留,防止应用设置负值)。(这个不改也可以,而且lite/std两种播放器,统一不改好了)

3: 【注意点】HiPlayerImpl的调用者在启动阶段可以主动设置一次音量。(调用者APP设置音量,才能保证音量是自己设置的值。App不设置,则是AudioSinkFilter的默认值,最大音量。)

附件
0509.rar(21.50 KB)下载
chenguodong 2022-05-09 06:35

评论 (0)

chenguodong 创建了缺陷
chenguodong 修改了描述
chenguodong 修改了描述
chenguodong 修改了描述
chenguodong 修改了描述
chenguodong 修改了描述
chenguodong 修改了描述
chenguodong 修改了描述
chenguodong 修改了描述
chenguodong 任务状态待办的 修改为修复中
chenguodong 负责人设置为chenguodong
chenguodong 通过openharmony/multimedia_media_foundation Pull Request !309任务状态修复中 修改为已完成
dingqingpo 任务类型缺陷 修改为任务
展开全部操作日志

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(1)
1
https://gitee.com/openharmony/multimedia_media_foundation.git
git@gitee.com:openharmony/multimedia_media_foundation.git
openharmony
multimedia_media_foundation
multimedia_media_foundation

搜索帮助

53164aa7 5694891 3bd8fe86 5694891