diff options
Diffstat (limited to 'src/database')
| -rw-r--r-- | src/database/include/song.hpp | 7 | ||||
| -rw-r--r-- | src/database/tag_parser.cpp | 10 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/database/include/song.hpp b/src/database/include/song.hpp index 2791c0ca..d03660dc 100644 --- a/src/database/include/song.hpp +++ b/src/database/include/song.hpp @@ -36,6 +36,9 @@ typedef uint32_t SongId; enum class Encoding { kUnsupported = 0, kMp3 = 1, + kWav = 2, + kOgg = 3, + kFlac = 4, }; /* @@ -53,6 +56,10 @@ struct SongTags { std::optional<std::string> artist; std::optional<std::string> album; + std::optional<int> channels; + std::optional<int> sample_rate; + std::optional<int> bits_per_sample; + /* * Returns a hash of the 'identifying' tags of this song. That is, a hash that * can be used to determine if one song is likely the same as another, across diff --git a/src/database/tag_parser.cpp b/src/database/tag_parser.cpp index d6109671..27d4163f 100644 --- a/src/database/tag_parser.cpp +++ b/src/database/tag_parser.cpp @@ -107,6 +107,16 @@ auto TagParserImpl::ReadAndParseTags(const std::string& path, SongTags* out) out->encoding = Encoding::kUnsupported; } + if (ctx.channels > 0) { + out->channels = ctx.channels; + } + if (ctx.samplerate > 0) { + out->sample_rate = ctx.samplerate; + } + if (ctx.bitrate > 0) { + out->bits_per_sample = ctx.bitrate; + } + return true; } |
