Delete obsolete class methods and update related code

Delete obsolete methods from QAudioFormat and QAudioDeviceInfo
and update code that relied on the obsolete methods.

Change-Id: I007e36375a45399b1d5a289341bc5d5a05dc68cc
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
This commit is contained in:
Mithra Pattison
2012-07-10 13:26:48 +10:00
committed by Qt by Nokia
parent 952bd004be
commit 53fdcca366
47 changed files with 301 additions and 385 deletions

View File

@@ -50,9 +50,9 @@ AudioDecoder::AudioDecoder(bool isPlayback, bool isDelete)
// Make sure the data we receive is in correct PCM format.
// Our wav file writer only supports SignedInt sample type.
QAudioFormat format;
format.setChannels(2);
format.setChannelCount(2);
format.setSampleSize(16);
format.setFrequency(48000);
format.setSampleRate(48000);
format.setCodec("audio/pcm");
format.setSampleType(QAudioFormat::SignedInt);
m_decoder.setAudioFormat(format);

View File

@@ -152,10 +152,10 @@ bool WaveFileWriter::writeHeader(const QAudioFormat& format)
memcpy(header.wave.descriptor.id, "fmt ", 4);
header.wave.descriptor.size = quint32(16);
header.wave.audioFormat = quint16(1);
header.wave.numChannels = quint16(format.channels());
header.wave.numChannels = quint16(format.channelCount());
header.wave.sampleRate = quint32(format.sampleRate());
header.wave.byteRate = quint32(format.sampleRate() * format.channels() * format.sampleSize() / 8);
header.wave.blockAlign = quint16(format.channels() * format.sampleSize() / 8);
header.wave.byteRate = quint32(format.sampleRate() * format.channelCount() * format.sampleSize() / 8);
header.wave.blockAlign = quint16(format.channelCount() * format.sampleSize() / 8);
header.wave.bitsPerSample = quint16(format.sampleSize());
// DATA header

View File

@@ -96,7 +96,7 @@ AudioTest::AudioTest(QWidget *parent, Qt::WFlags f)
connect(testButton, SIGNAL(clicked()), SLOT(test()));
connect(modeBox, SIGNAL(activated(int)), SLOT(modeChanged(int)));
connect(deviceBox, SIGNAL(activated(int)), SLOT(deviceChanged(int)));
connect(frequencyBox, SIGNAL(activated(int)), SLOT(freqChanged(int)));
connect(sampleRateBox, SIGNAL(activated(int)), SLOT(sampleRateChanged(int)));
connect(channelsBox, SIGNAL(activated(int)), SLOT(channelChanged(int)));
connect(codecsBox, SIGNAL(activated(int)), SLOT(codecChanged(int)));
connect(sampleSizesBox, SIGNAL(activated(int)), SLOT(sampleSizeChanged(int)));
@@ -122,7 +122,7 @@ void AudioTest::test()
if (!deviceInfo.isNull()) {
if (deviceInfo.isFormatSupported(settings)) {
testResult->setText(tr("Success"));
nearestFreq->setText("");
nearestSampleRate->setText("");
nearestChannel->setText("");
nearestCodec->setText("");
nearestSampleSize->setText("");
@@ -131,8 +131,8 @@ void AudioTest::test()
} else {
QAudioFormat nearest = deviceInfo.nearestFormat(settings);
testResult->setText(tr("Failed"));
nearestFreq->setText(QString("%1").arg(nearest.frequency()));
nearestChannel->setText(QString("%1").arg(nearest.channels()));
nearestSampleRate->setText(QString("%1").arg(nearest.sampleRate()));
nearestChannel->setText(QString("%1").arg(nearest.channelCount()));
nearestCodec->setText(nearest.codec());
nearestSampleSize->setText(QString("%1").arg(nearest.sampleSize()));
nearestSampleType->setText(toString(nearest.sampleType()));
@@ -171,19 +171,19 @@ void AudioTest::deviceChanged(int idx)
// device has changed
deviceInfo = deviceBox->itemData(idx).value<QAudioDeviceInfo>();
frequencyBox->clear();
QList<int> freqz = deviceInfo.supportedFrequencies();
for(int i = 0; i < freqz.size(); ++i)
frequencyBox->addItem(QString("%1").arg(freqz.at(i)));
if(freqz.size())
settings.setFrequency(freqz.at(0));
sampleRateBox->clear();
QList<int> sampleRatez = deviceInfo.supportedSampleRates();
for (int i = 0; i < sampleRatez.size(); ++i)
sampleRateBox->addItem(QString("%1").arg(sampleRatez.at(i)));
if (sampleRatez.size())
settings.setSampleRate(sampleRatez.at(0));
channelsBox->clear();
QList<int> chz = deviceInfo.supportedChannels();
for(int i = 0; i < chz.size(); ++i)
QList<int> chz = deviceInfo.supportedChannelCounts();
for (int i = 0; i < chz.size(); ++i)
channelsBox->addItem(QString("%1").arg(chz.at(i)));
if(chz.size())
settings.setChannels(chz.at(0));
if (chz.size())
settings.setChannelCount(chz.at(0));
codecsBox->clear();
QStringList codecz = deviceInfo.supportedCodecs();
@@ -226,10 +226,10 @@ void AudioTest::populateTable()
QAudioFormat format;
foreach (QString codec, deviceInfo.supportedCodecs()) {
format.setCodec(codec);
foreach (int frequency, deviceInfo.supportedFrequencies()) {
format.setFrequency(frequency);
foreach (int channels, deviceInfo.supportedChannels()) {
format.setChannels(channels);
foreach (int sampleRate, deviceInfo.supportedSampleRates()) {
format.setSampleRate(sampleRate);
foreach (int channels, deviceInfo.supportedChannelCounts()) {
format.setChannelCount(channels);
foreach (QAudioFormat::SampleType sampleType, deviceInfo.supportedSampleTypes()) {
format.setSampleType(sampleType);
foreach (int sampleSize, deviceInfo.supportedSampleSizes()) {
@@ -242,10 +242,10 @@ void AudioTest::populateTable()
QTableWidgetItem *codecItem = new QTableWidgetItem(format.codec());
allFormatsTable->setItem(row, 0, codecItem);
QTableWidgetItem *frequencyItem = new QTableWidgetItem(QString("%1").arg(format.frequency()));
allFormatsTable->setItem(row, 1, frequencyItem);
QTableWidgetItem *sampleRateItem = new QTableWidgetItem(QString("%1").arg(format.sampleRate()));
allFormatsTable->setItem(row, 1, sampleRateItem);
QTableWidgetItem *channelsItem = new QTableWidgetItem(QString("%1").arg(format.channels()));
QTableWidgetItem *channelsItem = new QTableWidgetItem(QString("%1").arg(format.channelCount()));
allFormatsTable->setItem(row, 2, channelsItem);
QTableWidgetItem *sampleTypeItem = new QTableWidgetItem(toString(format.sampleType()));
@@ -267,15 +267,15 @@ void AudioTest::populateTable()
}
}
void AudioTest::freqChanged(int idx)
void AudioTest::sampleRateChanged(int idx)
{
// freq has changed
settings.setFrequency(frequencyBox->itemText(idx).toInt());
// sample rate has changed
settings.setSampleRate(sampleRateBox->itemText(idx).toInt());
}
void AudioTest::channelChanged(int idx)
{
settings.setChannels(channelsBox->itemText(idx).toInt());
settings.setChannelCount(channelsBox->itemText(idx).toInt());
}
void AudioTest::codecChanged(int idx)

View File

@@ -68,7 +68,7 @@ public:
private slots:
void modeChanged(int idx);
void deviceChanged(int idx);
void freqChanged(int idx);
void sampleRateChanged(int idx);
void channelChanged(int idx);
void codecChanged(int idx);
void sampleSizeChanged(int idx);

View File

@@ -134,7 +134,7 @@ p, li { white-space: pre-wrap; }
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="frequencyBox">
<widget class="QComboBox" name="sampleRateBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
@@ -144,7 +144,7 @@ p, li { white-space: pre-wrap; }
</widget>
</item>
<item row="3" column="2">
<widget class="QLineEdit" name="nearestFreq">
<widget class="QLineEdit" name="nearestSampleRate">
<property name="enabled">
<bool>false</bool>
</property>
@@ -321,15 +321,6 @@ p, li { white-space: pre-wrap; }
<attribute name="verticalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Codec</string>

View File

@@ -123,7 +123,7 @@ qint64 AudioInfo::writeData(const char *data, qint64 len)
if (m_maxAmplitude) {
Q_ASSERT(m_format.sampleSize() % 8 == 0);
const int channelBytes = m_format.sampleSize() / 8;
const int sampleBytes = m_format.channels() * channelBytes;
const int sampleBytes = m_format.channelCount() * channelBytes;
Q_ASSERT(len % sampleBytes == 0);
const int numSamples = len / sampleBytes;
@@ -131,7 +131,7 @@ qint64 AudioInfo::writeData(const char *data, qint64 len)
const unsigned char *ptr = reinterpret_cast<const unsigned char *>(data);
for (int i = 0; i < numSamples; ++i) {
for(int j = 0; j < m_format.channels(); ++j) {
for (int j = 0; j < m_format.channelCount(); ++j) {
quint16 value = 0;
if (m_format.sampleSize() == 8 && m_format.sampleType() == QAudioFormat::UnSignedInt) {
@@ -263,8 +263,8 @@ void InputTest::initializeAudio()
{
m_pullMode = true;
m_format.setFrequency(8000);
m_format.setChannels(1);
m_format.setSampleRate(8000);
m_format.setChannelCount(1);
m_format.setSampleSize(16);
m_format.setSampleType(QAudioFormat::SignedInt);
m_format.setByteOrder(QAudioFormat::LittleEndian);

View File

@@ -54,19 +54,19 @@
#define VOLUME_LABEL "Volume:"
const int DurationSeconds = 1;
const int ToneFrequencyHz = 600;
const int DataFrequencyHz = 44100;
const int ToneSampleRateHz = 600;
const int DataSampleRateHz = 44100;
const int BufferSize = 32768;
Generator::Generator(const QAudioFormat &format,
qint64 durationUs,
int frequency,
int sampleRate,
QObject *parent)
: QIODevice(parent)
, m_pos(0)
{
generateData(format, durationUs, frequency);
generateData(format, durationUs, sampleRate);
}
Generator::~Generator()
@@ -85,12 +85,12 @@ void Generator::stop()
close();
}
void Generator::generateData(const QAudioFormat &format, qint64 durationUs, int frequency)
void Generator::generateData(const QAudioFormat &format, qint64 durationUs, int sampleRate)
{
const int channelBytes = format.sampleSize() / 8;
const int sampleBytes = format.channels() * channelBytes;
const int sampleBytes = format.channelCount() * channelBytes;
qint64 length = (format.frequency() * format.channels() * (format.sampleSize() / 8))
qint64 length = (format.sampleRate() * format.channelCount() * (format.sampleSize() / 8))
* durationUs / 100000;
Q_ASSERT(length % sampleBytes == 0);
@@ -101,8 +101,8 @@ void Generator::generateData(const QAudioFormat &format, qint64 durationUs, int
int sampleIndex = 0;
while (length) {
const qreal x = qSin(2 * M_PI * frequency * qreal(sampleIndex % format.frequency()) / format.frequency());
for (int i=0; i<format.channels(); ++i) {
const qreal x = qSin(2 * M_PI * sampleRate * qreal(sampleIndex % format.sampleRate()) / format.sampleRate());
for (int i=0; i<format.channelCount(); ++i) {
if (format.sampleSize() == 8 && format.sampleType() == QAudioFormat::UnSignedInt) {
const quint8 value = static_cast<quint8>((1.0 + x) / 2 * 255);
*reinterpret_cast<quint8*>(ptr) = value;
@@ -217,8 +217,8 @@ void AudioTest::initializeAudio()
m_pullMode = true;
m_format.setFrequency(DataFrequencyHz);
m_format.setChannels(1);
m_format.setSampleRate(DataSampleRateHz);
m_format.setChannelCount(1);
m_format.setSampleSize(16);
m_format.setCodec("audio/pcm");
m_format.setByteOrder(QAudioFormat::LittleEndian);
@@ -230,7 +230,7 @@ void AudioTest::initializeAudio()
m_format = info.nearestFormat(m_format);
}
m_generator = new Generator(m_format, DurationSeconds*1000000, ToneFrequencyHz, this);
m_generator = new Generator(m_format, DurationSeconds*1000000, ToneSampleRateHz, this);
createAudioOutput();
}

View File

@@ -59,7 +59,7 @@ class Generator : public QIODevice
{
Q_OBJECT
public:
Generator(const QAudioFormat &format, qint64 durationUs, int frequency, QObject *parent);
Generator(const QAudioFormat &format, qint64 durationUs, int sampleRate, QObject *parent);
~Generator();
void start();
@@ -70,7 +70,7 @@ public:
qint64 bytesAvailable() const;
private:
void generateData(const QAudioFormat &format, qint64 durationUs, int frequency);
void generateData(const QAudioFormat &format, qint64 durationUs, int sampleRate);
private:
qint64 m_pos;

View File

@@ -528,25 +528,25 @@ bool Engine::selectFormat()
}
} else {
QList<int> frequenciesList;
QList<int> sampleRatesList;
#ifdef Q_OS_WIN
// The Windows audio backend does not correctly report format support
// (see QTBUG-9100). Furthermore, although the audio subsystem captures
// at 11025Hz, the resulting audio is corrupted.
frequenciesList += 8000;
sampleRatesList += 8000;
#endif
if (!m_generateTone)
frequenciesList += m_audioInputDevice.supportedFrequencies();
sampleRatesList += m_audioInputDevice.supportedSampleRates();
frequenciesList += m_audioOutputDevice.supportedFrequencies();
frequenciesList = frequenciesList.toSet().toList(); // remove duplicates
qSort(frequenciesList);
ENGINE_DEBUG << "Engine::initialize frequenciesList" << frequenciesList;
sampleRatesList += m_audioOutputDevice.supportedSampleRates();
sampleRatesList = sampleRatesList.toSet().toList(); // remove duplicates
qSort(sampleRatesList);
ENGINE_DEBUG << "Engine::initialize frequenciesList" << sampleRatesList;
QList<int> channelsList;
channelsList += m_audioInputDevice.supportedChannels();
channelsList += m_audioOutputDevice.supportedChannels();
channelsList += m_audioInputDevice.supportedChannelCounts();
channelsList += m_audioOutputDevice.supportedChannelCounts();
channelsList = channelsList.toSet().toList();
qSort(channelsList);
ENGINE_DEBUG << "Engine::initialize channelsList" << channelsList;
@@ -556,13 +556,13 @@ bool Engine::selectFormat()
format.setCodec("audio/pcm");
format.setSampleSize(16);
format.setSampleType(QAudioFormat::SignedInt);
int frequency, channels;
foreach (frequency, frequenciesList) {
int sampleRate, channels;
foreach (sampleRate, sampleRatesList) {
if (foundSupportedFormat)
break;
format.setFrequency(frequency);
format.setSampleRate(sampleRate);
foreach (channels, channelsList) {
format.setChannels(channels);
format.setChannelCount(channels);
const bool inputSupport = m_generateTone ||
m_audioInputDevice.isFormatSupported(format);
const bool outputSupport = m_audioOutputDevice.isFormatSupported(format);
@@ -703,7 +703,7 @@ void Engine::setFormat(const QAudioFormat &format)
m_format = format;
m_levelBufferLength = audioLength(m_format, LevelWindowUs);
m_spectrumBufferLength = SpectrumLengthSamples *
(m_format.sampleSize() / 8) * m_format.channels();
(m_format.sampleSize() / 8) * m_format.channelCount();
if (changed)
emit formatChanged(m_format);
}

View File

@@ -207,7 +207,7 @@ void SpectrumAnalyser::calculate(const QByteArray &buffer,
if (isReady()) {
Q_ASSERT(isPCMS16LE(format));
const int bytesPerSample = format.sampleSize() * format.channels() / 8;
const int bytesPerSample = format.sampleSize() * format.channelCount() / 8;
#ifdef DUMP_SPECTRUMANALYSER
m_count++;
@@ -235,7 +235,7 @@ void SpectrumAnalyser::calculate(const QByteArray &buffer,
const bool b = QMetaObject::invokeMethod(m_thread, "calculateSpectrum",
Qt::AutoConnection,
Q_ARG(QByteArray, buffer),
Q_ARG(int, format.frequency()),
Q_ARG(int, format.sampleRate()),
Q_ARG(int, bytesPerSample));
Q_ASSERT(b);
Q_UNUSED(b) // suppress warnings in release builds

View File

@@ -50,7 +50,7 @@ void generateTone(const SweptTone &tone, const QAudioFormat &format, QByteArray
Q_ASSERT(isPCMS16LE(format));
const int channelBytes = format.sampleSize() / 8;
const int sampleBytes = format.channels() * channelBytes;
const int sampleBytes = format.channelCount() * channelBytes;
int length = buffer.size();
const int numSamples = buffer.size() / sampleBytes;
@@ -61,7 +61,7 @@ void generateTone(const SweptTone &tone, const QAudioFormat &format, QByteArray
qreal phase = 0.0;
const qreal d = 2 * M_PI / format.frequency();
const qreal d = 2 * M_PI / format.sampleRate();
// We can't generate a zero-frequency sine wave
const qreal startFreq = tone.startFreq ? tone.startFreq : 1.0;
@@ -76,7 +76,7 @@ void generateTone(const SweptTone &tone, const QAudioFormat &format, QByteArray
while (length) {
const qreal x = tone.amplitude * qSin(phase);
const qint16 value = realToPcm(x);
for (int i=0; i<format.channels(); ++i) {
for (int i=0; i<format.channelCount(); ++i) {
qToLittleEndian<qint16>(value, ptr);
ptr += channelBytes;
length -= channelBytes;

View File

@@ -44,12 +44,12 @@
qint64 audioDuration(const QAudioFormat &format, qint64 bytes)
{
return (bytes * 1000000) /
(format.frequency() * format.channels() * (format.sampleSize() / 8));
(format.sampleRate() * format.channelCount() * (format.sampleSize() / 8));
}
qint64 audioLength(const QAudioFormat &format, qint64 microSeconds)
{
qint64 result = (format.frequency() * format.channels() * (format.sampleSize() / 8))
qint64 result = (format.sampleRate() * format.channelCount() * (format.sampleSize() / 8))
* microSeconds / 1000000;
result -= result % (format.channelCount() * format.sampleSize());
return result;
@@ -57,7 +57,7 @@ qint64 audioLength(const QAudioFormat &format, qint64 microSeconds)
qreal nyquistFrequency(const QAudioFormat &format)
{
return format.frequency() / 2;
return format.sampleRate() / 2;
}
QString formatToString(const QAudioFormat &format)
@@ -87,8 +87,8 @@ QString formatToString(const QAudioFormat &format)
break;
}
QString formatChannels = QString("%1 channels").arg(format.channels());
switch (format.channels()) {
QString formatChannels = QString("%1 channels").arg(format.channelCount());
switch (format.channelCount()) {
case 1:
formatChannels = "mono";
break;
@@ -98,7 +98,7 @@ QString formatToString(const QAudioFormat &format)
}
result = QString("%1 Hz %2 bit %3 %4 %5")
.arg(format.frequency())
.arg(format.sampleRate())
.arg(format.sampleSize())
.arg(formatType)
.arg(formatEndian)

View File

@@ -366,7 +366,7 @@ void Waveform::paintTile(int index)
const qint16* base = reinterpret_cast<const qint16*>(m_buffer.constData());
const qint16* buffer = base + ((tileStart - m_bufferPosition) / 2);
const int numSamples = m_tileLength / (2 * m_format.channels());
const int numSamples = m_tileLength / (2 * m_format.channelCount());
QPainter painter(tile.pixmap);
@@ -378,7 +378,7 @@ void Waveform::paintTile(int index)
// Calculate initial PCM value
qint16 previousPcmValue = 0;
if (buffer > base)
previousPcmValue = *(buffer - m_format.channels());
previousPcmValue = *(buffer - m_format.channelCount());
// Calculate initial point
const qreal previousRealValue = pcmToReal(previousPcmValue);
@@ -388,7 +388,7 @@ void Waveform::paintTile(int index)
QLine line(origin, origin);
for (int i=0; i<numSamples; ++i) {
const qint16* ptr = buffer + i * m_format.channels();
const qint16* ptr = buffer + i * m_format.channelCount();
const int offset = reinterpret_cast<const char*>(ptr) - m_buffer.constData();
Q_ASSERT(offset >= 0);
@@ -398,7 +398,7 @@ void Waveform::paintTile(int index)
const qint16 pcmValue = *ptr;
const qreal realValue = pcmToReal(pcmValue);
const int x = tilePixelOffset(i * 2 * m_format.channels());
const int x = tilePixelOffset(i * 2 * m_format.channelCount());
const int y = ((realValue + 1.0) / 2) * m_pixmapSize.height();
line.setP2(QPoint(x, y));

View File

@@ -137,9 +137,9 @@ bool WavFile::readHeader()
m_fileFormat.setByteOrder(QAudioFormat::BigEndian);
int bps = qFromLittleEndian<quint16>(header.wave.bitsPerSample);
m_fileFormat.setChannels(qFromLittleEndian<quint16>(header.wave.numChannels));
m_fileFormat.setChannelCount(qFromLittleEndian<quint16>(header.wave.numChannels));
m_fileFormat.setCodec("audio/pcm");
m_fileFormat.setFrequency(qFromLittleEndian<quint32>(header.wave.sampleRate));
m_fileFormat.setSampleRate(qFromLittleEndian<quint32>(header.wave.sampleRate));
m_fileFormat.setSampleSize(qFromLittleEndian<quint16>(header.wave.bitsPerSample));
m_fileFormat.setSampleType(bps == 8 ? QAudioFormat::UnSignedInt : QAudioFormat::SignedInt);
} else {