chaplin-1.10/0000755000175000017500000000000010032650076014504 5ustar marillatmarillat00000000000000chaplin-1.10/Makefile0000644000175000017500000000075510027352162016152 0ustar marillatmarillat00000000000000# Makefile for chap # $Id: Makefile,v 1.5 2004/03/21 17:44:18 cnvogelg Exp $ LIBDVDREAD=/soft/libdvdread all: build build: gcc -DNDEBUG -Wall -I$(LIBDVDREAD)/include -L$(LIBDVDREAD)/lib -ldvdread -Wl,-rpath,$(LIBDVDREAD)/lib -o chaplin chaplin.c -lm debug: gcc -Wall -I$(LIBDVDREAD)/include -L$(LIBDVDREAD)/lib -ldvdread -Wl,-rpath,$(LIBDVDREAD)/lib -o chaplin chaplin.c -lm dist: cd .. ; tar cvfz chaplin.tgz chaplin/Makefile chaplin/chaplin.c chaplin/chaplin-genmenu chaplin/chaplin chaplin-1.10/chaplin.c0000644000175000017500000006476410027352310016301 0ustar marillatmarillat00000000000000/* * chap.c * * DVD chapter extractor for linux * written by Christian Vogelgsang * under the GNU Public License V2 * * using libdvdread * source is heavily based on "title_info.c" of the libdvdread package. * * $Id: chaplin.c,v 1.10 2004/03/21 17:45:44 cnvogelg Exp $ */ #include #include #include #include #include #include #include /* libdvdread stuff */ #include #include #include /* ---------- myts - own time stamp and tools ------------------------------ */ typedef struct myts { unsigned short hour; unsigned short minute; unsigned short second; unsigned short frame; unsigned short frame_base; } myts_t; /* myts_to_secs - convert time to seconds */ double myts_to_secs(myts_t *t) { return (t->hour * 3600. + t->minute * 60. + t->second) + ((double)t->frame / (double)t->frame_base); } /* mytes_to_frames - convert to frame number */ unsigned long myts_to_frames(myts_t *t,double frame_rate) { /* use timestamp rate for conversion */ if(frame_rate == 0.0) { unsigned long secs = (unsigned long)t->hour * 3600 + (unsigned long)t->minute * 60 + (unsigned long)t->second; return secs * t->frame_base + t->frame; } /* use user specified frame rate */ else return (unsigned int)ceil(myts_to_secs(t) * frame_rate); } /* myts_is_equal - compare two time stamps */ int myts_is_equal(myts_t *t1,myts_t *t2) { assert(t1->frame_base==t2->frame_base); return ((t1->hour==t2->hour)&& (t1->minute==t2->minute)&& (t1->second==t2->second)&& (t1->frame==t2->frame)); } /* myts_add_to - add time stamp to sum */ void myts_add_to(myts_t *sum,myts_t *t) { assert(sum->frame_base == t->frame_base); sum->frame += t->frame; if(sum->frame>=sum->frame_base) { sum->frame -= sum->frame_base; sum->second++; } sum->second += t->second; if(sum->second>=60) { sum->second -= 60; sum->minute++; } sum->minute += t->minute; if(sum->minute>=60) { sum->minute -= 60; sum->hour++; } sum->hour += t->hour; } /* myts_convert - convert from libdvdread dvd_time_t */ void myts_convert(dvd_time_t *time,myts_t *my) { int base_code = time->frame_u>>6; assert((base_code==1)||(base_code==3)); my->hour = (time->hour>>4) * 10 + (time->hour&15); my->minute = (time->minute>>4) * 10 + (time->minute&15); my->second = (time->second>>4) * 10 + (time->second&15); my->frame = ((time->frame_u>>4)&3) * 10 + (time->frame_u&15); my->frame_base = (base_code==1)?25:30; } /* myts_to_string - string output of time stamp */ const char *myts_to_string(myts_t *my) { static char buf[12]; sprintf(buf,"%02d:%02d:%02d.%02d",my->hour,my->minute,my->second,my->frame); return buf; } /* ---------- libdvdread stuff --------------------------------------------- */ typedef struct yuv { unsigned char y,u,v; } yuv_t; /* read_chapters - read all chapters and return the number of chapters found or 0 on error. also set the myts_t pointer to a valid array of per chapter times. */ int read_chapters(const char *dvd_path,int title,int verbose, myts_t **ret_chap_time,myts_t *ret_total_time, yuv_t *palette,int *palmode,int *widescreen) { dvd_reader_t *dvd; ifo_handle_t *ifo_file; tt_srpt_t *tt_srpt; ifo_handle_t *vts_file; pgc_t *cur_pgc; int total_title; /* total number of available titles */ int title_set_nr; /* title set of given title */ int local_title_id; /* local title id for access in vts file */ int total_chap; /* number of chapters */ myts_t *chap_time; /* array of chapter time */ myts_t sum_time; /* sum chapter time to verify pgc time */ /* access device */ dvd = DVDOpen(dvd_path); if(!dvd) { fprintf(stderr, "Couldn't open DVD device/image: %s\n",dvd_path); return 0; } /* open title manager */ ifo_file = ifoOpen(dvd,0); if(!ifo_file) { fprintf(stderr, "Can't open VMG info.\n" ); DVDClose( dvd ); return 0; } /* read total_title */ tt_srpt = ifo_file->tt_srpt; total_title = tt_srpt->nr_of_srpts; /* check title number */ if((title<1)||(title>total_title)) { fprintf(stderr,"Wrong title number %d given. Only %d titles\n", title,total_title); DVDClose(dvd); return 0; } /* find global info about title */ title_set_nr = tt_srpt->title[title-1].title_set_nr; local_title_id = tt_srpt->title[title-1].vts_ttn - 1; total_chap = tt_srpt->title[title-1].nr_of_ptts; if(verbose) printf("title %d:\n title_set_nr=%d, local_title_id=%d, total_chap=%d\n", title,title_set_nr,local_title_id,total_chap); /* access title set file */ vts_file = ifoOpen(dvd,title_set_nr); if(!vts_file) { fprintf(stderr,"Can't open info file for title set %d.\n",title_set_nr); DVDClose(dvd); return 0; } /* find program chain and check programs all chapters should be in the same prog chain and should be numbered from 1 to */ { vts_ptt_srpt_t *vts_ptt_srpt = vts_file->vts_ptt_srpt; int pgc_nr = vts_ptt_srpt->title[local_title_id].ptt[0].pgcn; int pg = vts_ptt_srpt->title[local_title_id].ptt[0].pgn; int p; assert(pg==1); for(p=1;ptitle[local_title_id].ptt[p].pgcn; assert(pgc_nr==this_pgc); next_pg = vts_ptt_srpt->title[local_title_id].ptt[p].pgn; assert(pg+1==next_pg); pg = next_pg; } /* fetch program chain */ cur_pgc = vts_file->vts_pgcit->pgci_srp[pgc_nr-1].pgc; assert(cur_pgc->nr_of_programs==total_chap); } /* ADDON: extract color info for subtitles */ if(palette!=0) { int c; for(c=0;c<16;c++) { uint32_t yuv = cur_pgc->palette[c]; palette[c].y = (yuv >> 16) & 0xff; palette[c].u = (yuv >> 8) & 0xff; palette[c].v = (yuv) & 0xff; } } /* ADDON: extract video attributes */ video_attr_t *video_attr = &vts_file->vtsi_mat->vts_video_attr; int pal = video_attr->video_format; int ws = (video_attr->display_aspect_ratio==3); if(verbose) { printf(" [video attributes: %s %s]\n", pal?"PAL":"NTSC", ws?"16:9":"4:3"); } *widescreen = ws; *palmode = pal; /* --- main cell loop --- */ { pgc_program_map_t *chap_cell; cell_playback_t *cell_pb; int c; int chap; /* total cells in chain */ int total_cell = cur_pgc->nr_of_cells; if(verbose) printf(" total_cell=%d\n",total_cell); /* get info */ chap_cell = cur_pgc->program_map; cell_pb = cur_pgc->cell_playback; /* alloc mem for chapter time */ chap_time = (myts_t *)malloc(sizeof(myts_t)*total_cell); assert(chap_time!=0); /* reset time sum */ sum_time.hour = sum_time.minute = sum_time.second = sum_time.frame = 0; /* loop through all cells */ chap = -1; for(c=0;cplayback_time,&myts); if(c==0) sum_time.frame_base = myts.frame_base; /* this cell is the begin of a new chapter! */ if(chap_cell[chap+1]==c+1) { chap++; if(verbose) printf("---- chapter %02d ----\n",chap+1); /* reset chap time */ chap_time[chap].hour = 0; chap_time[chap].minute = 0; chap_time[chap].second = 0; chap_time[chap].frame = 0; chap_time[chap].frame_base = myts.frame_base; } /* cell_mode: 0=normal, 1=first of angle, 2=in angle, 3=last of angle */ cell_mode = cell_pb->block_mode; if((cell_mode==0)||(cell_mode==1)) { /* only account for normal or begin of angle cells */ myts_add_to(&sum_time,&myts); myts_add_to(&chap_time[chap],&myts); mode = "counted"; } else { mode = "skipped"; } if(verbose) printf("%s cell %04d: mode=%d, %s %s %s %s %s\n", mode,c+1,cell_mode, myts_to_string(&myts), (cell_pb->seamless_angle)?"seaml_angle":"-", (cell_pb->seamless_play)?"seaml_play":"-", (cell_pb->stc_discontinuity)?"stc_discnt.":"-", (cell_pb->interleaved)?"intrlvd":"-"); cell_pb++; } } /* compare time sum with total time of program chain */ { /* extract total time */ myts_convert(&cur_pgc->playback_time,ret_total_time); if(verbose) { printf("sum/total time: %s =", myts_to_string(&sum_time)); printf("= %s\n", myts_to_string(ret_total_time)); } /* make sure sum and total time are equal */ assert(myts_is_equal(&sum_time,ret_total_time)); } ifoClose(ifo_file); ifoClose(vts_file); DVDClose(dvd); /* all ok - return total number of chapters and set pointer */ *ret_chap_time = chap_time; return total_chap; } /* ---------- part time calculations --------------------------------------- */ typedef struct part { myts_t playtime; int chap_begin,chap_len; unsigned long frame_len,frame_off; } part_t; void find_parts(int total_chap,myts_t *chap_time,myts_t *total_time, int total_parts,part_t *parts,int verbose) { double part_secs = myts_to_secs(total_time) / (double)total_parts; double split_secs = part_secs; double last_secs; int c,p,l; myts_t sum = { 0,0,0,0 }; sum.frame_base = total_time->frame_base; /* ----- split chapters into total_parts ----- */ if(verbose) puts("finding parts:"); parts[0].chap_begin = 0; p = 1; l = 0; for(c=0;csplit_secs)&&(pframe_base; for(p=0;phour = ts->minute = ts->second = ts->frame = 0; ts->frame_base = total_time->frame_base; for(c=0;cvcd_title = out[0]; else xo->vcd_title = strdup(opt); /* VCD type */ if(out[1]!=NULL) xo->vcd_type = out[1]; else xo->vcd_type = strdup("svcd"); /* XML name pattern */ if(out[2]!=NULL) xo->xml_name_pattern = out[2]; else xo->xml_name_pattern = strdup("vcd%02d.xml"); /* video name pattern */ if(out[3]!=NULL) xo->video_name_pattern = out[3]; else xo->video_name_pattern = strdup("part%02d.mpg"); /* menu name pattern */ if(out[4]!=NULL) xo->menu_name_pattern = out[4]; else xo->menu_name_pattern = strdup("menu%02d-%d.mpg"); /* fix naming */ convert_to_dchars(xo->vcd_title); return xo; } /* free options */ void free_xml_options(xmlopt_t *xo) { if(xo->vcd_title!=NULL) free(xo->vcd_title); if(xo->vcd_type!=NULL) free(xo->vcd_type); if(xo->xml_name_pattern!=NULL) free(xo->xml_name_pattern); if(xo->video_name_pattern!=NULL) free(xo->video_name_pattern); free(xo); } /* output code for vcd imager */ int output_vcdxml_file(xmlopt_t *xo,int p,int total_parts, part_t *part,myts_t *chap_part_offset,int menu_entries, FILE *menu_fh) { FILE *fh; int c,d; char *class,*version; char *xml_name = NULL; char *video_name = NULL; char *menu_name = NULL; int xml_len = 0; int video_len = 0; int menu_len = 0; int menu_num = 0; int menu_last= 0; /* check type */ if(strcmp(xo->vcd_type,"svcd")==0) { class = "svcd"; version = "1.0"; } else if(strcmp(xo->vcd_type,"vcd")==0) { class = "vcd"; version = "2.0"; } else { fprintf(stderr,"FATAL: unknown S/VCD type (used vcd or svcd)!\n"); return 0; } /* prepare xml name */ xml_len = strlen(xo->xml_name_pattern) + 2; xml_name = (char *)malloc(xml_len * sizeof(char)); if(xml_name==NULL) return 0; snprintf(xml_name,xml_len,xo->xml_name_pattern,p); /* prepare video name */ video_len = strlen(xo->video_name_pattern) + 2; video_name = (char *)malloc(video_len * sizeof(char)); if(video_name==NULL) return 0; snprintf(video_name,video_len,xo->video_name_pattern,p); /* prepare menu name */ menu_len = strlen(xo->menu_name_pattern) + 4; menu_name = (char *)malloc(menu_len * sizeof(char)); if(menu_name==NULL) return 0; /* verbose output */ printf("writing %s '%s_%d' to XML '%s' for video '%s'\n", xo->vcd_type,xo->vcd_title,p,xml_name,video_name); /* menu setup */ if(menu_entries>0) { menu_num = part->chap_len / menu_entries; menu_last= part->chap_len % menu_entries; if(menu_last>0) menu_num++; else menu_last = menu_entries; } /* open output file */ fh = fopen(xml_name,"w"); if(fh==NULL) { fprintf(stderr,"Error opening file '%s'\n",xml_name); return 0; } /* ----- XML file ----- */ /* write header */ fprintf(fh,"\n" "\n" "\n",class,version); /* options - only for svcd */ if(strcmp(xo->vcd_type,"svcd")==0) fprintf(fh,"\n writing YUV palette to '%s' %3d %3d %3d chaplin - the DVD chapter tool for Linux written by Christian Vogelgsang $Revision: 1.10 $ $Date: 2004/03/21 17:45:44 $ Usage: chaplin -d input DVD device or image dir (default: /dev/dvd) -t select title -p split output in parts Output options: -r reset chapter numbering in each part -z start part numbering with zero not one -c show each chapter -l show chapter length (otherwise offset) -f calculate frames for given framerate Extra options: -x output XML vcd description for vcdimager -m enable XML menus with entries per page -g write chaplin menu file for chaplin-genmenu -y write YUV color table of selected title -v be verbose -h show this help and program version XML Options (-x argument): [,<vcd-type>] [,<xml_file_pattern>] [,<video_file_pattern>] [,<menu_file_pattern>] e.g.: MYMOVIE,hqvcd,my%%02d.xml,movie%%02d.mpg,menu%%d-%%d.mpg �/dev/dvd�d:t:p:x:f:vhrzcly:m:g:�����������������������������Wrong number of parts specified (1-10). ������������������������FATAL: no chapters found for title %d! �������������������������Too many parts(%d) for too few chapters(%d)! �������������������part %02d: chapters %02d-%02d frames @%06lu +%06lu playtime %s �length�begin������������������ chapter %02d %s: %10.3f %06lu %s �Error opening '%s' �writing menu info to '%s' �chaplin-menu %d �dvd "%s" title %d %s %s ���zmɦX9'Kզ��������\�������������������������g�� ���  ���p���H������ ����� ����������������d���������������X���8��� ���������o؆o���o������������������������������������������������������������p��������N^n~Έވ.>N^n~Ή�����GCC: (GNU) 3.3.3 20031206 (prerelease) (Debian)��GCC: (GNU) 3.3.3 20031206 (prerelease) (Debian)��GCC: (GNU) 3.3.3 (Debian 20040314)��GCC: (GNU) 3.3.3 (Debian 20040314)��GCC: (GNU) 3.3.3 20031206 (prerelease) (Debian)��GCC: (GNU) 3.3.3 (Debian 20040314)��GCC: (GNU) 3.3.3 20031206 (prerelease) (Debian)��������������"�����������,����( �������p���  ���"�����������$���� ����������5�����������!�����������_IO_stdin_used�����������������../sysdeps/i386/elf/start.S�/home/drow/deb-cvs/nptl/glibc-2.3.2.ds1/build-tree/glibc-2.3.2/csu�GNU AS 2.14.90.0.7�������q����� ���^��1��0�������"B��������#T��������$0�����%q�������(������K��)B�����*���O����+T�����,���int���-0���I��2���a��B��3�������;�����<���Y�������0�����0���m��q���w�������0�����0���V��a��f��a����������������#��������������~�� ��a��O��q���������M��0���N���a�����0���i��a���������a�����������������,��a����a���������q����������q���������������h������ ������� �����^�����=��0��� ��Ea�� ��b0��� ��S X��Q�� ��R���$�������I��T��N���#���S��#���T$��y�� ��V��#�{���I��#�w��T����#��!h��#�{���"I��#���#�� ��&p����u����S��T������W�������� � ��8��#���U��H�� ��R�����R��7����������������� X��7��#��<?0��u��#�%��v��#���x���#a��z��# 8��{��# ��}��#k��~��#����#9��$��# m�����#$2�����#(?�����#,�����#0�����#4����#8� =������$@����#�����#�����#�����# �����#����#{���I��#C����# � �� ��B��� �� B��� %���D��K�� ������R��B�������N�� ��$�����R�����O/�� 5��A��R�����XL�� R�������R��7�����������������]�� ������������������%��a�� �������������� ���� �� ����d �� ��$�����$����� ����e5�� ;��G�������o��BC��jA��#�/��k��#��l*��#��m��# ��n��#� G���� �� I���������%���#���R��#����#���=��������� ��.��,4h��2��#���3=��#� M��,5 h��/�� ��4 ������5.��'��7�������8�����9T�����:0�����������������5��/home/drow/deb-cvs/nptl/glibc-2.3.2.ds1/build-tree/i386-libc/csu/crti.S�/home/drow/deb-cvs/nptl/glibc-2.3.2.ds1/build-tree/glibc-2.3.2/csu�GNU AS 2.14.90.0.7�����(����/home/drow/deb-cvs/nptl/glibc-2.3.2.ds1/build-tree/i386-libc/csu/crtn.S�/home/drow/deb-cvs/nptl/glibc-2.3.2.ds1/build-tree/glibc-2.3.2/csu�GNU AS 2.14.90.0.7��%���% ���: ; I��$� > ��$� > �� : ; �� �: ; I8 ��I��!�I/ �� � I�� �: ;I��  : ; �� �: ; I��  : ; ��(� ��' I���I�� : ; ��&�I��' ��� ���< ��!�I��4�: ; I?  ����%����%���S����/��� ����../sysdeps/i386/elf��start.S�����.01:"VWYX�������� ������������� ����/usr/lib/gcc-lib/i486-linux/3.3.3/include�../sysdeps/generic/bits�../wcsmbs�../sysdeps/gnu�../iconv��init.c����stddef.h���types.h���wchar.h���_G_config.h���gconv.h��������[��� ����/home/drow/deb-cvs/nptl/glibc-2.3.2.ds1/build-tree/i386-libc/csu��crti.S�����p2,Wd�� ",:�� ,Wdd,,-:�����[��� ����/home/drow/deb-cvs/nptl/glibc-2.3.2.ds1/build-tree/i386-libc/csu��crtn.S�����:��5 �_G_int32_t�/home/drow/deb-cvs/nptl/glibc-2.3.2.ds1/build-tree/glibc-2.3.2/csu�__time_t�__GCONV_INCOMPLETE_INPUT�__GCONV_OK�__state�__gconv_init_fct�_G_iconv_t�__rlim64_t�__GCONV_ILLEGAL_DESCRIPTOR�__gconv_info�short unsigned int�unsigned char�__useconds_t�__counter�__fct�__val�__value�__nsteps�_G_int16_t�__max_needed_from�__gconv_btowc_fct�__off_t�GNU C 3.3.3 20031206 (prerelease) (Debian)�__ssize_t�__statep�init.c�__fsfilcnt_t�__steps�__fsfilcnt64_t�__blkcnt_t�__gconv_loaded_object�_G_fpos64_t�__gconv_t�__trans_end_fct�__u_int�__GCONV_ILLEGAL_INPUT�__blksize_t�__to_name�__uint64_t�__id_t�__GCONV_EMPTY_INPUT�__cd�__ino_t�__GCONV_NOCONV�__invocation_counter�__pid_t�__u_short�__count�__quad_t�__u_long�__fsid_t�__GCONV_FULL_OUTPUT�__max_needed_to�__timer_t�__stateful�__uint32_t�__key_t�__u_char�__gconv_step�__shlib_handle�__min_needed_to�short int�__dev_t�long long int�__gconv_trans_data�__outbuf�long long unsigned int�__uid_t�__wchb�__uint16_t�wint_t�__u_quad_t�__gconv_trans_end_fct�__flags�__outbufend�__combined�__gconv_trans_init_fct�__init_fct�__modname�__trans_context_fct�__trans_fct�__rlim_t�__wch�__intptr_t�__suseconds_t�__ino64_t�wchar_t�__GCONV_IS_LAST�__blkcnt64_t�__fsblkcnt64_t�__mode_t�__qaddr_t�__pos�__gconv_end_fct�_IO_stdin_used�__internal_use�__GCONV_NODB�__clock_t�__gconv_step_data�__gconv_trans_query_fct�__socklen_t�__int64_t�__GCONV_NOMEM�__off64_t�__btowc_fct�_G_fpos_t�__int8_t�__daddr_t�__fsblkcnt_t�_G_uint32_t�__nlink_t�__swblk_t�__GCONV_INTERNAL_ERROR�__mbstate_t�__gid_t�__clockid_t�__int32_t�__gconv_trans_context_fct�__next�__GCONV_IGNORE_ERRORS�__end_fct�__trans�__uint8_t�__gconv_fct�__from_name�__min_needed_from�__gconv_trans_fct�__data�__caddr_t�_G_uint16_t�__loff_t�__int16_t��.symtab�.strtab�.shstrtab�.interp�.note.ABI-tag�.hash�.dynsym�.dynstr�.gnu.version�.gnu.version_r�.rel.dyn�.rel.plt�.init�.text�.fini�.rodata�.data�.eh_frame�.dynamic�.ctors�.dtors�.jcr�.got�.bss�.comment�.debug_aranges�.debug_pubnames�.debug_info�.debug_abbrev�.debug_line�.debug_str�����������������������������������������������������������������������#���������((�� ������������������1���������HH��8���������������7��� ��������p��������������?����������������������������G���o�����N����������������T���o���؆��`����������������c��� ������88�� ����������������l��� ������XX�������� ���������u���������  ��������������������p���������88������������������{��������� ��#��������������������������pp-�����������������������������-������������ ����������������``>�� ���������������������������ll>�����������������������������pp>���������������������������PP?�����������������������������XX?�����������������������������``?�����������������������������dd?��t��������������������������?����������������������������������?��0�������������������������������A��x��������������������������������A��%��������������������������������A�� �������������������������������-L��8������������������������������eM��c����������������������0�������O��������������������������������V���������������������������������\��` �� ���S��������� ��������������0f��l�����������������������������������������������(����������H����������������������������������������؆����������8����������X����� ����� ����� �����8����� ���������� �����p����� ���������������`����������l����������p����������P����������X����������`����������d����������������������������������������������������������������������������������������������������������������������������������������������������������� �������������������������������������V������������a������������l������������a������������������������a������������������������������������������������V������������a�����������������������������������������������N�����������������������������������������������������������V������������������������Y������� �i�����������t��P��������X��������`��������h���������������0����� ���p����� �i�������������T��������\��������l��������`��������@����� �����������������������N����������������������������������������������������������V�����������������������a�����������k�� �����q�� ���� ���HH�������Xg�������p�������hW����������� ���x?��������*'���� ����������#������������ ���`�������d�����$��P���� �4�������D�� ����� �J�������\��H��� �o������������� ���g���� ���L���� �������� ���F��������Ȉ��������/#��� ���؈!��������ۛm���� � ��`�������T���� �,�������8��Q ��� �=��������Z��`�����k��&���� ���`���� �������� ���9��������p����� ������������������(;��������O���� ���8��������H*������ ���������0���� �+��d�����A��X������Q�������V��h������i��x6������z��`���������������������4��������W���� ���m��������`���������������� �����q��������b������������,��R��� �7��ɘ���� �M���������� ���\��ȉ+�������<command line>�/home/drow/deb-cvs/nptl/glibc-2.3.2.ds1/build-tree/i386-libc/config.h�<built-in>�abi-note.S�/home/drow/deb-cvs/nptl/glibc-2.3.2.ds1/build-tree/i386-libc/csu/abi-tag.h�init.c�/home/drow/deb-cvs/nptl/glibc-2.3.2.ds1/build-tree/i386-libc/csu/crti.S�/home/drow/deb-cvs/nptl/glibc-2.3.2.ds1/build-tree/i386-libc/csu/defs.h�initfini.c�call_gmon_start�crtstuff.c�__CTOR_LIST__�__DTOR_LIST__�__JCR_LIST__�p.0�completed.1�__do_global_dtors_aux�frame_dummy�__CTOR_END__�__DTOR_END__�__FRAME_END__�__JCR_END__�__do_global_ctors_aux�/home/drow/deb-cvs/nptl/glibc-2.3.2.ds1/build-tree/i386-libc/csu/crtn.S�chaplin.c�buf.0�myts_to_frames�DVDOpen�strchr@@GLIBC_2.0�_DYNAMIC�strdup@@GLIBC_2.0�parse_xml_options�strcmp@@GLIBC_2.0�usage�_fp_hw�fprintf@@GLIBC_2.0�myts_convert�__fini_array_end�__dso_handle�__libc_csu_fini�puts@@GLIBC_2.0�_init�malloc@@GLIBC_2.0�output_vcdxml_file�stderr@@GLIBC_2.0�convert_to_dchars�myts_to_secs�myts_to_string�_start�getopt@@GLIBC_2.0�strlen@@GLIBC_2.0�read_chapters�atof@@GLIBC_2.0�free_xml_options�__fini_array_start�__libc_csu_init�__bss_start�main�__libc_start_main@@GLIBC_2.0�__init_array_end�calc_frames_per_part�data_start�myts_add_to�printf@@GLIBC_2.0�_fini�fclose@@GLIBC_2.1�ifoClose�snprintf@@GLIBC_2.0�output_palette�exit@@GLIBC_2.0�atoi@@GLIBC_2.0�_edata�__i686.get_pc_thunk.bx�_GLOBAL_OFFSET_TABLE_�free@@GLIBC_2.0�_end�strncpy@@GLIBC_2.0�fopen@@GLIBC_2.1�__init_array_start�optarg@@GLIBC_2.0�_IO_stdin_used�sprintf@@GLIBC_2.0�myts_is_equal�DVDClose�__data_start�_Jv_RegisterClasses�__ctype_b_loc@@GLIBC_2.3�ifoOpen�optind@@GLIBC_2.0�find_parts�calc_chap_part_offset�__gmon_start__�ceil@@GLIBC_2.0�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������