522315697 发表于 2021-5-7 13:44:53

qcc30xx sink 输入spdif音源如果跳过重新采样?


qcc30xx sink 输入spdif音源如果跳过重新采样?

现在不管输入是48k还是96k,输出只能固定到48k或者96k,因为dsp进行了重新采样,这个怎么关闭呢?

这里关闭过,但是只针对usb audio有效果,spdif输入没有效果。




sunyanwen 发表于 2021-5-7 13:44:54

骑着蟑螂去上学 发表于 2021-5-8 12:21
这样不管是debug调试和dsp状态查看,采样率确实变化了,实际硬件输出口并没有变化。
...

注意虽然QACT里是一条线到底实际上是两条链路,spdif接收到resampler一条 后面输出mixer一条,输出的采样率是在创建mixer时决定。前面的resampler是将spdif可变采样率适配到输出采样率上,而采样率改变的消息只是送进resampler调整输入频率,后面mixer的并没受影响,所以需要用新的采样率重建两条音频链路,这样前后一致,resampler也可以直接拿掉

sunyanwen 发表于 2021-5-7 15:09:02

connect里设置iir_resampler op passthrough,创造一个带采样率的connect wrapper,在spdif op driver的adaptToNewRate里视情况清掉chain,然后用带采样率的connect wrapper创建新chain。如果不忽略绿字的话,这应该是最简单的办法了

522315697 发表于 2021-5-8 11:15:51

sunyanwen 发表于 2021-5-7 15:09
connect里设置iir_resampler op passthrough,创造一个带采样率的connect wrapper,在spdif op driver的ada ...

去掉了resampler,发现还是96k,奇怪了。


522315697 发表于 2021-5-8 12:08:57

发现问题不是出自重新采样模块,关闭有依旧是96k,这个研究研究。


sunyanwen 发表于 2021-5-8 12:10:04

骑着蟑螂去上学 发表于 2021-5-8 11:15
去掉了resampler,发现还是96k,奇怪了。

不能直接去掉需要用spdif op驱动返回的采样率动态创建spdif接收创建的时候要用返回的采样率代替原来创建代码里写死的最大采样率,不然原始采样率和音频链路采样率会对不上,usb的部分代码已经处理好了所以可以直接跳过

522315697 发表于 2021-5-8 12:19:40

sunyanwen 发表于 2021-5-8 12:10
不能直接去掉需要用spdif op驱动返回的采样率动态创建spdif接收创建的时候要用返回的采样率代替原来 ...

没有去掉resampler的情况下,输入采样率直接等于输出采样率,dsp状态下看采样率数据是正常的,但是实际硬件输出依旧是固定96K(用示波器测试I2S信号),现在就spdif有问题。usb audio和蓝牙正常可变化。

522315697 发表于 2021-5-8 12:21:00

sunyanwen 发表于 2021-5-8 12:10
不能直接去掉需要用spdif op驱动返回的采样率动态创建spdif接收创建的时候要用返回的采样率代替原来 ...



这样不管是debug调试和dsp状态查看,采样率确实变化了,实际硬件输出口并没有变化。

sunyanwen 发表于 2021-5-9 17:04:55

可能有bug不过思路在这里了,手动删除掉iir_resampler相关的内容就可以直通了

bluetooth 发表于 2021-5-9 21:25:17

sunyanwen 发表于 2021-5-9 17:04
可能有bug不过思路在这里了,手动删除掉iir_resampler相关的内容就可以直通了

好人啊!
页: [1]
查看完整版本: qcc30xx sink 输入spdif音源如果跳过重新采样?