CVS: main asfheader.c,1.10,1.11
Update of /cvsroot/mplayer/main In directory usw-pr-cvs1:/tmp/cvs-serv12753 Modified Files: asfheader.c Log Message: ASF description printing patch by Bertrand BAUDET, fixed segfault of hory_bug/a.asf Index: asfheader.c =================================================================== RCS file: /cvsroot/mplayer/main/asfheader.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -r1.10 -r1.11 *** asfheader.c 2001/05/03 23:32:55 1.10 --- asfheader.c 2001/05/16 23:40:55 1.11 *************** *** 54,57 **** --- 54,64 ---- } ASF_stream_header_t; + typedef struct __attribute__((packed)) { + unsigned short title_size; + unsigned short author_size; + unsigned short copyright_size; + unsigned short comment_size; + unsigned short rating_size; + } ASF_content_description_t; static ASF_header_t asfh; *************** *** 59,62 **** --- 66,70 ---- static ASF_file_header_t fileh; static ASF_stream_header_t streamh; + static ASF_content_description_t contenth; unsigned char* asf_packet=NULL; *************** *** 68,71 **** --- 76,87 ---- //int i; + void print_asf_string(const char* name, char* string, int length){ + int i; + printf("%s", name); + for(i=0;i<length && string[i]!='\0';i+=2){ + printf("%c", string[i]); + } + printf("\n"); + } static char* asf_chunk_type(unsigned char* guid){ *************** *** 105,109 **** int read_asf_header(demuxer_t *demuxer){ ! unsigned char buffer[512]; #if 1 --- 121,125 ---- int read_asf_header(demuxer_t *demuxer){ ! static unsigned char buffer[1024]; #if 1 *************** *** 127,130 **** --- 143,151 ---- printf("FILEPOS=0x%X\n",stream_tell(demuxer->stream)); } + if(streamh.type_size>1024 || streamh.stream_size>1024){ + printf("FATAL: header size bigger than 1024 bytes!\n"); + printf("Please contact mplayer authors, and upload/send this file.\n"); + exit(1); + } // type-specific data: stream_read(demuxer->stream,(char*) buffer,streamh.type_size); *************** *** 180,183 **** --- 201,233 ---- // case 0x33000890: return "guid_index_chunk"; + case 0x75b22633: // Content description + stream_read(demuxer->stream,(char*) &contenth,sizeof(contenth)); + { + char *string; + // extract the title + string=(char*)malloc(contenth.title_size); + stream_read(demuxer->stream, string, contenth.title_size); + print_asf_string("\n Title: ", string, contenth.title_size); + // extract the author + string=(char*)realloc((void*)string, contenth.author_size); + stream_read(demuxer->stream, string, contenth.author_size); + print_asf_string(" Author: ", string, contenth.author_size); + // extract the copyright + string=(char*)realloc((void*)string, contenth.copyright_size); + stream_read(demuxer->stream, string, contenth.copyright_size); + print_asf_string(" Copyright: ", string, contenth.copyright_size); + // extract the comment + string=(char*)realloc((void*)string, contenth.comment_size); + stream_read(demuxer->stream, string, contenth.comment_size); + print_asf_string(" Comment: ", string, contenth.comment_size); + // extract the rating + string=(char*)realloc((void*)string, contenth.rating_size); + stream_read(demuxer->stream, string, contenth.rating_size); + print_asf_string(" Rating: ", string, contenth.rating_size); + printf("\n"); + free(string); + } + break; + } // switch GUID *************** *** 198,200 **** return 1; } - --- 248,249 ---- _______________________________________________ Mplayer-cvslog mailing list Mplayer-cvslog@lists.sourceforge.net http://lists.sourceforge.net/lists/listinfo/mplayer-cvslog
participants (1)
-
GEREOFFY