}
}
+void
+PTFFormat::resort(std::vector<wav_t> *ws) {
+ int j = 0;
+ std::sort((*ws).begin(), (*ws).end());
+ for (std::vector<wav_t>::iterator i = (*ws).begin();
+ i != (*ws).end(); ++i) {
+ (*i).index = j;
+ j++;
+ }
+}
+
void
PTFFormat::parseaudio5(void) {
int i,k,l;
wavnumber = 0;
i+=16;
+ char ext[5];
while (i < len && numberofwavs > 0) {
i++;
if ( (ptfunxored[i ] == 0x5a) &&
wavname[l] = ptfunxored[i+l];
l++;
}
- i+=lengthofname + 4;
+ i+=lengthofname;
+ ext[0] = ptfunxored[i++];
+ ext[1] = ptfunxored[i++];
+ ext[2] = ptfunxored[i++];
+ ext[3] = ptfunxored[i++];
+ ext[4] = '\0';
+
wavname[l] = 0;
- if (foundin(wavname, ".wav")) {
+ if (foundin(wavname, ".L") || foundin(wavname, ".R")) {
+ extension = string("");
+ } else if (foundin(wavname, ".wav") || foundin(ext, "WAVE")) {
extension = string(".wav");
- } else if (foundin(wavname, ".aif")) {
+ } else if (foundin(wavname, ".aif") || foundin(ext, "AIFF")) {
extension = string(".aif");
} else {
extension = string("");
numberofwavs--;
i += 7;
}
+ resort(&actualwavs);
+ resort(&audiofiles);
}
void
#define PTFFORMAT_H
#include <string>
+#include <cstring>
#include <algorithm>
#include <vector>
#include <stdint.h>
-
#include "ptformat/visibility.h"
class LIBPTFORMAT_API PTFFormat {
int64_t posabsolute;
int64_t length;
+ bool operator <(const struct wav& other) {
+ return (strcasecmp(this->filename.c_str(),
+ other.filename.c_str()) < 0);
+ }
+
bool operator ==(const struct wav& other) {
return (this->filename == other.filename ||
this->index == other.index);
void parserest10(void);
void parseaudio5(void);
void parseaudio(void);
+ void resort(std::vector<wav_t> *ws);
std::vector<wav_t> actualwavs;
float ratefactor;
std::string extension;