12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #ifndef NULLSOFT_IN_MP3_METADATA
- #define NULLSOFT_IN_MP3_METADATA
- #include "giofile.h"
- #include "ID3v1.h"
- #include "ID3v2.h"
- #include "Lyrics3.h"
- #include "apev2.h"
- enum
- {
- METADATA_SUCCESS = 0,
- SAVE_SUCCESS = 0,
- SAVE_ERROR_OPENING_FILE = 1,
- SAVE_ID3V1_WRITE_ERROR = 2,
- SAVE_ID3V2_WRITE_ERROR = 3,
- SAVE_ERROR_READONLY = 4,
- SAVE_ERROR_CANT_OPEN_TEMPFILE = 5,
- SAVE_ERROR_ERROR_OVERWRITING = 6,
- SAVE_LYRICS3_WRITE_ERROR = 7,
- SAVE_APEV2_WRITE_ERROR = 8,
- };
- class Metadata
- {
- public:
- Metadata() {}
- Metadata(CGioFile *_file, const wchar_t *_filename);
- ~Metadata();
- int Open(const wchar_t *filename);
- int GetExtendedData(const char *tag, wchar_t *data, int dataLen);
- int SetExtendedData(const char *tag, const wchar_t *data);
- int Save();
- bool IsMe(const wchar_t *fn) { return filename && !_wcsicmp(filename, fn); }
-
- void AddRef() { InterlockedIncrement(&refs); }
- void Release() { if(!InterlockedDecrement(&refs)) delete this; }
- private:
- bool IsDirty();
- void ReadTags(CGioFile *_file);
- int GetString(const char *tag, wchar_t *data, int dataLen);
- int sampleRate = 0;
- int bitrate = 0;
- int vbr = 0;
- int channels = 0;
- int length_ms = 0;
- CGioFile file;
- public:
- ID3v1 id3v1;
- ID3v2 id3v2;
- Lyrics3 lyrics3;
- APE apev2;
- wchar_t *filename = 0;
- protected:
- volatile LONG refs = 1;
- };
- #endif
|