X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fptformat%2Fptfformat.h;h=3a702aa10bd257246f1fd21475c2c8d217861252;hb=af15cf9ef7c34b0667aa65e0818c26a4fdd2a9ed;hp=ff21191932344ef6656ac22097f0cd6bc1ba8d9d;hpb=adc84271ba721fdf49f4c0542e1ce3a4aca6fa2e;p=ardour.git diff --git a/libs/ptformat/ptfformat.h b/libs/ptformat/ptfformat.h index ff21191932..3a702aa10b 100644 --- a/libs/ptformat/ptfformat.h +++ b/libs/ptformat/ptfformat.h @@ -16,11 +16,13 @@ #define PTFFORMAT_H #include +#include #include #include #include +#include "ptformat/visibility.h" -class PTFFormat { +class LIBPTFORMAT_API PTFFormat { public: PTFFormat(); ~PTFFormat(); @@ -30,19 +32,24 @@ public: */ int load(std::string path, int64_t targetsr); - typedef struct wav { + struct wav_t { std::string filename; uint16_t index; int64_t posabsolute; int64_t length; - bool operator ==(const struct wav& other) { + bool operator <(const struct wav_t& other) const { + return (strcasecmp(this->filename.c_str(), + other.filename.c_str()) < 0); + } + + bool operator ==(const struct wav_t& other) const { return (this->filename == other.filename || this->index == other.index); } - } wav_t; + }; typedef struct region { std::string name; @@ -106,12 +113,13 @@ public: unsigned char c0; unsigned char c1; unsigned char *ptfunxored; - int len; + uint64_t len; private: bool foundin(std::string haystack, std::string needle); - void parse(void); + int parse(void); void unxor10(void); + void unxor_ptx_to_ptf(void); void setrates(void); void parse5header(void); void parse7header(void); @@ -123,6 +131,8 @@ private: void parserest10(void); void parseaudio5(void); void parseaudio(void); + void resort(std::vector& ws); + uint8_t mostfrequent(uint32_t start, uint32_t stop); std::vector actualwavs; float ratefactor; std::string extension;