我正在研究开发一个需要实时流式传输音频的应用程序.我更喜欢使用一些用C或C++编写的跨平台(windows/linux/BSD)开源库,即使使用相应的操作系统的Sound API编写它仍然是一个选项.
我已经阅读了一些关于各种声音库的内容,包括SFML,SDL和PortAudio.不可否认,我还没有对FreeBSD和Linux中的Sound进行过充分的研究(两者之间有多相似?)
主要要求是
我主要担心的是,这些提到的API似乎主要针对游戏(声音通常从磁盘加载,并且没有太多(如果有的话)录音,而不是通过网络流式传输,在录制和播放之间具有同等重要性.
有没有人有关于这些或其他声音API的任何指针/警告/建议,或者有关长远路径并在相应操作系统的API中实现这一点的优点/缺点?
注意:虽然这个:"要求我们推荐或找到书籍,工具,软件库,教程或其他场外资源的问题都是Stack Overflow的主题"当人们也认为"as他们倾向于吸引自以为是的答案和垃圾邮件"然后我不认为这个问题应该被关闭.寻找所描述的这样一个库的人将很难找到任何东西,这个问题的答案实际上总结了所有可用的选项.因此,这是"通常涵盖......程序员常用的软件工具"; 已接受答案的类别.
如果我创建不可调整大小的JFrame,并启用Windows Aero setLocation似乎没有正确考虑窗口边框.
在下面的代码中,我希望第二帧位于第一帧的右侧,而不是边框重叠.如果禁用Aero,或者我删除了setResizable对此的调用,则按预期完成.
import java.awt.Rectangle;
import javax.swing.JFrame;
public class FrameBorders {
public static void main(String[] args) {
JFrame frame1 = new JFrame("frame 1");
JFrame frame2 = new JFrame("frame 2");
frame1.setResizable(false);
frame2.setResizable(false);
frame1.setVisible(true);
Rectangle bounds = frame1.getBounds();
frame2.setLocation(bounds.x+bounds.width, bounds.y);
frame2.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么或这是一个错误?如何在没有重叠边框的情况下并排显示2个不可调整的对话框?
编辑:添加了截图(也将frame2更改为JDialog而不是JFrame)
Aero On:

Aero Off:

Aero On但可调整大小:

我正试图更深入地理解.因此,linux启动必须处理一个程序集文件.我知道mov, push, pop,但在这里我很遗憾:
.globl __start
.ent __start
__start:
br $29,2f
2: ldgp $29,0($29)
jsr $26,start_kernel
call_pal PAL_halt
.end __start
switch_to_osf_pal:
subq $30,128,$30
...
Run Code Online (Sandbox Code Playgroud)
如果我说那__start是一个标签,我是否正确?一旦它被另一个代码和平调用,它会被调用吗?我试图谷歌周围了解ldgp,或call_pal符号,但我什么都没发现.最后,我发现以switch_to_osf_pal这种方式调用的c文件switch_to_osf_pal(2, pcb_va, pcb_pa, VPTB);是这个函数用这个参数调用汇编函数吗?
对不起,如果有很多问题,但我没有找到任何明确的文档