diff options
author | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2008-01-12 01:12:36 +0000 |
---|---|---|
committer | eugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2008-01-12 01:12:36 +0000 |
commit | c0e1f353e08ec31da7e133d6773ea66e6dea0a22 (patch) | |
tree | cd004e88d4b4a0776c4d52105687af12d40ac486 /libmpdemux/demuxer.c | |
parent | 0d36212f39d5be3963ffd22a950612e368e1cf54 (diff) | |
download | mpv-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.c | 22 |
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)); |