【问题标题】:A lossless audio codec for embedded devices用于嵌入式设备的无损音频编解码器
【发布时间】:2011-07-18 08:03:58
【问题描述】:

我想通过无线电通道传输 48K 速率的立体声音频流(对应于 16 位样本的每通道 768 Kbit),并使用 Cortex-M3 微控制器将其馈送到 DAC。虽然通道在技术上工作在 2 Mbit,但范围会随着速度迅速下降,我想在一定程度上对其进行优化。

是否有任何无损音频编解码器可以在 RAM 约为 8K 的微控制器上工作? 20 MIPS 的处理能力、32 位硬件乘法器和没有硬件除数?我不需要很高的压缩比,但它应该能正确处理流错误,并且播放中不会出现长时间的停顿。

【问题讨论】:

    标签: audio embedded codec lossless


    【解决方案1】:

    Xiph.orgFLAC 可能是可嵌入的 - 请参阅bottom of this page 的“嵌入式开发人员”部分。它是定点,fast。开源,并得到相当广泛的支持。我没有尝试过,但我确实使用了他们的 Ogg Vorbis 解码器的嵌入式版本 (Tremor),并且发现它相当容易启动和运行。

    【讨论】:

    • 好吧,看起来在开源世界中真的没有比 FLAC 更好的了。 (顺便说一句,Tremor 也不错,但它需要 ARM ISA,并且不适用于 Thumb-2;而且我没有足够的 Thumb-fu 来实际修复它。)
    【解决方案2】:

    您还应该考虑将采样率降低到较低的采样率,而不是使用音频压缩。

    您还需要考虑无线连接的稳健性。这也会占用您的整体无线带宽,因为您可能已经研究过纠错技术。

    这两个问题都取决于所需音频的质量。

    我认为 Linux JACK 程序使用了您可能想要查看的 CELT 音频编解码器(有损)。

    【讨论】:

    • 不,我不想下采样。我目前有一个蓝牙耳机(它使用 SBC 编解码器),听起来很糟糕。我想将由于渠道特征而引入的负面质量影响降至最低,因为现在它们困扰着我很多,这正是这个项目的原因。 CELT 看起来很不错,但我不确定 Cortex-M3 是否可以处理它。
    【解决方案3】:

    看看apt-x。我想它是专为您正在创建的内容而设计的,并且根据 this 可以在 Cortex M3 上运行。

    【讨论】:

    • 这是一个非常有趣的编解码器,它正是我正在寻找的...但它是闭源的。而且我负担不起个人许可。所以,看起来它对我没用:/
    • 也许在这种情况下digikey.com/us/en/ph/LairdTechnologies/BTM511-BTM521.html 是您设计的良好开端
    • 问题是,我问这个问题是因为我已经确定蓝牙不适合我。例如。 Linux 上的 BlueZ/PulseAudio 蓝牙 A2DP 堆栈(唯一一个)仅支持 SBC 编解码器,这导致非常的音频质量很差(实际上,它让我发疯)。并不是说普通的蓝牙适配器不能同时处理鼠标和耳机。
    【解决方案4】:

    只做 DPCM(无损)或 ADPCM(有损)。

    大约 25% 的压缩率(1MB PCM 压缩成 250kb ADPCM)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-07
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-06
      • 2012-11-19
      • 2016-05-15
      相关资源
      最近更新 更多