@
void MyThread::procesarAudio()
{
FILE * fp = fopen("1kHz.wav","rb");
char type[4];
int sample_rat;
int size, chunkSize;
short formatType, channels;
int avgBytesPerSec;
short bytesPerSample, bitsPerSample;
int dataSize;
fread(type, sizeof(char), 4, fp);
fread(&size, sizeof(int), 1, fp);
fread(type, sizeof(char), 4, fp);
fread(type, sizeof(char), 4, fp);
fread(&chunkSize, sizeof(int), 1, fp);
fread(&formatType, sizeof(short), 1, fp);
fread(&channels, sizeof(short), 1, fp);
fread(&sample_rat, sizeof(int), 1, fp);
fread(&avgBytesPerSec, sizeof(int), 1, fp);
fread(&bytesPerSample, sizeof(short), 1, fp);
fread(&bitsPerSample, sizeof(short), 1, fp);
fread(type, sizeof(char), 4, fp);
fread(&dataSize, sizeof(int), 1, fp);
QFile audio_file("1kHz.wav");
QByteArray audio_data;
QAudioFormat format;
format.setFrequency(1000);
format.setSampleSize(16);
format.setSampleRate(44100);
format.setChannelCount(1);
format.setCodec("audio/pcm");
format.setByteOrder(QAudioFormat::LittleEndian);
format.setSampleType(QAudioFormat::SignedInt);
QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
if (!info.isFormatSupported(format)) {
qWarning()<<"raw audio format not supported by backend, cannot play audio.";
return;
}
QAudioOutput* output = new QAudioOutput(info, format);
QEventLoop loop;
if(audio_file.open(QIODevice::ReadOnly))
{
audio_file.seek(44); // skip wav header
while((audio_data = audio_file.read(1024))>0)
{
// audio_file.close();
QBuffer* audio_buffer = new QBuffer(&audio_data);
qDebug() << audio_buffer->size();
audio_buffer->open(QIODevice::ReadOnly);
output->start(audio_buffer);
QObject::connect(output, SIGNAL(stateChanged(QAudio::State)), &loop, SLOT(quit()));
do
{
loop.exec();
} while(output->state() == QAudio::ActiveState);
audio_file.seek(1024);
}
}
}
@
Al inicio del codigo puedes ver como leo todo el encabezado del .wav, eso funciona a las mil maravillas, por eso se los datos de ese fichero en especifico y los pongo de forma estatica en format.
Si deseas puedo subir el codigo fuente del proyecto, tambien el del proyecto completo de la FFT para que veas de primera mano el problema que presento
saludos y gracias por responder.