Add detection code for abnormal pts jump when seeking previous.

This patch make the vobsub works more accurately according to the requested pts.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26765 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
ulion 2008-05-14 03:43:45 +00:00
parent 020fe6ff75
commit 015ba173a1
1 changed files with 14 additions and 0 deletions

View File

@ -1284,6 +1284,20 @@ vobsub_set_from_lang(void *vobhandle, unsigned char * lang)
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;