(Solved)Push and Pull ?QAudioOutput
I did not understand what is pull and push ..
May be some examples could let me understand.
Not in pull mode. In pull mode, it's the device that gets the data at the rate it needs.
if i have .wav data in chunks say 512 and more (till the file is finished).i want to play this chunk then which mode would be better for this.
It's not really clear, do you want to play the complete file or just a chunk of it ?
Actually i am converting my mp3 file to wav file using 3rd API for conversion.
That conversion gives me a chunk (in wav) so that i can play it simultaneously in Qt(using QAudioOutput).
Read File mp3----->Convert it into wav--->play it (QAudioOutput)
again read next chunks mp3 ---->convert it ---->play it
until the file finished.
For More Clear what my intention is. i am providing you a link.
in play URL section, i want to use Qt Player instead of libao(3rd Party)
"please find here":http://hzqtc.github.io/2012/05/play-mp3-with-libmpg123-and-libao.html
Then use the push mode
if i use push mode then how i have to wait till the data is not played.then i have to read and write the next chunks.
m_format.setSampleRate(22050); //44100 //48000 //22050 //11025
m_format.setChannelCount(2); // one for mono or two for stereo
m_format.setSampleSize(16); //8 or 16
m_format.setByteOrder(QAudioFormat::LittleEndian); //Byte ordering of sample (typically little endian, big endian)
m_format.setSampleType(QAudioFormat::SignedInt); //Numerical representation of sample (typically signed integer, unsigned integer or float)
QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice()); if (!info.isFormatSupported(m_format))
qWarning() << "Default format not supported - trying to use nearest";
m_format = info.nearestFormat(m_format);
//pvcRW_Obj = new CReadWrite;
m_audioOutput = new QAudioOutput(m_device, m_format, this);
connect(m_audioOutput, SIGNAL(notify()), SLOT(notified()));
connect(m_audioOutput, SIGNAL(stateChanged(QAudio::State)), SLOT(stateChanged(QAudio::State)));
pIO_Device = m_audioOutput->start();
qint64 size = mfile.size();
qint64 tot =0;
while(tot < size)
QByteArray ba = mfile.read(512);
qint64 bytesWritten = pIO_Device->write(ba,ba.size());
The above is my code it always produces sound with lot of distortion.
Since you have a wav file, why don't use pull mode ?