我正在尝试找出一种在bootloader代码中循环声音(目前以mp3 / wav格式存在)的方法,但我不知道从哪里开始。
因此我有3个问题:
提前致谢^^
答案 0 :(得分:2)
当处理器处于16位模式或32位模式时,播放声音会更容易吗?
它几乎没有什么区别,主要取决于你试图瞄准的声卡 - 现代声卡需要你能够在第一个4GiB的任何地方寻址。
将CPU置于unreal mode将是最好的 - 它很容易,让您可以访问4GiB地址空间并让您使用BIOS服务。
声音的哪种格式最好?
您可以查看MP3 page on Wikipedia,即使在输入技术细节之前,MP3解码也是一个非常冗长的主题。
它假设Fourier series的知识,所以你必须精通复杂的分析(在涉及复数的意义上 - 理论本身是一个基本工具)和信号处理。
如果您从未听说过"采样","窗口功能","量化"在那时,是时候阅读一些本科书了
当然,您必须精通处理二进制数据,图片或字段表应足以让您记下代码。
必须将MP3解码为一系列样本
我猜想有些卡支持硬件解码(我从未真正检查过)。
WAV file format更容易 - 大多数文件具有相同的固定标题(或者您只能支持)。
它几乎可以直接播放 - 如果您确定采样率,每个通道的比特等,并生成只有最小块的wav文件,您甚至可以直接寻找特定的偏移量并将数据直接传输到卡上。登记/>
如果不使用压缩,则WAV格式已经是一系列样本。
有没有公共可用的图书馆?我还没有发现任何有用的东西。
当然不是,为什么会这样?
一些解码MP3的开源项目肯定存在,为你指出它们并不是很有责任的,但当然没有一个能成为x86启动环境的目标。
你需要移植它 - 它可能不是微不足道的
从找到支持实模式的编译器开始,实现所需的最小CRT。
你还需要精通:
既然你知道所需的巨大努力,这里有一些建议:
我并不是想吓唬你,在集会中播放声音或一般的多媒体内容是一件了不起的事情,你不应该停下来,但要注意,这是一项非常重要的工作,假设能够精通装配。 /> 如果您正在寻找快速而有效的解决方案,那么最好停止使用 由您来判断自己并决定最佳行动方案。