Better bench scope + minor cleanup
This commit is contained in:
@@ -39,10 +39,9 @@ namespace lms::metadata::benchmarks
|
|||||||
params.userExtraTags = { "MY_AWESOME_TAG_A", "MY_AWESOME_TAG_B", "MY_AWESOME_MISSING_TAG" };
|
params.userExtraTags = { "MY_AWESOME_TAG_A", "MY_AWESOME_TAG_B", "MY_AWESOME_MISSING_TAG" };
|
||||||
|
|
||||||
std::unique_ptr<ITagReader> testTags{ tests::createDefaultPopulatedTestTagReader() };
|
std::unique_ptr<ITagReader> testTags{ tests::createDefaultPopulatedTestTagReader() };
|
||||||
|
const TestAudioFileParser parser{ params };
|
||||||
for (auto _ : state)
|
for (auto _ : state)
|
||||||
{
|
{
|
||||||
TestAudioFileParser parser{ params };
|
|
||||||
std::unique_ptr<Track> track{ parser.parseMetaData(*testTags) };
|
std::unique_ptr<Track> track{ parser.parseMetaData(*testTags) };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -55,11 +54,11 @@ namespace lms::metadata::benchmarks
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
AudioFileParserParameters params;
|
const AudioFileParserParameters params;
|
||||||
|
const TestAudioFileParser parser{ params };
|
||||||
|
|
||||||
for (auto _ : state)
|
for (auto _ : state)
|
||||||
{
|
{
|
||||||
TestAudioFileParser parser{ params };
|
|
||||||
std::unique_ptr<Track> track{ parser.parseMetaData(testTags) };
|
std::unique_ptr<Track> track{ parser.parseMetaData(testTags) };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -114,9 +113,9 @@ namespace lms::metadata::benchmarks
|
|||||||
"White/Light",
|
"White/Light",
|
||||||
"Yamantaka // Sonic Titan" };
|
"Yamantaka // Sonic Titan" };
|
||||||
|
|
||||||
|
const TestAudioFileParser parser{ params };
|
||||||
for (auto _ : state)
|
for (auto _ : state)
|
||||||
{
|
{
|
||||||
TestAudioFileParser parser{ params };
|
|
||||||
std::unique_ptr<Track> track{ parser.parseMetaData(testTags) };
|
std::unique_ptr<Track> track{ parser.parseMetaData(testTags) };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -132,9 +131,10 @@ namespace lms::metadata::benchmarks
|
|||||||
AudioFileParserParameters params;
|
AudioFileParserParameters params;
|
||||||
params.artistTagDelimiters = { "/", ";" };
|
params.artistTagDelimiters = { "/", ";" };
|
||||||
|
|
||||||
|
const TestAudioFileParser parser{ params };
|
||||||
|
|
||||||
for (auto _ : state)
|
for (auto _ : state)
|
||||||
{
|
{
|
||||||
TestAudioFileParser parser{ params };
|
|
||||||
std::unique_ptr<Track> track{ parser.parseMetaData(testTags) };
|
std::unique_ptr<Track> track{ parser.parseMetaData(testTags) };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -362,7 +362,7 @@ namespace lms::metadata
|
|||||||
return fileExtensions;
|
return fileExtensions;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<Track> AudioFileParser::parseMetaData(const std::filesystem::path& p)
|
std::unique_ptr<Track> AudioFileParser::parseMetaData(const std::filesystem::path& p) const
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -389,7 +389,7 @@ namespace lms::metadata
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioFileParser::parseImages(const std::filesystem::path& p, ImageVisitor visitor)
|
void AudioFileParser::parseImages(const std::filesystem::path& p, ImageVisitor visitor) const
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -416,7 +416,7 @@ namespace lms::metadata
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<Track> AudioFileParser::parseMetaData(const ITagReader& tagReader)
|
std::unique_ptr<Track> AudioFileParser::parseMetaData(const ITagReader& tagReader) const
|
||||||
{
|
{
|
||||||
auto track{ std::make_unique<Track>() };
|
auto track{ std::make_unique<Track>() };
|
||||||
|
|
||||||
@@ -426,7 +426,7 @@ namespace lms::metadata
|
|||||||
return track;
|
return track;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioFileParser::processTags(const ITagReader& tagReader, Track& track)
|
void AudioFileParser::processTags(const ITagReader& tagReader, Track& track) const
|
||||||
{
|
{
|
||||||
track.title = getTagValueAs<std::string>(tagReader, TagType::TrackTitle).value_or("");
|
track.title = getTagValueAs<std::string>(tagReader, TagType::TrackTitle).value_or("");
|
||||||
track.mbid = getTagValueAs<core::UUID>(tagReader, TagType::MusicBrainzTrackID);
|
track.mbid = getTagValueAs<core::UUID>(tagReader, TagType::MusicBrainzTrackID);
|
||||||
@@ -493,7 +493,7 @@ namespace lms::metadata
|
|||||||
track.originalYear = track.originalDate.getYear();
|
track.originalYear = track.originalDate.getYear();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<Medium> AudioFileParser::getMedium(const ITagReader& tagReader)
|
std::optional<Medium> AudioFileParser::getMedium(const ITagReader& tagReader) const
|
||||||
{
|
{
|
||||||
std::optional<Medium> medium;
|
std::optional<Medium> medium;
|
||||||
medium.emplace();
|
medium.emplace();
|
||||||
@@ -523,7 +523,7 @@ namespace lms::metadata
|
|||||||
return medium;
|
return medium;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<Release> AudioFileParser::getRelease(const ITagReader& tagReader)
|
std::optional<Release> AudioFileParser::getRelease(const ITagReader& tagReader) const
|
||||||
{
|
{
|
||||||
std::optional<Release> release;
|
std::optional<Release> release;
|
||||||
|
|
||||||
|
|||||||
@@ -37,18 +37,18 @@ namespace lms::metadata
|
|||||||
AudioFileParser& operator=(const AudioFileParser&) = delete;
|
AudioFileParser& operator=(const AudioFileParser&) = delete;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::unique_ptr<Track> parseMetaData(const std::filesystem::path& p) override;
|
std::unique_ptr<Track> parseMetaData(const std::filesystem::path& p) const override;
|
||||||
std::unique_ptr<Track> parseMetaData(const ITagReader& reader);
|
std::unique_ptr<Track> parseMetaData(const ITagReader& reader) const;
|
||||||
static void parseImages(const IImageReader& reader, ImageVisitor visitor);
|
static void parseImages(const IImageReader& reader, ImageVisitor visitor);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void parseImages(const std::filesystem::path& p, ImageVisitor visitor) override;
|
void parseImages(const std::filesystem::path& p, ImageVisitor visitor) const override;
|
||||||
std::span<const std::filesystem::path> getSupportedExtensions() const override;
|
std::span<const std::filesystem::path> getSupportedExtensions() const override;
|
||||||
|
|
||||||
void processTags(const ITagReader& reader, Track& track);
|
void processTags(const ITagReader& reader, Track& track) const;
|
||||||
|
|
||||||
std::optional<Medium> getMedium(const ITagReader& tagReader);
|
std::optional<Medium> getMedium(const ITagReader& tagReader) const;
|
||||||
std::optional<Release> getRelease(const ITagReader& tagReader);
|
std::optional<Release> getRelease(const ITagReader& tagReader) const;
|
||||||
|
|
||||||
const AudioFileParserParameters _params;
|
const AudioFileParserParameters _params;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -33,10 +33,10 @@ namespace lms::metadata
|
|||||||
public:
|
public:
|
||||||
virtual ~IAudioFileParser() = default;
|
virtual ~IAudioFileParser() = default;
|
||||||
|
|
||||||
virtual std::unique_ptr<Track> parseMetaData(const std::filesystem::path& p) = 0;
|
virtual std::unique_ptr<Track> parseMetaData(const std::filesystem::path& p) const = 0;
|
||||||
|
|
||||||
using ImageVisitor = std::function<void(const Image&)>;
|
using ImageVisitor = std::function<void(const Image&)>;
|
||||||
virtual void parseImages(const std::filesystem::path& p, ImageVisitor visitor) = 0;
|
virtual void parseImages(const std::filesystem::path& p, ImageVisitor visitor) const = 0;
|
||||||
|
|
||||||
virtual std::span<const std::filesystem::path> getSupportedExtensions() const = 0;
|
virtual std::span<const std::filesystem::path> getSupportedExtensions() const = 0;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user