PDA

View Full Version : writing mp3 headers



azazaz
15th June 2016, 09:36
i want write QAudioBuffer to mp3
how to create headers?
give me any man or doc, something

i look example audiodecoder , but "wav" not "mp3"



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
}
i replace wave to mpeg)))
mpg123 say header invalid