我目前正在尝试找出一种在引导加载程序代码中循环声音(目前以mp3 / wav格式存在)的方法,但我不知道从哪里开始。因此,我有3个问题:
- 当处理器处于16位模式还是32位模式下播放声音更容易?
- 哪种声音格式最好?
- 是否有任何公共可用库可以做到这一点? 我没有找到有用的东西。(也许我瞎了?IDK)
当处理器处于16位模式还是32位模式时,播放某些声音是否更容易?
这并没有太大的区别,主要取决于您想要针对哪种声卡 - 现代声卡需要您能够在前4GiB内的任何位置进行寻址。
将CPU放入非真实模式是最好的选择-它简单易用,可以访问4GiB地址空间,并允许您使用BIOS服务。
你可以查看维基百科上的MP3页面,即使在进入技术细节之前,MP3解码也是一个非常冗长的话题。哪种声音格式最好?
WAV文件格式要简单得多 - 大多数文件都有相同的固定头(或者你只需要支持它)。
基本上,它是为了几乎直接播放而设计的 - 如果你确定采样率、每个通道的位数等,并仅使用最小的块生成wav文件,甚至可以直接寻找到特定偏移量并将数据直接流式传输到卡中。
如果没有使用压缩,则WAV格式已经是一系列样本。
有没有公开可用的库?我没有找到有用的东西。
当然没有,为什么会有呢?
肯定有一些开源项目用于解码MP3,但SO不负责指出它们,而且当然没有一个针对x86引导环境的目标。
你需要进行移植 - 这可能并不容易。
从找到支持实模式的编译器开始,以实现所需的最小CRT结束。
你还需要精通以下内容:
现在你已经知道需要付出的巨大努力,以下是一些建议:
malloc
也不可用,除非您自己编写它们。 - Ross Ridge