[MPlayer-G2-dev] a-v sync again
    Arpi 
    arpi at thot.banki.hu
       
    Fri May  9 01:22:46 CEST 2003
    
    
  
Hi,
I've introduced pts_bytes in dp (demux_packet struct), as the initializer
value for ds->pts_bytes, it solved vob's lpcm/ac3 pts delay problems.
Thanks to Vektor for tips :)
Anyway mpeg audio is still inaccurate, unless I delay PTS to the next
compelte audio header. And PTS is still for teh end of frame, not the start.
I think i can't avoid introducing some flags into ds struct, describing the
timing/PTS behaviour for teh given container/stream format.
It could solve such problems for long period.
(but gives some confitions which means more testing and less generic code :(()
Btw now that PTS calculation is abouut 100 times more precise, than in g1,
a new problem raised: waveing.
Now the correction loop works this way, done after each displayed frame:
  AV_delay=a_pts-v_pts-delay;
  x=AV_delay*0.1;
  if(x<-max_pts_correction) x=-max_pts_correction; else
  if(x> max_pts_correction) x= max_pts_correction;
  delay+=x;
It worked fine in g1, but now, with accurate PTS values, it is waving,
when AV_delay!=0.0:
As AV_delay>0, x>0, delay is increased, it starts decreasing AV_delay but it
is decreased faster than should so it goes negative. then x<=0, resulting
AV_delay increasing again, and so on. in a few (10-20) secs it stabilizes
around 0, but this is not good. For big initial AV_delay (like 330ms for
some LCPM VOBs) it just keep waving for a minute.
I guess the silly (found by trial&error) x=AV_delay*0.1; eq. should be
replaced by something better, probably something using pow().
It could also help to do smaller corrections for small AV_delay and big
corrections (faster reaction) to big delay, and avoid waving at the same
time. Anyone with better math background, could suggest sth good? :)
A'rpi / Astral & ESP-team
--
Developer of MPlayer, the Movie Player for Linux - http://www.MPlayerHQ.hu
    
    
More information about the MPlayer-G2-dev
mailing list