diff options
author | geronimo <geronimo013@gmx.de> | 2012-08-02 08:07:59 +0200 |
---|---|---|
committer | geronimo <geronimo013@gmx.de> | 2012-08-02 08:07:59 +0200 |
commit | adb7d83292e1502ca7c21a123b104412cb22d160 (patch) | |
tree | ecb448802df0d35f1c3289c4f0e7c246ee5c021a /libs/mediaScan/src/Audio.cc | |
parent | 5416f2e39cfedc474c87e0a3eeff067fbb25dceb (diff) | |
download | cmp-adb7d83292e1502ca7c21a123b104412cb22d160.tar.gz cmp-adb7d83292e1502ca7c21a123b104412cb22d160.tar.bz2 |
worked out processing of some meta data, extended json list elements
Diffstat (limited to 'libs/mediaScan/src/Audio.cc')
-rw-r--r-- | libs/mediaScan/src/Audio.cc | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/libs/mediaScan/src/Audio.cc b/libs/mediaScan/src/Audio.cc index fdaae7e..9420db6 100644 --- a/libs/mediaScan/src/Audio.cc +++ b/libs/mediaScan/src/Audio.cc @@ -23,8 +23,10 @@ * -------------------------------------------------------------- */ #include <Audio.h> +#include <StringBuilder.h> #include <stddef.h> #include <string.h> +#include <util.h> static bool deepScanEnabled = false; @@ -50,11 +52,23 @@ SupportedExtension cAudio::knownExtensions[] = { cAudio::cAudio(const cFile &File, const char *Mime) : cAbstractMedia(File, Mime, Audio) + , name(NULL) { } cAudio::~cAudio() { + free(name); +} + +void cAudio::AddMeta(cMediainfoReader::InfoEntry* Entry) +{ + if (!Entry) return; + std::string name = std::get<0>(*Entry); + std::string value = std::get<1>(*Entry); + + if (!strcmp("Bit rate", name.c_str())) width = parseInt(value); + cAbstractMedia::AddMeta(Entry); } void cAudio::EnableDeepScan(bool DoScan) @@ -70,6 +84,41 @@ const char *cAudio::ContentType(const char* Extension) return NULL; } +const char *cAudio::Name(void) const +{ + if (!name) { + cMediainfoReader::InfoEntry *performer = NULL, *album = NULL, *track = NULL; + + for (size_t i=0; i < meta.size(); ++i) { + cMediainfoReader::InfoEntry *ie = meta[i]; + std::string name = std::get<0>(*ie); + + if (!strcmp("Album", name.c_str())) album = ie; + else if (!strcmp("Performer", name.c_str())) performer = ie; + else if (!strcmp("Track name", name.c_str())) track = ie; + } + + if (track) { + std::string tmp = std::get<1>(*track); + cStringBuilder sb(tmp.c_str()); + + if (performer) { + tmp = std::get<1>(*performer); + sb.Append(" / ").Append(tmp.c_str()); + } + if (album) { + tmp = std::get<1>(*album); + sb.Append(" (").Append(tmp.c_str()).Append(")"); + } + name = sb.toString(); + } + else { + name = strdup(cAbstractMedia::Name()); + } + } + return name; +} + bool cAudio::NeedsFurtherScan(void) const { return deepScanEnabled; |