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:
committed by
Qt by Nokia
parent
952bd004be
commit
53fdcca366
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user