summaryrefslogtreecommitdiffstats
path: root/vobsub.c
diff options
context:
space:
mode:
authorulion <ulion@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-12-11 10:12:58 +0000
committerulion <ulion@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-12-11 10:12:58 +0000
commit4c6a12e619496d3409ff913208acdf7598624c01 (patch)
treeccae5c5f2d3c1aa1fb864d7610333ca1e4ac48d8 /vobsub.c
parent8f363e73d7252616ece9d8e71fd47169d40831ee (diff)
downloadmpv-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.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/vobsub.c b/vobsub.c
index d76f744d79..ce804c3b77 100644
--- a/vobsub.c
+++ b/vobsub.c
@@ -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)