18 #ifndef KRADIO_SOUNDFORMAT_H
19 #define KRADIO_SOUNDFORMAT_H
26 #include <QtCore/QString>
39 SoundFormat(
unsigned sample_rate,
unsigned channels,
unsigned sample_bits,
bool is_signed,
unsigned endianess,
const QString &enc)
40 : m_SampleRate(sample_rate), m_Channels(channels), m_SampleBits(sample_bits), m_IsSigned(is_signed), m_Endianess(endianess), m_Encoding(enc) {}
41 SoundFormat(
unsigned sample_rate,
unsigned channels,
unsigned sample_bits,
bool is_signed,
unsigned endianess)
42 : m_SampleRate(sample_rate), m_Channels(channels), m_SampleBits(sample_bits), m_IsSigned(is_signed), m_Endianess(endianess), m_Encoding(
"raw") {}
43 SoundFormat(
unsigned sample_rate,
unsigned channels,
unsigned sample_bits,
bool is_signed)
44 : m_SampleRate(sample_rate), m_Channels(channels), m_SampleBits(sample_bits), m_IsSigned(is_signed), m_Endianess(BYTE_ORDER), m_Encoding(
"raw") {}
46 : m_SampleRate(44100), m_Channels(stereo ? 2 : 1), m_SampleBits(16), m_IsSigned(true), m_Endianess(BYTE_ORDER), m_Encoding(
"raw") {}
48 : m_SampleRate(44100), m_Channels(2), m_SampleBits(16), m_IsSigned(true), m_Endianess(BYTE_ORDER), m_Encoding(
"raw") {}
58 bool operator != (
const SoundFormat &o)
const {
return !operator == (o); }
60 int sampleSize()
const;
61 int frameSize()
const;
65 void restoreConfig(
const QString &prefix,
const KConfigGroup &c);
66 void saveConfig (
const QString &prefix, KConfigGroup &c)
const;
68 void convertSamplesToFloatInterleaved (
const char *src,
float *dst,
size_t n_frames)
const;
69 void convertFloatInterleavedToSamples (
const float *src,
char *dst,
size_t n_frames)
const;
70 void convertSamplesToFloatNonInterleaved(
const char *src,
float **dst,
size_t n_frames)
const;
71 void convertFloatNonInterleavedToSamples(
const float **src,
char *dst,
size_t n_frames)
const;
73 void scaleSamples (
char *_src,
float scale,
size_t n_frames)
const;
74 void minMaxAvgMagnitudePerChannel(
const char *src,
size_t n_frames,
double *vmin,
double *vmax,
double *vavg)
const;
76 bool isValid()
const {
return m_SampleRate > 1000 && m_Channels > 0 && m_SampleBits >= 8; }