mirror of
https://github.com/mpv-player/mpv
synced 2025-02-16 20:27:23 +00:00
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:
parent
020fe6ff75
commit
015ba173a1
14
vobsub.c
14
vobsub.c
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user