[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[225] mplayerxp
Brought to you by:
olov
From: <nic...@us...> - 2012-10-27 10:31:06
|
Revision: 225 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=225&view=rev Author: nickols_k Date: 2012-10-27 10:31:00 +0000 (Sat, 27 Oct 2012) Log Message: ----------- fix seeking Modified Paths: -------------- mplayerxp/mplayer.c mplayerxp/xmp_core.c mplayerxp/xmp_core.h Modified: mplayerxp/mplayer.c =================================================================== --- mplayerxp/mplayer.c 2012-10-27 09:28:35 UTC (rev 224) +++ mplayerxp/mplayer.c 2012-10-27 10:31:00 UTC (rev 225) @@ -1248,9 +1248,8 @@ if(xp_core.eof && final_frame) return 1; can_blit=dae_try_inc_played(xp_core.video); /* <-- TRY SWITCH TO NEXT FRAME */ - shva=dae_played_fra(xp_core.video); + shva=dae_next_played_fra(xp_core.video); v_pts = shva.v_pts; - /*------------------------ frame decoded. --------------------*/ /* blit frame */ @@ -1435,6 +1434,12 @@ } } } + + if(sh_video) { + do { + usleep(0); + }while(dae_get_decoder_outrun(xp_core.video) < xp_core.num_v_buffs/2 && !xp_core.eof); + } } void mpxp_reset_vcache(void) Modified: mplayerxp/xmp_core.c =================================================================== --- mplayerxp/xmp_core.c 2012-10-27 09:28:35 UTC (rev 224) +++ mplayerxp/xmp_core.c 2012-10-27 10:31:00 UTC (rev 225) @@ -18,6 +18,7 @@ #include <malloc.h> #endif #define DA_PREFIX "DEC_AHEAD:" + #include "xmp_core.h" #include "mplayer.h" #include "libao2/audio_out.h" @@ -100,7 +101,6 @@ it->num_slow_frames++; return 0; } - it->player_idx=new_idx; it->num_slow_frames=0; it->num_played_frames++; return 1; @@ -143,6 +143,22 @@ unsigned idx=it->decoder_idx; return it->fra[idx]; } +frame_attr_t dae_next_played_fra(const dec_ahead_engine_t* it) { + unsigned idx=dae_next_played(it); + return it->fra[idx]; +} +frame_attr_t dae_next_decoded_fra(const dec_ahead_engine_t* it) { + unsigned idx=dae_next_decoded(it); + return it->fra[idx]; +} +frame_attr_t dae_prev_played_fra(const dec_ahead_engine_t* it) { + unsigned idx=dae_prev_played(it); + return it->fra[idx]; +} +frame_attr_t dae_prev_decoded_fra(const dec_ahead_engine_t* it) { + unsigned idx=dae_prev_decoded(it); + return it->fra[idx]; +} pthread_mutex_t audio_play_mutex=PTHREAD_MUTEX_INITIALIZER; pthread_cond_t audio_play_cond=PTHREAD_COND_INITIALIZER; @@ -359,6 +375,7 @@ /* Ugly solution: disable frame dropping right after seeking! */ if(cur_time - mpxp_seek_time > (xp_core.num_v_buffs/sh_video->fps)*100) xp_n_frame_to_drop=compute_frame_dropping(v_pts,drop_barrier); } /* if( mp_conf.frame_dropping ) */ + if(!finite(v_pts)) MSG_WARN("Bug of demuxer! Value of video pts=%f\n",v_pts); #if 0 /* We can't seriously examine question of too slow machines Modified: mplayerxp/xmp_core.h =================================================================== --- mplayerxp/xmp_core.h 2012-10-27 09:28:35 UTC (rev 224) +++ mplayerxp/xmp_core.h 2012-10-27 10:31:00 UTC (rev 225) @@ -119,8 +119,11 @@ extern frame_attr_t dae_played_fra(const dec_ahead_engine_t* it); extern frame_attr_t dae_decoded_fra(const dec_ahead_engine_t* it); +extern frame_attr_t dae_next_played_fra(const dec_ahead_engine_t* it); +extern frame_attr_t dae_next_decoded_fra(const dec_ahead_engine_t* it); +extern frame_attr_t dae_prev_played_fra(const dec_ahead_engine_t* it); +extern frame_attr_t dae_prev_decoded_fra(const dec_ahead_engine_t* it); - extern pthread_mutex_t audio_play_mutex; extern pthread_cond_t audio_play_cond; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |