Mercurial > mplayer.hg
changeset 26733:99458e732ebd
Add detection code for abnormal pts jump when seeking previous.
This patch make the vobsub works more accurately according to the requested pts.
author | ulion |
---|---|
date | Wed, 14 May 2008 03:43:45 +0000 |
parents | 401426ba1ecf |
children | c56679b43d27 |
files | vobsub.c |
diffstat | 1 files changed, 14 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/vobsub.c Wed May 14 03:37:03 2008 +0000 +++ b/vobsub.c Wed May 14 03:43:45 2008 +0000 @@ -1284,6 +1284,20 @@ static void vobsub_queue_reseek(packet_queue_t *queue, unsigned int pts100) { int reseek_count = 0; unsigned int lastpts = 0; + + if (queue->current_index > 0 + && (queue->packets[queue->current_index].pts100 == UINT_MAX + || queue->packets[queue->current_index].pts100 > pts100)) { + // possible pts seek previous, try to check it. + int i = 1; + while (queue->current_index >= i + && queue->packets[queue->current_index-i].pts100 == UINT_MAX) + ++i; + if (queue->current_index >= i + && queue->packets[queue->current_index-i].pts100 > pts100) + // pts seek previous confirmed, reseek from beginning + queue->current_index = 0; + } while (queue->current_index < queue->packets_size && queue->packets[queue->current_index].pts100 <= pts100) { lastpts = queue->packets[queue->current_index].pts100;