diff options
author | ulion <ulion@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-12-11 10:12:58 +0000 |
---|---|---|
committer | ulion <ulion@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-12-11 10:12:58 +0000 |
commit | 4c6a12e619496d3409ff913208acdf7598624c01 (patch) | |
tree | ccae5c5f2d3c1aa1fb864d7610333ca1e4ac48d8 /vobsub.c | |
parent | 8f363e73d7252616ece9d8e71fd47169d40831ee (diff) | |
download | mpv-4c6a12e619496d3409ff913208acdf7598624c01.tar.bz2 mpv-4c6a12e619496d3409ff913208acdf7598624c01.tar.xz |
Fix spudec to display current vobsub immediately after a seek.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25350 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'vobsub.c')
-rw-r--r-- | vobsub.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -1297,6 +1297,22 @@ vobsub_get_packet(void *vobhandle, float pts,void** data, int* timestamp) { unsigned int pts100 = 90000 * pts; if (vob->spu_streams && 0 <= vobsub_id && (unsigned) vobsub_id < vob->spu_streams_size) { packet_queue_t *queue = vob->spu_streams + vobsub_id; + + int reseek_count = 0; + unsigned int lastpts = 0; + while (queue->current_index < queue->packets_size + && queue->packets[queue->current_index].pts100 <= pts100) { + lastpts = queue->packets[queue->current_index].pts100; + ++queue->current_index; + ++reseek_count; + } + while (reseek_count--) { + --queue->current_index; + if (queue->packets[queue->current_index-1].pts100 != UINT_MAX && + queue->packets[queue->current_index-1].pts100 != lastpts) + break; + } + while (queue->current_index < queue->packets_size) { packet_t *pkt = queue->packets + queue->current_index; if (pkt->pts100 != UINT_MAX) |