您尚未登录。

楼主 #1 2018-10-27 10:01:30

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,245
积分: 9197

V3s linux 4.13 音频播放延迟了,开始以为是线程同步问题,纠结了很久 (问题由 @Andy1234 解决,欢迎大家验证)

QQ20181027095359.png

放狗一搜,会搜索同义词, 估计接近真相了



以下由 @哇酷小管家 2022-01-13 添加:
---------------------------------
问题由 #27楼 @Andy1234 解决, 欢迎大家验证。





离线

楼主 #2 2018-10-27 10:02:48

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,245
积分: 9197

Re: V3s linux 4.13 音频播放延迟了,开始以为是线程同步问题,纠结了很久 (问题由 @Andy1234 解决,欢迎大家验证)

https://github.com/torvalds/linux/blob/master/sound/soc/sunxi/sun8i-codec-analog.c

static int sun8i_headphone_amp_event(struct snd_soc_dapm_widget *w,
                     struct snd_kcontrol *k, int event)
{
    struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);

    if (SND_SOC_DAPM_EVENT_ON(event)) {
        snd_soc_component_update_bits(component, SUN8I_ADDA_PAEN_HP_CTRL,
                          BIT(SUN8I_ADDA_PAEN_HP_CTRL_HPPAEN),
                          BIT(SUN8I_ADDA_PAEN_HP_CTRL_HPPAEN));
        /*
         * Need a delay to have the amplifier up. 700ms seems the best
         * compromise between the time to let the amplifier up and the
         * time not to feel this delay while playing a sound.
         */
        msleep(700);
    } else if (SND_SOC_DAPM_EVENT_OFF(event)) {
        snd_soc_component_update_bits(component, SUN8I_ADDA_PAEN_HP_CTRL,
                          BIT(SUN8I_ADDA_PAEN_HP_CTRL_HPPAEN),
                          0x0);
    }

    return 0;
}





离线

楼主 #3 2018-10-27 10:32:53

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,245
积分: 9197

Re: V3s linux 4.13 音频播放延迟了,开始以为是线程同步问题,纠结了很久 (问题由 @Andy1234 解决,欢迎大家验证)

700ms 改成 100ms, 试了一下,有一段声音播不出来,如鲠在喉的感觉。





离线

楼主 #5 2018-10-27 10:50:31

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,245
积分: 9197

Re: V3s linux 4.13 音频播放延迟了,开始以为是线程同步问题,纠结了很久 (问题由 @Andy1234 解决,欢迎大家验证)

dbskcnc 说:

v3这么坑啊, 700ms,我还想用它做点音频相关的应用呢, 这样下来s3不能用了

连续播放不会酱紫,如果播放后停3秒(目测), 下一次播放又会延迟700ms, 如果播放间隔不超过3秒不会。
超过3秒,喇叭关闭的时候会播放 啵 的一声, 暂时不知道去哪里关闭,
有网友建议在 啵 一声前通过gpio关闭功放(mute引脚).





离线

楼主 #7 2018-10-27 11:24:36

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,245
积分: 9197

Re: V3s linux 4.13 音频播放延迟了,开始以为是线程同步问题,纠结了很久 (问题由 @Andy1234 解决,欢迎大家验证)

dbskcnc 说:
晕哥 说:
dbskcnc 说:

v3这么坑啊, 700ms,我还想用它做点音频相关的应用呢, 这样下来s3不能用了

连续播放不会酱紫,如果播放后停3秒(目测), 下一次播放又会延迟700ms, 如果播放间隔不超过3秒不会。
超过3秒,喇叭关闭的时候会播放 啵 的一声, 暂时不知道去哪里关闭,
有网友建议在 啵 一声前通过gpio关闭功放(mute引脚).

这样子已经是残废, 看样子还得另找其它芯片了

不知道是不是因为要省电,所以播放完之后关闭声卡???需要的时候再打开???
如果能一直开着,不知道能不能解决这个问题, 我们的产品是市电供电,不需要节电.





离线

楼主 #9 2018-10-27 14:38:14

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,245
积分: 9197

Re: V3s linux 4.13 音频播放延迟了,开始以为是线程同步问题,纠结了很久 (问题由 @Andy1234 解决,欢迎大家验证)

dbskcnc 说:
晕哥 说:
dbskcnc 说:

这样子已经是残废, 看样子还得另找其它芯片了

不知道是不是因为要省电,所以播放完之后关闭声卡???需要的时候再打开???
如果能一直开着,不知道能不能解决这个问题, 我们的产品是市电供电,不需要节电.

能不能验证下这个问题,如果每次播放都要延时700ms, 真的很大问题, 按理不应该这样子才对

验证过了, 如果每次播放间隔时间超过3秒(目测), 那么每次都是延迟 700ms.
上面是 linux4.13的结果,
不知道用bsp linux(3.4) 会不会这样.





离线

楼主 #11 2018-10-28 22:37:06

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,245
积分: 9197

Re: V3s linux 4.13 音频播放延迟了,开始以为是线程同步问题,纠结了很久 (问题由 @Andy1234 解决,欢迎大家验证)

Quotation 说:
晕哥 说:
dbskcnc 说:

能不能验证下这个问题,如果每次播放都要延时700ms, 真的很大问题, 按理不应该这样子才对

验证过了, 如果每次播放间隔时间超过3秒(目测), 那么每次都是延迟 700ms.
上面是 linux4.13的结果,
不知道用bsp linux(3.4) 会不会这样.

芯片内部功放启动的时候会相当于把音量“慢慢”调大,避免电平突然改变造成的咔嗒声。所以这个现象应该是驱动层把功放关闭了,再次启用的时候比较慢。
可以改驱动,一直不关闭功放。
或者,在播放完的时候,持续播放一段静音音频。

https://github.com/torvalds/linux/blob/master/sound/soc/sunxi/sun8i-codec-analog.c

我看了一下代码,
没有找到不关功放的寄存器,
或许找的姿势不对.

持续播放一段静音音频这个倒是可以有,
在应用程序端做就可以了。





离线

楼主 #14 2018-10-29 09:53:40

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,245
积分: 9197

Re: V3s linux 4.13 音频播放延迟了,开始以为是线程同步问题,纠结了很久 (问题由 @Andy1234 解决,欢迎大家验证)

太好了, 感谢楼上各位, 我一会就试一试, 等会附上结果。





离线

楼主 #15 2018-10-29 11:48:43

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,245
积分: 9197

Re: V3s linux 4.13 音频播放延迟了,开始以为是线程同步问题,纠结了很久 (问题由 @Andy1234 解决,欢迎大家验证)

QQ20181029114558.png


[  356.628202] ZZZZZZZZZZ 111111
[  356.628252] ZZZZZZZZZZ 22222222222


[  362.408079] ZZZZZZZZZZ 111111
[  362.408139] ZZZZZZZZZZ 33333333333333




试了一下 12# 朋友的方法, 把功放关闭的代码屏蔽起来, 然而并没有什么用.





离线

楼主 #19 2018-12-26 21:16:47

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,245
积分: 9197

Re: V3s linux 4.13 音频播放延迟了,开始以为是线程同步问题,纠结了很久 (问题由 @Andy1234 解决,欢迎大家验证)

superaspen 说:

晕哥,现在v3s能录音了吗?我录到的是杂音

项目没有需求所以没有测试,录音本身肯定没有问题,检查软件硬件问题





离线

楼主 #21 2019-04-18 22:21:46

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,245
积分: 9197

Re: V3s linux 4.13 音频播放延迟了,开始以为是线程同步问题,纠结了很久 (问题由 @Andy1234 解决,欢迎大家验证)

QQ20190418221944.png

发现关闭播放后约10秒, 自动关闭了寄存器 ? 这个是软件完成还是硬件完成的?





离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn