小编Ton*_*ony的帖子

使用QIODevice播放音频数据(Qt4.6 with VC++)

我正在使用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.

audio qt stream visual-c++

11
推荐指数
1
解决办法
7663
查看次数

在Apache Karaf下设置Java堆大小

如果这是重复的话,我道歉,但我似乎无法在任何地方找到答案.

使用Apache Karaf时增加最大Java堆大小的最佳方法是什么?

目前,我修改了karaf.bat文件中的以下行:

set DEFAULT_JAVA_OPTS=-server -Xmx<NewMaxValue>M.

我觉得修改bat文件不是最好的解决方案.此外,没有一个配置文件似乎有地方放这个.

谢谢

java heap apache-karaf

9
推荐指数
2
解决办法
2万
查看次数

Java将枚举编译成什么?

我和同事讨论了Java如何代表枚举.我的印象是他们像C/C++一样严格要求.或者,如果添加行为(Type-Safe枚举),它将被包装在一个类中.他相信如果它足够小,Java会将它压缩到一个字节.

但是,我在Oracle网站上发现了这个:

Java编程语言枚举远比其他语言中的对应程序更强大,这些语言只不过是美化整数.新的枚举声明定义了一个完整的类(称为枚举类型).

我认为它们是实际的物体.如果是这样,有没有办法优化它们以节省空间?

谢谢

编辑:正如Jon对答案的评论中所提到的,我是在Enum的序列化大小之后.

java optimization enums compilation java-6

8
推荐指数
1
解决办法
1968
查看次数

标签 统计

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