[Mplayer-cvslog] CVS: main mplayer.c,1.72,1.73
GEREOFFY
arpi_esp at users.sourceforge.net
Tue Apr 17 02:08:58 CEST 2001
Update of /cvsroot/mplayer/main
In directory usw-pr-cvs1:/tmp/cvs-serv1762
Modified Files:
mplayer.c
Log Message:
sub control optimized
Index: mplayer.c
===================================================================
RCS file: /cvsroot/mplayer/main/mplayer.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -C2 -r1.72 -r1.73
*** mplayer.c 2001/04/16 03:31:34 1.72
--- mplayer.c 2001/04/17 00:08:56 1.73
***************
*** 95,104 ****
static subtitle* subtitles=NULL;
! void find_sub(unsigned long key){
int i,j;
! if(current_sub<0 || current_sub>=sub_num) current_sub=0;
! vo_sub=&subtitles[current_sub];
! if(key>=vo_sub->start && key<=vo_sub->end) return; // OK!
// use logarithmic search:
i=0;j=sub_num-1;
--- 95,129 ----
static subtitle* subtitles=NULL;
+ static int nosub_range_start=-1;
+ static int nosub_range_end=-1;
! void find_sub(int key){
int i,j;
! if(vo_sub){
! if(key>=vo_sub->start && key<=vo_sub->end) return; // OK!
! } else {
! if(key>nosub_range_start && key<nosub_range_end) return; // OK!
! }
! // sub changed!
!
! // printf("\r---- sub changed ----\n");
!
! // check next sub.
! if(current_sub>=0 && current_sub+1<sub_num){
! if(key>subtitles[current_sub].end && key<subtitles[current_sub+1].start){
! // no sub
! nosub_range_start=subtitles[current_sub].end;
! nosub_range_end=subtitles[current_sub+1].start;
! vo_sub=NULL;
! return;
! }
! // next sub?
! ++current_sub;
! vo_sub=&subtitles[current_sub];
! if(key>=vo_sub->start && key<=vo_sub->end) return; // OK!
! }
!
! // printf("\r---- sub log search... ----\n");
!
// use logarithmic search:
i=0;j=sub_num-1;
***************
*** 106,118 ****
while(j>=i){
current_sub=(i+j+1)/2;
! if(key<subtitles[current_sub].start)
! j=current_sub-1;
! else
! if(key>subtitles[current_sub].end)
! i=current_sub+1;
! else break; // found!
}
! vo_sub=&subtitles[current_sub];
! if(key>=vo_sub->start && key<=vo_sub->end) return; // OK!
vo_sub=NULL; // no sub here
}
--- 131,183 ----
while(j>=i){
current_sub=(i+j+1)/2;
! vo_sub=&subtitles[current_sub];
! if(key<vo_sub->start) j=current_sub-1;
! else if(key>vo_sub->end) i=current_sub+1;
! else return; // found!
}
! // if(key>=vo_sub->start && key<=vo_sub->end) return; // OK!
!
! // check where are we...
! if(key<vo_sub->start){
! if(current_sub<=0){
! // before the first sub
! nosub_range_start=key-1; // tricky
! nosub_range_end=vo_sub->start;
! // printf("FIRST... key=%d end=%d \n",key,vo_sub->start);
! vo_sub=NULL;
! return;
! }
! --current_sub;
! if(key>subtitles[current_sub].end && key<subtitles[current_sub+1].start){
! // no sub
! nosub_range_start=subtitles[current_sub].end;
! nosub_range_end=subtitles[current_sub+1].start;
! // printf("No sub... 1 \n");
! vo_sub=NULL;
! return;
! }
! printf("HEH???? ");
! } else {
! if(key<=vo_sub->end) printf("JAJJ! "); else
! if(current_sub+1>=sub_num){
! // at the end?
! nosub_range_start=vo_sub->end;
! nosub_range_end=0x7FFFFFFF; // MAXINT
! // printf("END!?\n");
! vo_sub=NULL;
! return;
! } else
! if(key>subtitles[current_sub].end && key<subtitles[current_sub+1].start){
! // no sub
! nosub_range_start=subtitles[current_sub].end;
! nosub_range_end=subtitles[current_sub+1].start;
! // printf("No sub... 2 \n");
! vo_sub=NULL;
! return;
! }
! }
!
! printf("SUB ERROR: %d ? %d --- %d [%d] \n",key,vo_sub->start,vo_sub->end,current_sub);
!
vo_sub=NULL; // no sub here
}
***************
*** 1920,1924 ****
--- 1985,1991 ----
if(subtitles){
if(sub_fps==0) sub_fps=sh_video->fps;
+ current_module="find_sub";
find_sub(sub_uses_time?(100*(v_pts+sub_delay)):((v_pts+sub_delay)*sub_fps)); // FIXME! frame counter...
+ current_module=NULL;
}
}
_______________________________________________
Mplayer-cvslog mailing list
Mplayer-cvslog at lists.sourceforge.net
http://lists.sourceforge.net/lists/listinfo/mplayer-cvslog
More information about the MPlayer-cvslog
mailing list