diff options
author | Damien Zammit <damien@zamaudio.com> | 2015-08-08 23:45:40 +1000 |
---|---|---|
committer | Damien Zammit <damien@zamaudio.com> | 2015-08-08 23:45:40 +1000 |
commit | d06f748678e80da1c6acc874f970bcb6f801f6df (patch) | |
tree | c0974d1db6a81f0be30ebb91d4a9ebb671de60e3 | |
parent | 0057a8dd5e0cca625c4ad65ae9a95aa8f7bd93d4 (diff) |
Fixed PT5 track enumeration
Signed-off-by: Damien Zammit <damien@zamaudio.com>
-rw-r--r-- | ptfformat.cc | 42 | ||||
-rw-r--r-- | ptfformat.h | 15 |
2 files changed, 26 insertions, 31 deletions
diff --git a/ptfformat.cc b/ptfformat.cc index 4bb1408..e2d061a 100644 --- a/ptfformat.cc +++ b/ptfformat.cc @@ -440,7 +440,7 @@ PTFFormat::parserest5(void) { int i, j, k; int regionspertrack, lengthofname; int startbytes, lengthbytes, offsetbytes, somethingbytes; - int tracknumber; + uint16_t tracknumber = 0; uint16_t findex; uint16_t rindex; @@ -574,13 +574,10 @@ PTFFormat::parserest5(void) { vector<wav_t>::iterator begin = audiofiles.begin(); vector<wav_t>::iterator finish = audiofiles.end(); vector<wav_t>::iterator found; - // Add file to list only if isn't found before + // Add file to lists if ((found = std::find(begin, finish, f)) != finish) { - if (foundin(filename, string(".grp"))) { - continue; - } region_t r = { - "", + name, rindex, (int64_t)(start*ratefactor), (int64_t)(sampleoffset*ratefactor), @@ -588,21 +585,26 @@ PTFFormat::parserest5(void) { *found, }; regions.push_back(r); - track_t tr = { + vector<track_t>::iterator ti; + vector<track_t>::iterator bt = tracks.begin(); + vector<track_t>::iterator et = tracks.end(); + track_t tr = { name, 0, 0, r }; + if ((ti = std::find(bt, et, tr)) != et) { + tracknumber = (*ti).index; + } else { + tracknumber = tracks.size() + 1; + } + track_t t = { name, (uint16_t)tracknumber, uint8_t(0), r }; - tracks.push_back(tr); - tracknumber++; + tracks.push_back(t); } else { audiofiles.push_back(f); - if (foundin(filename, string(".grp"))) { - continue; - } region_t r = { - "", + name, rindex, (int64_t)(start*ratefactor), (int64_t)(sampleoffset*ratefactor), @@ -610,14 +612,22 @@ PTFFormat::parserest5(void) { f, }; regions.push_back(r); - track_t tr = { + vector<track_t>::iterator ti; + vector<track_t>::iterator bt = tracks.begin(); + vector<track_t>::iterator et = tracks.end(); + track_t tr = { name, 0, 0, r }; + if ((ti = std::find(bt, et, tr)) != et) { + tracknumber = (*ti).index; + } else { + tracknumber = tracks.size() + 1; + } + track_t t = { name, (uint16_t)tracknumber, uint8_t(0), r }; - tracks.push_back(tr); - tracknumber++; + tracks.push_back(t); } rindex++; k++; diff --git a/ptfformat.h b/ptfformat.h index d57e8b1..e8267bc 100644 --- a/ptfformat.h +++ b/ptfformat.h @@ -72,21 +72,6 @@ public: std::vector<region_t> regions; std::vector<track_t> tracks; - static bool trackexistsin(std::vector<track_t> tr, std::string name) { - std::vector<track_t>::iterator begin = tr.begin(); - std::vector<track_t>::iterator finish = tr.end(); - std::vector<track_t>::iterator found; - - wav_t w = { std::string(""), 0, 0, 0 }; - region_t r = { std::string(""), 0, 0, 0, 0, w }; - track_t f = { name, 0, 0, r }; - - if ((found = std::find(begin, finish, f)) != finish) { - return true; - } - return false; - } - static bool regionexistsin(std::vector<region_t> reg, uint16_t index) { std::vector<region_t>::iterator begin = reg.begin(); std::vector<region_t>::iterator finish = reg.end(); |