aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Input/in_flac/Metadata.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Plugins/Input/in_flac/Metadata.h')
-rw-r--r--Src/Plugins/Input/in_flac/Metadata.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/Src/Plugins/Input/in_flac/Metadata.h b/Src/Plugins/Input/in_flac/Metadata.h
new file mode 100644
index 00000000..90616aeb
--- /dev/null
+++ b/Src/Plugins/Input/in_flac/Metadata.h
@@ -0,0 +1,48 @@
+#ifndef NULLSOFT_IN_FLAC_METADATA_H
+#define NULLSOFT_IN_FLAC_METADATA_H
+
+#include <FLAC/all.h>
+
+class FLACMetadata
+{
+public:
+ FLACMetadata();
+ ~FLACMetadata();
+ bool Open(const wchar_t *filename, bool optimize=false);
+ void Reset();
+ const char *GetMetadata(const char *tag);
+ void SetMetadata(const char *tag, const char *value);
+ void RemoveMetadata(const char *tag);
+ void RemoveMetadata(int n);
+ bool Save(const wchar_t *filename);
+ const FLAC__StreamMetadata_StreamInfo *GetStreamInfo();
+ __int64 GetFileSize() { return filesize; }
+ bool GetLengthMilliseconds(unsigned __int64 *length);
+ int GetNumMetadataItems();
+ const char* EnumMetadata(int n, char *tag, int len);
+ void SetTag(int n, const char *tag);
+
+ bool GetPicture(FLAC__StreamMetadata_Picture_Type type, void **data, size_t *len, wchar_t **mimeType);
+ bool GetIndexPicture(int index, FLAC__StreamMetadata_Picture_Type *type, void **data, size_t *len, wchar_t **mimeType);
+ bool RemovePicture(FLAC__StreamMetadata_Picture_Type type);
+ bool SetPicture(FLAC__StreamMetadata_Picture_Type type, void *data, size_t len, const wchar_t *mimeType, int width, int height);
+private:
+ FLAC__Metadata_Chain *chain;
+ FLAC__Metadata_Iterator *itr;
+ FLAC__StreamMetadata *block;
+ FLAC__StreamMetadata *streamInfo;
+ __int64 filesize;
+};
+
+class Info
+{
+public:
+ FLACMetadata metadata;
+ const wchar_t *filename;
+};
+
+extern FLACMetadata *getMetadata;
+extern wchar_t *getFileInfoFn;
+extern Info *info;
+
+#endif \ No newline at end of file