Added dsf files support, fixes #449

This commit is contained in:
emeric
2024-05-05 16:03:20 +02:00
parent bfd3d3643e
commit 30575d12e6
4 changed files with 33 additions and 7 deletions
+8 -1
View File
@@ -34,7 +34,7 @@ namespace lms::db
{
namespace
{
static constexpr Version LMS_DATABASE_VERSION{ 58 };
static constexpr Version LMS_DATABASE_VERSION{ 59 };
}
VersionInfo::VersionInfo()
@@ -466,6 +466,12 @@ SELECT
session.getDboSession()->execute("DROP INDEX cluster_name_idx");
}
void migrateFromV58(Session& session)
{
// DSF support
session.getDboSession()->execute("UPDATE scan_settings SET audio_file_extensions = audio_file_extensions || ' .dsf'");
}
bool doDbMigration(Session& session)
{
static const std::string outdatedMsg{ "Outdated database, please rebuild it (delete the .db file and restart)" };
@@ -501,6 +507,7 @@ SELECT
{55, migrateFromV55},
{56, migrateFromV56},
{57, migrateFromV57},
{58, migrateFromV58},
};
bool migrationPerformed{};
@@ -99,7 +99,7 @@ namespace lms::db
Wt::WTime _startTime = Wt::WTime{ 0,0,0 };
UpdatePeriod _updatePeriod{ UpdatePeriod::Never };
SimilarityEngineType _similarityEngineType{ SimilarityEngineType::Clusters };
std::string _audioFileExtensions{ ".alac .mp3 .ogg .oga .aac .m4a .m4b .flac .wav .wma .aif .aiff .ape .mpc .shn .opus .wv" };
std::string _audioFileExtensions{ ".alac .mp3 .ogg .oga .aac .m4a .m4b .flac .wav .wma .aif .aiff .ape .mpc .shn .opus .wv .dsf" };
std::string _extraTagsToScan;
std::string _artistTagDelimiters;
std::string _defaultTagDelimiters;
@@ -24,6 +24,9 @@
#include <taglib/apeproperties.h>
#include <taglib/apetag.h>
#include <taglib/asffile.h>
#if TAGLIB_MAJOR_VERSION >= 2
#include <taglib/dsffile.h>
#endif
#include <taglib/id3v2tag.h>
#include <taglib/fileref.h>
#include <taglib/flacfile.h>
@@ -328,6 +331,10 @@ namespace lms::metadata
_audioProperties.bitsPerSample = mp4Properties->bitsPerSample();
else if (const auto * wavePackProperties{ dynamic_cast<const TagLib::WavPack::Properties*>(properties) })
_audioProperties.bitsPerSample = wavePackProperties->bitsPerSample();
#if TAGLIB_MAJOR_VERSION >= 2
else if (const auto * dsfProperties{ dynamic_cast<const TagLib::DSF::Properties*>(properties) })
_audioProperties.bitsPerSample = dsfProperties->bitsPerSample();
#endif
}
void TagLibTagReader::visitTagValues(TagType tag, TagValueVisitor visitor) const