summaryrefslogtreecommitdiff
path: root/libavformat/id3v2.h
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2012-02-27 22:08:50 +0100
committerAnton Khirnov <anton@khirnov.net>2012-02-29 14:26:14 +0100
commit411225aabce57411d1544a7bbc6f6bee6d8ef638 (patch)
treef3dcc31c02aaf9507f369239950c7c8349248b07 /libavformat/id3v2.h
parentc19981774880919c7f9417014bdcb1fb63f69231 (diff)
id3v2enc: split ff_id3v2_write().
This will allow writing the tag in several steps, needed for writing attached pictures.
Diffstat (limited to 'libavformat/id3v2.h')
-rw-r--r--libavformat/id3v2.h26
1 files changed, 24 insertions, 2 deletions
diff --git a/libavformat/id3v2.h b/libavformat/id3v2.h
index 5f3ec1b3ca..f47abe9d25 100644
--- a/libavformat/id3v2.h
+++ b/libavformat/id3v2.h
@@ -46,6 +46,12 @@ enum ID3v2Encoding {
ID3v2_ENCODING_UTF8 = 3,
};
+typedef struct ID3v2EncContext {
+ int version; ///< ID3v2 minor version, either 3 or 4
+ int64_t size_pos; ///< offset of the tag total size
+ int len; ///< size of the tag written so far
+} ID3v2EncContext;
+
typedef struct ID3v2ExtraMeta {
const char *tag;
void *data;
@@ -91,12 +97,28 @@ int ff_id3v2_tag_len(const uint8_t *buf);
void ff_id3v2_read(AVFormatContext *s, const char *magic, ID3v2ExtraMeta **extra_meta);
/**
- * Write an ID3v2 tag.
+ * Initialize an ID3v2 tag.
+ */
+void ff_id3v2_start(ID3v2EncContext *id3, AVIOContext *pb, int id3v2_version,
+ const char *magic);
+
+/**
+ * Convert and write all global metadata from s into an ID3v2 tag.
+ */
+int ff_id3v2_write_metadata(AVFormatContext *s, ID3v2EncContext *id3);
+
+/**
+ * Finalize an opened ID3v2 tag.
+ */
+void ff_id3v2_finish(ID3v2EncContext *id3, AVIOContext *pb);
+
+/**
+ * Write an ID3v2 tag containing all global metadata from s.
* @param id3v2_version Subversion of ID3v2; supported values are 3 and 4
* @param magic magic bytes to identify the header
* If in doubt, use ID3v2_DEFAULT_MAGIC.
*/
-int ff_id3v2_write(struct AVFormatContext *s, int id3v2_version, const char *magic);
+int ff_id3v2_write_simple(struct AVFormatContext *s, int id3v2_version, const char *magic);
/**
* Free memory allocated parsing special (non-text) metadata.