buffer 统计

采样间隔 1ms、采样 buffer 里的数据长度

可以看到整体上 buffer 里的数据是不断增多的,将其放大可以看下细节:

符合数据变化规律,usb 会每隔 1ms 往 buffer 里放一次数据,audiobridge 会每 period_size 间隔将数据发给 dsp(buffer 里的数据会突然减少,这里是 1024 个 period_size),然后由于 tdmb 的实际采样率要低一些,因此每隔一段时间会出现只有 usb 数据传输过来,而 audiobridge 不会将数据送到 dsp 的情况发生,这样就造成了 buffer 里的数据不断累计。

这里其实可以通过每次只采样 audiobridge 发送完数据的时刻的 buffer 大小,这样可以大大减少数据采样的次数同时还能采样到局部数据最小值。,如下图这样的:

改用这种方式采样得到的数据曲线如下:

Async 反馈阈值设定

Async 反馈 srate 给 host 后统计的数据

通过设置阈值来调整 uac 的 feedback 速率,得到 buffer 里的数据长度曲线如下:

参考文献

《USB2.0 协议规范》
《UAC2 协议规范》