/* ------------------------------------------------------------------ libofa -- the Open Fingerprint Architecture library Public Domain (PD) 2006 Predixis Corporation No rights reserved. -------------------------------------------------------------------*/ #ifndef __PROTOCOL_H__ #define __PROTOCOL_H__ #include #include "ofa1/ofa.h" using namespace std; // This object must be filled out completely prior to making any // calls to the server. On return, some fields will be filled out. class TrackInformation { private: string puid; string print; string encoding; // All other strings must honor this encoding string client_key; // Get your unique key at http://www.musicdns.org string client_version; // Use your own version here: "1.0 beta 2" bool get_metadata; // If false, only the PUID will be returned int bitrate; // i.e. "192kbps", use 0 for VBR or freeformat string format; // File extension long length_in_ms; // In milliseconds string artist; string track; string album; int trackNum; // use 0 if not known string genre; string year; public: // Get your unique key at http://www.musicdns.org TrackInformation(string _key, string _version) : client_key(_key), client_version(_version), get_metadata(false), bitrate(0), length_in_ms(0), trackNum(0) {} ~TrackInformation() {} void setPrint(string p) { print = p; } string getPrint() const { return print; } // Only supported encodings are UTF-8 (default) and ISO-8859-15 void setEncoding(string e) { encoding = e; } string getEncoding() const { return encoding; } string getClientKey() const { return client_key; } string getClientVersion() const { return client_version; } void setMetadataFlag(bool b) { get_metadata = b; } bool getMetadataFlag() const { return get_metadata; } void setBitrate(int b) { bitrate = b; } int getBitrate() const { return bitrate; } void setFormat(string fmt) { format = fmt; } string getFormat() const { return format; } void setLengthInMS(long ms) { length_in_ms = ms; } long getLengthInMS() const { return length_in_ms; } void setArtist(string name) { artist = name; } string getArtist() const { return artist; } void setTrack(string name) { track = name; } string getTrack() const { return track; } void setAlbum(string name) { album = name; } string getAlbum() const { return album; } void setTrackNum(int t) { trackNum = t; } int getTrackNum() const { return trackNum; } void setGenre(string g) { genre = g; } string getGenre() const { return genre; } void setYear(string y) { year = y; } string getYear() const { return year; } void setPUID(string id) { puid = id; } string getPUID() const { return puid; } }; bool retrieve_metadata(TrackInformation *info); class AudioData { private: unsigned char *samples; int byteOrder; long size; int sRate; bool stereo; public: TrackInformation info; AudioData(string _key, string _version) : samples(0), size(0), sRate(0), stereo(false), info(_key, _version) {} virtual ~AudioData() { delete[] samples; } void setData(unsigned char*_samples, int _byteOrder, long _size, int _sRate, bool _stereo) { samples = _samples; byteOrder = _byteOrder; size = _size; sRate = _sRate; stereo = _stereo; } int getByteOrder() const { return byteOrder; } long getSize() const { return size; } int getSRate() const { return sRate; } bool getStereo() const { return stereo; } bool createPrint() { const char *print = ofa_create_print(samples, byteOrder, size, sRate, stereo); samples = 0; if (!print) return false; info.setPrint(print); return true; } }; #endif