[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