summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demuxer.c
diff options
context:
space:
mode:
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-01-12 01:12:36 +0000
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-01-12 01:12:36 +0000
commitc0e1f353e08ec31da7e133d6773ea66e6dea0a22 (patch)
treecd004e88d4b4a0776c4d52105687af12d40ac486 /libmpdemux/demuxer.c
parent0d36212f39d5be3963ffd22a950612e368e1cf54 (diff)
downloadmpv-c0e1f353e08ec31da7e133d6773ea66e6dea0a22.tar.bz2
mpv-c0e1f353e08ec31da7e133d6773ea66e6dea0a22.tar.xz
Add demuxer interface for attachments.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25685 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demuxer.c')
-rw-r--r--libmpdemux/demuxer.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index 2bf76199fc..48119f97ba 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -339,6 +339,14 @@ skip_streamfree:
free(demuxer->chapters[i].name);
free(demuxer->chapters);
}
+ if (demuxer->attachments) {
+ for (i=0; i<demuxer->num_attachments; i++) {
+ free(demuxer->attachments[i].name);
+ free(demuxer->attachments[i].type);
+ free(demuxer->attachments[i].data);
+ }
+ free(demuxer->attachments);
+ }
free(demuxer);
}
@@ -1122,6 +1130,20 @@ int demuxer_switch_video(demuxer_t *demuxer, int index){
return index;
}
+int demuxer_add_attachment(demuxer_t* demuxer, const char* name,
+ const char* type, const void* data, size_t size) {
+ if (!(demuxer->num_attachments & 31))
+ demuxer->attachments = realloc(demuxer->attachments, (demuxer->num_attachments + 32) * sizeof(demux_attachment_t));
+
+ demuxer->attachments[demuxer->num_attachments].name = strdup(name);
+ demuxer->attachments[demuxer->num_attachments].type = strdup(type);
+ demuxer->attachments[demuxer->num_attachments].data = malloc(size);
+ memcpy(demuxer->attachments[demuxer->num_attachments].data, data, size);
+ demuxer->attachments[demuxer->num_attachments].data_size = size;
+
+ return demuxer->num_attachments ++;
+}
+
int demuxer_add_chapter(demuxer_t* demuxer, const char* name, uint64_t start, uint64_t end){
if (demuxer->chapters == NULL)
demuxer->chapters = malloc (32*sizeof(*demuxer->chapters));