bool mpegFileWriter::writeHeader(const QAudioFormat &format)
{
// check if format is supported
if (format.byteOrder() == QAudioFormat::BigEndian || format.sampleType() != QAudioFormat::SignedInt)
return false;
CombinedHeader header;
memset(&header, 0, HeaderLength);
#ifndef Q_LITTLE_ENDIAN
// only implemented for LITTLE ENDIAN
return false;
#else
// RIFF header
memcpy(header.riff.descriptor.id, "RIFF", 4);
header.riff.descriptor.size = 0; // this will be updated with correct duration:
// m_dataLength + HeaderLength - 8
// mpeg header
memcpy(header.riff.type, "mpeg", 4);
memcpy(header.mpeg.descriptor.id, "fmt ", 4);
header.mpeg.descriptor.size = quint32(16);
header.mpeg.audioFormat = quint16(1);
header.mpeg.numChannels = quint16(format.channelCount());
header.mpeg.sampleRate = quint32(format.sampleRate());
header.mpeg.byteRate = quint32(format.sampleRate() * format.channelCount() * format.sampleSize() / 8);
header.mpeg.blockAlign = quint16(format.channelCount() * format.sampleSize() / 8);
header.mpeg.bitsPerSample = quint16(format.sampleSize());
// DATA header
memcpy(header.data.descriptor.id,"data", 4);
header.data.descriptor.size = 0; // this will be updated with correct data length: m_dataLength
return (file.write(reinterpret_cast<const char *>(&header), HeaderLength) == HeaderLength);
#endif
}
bool mpegFileWriter::writeHeader(const QAudioFormat &format)
{
// check if format is supported
if (format.byteOrder() == QAudioFormat::BigEndian || format.sampleType() != QAudioFormat::SignedInt)
return false;
CombinedHeader header;
memset(&header, 0, HeaderLength);
#ifndef Q_LITTLE_ENDIAN
// only implemented for LITTLE ENDIAN
return false;
#else
// RIFF header
memcpy(header.riff.descriptor.id, "RIFF", 4);
header.riff.descriptor.size = 0; // this will be updated with correct duration:
// m_dataLength + HeaderLength - 8
// mpeg header
memcpy(header.riff.type, "mpeg", 4);
memcpy(header.mpeg.descriptor.id, "fmt ", 4);
header.mpeg.descriptor.size = quint32(16);
header.mpeg.audioFormat = quint16(1);
header.mpeg.numChannels = quint16(format.channelCount());
header.mpeg.sampleRate = quint32(format.sampleRate());
header.mpeg.byteRate = quint32(format.sampleRate() * format.channelCount() * format.sampleSize() / 8);
header.mpeg.blockAlign = quint16(format.channelCount() * format.sampleSize() / 8);
header.mpeg.bitsPerSample = quint16(format.sampleSize());
// DATA header
memcpy(header.data.descriptor.id,"data", 4);
header.data.descriptor.size = 0; // this will be updated with correct data length: m_dataLength
return (file.write(reinterpret_cast<const char *>(&header), HeaderLength) == HeaderLength);
#endif
}
To copy to clipboard, switch view to plain text mode
i replace wave to mpeg)))
Bookmarks