<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2722.900" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Hi, </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Ive played around a&nbsp;bit with mplayer and got 
some mixed feelings about it.</FONT></DIV>
<DIV><FONT face=Arial size=2>Its a great player, supports many codecs and 
maintains perfect avsync for most files</FONT></DIV>
<DIV><FONT face=Arial size=2>but the downside is that video is played back a bit 
jerky (not smooth)</FONT></DIV>
<DIV><FONT face=Arial size=2>I believe this is caused by the fact that mplayer 
tries to keep a perfect av sync. In order to do this</FONT></DIV>
<DIV><FONT face=Arial size=2>it has to render frames&nbsp;too early or too late. 
</FONT></DIV>
<DIV><FONT face=Arial size=2>In fact I mp_msg() the frames rendered&nbsp;too 
early/late and the fps count and indeed the frames rendered too early/late is 
increasing constantly</FONT></DIV>
<DIV><FONT face=Arial size=2>and fps isn't very stable (25 fps encoded movie is 
jumping around 24.1 fps &amp; 25.8 fps)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>After tweaking around a bit I managed to get the 
playback much smoother while keeping a good a/v sync</FONT></DIV>
<DIV><FONT face=Arial size=2>for this I had to change the sleep algorithm in 
mplayer a bit.</FONT></DIV>
<DIV><FONT face=Arial size=2>I&nbsp;used is something like this (pseudo 
code)</FONT></DIV>
<DIV><FONT face=Arial size=2>maybe something like this can b added 2 mplayer 
either always on, or as an extra -smoothness option?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>//============================== SLEEP: 
===================================</FONT></DIV>
<DIV><FONT face=Arial size=2>time_frame/=playback_speed;</FONT></DIV>
<DIV><FONT face=Arial size=2>// if av delays is &gt; 40 msec then use mplayers 
current algo to get better av sync</FONT></DIV>
<DIV><FONT face="Courier New" size=2>if (avdelay &lt;= -0.04 || avdelay 
&gt;=0.04)</FONT></DIV>
<DIV><FONT face="Courier New" size=2>{</FONT></DIV>
<DIV><FONT face="Courier New" size=2>&nbsp;&nbsp;&nbsp; //use mplayers current 
sleep algorithm to correct the av sync</FONT></DIV>
<DIV><FONT face="Courier New" size=2>&nbsp;&nbsp;&nbsp; if(time_frame&gt;0.001 
&amp;&amp; 
!(vo_flags&amp;256))<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
while (time_frame &gt; 0.000) 
time_frame-=GetRelativeTime();<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}</FONT></DIV>
<DIV><FONT face="Courier New" size=2>else</FONT></DIV>
<DIV><FONT face="Courier New" size=2>{</FONT></DIV>
<DIV><FONT face="Courier New" size=2>&nbsp;&nbsp;&nbsp; // av sync is within 40 
msec, goto smoothness mode</FONT></DIV>
<DIV><FONT face="Courier New" size=2>&nbsp;&nbsp;&nbsp;&nbsp;// and output each 
frame exactly on time</FONT></DIV>
<DIV><FONT face="Courier New" size=2>&nbsp;&nbsp;&nbsp; if (!drop_frame 
&amp;&amp; !frame_time_remaining &amp;&amp; 
blit_frame)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float 
j4 = ((float)(GetTimer() - lastframeout_ts)) / 
1000000.0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(&nbsp;&nbsp;j4 &lt; 
frame_time)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;j4 = ((float)(GetTimer() - 
lastframeout_ts)) / 1000000.0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;time_frame-=GetRelativeTime(); // burn the 
CPU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></DIV>
<DIV><FONT face="Courier New" size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
if (j4 &gt;= frame_time) break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}</FONT></DIV>
<DIV><FONT face="Courier New" size=2>&nbsp;&nbsp;&nbsp; sh_video-&gt;timer -= 
time_frame;<BR>&nbsp;&nbsp;&nbsp;&nbsp;d_video-&gt;pts -= 
time_frame;<BR>}</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Frodo</FONT></DIV></BODY></HTML>