summaryrefslogtreecommitdiff
path: root/plugins/liboggedit/oggedit.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/liboggedit/oggedit.h')
-rw-r--r--plugins/liboggedit/oggedit.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/plugins/liboggedit/oggedit.h b/plugins/liboggedit/oggedit.h
new file mode 100644
index 00000000..29ca7d13
--- /dev/null
+++ b/plugins/liboggedit/oggedit.h
@@ -0,0 +1,89 @@
+/*
+ This file is part of Deadbeef Player source code
+ http://deadbeef.sourceforge.net
+
+ DeaDBeeF Ogg Edit library header
+
+ Copyright (C) 2014 Ian Nartowicz <deadbeef@nartowicz.co.uk>
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+*/
+
+#ifndef __OGGEDIT_H
+#define __OGGEDIT_H
+
+#define OPUSNAME "Opus"
+#define VORBISNAME "Vorbis"
+#define FLACNAME "Flac"
+
+#define ALBUM_ART_KEY "METADATA_BLOCK_PICTURE"
+#define ALBUM_ART_META "metadata_block_picture"
+
+#define OGGEDIT_OK 1
+/* End Of File, usually unexpected */
+#define OGGEDIT_EOF 0
+/* Generic error or system call return value */
+#define OGGEDIT_FAULT -1
+/* Couldn't sync to Ogg pages, either not an Ogg file, or highly corrupt */
+#define OGGEDIT_CANT_FIND_STREAM -2
+/* Input file not opened for reading, unlikely */
+#define OGGEDIT_FILE_NOT_OPEN -3
+/* Seeking in the input file failed, fatal I/O error */
+#define OGGEDIT_SEEK_FAILED -4
+/* Memory allocation failure */
+#define OGGEDIT_ALLOCATION_FAILURE -5
+/* Couldn't extract the vendor from a header packet, file probably corrupt or not the right codec */
+#define OGGEDIT_CANNOT_PARSE_HEADERS -6
+/* Error adding pages to a stream to read a packet, badly corrupt or fatal Ogg internal error */
+#define OGGEDIT_FAILED_TO_STREAM_PAGE_FOR_PACKET -7
+/* Error adding packets to a stream to write pages, usually a fatal Ogg internal error */
+#define OGGEDIT_FAILED_TO_STREAM_PACKET_FOR_PAGE -8
+/* ogg_stream_init() failed, fatal Ogg internal error */
+#define OGGEDIT_FAILED_TO_INIT_STREAM -9
+/* New file cannot be opened for writing, invalid path or no permissions */
+#define OGGEDIT_CANNOT_OPEN_OUTPUT_FILE -10
+/* File cannot be opened for writing, probably no write permission */
+#define OGGEDIT_CANNOT_UPDATE_FILE -11
+/* Temporary file cannot be created (no permissions?) */
+#define OGGEDIT_CANNOT_OPEN_TEMPORARY_FILE -12
+/* Stat comment failed */
+#define OGGEDIT_STAT_FAILED -13
+/* I/O error writing to file (disk full?) */
+#define OGGEDIT_WRITE_ERROR -14
+/* Failed to flush pages from a stream, fatal Ogg internal error */
+#define OGGEDIT_FLUSH_FAILED -15
+/* Renaming tewmporary file failed (usually sticky bit or directory permissions) */
+#define OGGEDIT_RENAME_FAILED -16
+/* Image file length not acceptable */
+#define OGGEDIT_BAD_FILE_LENGTH -100
+/* Cannot read data from image file */
+#define OGGEDIT_CANT_READ_IMAGE_FILE -101
+
+uint8_t *oggedit_vorbis_channel_map(const int channel_count);
+const char *oggedit_map_tag(char *key, const char *in_or_out);
+const char *oggedit_album_art_type(const int type);
+char *oggedit_album_art_tag(DB_FILE *fp, int *res);
+
+int oggedit_write_file(DB_FILE *in, const char *outname, const off_t offset, const char *codec);
+off_t oggedit_stream_info(DB_FILE *in, const off_t start_offset, const off_t end_offset, const char *codec, char **codecs);
+
+off_t oggedit_write_flac_metadata(DB_FILE *in, const char *fname, const off_t offset, const int num_tags, char **tags);
+off_t oggedit_write_vorbis_metadata(DB_FILE *in, const char *fname, const off_t offset, const size_t stream_size, const int num_tags, char **tags);
+off_t oggedit_write_opus_metadata(DB_FILE *in, const char *fname, const off_t offset, const size_t stream_size, const int output_gain, const int num_tags, char **tags);
+
+#endif /* __OGGEDIT_H */