Detect zstd compressed files

This commit is contained in:
Martchus 2023-03-05 22:37:14 +01:00
parent 21edf75047
commit 7d9d5c8408
2 changed files with 10 additions and 0 deletions

View File

@ -72,6 +72,7 @@ enum Sig32 : std::uint32_t {
Zip1 = 0x504B0304u,
Zip2 = 0x504B0506u,
Zip3 = 0x504B0708u,
Zstd = 0x28b52ffdu,
};
/*!
@ -213,6 +214,8 @@ ContainerFormat parseSignature(std::string_view buffer)
case Zip2:
case Zip3:
return ContainerFormat::Zip;
case Zstd:
return ContainerFormat::Zstd;
default:;
}
switch (sig >> 40) { // check 24-bit signatures
@ -374,6 +377,8 @@ std::string_view containerFormatAbbreviation(ContainerFormat containerFormat, Me
return "mid";
case ContainerFormat::Aiff:
return "aiff";
case ContainerFormat::Zstd:
return "zst";
default:
return "";
}
@ -481,6 +486,8 @@ std::string_view containerFormatName(ContainerFormat containerFormat)
return "MIDI";
case ContainerFormat::Aiff:
return "Audio Interchange File Format";
case ContainerFormat::Zstd:
return "Zstandard compressed file";
default:
return "unknown";
}
@ -577,6 +584,8 @@ std::string_view containerMimeType(ContainerFormat containerFormat, MediaType me
return "image/bmp";
case ContainerFormat::WindowsIcon:
return "image/vnd.microsoft.icon";
case ContainerFormat::Zstd:
return "application/zstd";
default:
return "";
}

View File

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