我正在使用VC++和QtMultimedia库从音频流播放音频.由于我对Qt的库不太熟悉,我开始读取.wav文件并将其写入缓冲区:
ifstream wavFile;
char* file = "error_ex.wav";
wavFile.open( file, ios::binary );
Run Code Online (Sandbox Code Playgroud)
之后,我使用ifstream的.read()函数并将所有数据写入缓冲区.写入缓冲区后,它会被发送到准备Qt的音频编写器:
QByteArray fData;
for( int i = 0; i < (int)data.size(); ++i )
{
fData.push_back(data.at(i));
}
m_pBuffer->open(QIODevice::ReadWrite);
m_pBuffer->write( fData );
m_pBuffer->close();
Run Code Online (Sandbox Code Playgroud)
(m_pBuffer是QBuffer类型)
一旦QBuffer准备就绪,我尝试播放缓冲区:
QIODevice* ioDevice = m_pAudioOut->start();
ioDevice->write( m_pBuffer->buffer() );
Run Code Online (Sandbox Code Playgroud)
(m_pAudioOut的类型为QAudioOutput)
这会导致扬声器发出小声弹,然后停止播放.有什么想法吗?
使用Qt库4.6.3在Windows XP SP2上运行Visual Studios 2008.
如果这是重复的话,我道歉,但我似乎无法在任何地方找到答案.
使用Apache Karaf时增加最大Java堆大小的最佳方法是什么?
目前,我修改了karaf.bat文件中的以下行:
set DEFAULT_JAVA_OPTS=-server -Xmx<NewMaxValue>M.
我觉得修改bat文件不是最好的解决方案.此外,没有一个配置文件似乎有地方放这个.
谢谢
我和同事讨论了Java如何代表枚举.我的印象是他们像C/C++一样严格要求.或者,如果添加行为(Type-Safe枚举),它将被包装在一个类中.他相信如果它足够小,Java会将它压缩到一个字节.
但是,我在Oracle网站上发现了这个:
Java编程语言枚举远比其他语言中的对应程序更强大,这些语言只不过是美化整数.新的枚举声明定义了一个完整的类(称为枚举类型).
我认为它们是实际的物体.如果是这样,有没有办法优化它们以节省空间?
谢谢
编辑:正如Jon对答案的评论中所提到的,我是在Enum的序列化大小之后.
java ×2
apache-karaf ×1
audio ×1
compilation ×1
enums ×1
heap ×1
java-6 ×1
optimization ×1
qt ×1
stream ×1
visual-c++ ×1