dvd seeking -> subtitle disappearing bugs fixed

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@3745 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
arpi 2001-12-25 20:32:02 +00:00
parent e2b276840a
commit 4b08102347
3 changed files with 15 additions and 2 deletions

View File

@ -2115,6 +2115,10 @@ if(rel_seek_secs || abs_seek_pos){
drop_frame_cnt=0;
too_slow_frame_cnt=0;
too_fast_frame_cnt=0;
#ifdef USE_DVDREAD
if(vo_spudec) spudec_reset(vo_spudec);
#endif
}
rel_seek_secs=0;
abs_seek_pos=0;

View File

@ -284,9 +284,10 @@ void spudec_assemble(void *this, unsigned char *packet, int len, int pts100)
}
} else {
// Continue current fragment
if (spu->packet_size < spu->packet_offset + len)
if (spu->packet_size < spu->packet_offset + len){
fprintf(stderr,"invalid fragment\n");
else {
spu->packet_size = spu->packet_offset = 0;
} else {
memcpy(spu->packet + spu->packet_offset, packet, len);
spu->packet_offset += len;
}
@ -297,6 +298,13 @@ void spudec_assemble(void *this, unsigned char *packet, int len, int pts100)
}
}
void spudec_reset(void *this) // called after seek
{
spudec_handle_t *spu = (spudec_handle_t*)this;
spu->now_pts = -1;
spu->packet_size = spu->packet_offset = 0;
}
void spudec_heartbeat(void *this, int pts100)
{
((spudec_handle_t *)this)->now_pts = pts100;

View File

@ -9,6 +9,7 @@ void spudec_assemble(void *this, unsigned char *packet, int len, int pts100);
void spudec_draw(void *this, void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
void *spudec_new(dvd_priv_t *dvd_info);
void spudec_free(void *this);
void spudec_reset(void *this); // called after seek
#endif
#endif