Mercurial > mplayer.hg
comparison libmpdemux/demuxer.c @ 25657:dfeb8ea2a7a8
Add demuxer interface for attachments.
author | eugeni |
---|---|
date | Sat, 12 Jan 2008 01:12:36 +0000 |
parents | 00e4d59a0be4 |
children | c4275201a489 |
comparison
equal
deleted
inserted
replaced
25656:00e4d59a0be4 | 25657:dfeb8ea2a7a8 |
---|---|
337 for (i=0; i<demuxer->num_chapters; i++) | 337 for (i=0; i<demuxer->num_chapters; i++) |
338 if (demuxer->chapters[i].name) | 338 if (demuxer->chapters[i].name) |
339 free(demuxer->chapters[i].name); | 339 free(demuxer->chapters[i].name); |
340 free(demuxer->chapters); | 340 free(demuxer->chapters); |
341 } | 341 } |
342 if (demuxer->attachments) { | |
343 for (i=0; i<demuxer->num_attachments; i++) { | |
344 free(demuxer->attachments[i].name); | |
345 free(demuxer->attachments[i].type); | |
346 free(demuxer->attachments[i].data); | |
347 } | |
348 free(demuxer->attachments); | |
349 } | |
342 free(demuxer); | 350 free(demuxer); |
343 } | 351 } |
344 | 352 |
345 | 353 |
346 void ds_add_packet(demux_stream_t *ds,demux_packet_t* dp){ | 354 void ds_add_packet(demux_stream_t *ds,demux_packet_t* dp){ |
1120 if (res == DEMUXER_CTRL_NOTIMPL) | 1128 if (res == DEMUXER_CTRL_NOTIMPL) |
1121 index = demuxer->video->id; | 1129 index = demuxer->video->id; |
1122 return index; | 1130 return index; |
1123 } | 1131 } |
1124 | 1132 |
1133 int demuxer_add_attachment(demuxer_t* demuxer, const char* name, | |
1134 const char* type, const void* data, size_t size) { | |
1135 if (!(demuxer->num_attachments & 31)) | |
1136 demuxer->attachments = realloc(demuxer->attachments, (demuxer->num_attachments + 32) * sizeof(demux_attachment_t)); | |
1137 | |
1138 demuxer->attachments[demuxer->num_attachments].name = strdup(name); | |
1139 demuxer->attachments[demuxer->num_attachments].type = strdup(type); | |
1140 demuxer->attachments[demuxer->num_attachments].data = malloc(size); | |
1141 memcpy(demuxer->attachments[demuxer->num_attachments].data, data, size); | |
1142 demuxer->attachments[demuxer->num_attachments].data_size = size; | |
1143 | |
1144 return demuxer->num_attachments ++; | |
1145 } | |
1146 | |
1125 int demuxer_add_chapter(demuxer_t* demuxer, const char* name, uint64_t start, uint64_t end){ | 1147 int demuxer_add_chapter(demuxer_t* demuxer, const char* name, uint64_t start, uint64_t end){ |
1126 if (demuxer->chapters == NULL) | 1148 if (demuxer->chapters == NULL) |
1127 demuxer->chapters = malloc (32*sizeof(*demuxer->chapters)); | 1149 demuxer->chapters = malloc (32*sizeof(*demuxer->chapters)); |
1128 else if (!(demuxer->num_chapters % 32)) | 1150 else if (!(demuxer->num_chapters % 32)) |
1129 demuxer->chapters = realloc (demuxer->chapters, (demuxer->num_chapters + 32) * sizeof(*demuxer->chapters)); | 1151 demuxer->chapters = realloc (demuxer->chapters, (demuxer->num_chapters + 32) * sizeof(*demuxer->chapters)); |