summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2015-08-08 23:45:40 +1000
committerDamien Zammit <damien@zamaudio.com>2015-08-08 23:45:40 +1000
commitd06f748678e80da1c6acc874f970bcb6f801f6df (patch)
treec0974d1db6a81f0be30ebb91d4a9ebb671de60e3
parent0057a8dd5e0cca625c4ad65ae9a95aa8f7bd93d4 (diff)
Fixed PT5 track enumeration
Signed-off-by: Damien Zammit <damien@zamaudio.com>
-rw-r--r--ptfformat.cc42
-rw-r--r--ptfformat.h15
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();