Problème avec QAudioInput
Bonjour,
je prétend utiliser QAudioInput pour pouvoir accéder au microfone de mon ordinateur. Le problème avec lequel je me trouve, est le suivant, au moment de écrire sur le buffer, le debuggeur donne une erreur de segmentation fault parce qu'il n'y a rien pour mettre sur buffer.
Voilà le code de mon cpp:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#include "audio.h"
#include <QDebug>
AudioInput::AudioInput( QAudioInput* device )
{
input = device;
}
AudioInput::~AudioInput()
{
delete input;
}
void AudioInput::start()
{
open( QIODevice::WriteOnly );
}
void AudioInput::stop()
{
close();
}
qint64 AudioInput::readData( char *data, qint64 maxlen )
{
Q_UNUSED( data )
Q_UNUSED( maxlen )
return 0;
}
qint64 AudioInput::writeData( const char *data, qint64 len )
{
int samples = len/2;
qint16* s = (qint16*)data;
for(int i=0;i<samples;i++)
{
qint16 sample = *s;
s++;
qDebug() << sample;
}
return len;
}
Audio::Audio()
{
buffer = new char[4096];
format.setFrequency( FREQUENCY );
format.setChannels( CHANNEL );
format.setSampleSize( SAMPLE );
format.setByteOrder( ORDER );
format.setSampleType( TYPE );
format.setCodec( "audio/pcm" );
audio = new QAudioInput( format, this );
audioInput = new AudioInput( audio );
audioInput->start();
audio->start(audioInput);
}
Audio::~Audio()
{
delete audio;
delete audioInput;
delete buffer;
}
void Audio::readAudio()
{
qint64 length = audio->bytesReady();
//qDebug() << "Estado" << audio->state();
qDebug() << "Tamanho de dados lidos: " << length;
qint64 l = input->read(buffer, length);
qDebug() << "Tamanho de dados escritos: " << l;
audioInput->write(buffer,l);
} |
Avant de crasher length existe mais de suite l n'existe pas et c'est là où se trouve le problème.
Merci,
RCosta.