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));