diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-09-06 10:14:48 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-09-06 10:14:48 +1000 |
| commit | dad14baa73a9a46c450193da43bf960b436f7ec5 (patch) | |
| tree | 1a14d80682b2bcf4c0e7524b6f854c7c6c9aa164 /src/database/include | |
| parent | a9008884c93946f26fd26448aeb716d005693d6c (diff) | |
| download | tangara-fw-dad14baa73a9a46c450193da43bf960b436f7ec5.tar.gz | |
Add an opus-specific tag parser
Diffstat (limited to 'src/database/include')
| -rw-r--r-- | src/database/include/tag_parser.hpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/database/include/tag_parser.hpp b/src/database/include/tag_parser.hpp index dcc8aa21..85721357 100644 --- a/src/database/include/tag_parser.hpp +++ b/src/database/include/tag_parser.hpp @@ -20,18 +20,27 @@ class ITagParser { -> bool = 0; }; +class GenericTagParser : public ITagParser { + public: + auto ReadAndParseTags(const std::string& path, TrackTags* out) + -> bool override; +}; + class TagParserImpl : public ITagParser { public: + TagParserImpl(); auto ReadAndParseTags(const std::string& path, TrackTags* out) -> bool override; private: - std::mutex cache_mutex_; + std::map<std::string, std::unique_ptr<ITagParser>> extension_to_parser_; + GenericTagParser generic_parser_; /* * Cache of tags that have already been extracted from files. Ideally this * cache should be slightly larger than any page sizes in the UI. */ + std::mutex cache_mutex_; util::LruCache<16, std::string, TrackTags> cache_; // We could also consider keeping caches of artist name -> shared_string and @@ -39,4 +48,10 @@ class TagParserImpl : public ITagParser { // of our UI. }; +class OpusTagParser : public ITagParser { + public: + auto ReadAndParseTags(const std::string& path, TrackTags* out) + -> bool override; +}; + } // namespace database |
