Support detecting AIFF format

This commit is contained in:
Martchus 2022-08-17 23:06:09 +02:00
parent 49c6b61e0c
commit bfe6ce8c1e
2 changed files with 17 additions and 0 deletions

View File

@ -38,6 +38,13 @@ enum Sig48 : std::uint64_t {
Xz = 0xFD377A585A00ul,
};
/*!
* \brief Holds 40-bit signatures.
*/
enum Sig40 : std::uint64_t {
Aiff = 0x464F524D00ul,
};
/*!
* \brief Holds 32-bit signatures.
*/
@ -156,6 +163,11 @@ ContainerFormat parseSignature(std::string_view buffer)
return ContainerFormat::Xz;
default:;
}
switch (sig >> 24) { // check 40-bit signatures
case Aiff:
return ContainerFormat::Aiff;
default:;
}
switch (sig >> 32) { // check 32-bit signatures
case Dirac:
return ContainerFormat::Dirac;
@ -360,6 +372,8 @@ std::string_view containerFormatAbbreviation(ContainerFormat containerFormat, Me
return "ape";
case ContainerFormat::Midi:
return "mid";
case ContainerFormat::Aiff:
return "aiff";
default:
return "";
}
@ -465,6 +479,8 @@ std::string_view containerFormatName(ContainerFormat containerFormat)
return "Monkey's Audio";
case ContainerFormat::Midi:
return "MIDI";
case ContainerFormat::Aiff:
return "Audio Interchange File Format";
default:
return "unknown";
}

View File

@ -65,6 +65,7 @@ enum class ContainerFormat : unsigned int {
Xz, /**< xz compressed file */
YUV4Mpeg2, /**< YUV4MPEG2 */
Zip, /**< ZIP archive */
Aiff, /**< Audio Interchange File Format */
};
TAG_PARSER_EXPORT ContainerFormat parseSignature(const char *buffer, std::size_t bufferSize);