satdump/src-core/common/detect_header.cpp

57 lines
1.5 KiB
C++
Raw Normal View History

#include "detect_header.h"
2023-05-07 20:44:05 +02:00
#include <cstdint>
#include "wav.h"
#ifdef BUILD_ZIQ
#include "ziq.h"
#endif
#include "logger.h"
2023-01-17 11:43:13 +01:00
#include "ziq2.h"
HeaderInfo try_parse_header(std::string file)
{
HeaderInfo info;
if (wav::isValidWav(wav::parseHeaderFromFileWav(file)))
{
logger->debug("File is wav!");
info.samplerate = wav::parseHeaderFromFileWav(file).samplerate;
if (wav::parseHeaderFromFileWav(file).bits_per_sample == 8)
info.type = "u8";
else if (wav::parseHeaderFromFileWav(file).bits_per_sample == 16)
info.type = "s16";
info.valid = true;
}
else if (wav::isValidRF64(wav::parseHeaderFromFileWav(file)))
{
logger->debug("File is RF64!");
info.samplerate = wav::parseHeaderFromFileRF64(file).samplerate;
if (wav::parseHeaderFromFileRF64(file).bits_per_sample == 8)
info.type = "u8";
else if (wav::parseHeaderFromFileRF64(file).bits_per_sample == 16)
info.type = "s16";
info.valid = true;
}
#ifdef BUILD_ZIQ
else if (ziq::isValidZIQ(file))
{
logger->debug("File is ZIQ!");
info.type = "ziq";
info.valid = true;
info.samplerate = ziq::getCfgFromFile(file).samplerate;
}
#endif
2023-02-15 19:25:26 +01:00
#ifdef BUILD_ZIQ2
2023-01-17 11:43:13 +01:00
else if (ziq2::ziq2_is_valid_ziq2(file))
{
logger->debug("File is ZIQ2!");
info.type = "ziq2";
info.valid = true;
info.samplerate = ziq2::ziq2_try_parse_header(file);
}
2023-02-15 19:25:26 +01:00
#endif
return info;
2023-05-07 20:44:05 +02:00
}