[MPlayer-dev-eng] r32056 Causes Loss of A/V Sync with VOB files

Steaphan Greene sgreene at cs.binghamton.edu
Sun Jun 19 20:38:52 CEST 2011


I have made some further progress on this.


First, I went through the old mailing list archives and SVN history and
discovered that this code was specifically introduced to fix a bug in
r32055, then moved into the right place in r32056, so it seemed that
that don't won't solve this problem.


However, in further tracing the problem, I found that this error occurs
with all my problem VOBs every time it hits this case at lines 637-639
in libmpdemux/video.c (in current SVN, r33672):

        if(picture_coding_type<=2 && sh_video->i_pts){
            sh_video->pts=sh_video->i_pts;
            sh_video->i_pts=pts;
        }

I've confirmed that every time this case runs, it cases the "bad" code
("sh_video->pts = pts;") to run in mplayer.c, and vice-versa (1-1).

So, it seems that the problem may really be this one special case in
libmpdemux/video.c, for at least MPEG2.  That seems right, as this case
modifies the sh_video->pts value, but not the frame_time value, making
them no longer equivalent.  The suspect code in mplayer.c detects this
as a bad pts, and overrides it based on the frame_time, when the pts is
actually the correct value.

Since frame_time is apparently used elsewhere for other things, it's not
as simple as correcting frame_time in this one case (Of course, I tried
that).  Unfortunately, I'm stumped as to the solution here.  Does anyone
who understands this code better know how this should be fixed?

Thanks!

-- 
Steaphan Greene <sgreene at cs.binghamton.edu>
Lecturer, Computer Science, Binghamton University
GPG public key: http://www.cs.binghamton.edu/~sgreene/gpg.key.txt


More information about the MPlayer-dev-eng mailing list