[MPlayer-dev-eng] enhancement for yuv4mpeg output driver

Trent Piepho xyzzy at speakeasy.org
Thu Jan 20 22:51:20 CET 2005

On Thu, 20 Jan 2005, Michael Niedermayer wrote:
> see the attached file, which checks this by brute force

It is nice that you really check that av_d2q works instead of just stating it
must be so.

However, your test cheated at one thing!  The fps value is passed to the vo
driver via a float global variable.  You passed the fps value (a/(double)b)
directly to av_d2q, this allows gcc to leave the floating point number in a
register and give you extra precision.

Try this little change to make it a fair comparison:

@@ -12,0 +13,2 @@
+float vo_fps;
@@ -22 +24,2 @@
-            q= av_d2q(a/(double)b, MAXI);
+            vo_fps = a/(double)b;
+            q= av_d2q(vo_fps, MAXI);

Now you find many many cases where av_d2q fails!  Such as these, after raising
MAXI to 60000:
23993/1001 -> 29410/1227
23997/1001 -> 36439/1520
24000/1001 -> 31001/1293   Where I have seen this before???
24001/1001 -> 26087/1088
24004/1001 -> 46809/1952

More information about the MPlayer-dev-eng mailing list