21 #include <sys/types.h> 48 template<
const unsigned int bits,
const bool is_signed,
49 const bool is_little_endian>
52 for ( ; count; --count) {
67 if (is_little_endian) {
72 *(dst++) = static_cast<quint8>(s & 0xFF);
74 *(dst++) = static_cast<quint8>(s >> 8);
76 *(dst++) = static_cast<quint8>(s >> 16);
80 *(dst++) = static_cast<quint8>(s >> 16);
82 *(dst++) = static_cast<quint8>(s >> 8);
84 *(dst++) = static_cast<quint8>(s & 0xFF);
92 #define MAKE_ENCODER(bits) \ 93 if (sample_format != Kwave::SampleFormat::Unsigned) { \ 94 if (endianness != Kwave::BigEndian) { \ 95 m_encoder = encode_linear<bits, true, true>; \ 97 m_encoder = encode_linear<bits, true, false>; \ 100 if (endianness != Kwave::BigEndian) { \ 101 m_encoder = encode_linear<bits, false, true>; \ 103 m_encoder = encode_linear<bits, false, false>; \ 110 unsigned int bits_per_sample,
114 m_bytes_per_sample((bits_per_sample + 7) >> 3),
129 #if Q_BYTE_ORDER == Q_BIG_ENDIAN 142 switch (bits_per_sample) {
174 QByteArray &raw_data)
183 quint8 *dst =
reinterpret_cast<quint8 *
>(raw_data.data());
virtual ~SampleEncoderLinear() Q_DECL_OVERRIDE
#define MAKE_ENCODER(bits)
virtual unsigned int rawBytesPerSample() Q_DECL_OVERRIDE
void(* m_encoder)(const sample_t *, quint8 *, unsigned int)
SampleEncoderLinear(Kwave::SampleFormat::Format sample_format, unsigned int bits_per_sample, Kwave::byte_order_t endianness)
virtual void encode(const Kwave::SampleArray &samples, unsigned int count, QByteArray &raw_data) Q_DECL_OVERRIDE
const sample_t * constData() const
unsigned int m_bytes_per_sample
static void encode_NULL(const sample_t *src, quint8 *dst, unsigned int count)
void encode_linear(const sample_t *src, quint8 *dst, unsigned int count)