[AFV] Ref T730, utility functions to log QAudioFromat

This commit is contained in:
Klaus Basan
2019-10-13 15:25:05 +02:00
parent 73f191619a
commit f4b22b839a
2 changed files with 50 additions and 4 deletions

View File

@@ -7,6 +7,7 @@
*/
#include "audioutilities.h"
#include <QStringBuilder>
#include <QAudioInput>
#include <QAudioOutput>
@@ -30,7 +31,7 @@ namespace BlackSound
QVector<qint16> convertBytesTo16BitPCM(const QByteArray input)
{
int inputSamples = input.size() / 2; // 16 bit input, so 2 bytes per sample
const int inputSamples = input.size() / 2; // 16 bit input, so 2 bytes per sample
QVector<qint16> output;
output.fill(0, inputSamples);
for (int n = 0; n < inputSamples; n++)
@@ -184,4 +185,46 @@ namespace BlackSound
return usedDevice;
}
QString toQString(const QAudioFormat &format)
{
return QStringLiteral("Sample rate: %1 channels: %2 sample size: %3 codec: %4 order: %5 type: %6 bytes/frame: %7")
.arg(format.sampleRate())
.arg(format.channelCount())
.arg(format.sampleSize())
.arg(format.codec())
.arg(toQString(format.byteOrder()))
.arg(toQString(format.sampleType()))
.arg(format.bytesPerFrame());
}
const QString &toQString(QAudioFormat::Endian s)
{
static const QString l("little");
static const QString b("big");
switch (s)
{
case QAudioFormat::BigEndian: return b;
case QAudioFormat::LittleEndian: return l;
default: break;
}
static const QString u("??");
return u;
}
const QString &toQString(QAudioFormat::SampleType e)
{
static const QString s("signed int");
static const QString u("unsigned int");
static const QString f("float");
switch (e)
{
case QAudioFormat::SignedInt: return s;
case QAudioFormat::UnSignedInt: return u;
case QAudioFormat::Float: return f;
case QAudioFormat::Unknown:
default: break;
}
static const QString unknown("unknown");
return unknown;
}
} // ns

View File

@@ -21,16 +21,19 @@
namespace BlackSound
{
//! Conversion functions @{
BLACKSOUND_EXPORT QVector<float> convertBytesTo32BitFloatPCM(const QByteArray input);
BLACKSOUND_EXPORT QVector<float> convertBytesTo32BitFloatPCM(const QByteArray input);
BLACKSOUND_EXPORT QVector<qint16> convertBytesTo16BitPCM(const QByteArray input);
BLACKSOUND_EXPORT QVector<qint16> convertFloatBytesTo16BitPCM(const QByteArray input);
BLACKSOUND_EXPORT QVector<float> convertFromMonoToStereo(const QVector<float> &mono);
BLACKSOUND_EXPORT QVector<float> convertFromMonoToStereo(const QVector<float> &mono);
BLACKSOUND_EXPORT QVector<qint16> convertFromStereoToMono(const QVector<qint16> &stereo);
BLACKSOUND_EXPORT QVector<float> convertFromShortToFloat(const QVector<qint16> &input);
BLACKSOUND_EXPORT QVector<float> convertFromShortToFloat(const QVector<qint16> &input);
BLACKSOUND_EXPORT QAudioDeviceInfo getLowestLatencyDevice(const BlackMisc::Audio::CAudioDeviceInfo &device, QAudioFormat &format);
BLACKSOUND_EXPORT QAudioDeviceInfo getHighestCompatibleOutputDevice(const BlackMisc::Audio::CAudioDeviceInfo &device, QAudioFormat &format);
BLACKSOUND_EXPORT QString toQString(const QAudioFormat &format);
BLACKSOUND_EXPORT const QString &toQString(QAudioFormat::Endian e);
BLACKSOUND_EXPORT const QString &toQString(QAudioFormat::SampleType s);
//! @}
} // ns