[Mplayerxp-cvslog] CVS: mplayerxp/mplayerxp dec_ahead.c,1.59,1.60 mplayer.c,1.102,1.103
Brought to you by:
olov
From: Nick K. <nic...@us...> - 2003-01-29 08:31:07
|
Update of /cvsroot/mplayerxp/mplayerxp/mplayerxp In directory sc8-pr-cvs1:/tmp/cvs-serv30306/mplayerxp Modified Files: dec_ahead.c mplayer.c Log Message: Disable early framedropping! This model will even not start framedropping in many cases (on relatively fast machines) On relatively slow machines this model will drop big series of frames but anyway will try restore A-V sync faster than without framedropping. Index: dec_ahead.c =================================================================== RCS file: /cvsroot/mplayerxp/mplayerxp/mplayerxp/dec_ahead.c,v retrieving revision 1.59 retrieving revision 1.60 diff -u -d -r1.59 -r1.60 --- dec_ahead.c 16 Jan 2003 22:55:56 -0000 1.59 +++ dec_ahead.c 29 Jan 2003 08:31:03 -0000 1.60 @@ -134,7 +134,6 @@ float broken_frame_time=0; // Frametime for skipped broken frames int blit_frame=0; int drop_param=0; - int can_skip_dropping; volatile unsigned da_active_frame,lda_active_frame,ada_active_frame; int xp_id; pthread_is_living=1; @@ -236,18 +235,6 @@ if(verbose) MSG_T("\nDEC_AHEAD: set frame %u\n",dec_ahead_locked_frame); #endif - /* ------- compute frame dropping --------------*/ - if(xp_n_frame_to_drop && xp_drop_frame) - { - /* Adaptive frame dropping */ - /* means we should evenly redistribute number of frame - to be dropped within of buffers of decoding ahead */ - if(xp_n_frame_to_drop >= xp_num_frames) can_skip_dropping=0; - else can_skip_dropping=xp_num_frames%xp_n_frame_to_drop?0:1; - MSG_T("xp_num_frames=%u xp_n_f_to_dr=%u can_skip_dr=%i\n" - ,xp_num_frames,xp_n_frame_to_drop,can_skip_dropping); - } - else can_skip_dropping=1; /* ------------ sleep --------------- */ LOCK_VDEC_ACTIVE(); ada_active_frame= abs_dec_ahead_active_frame; @@ -286,7 +273,7 @@ for(i=0;i<delay;i++) usleep(0); } #endif - drop_param = can_skip_dropping?0:xp_drop_frame; + drop_param = xp_drop_frame; /* decode: */ MSG_T("\nDEC_AHEAD: decode to %u (abs (blitted(%u)>=active+xp-2(%u)))\n" ,abs_dec_ahead_blitted_frame,abs_dec_ahead_locked_frame,lda_active_frame+xp_num_frames-2); @@ -305,11 +292,8 @@ { if(drop_param) set_video_quality(&sh_video,output_quality); } - if(!can_skip_dropping) - { - xp_drop_frame_cnt++; - xp_n_frame_to_drop--; - } + xp_drop_frame_cnt++; + xp_n_frame_to_drop--; UNLOCK_VDECODING(); if(dec_ahead_in_resize) { Index: mplayer.c =================================================================== RCS file: /cvsroot/mplayerxp/mplayerxp/mplayerxp/mplayer.c,v retrieving revision 1.102 retrieving revision 1.103 diff -u -d -r1.102 -r1.103 --- mplayer.c 28 Jan 2003 08:57:47 -0000 1.102 +++ mplayer.c 29 Jan 2003 08:31:04 -0000 1.103 @@ -1462,6 +1462,7 @@ LOCK_VDEC_ACTIVE(); abs_dec_ahead_active_frame++; UNLOCK_VDEC_ACTIVE(); + if(frame_dropping) /* ----- compute frame dropping ----------*/ { unsigned max_frame_delay=0; /* delay for decoding of top slow frame */ @@ -1474,10 +1475,10 @@ ada_locked_frame = abs_dec_ahead_locked_frame; UNLOCK_VDEC_LOCKED(); n_frames_to_drop=0; + max_frame_delay = (max_video_time_usage+max_vout_time_usage)*vo_fps; /* note: Arpi allows 100 ms of delay before frame dropping. we will allows 6 frames of delay (that's the for 25 fps) */ - if(frame_dropping && - abs_dec_ahead_active_frame+xp_num_frames-6 > ada_locked_frame && + if(abs_dec_ahead_active_frame+6*max_frame_delay > ada_locked_frame && !xp_eof) { int cur_time; @@ -1488,7 +1489,6 @@ if(!prev_n_fr) prev_n_fr=abs_dec_ahead_active_frame+xp_num_frames-ada_locked_frame; goto avoid_dropping; } - max_frame_delay = (max_video_time_usage+max_vout_time_usage)*vo_fps; cur_time = GetTimerMS(); /* Ugly solution: disable frame dropping right after seeking! */ if(cur_time - mpxp_seek_time > (xp_num_frames/vo_fps)*100) |