[FFmpeg-devel] [RFC] Make swscale-test perform only one convertion

Stefano Sabatini stefano.sabatini-lala
Fri Jan 29 01:52:23 CET 2010


Hi all,

this is meant to simplify the testing/debuggin work in lsws, and
provide a basis for a future lswstest rule, often it happens that I
need to test/debug only a particular conversion, I was using the scale
lavfi filter for this but it is way easier this way.

I expected the new result to be different from the old one as the
random source is different, but I noted that the new result is almost
always *worse* than the old one (that is the output obtained with
the old swscale-test), can someone explain?

Here it follows a sample of diff -u swscale.test.oldres swscale.test.newres:

--- swscale.test.ref     2010-01-23 00:50:06.000000000 +0100
+++ swscale.test.ref.new 2010-01-29 01:32:51.000000000 +0100
@@ -90,19 +90,19 @@
  yuv420p 96x96 -> yuyv422   96x 128 flags= 8 SSD=    0,    0,    0,    0
  yuv420p 96x96 -> yuyv422   96x 128 flags=16 SSD=    0,    0,    0,    0
  yuv420p 96x96 -> yuyv422   96x 128 flags=32 SSD=    0,    0,    0,    0
- yuv420p 96x96 -> yuyv422  128x  64 flags= 1 SSD=    1,    4,    6,    0
+ yuv420p 96x96 -> yuyv422  128x  64 flags= 1 SSD=    1,    5,    9,    0
  yuv420p 96x96 -> yuyv422  128x  64 flags= 2 SSD=    0,    0,    0,    0
  yuv420p 96x96 -> yuyv422  128x  64 flags= 4 SSD=    0,    0,    0,    0
  yuv420p 96x96 -> yuyv422  128x  64 flags= 8 SSD=    0,    1,    1,    0
  yuv420p 96x96 -> yuyv422  128x  64 flags=16 SSD=    6,    0,    0,    0
  yuv420p 96x96 -> yuyv422  128x  64 flags=32 SSD=    0,    1,    1,    0
- yuv420p 96x96 -> yuyv422  128x  96 flags= 1 SSD=    2,    8,   12,    0
+ yuv420p 96x96 -> yuyv422  128x  96 flags= 1 SSD=    2,    9,   12,    0
  yuv420p 96x96 -> yuyv422  128x  96 flags= 2 SSD=    0,    5,    3,    0
  yuv420p 96x96 -> yuyv422  128x  96 flags= 4 SSD=    0,    0,    0,    0
  yuv420p 96x96 -> yuyv422  128x  96 flags= 8 SSD=    0,    5,    3,    0
  yuv420p 96x96 -> yuyv422  128x  96 flags=16 SSD=    0,    0,    0,    0
  yuv420p 96x96 -> yuyv422  128x  96 flags=32 SSD=    0,    5,    4,    0
- yuv420p 96x96 -> yuyv422  128x 128 flags= 1 SSD=    1,    6,    9,    0
+ yuv420p 96x96 -> yuyv422  128x 128 flags= 1 SSD=    1,    5,    9,    0
  yuv420p 96x96 -> yuyv422  128x 128 flags= 2 SSD=    0,    1,    1,    0
  yuv420p 96x96 -> yuyv422  128x 128 flags= 4 SSD=    0,    0,    0,    0
  yuv420p 96x96 -> yuyv422  128x 128 flags= 8 SSD=    0,    1,    1,    0
@@ -145,19 +145,19 @@
  yuv420p 96x96 -> rgb24   96x 128 flags= 8 SSD=    3,    0,    1,    0
  yuv420p 96x96 -> rgb24   96x 128 flags=16 SSD=    1,    0,    0,    0
  yuv420p 96x96 -> rgb24   96x 128 flags=32 SSD=    3,    0,    0,    0
- yuv420p 96x96 -> rgb24  128x  64 flags= 1 SSD=    4,    2,    5,    0
+ yuv420p 96x96 -> rgb24  128x  64 flags= 1 SSD=    4,    3,    8,    0
  yuv420p 96x96 -> rgb24  128x  64 flags= 2 SSD=    1,    0,    0,    0
  yuv420p 96x96 -> rgb24  128x  64 flags= 4 SSD=    1,    0,    0,    0
  yuv420p 96x96 -> rgb24  128x  64 flags= 8 SSD=    2,    1,    1,    0
  yuv420p 96x96 -> rgb24  128x  64 flags=16 SSD=    7,    0,    0,    0
  yuv420p 96x96 -> rgb24  128x  64 flags=32 SSD=    3,    1,    1,    0
- yuv420p 96x96 -> rgb24  128x  96 flags= 1 SSD=    3,    7,   10,    0
+ yuv420p 96x96 -> rgb24  128x  96 flags= 1 SSD=    3,   13,   12,    0
  yuv420p 96x96 -> rgb24  128x  96 flags= 2 SSD=    2,    5,    3,    0
  yuv420p 96x96 -> rgb24  128x  96 flags= 4 SSD=    1,    0,    0,    0
  yuv420p 96x96 -> rgb24  128x  96 flags= 8 SSD=    2,    5,    4,    0
  yuv420p 96x96 -> rgb24  128x  96 flags=16 SSD=    1,    0,    0,    0
  yuv420p 96x96 -> rgb24  128x  96 flags=32 SSD=    2,    6,    4,    0
- yuv420p 96x96 -> rgb24  128x 128 flags= 1 SSD=    4,    3,    9,    0
+ yuv420p 96x96 -> rgb24  128x 128 flags= 1 SSD=    4,    5,    9,    0
  yuv420p 96x96 -> rgb24  128x 128 flags= 2 SSD=    3,    1,    1,    0
  yuv420p 96x96 -> rgb24  128x 128 flags= 4 SSD=    1,    0,    0,    0
  yuv420p 96x96 -> rgb24  128x 128 flags= 8 SSD=    3,    1,    1,    0
@@ -200,38 +200,38 @@
  yuv420p 96x96 -> bgr24   96x 128 flags= 8 SSD=    3,    0,    1,    0
  yuv420p 96x96 -> bgr24   96x 128 flags=16 SSD=    1,    0,    0,    0
  yuv420p 96x96 -> bgr24   96x 128 flags=32 SSD=    3,    0,    0,    0
- yuv420p 96x96 -> bgr24  128x  64 flags= 1 SSD=    4,    2,    5,    0
+ yuv420p 96x96 -> bgr24  128x  64 flags= 1 SSD=    4,    3,    8,    0
  yuv420p 96x96 -> bgr24  128x  64 flags= 2 SSD=    1,    0,    0,    0
  yuv420p 96x96 -> bgr24  128x  64 flags= 4 SSD=    1,    0,    0,    0
  yuv420p 96x96 -> bgr24  128x  64 flags= 8 SSD=    2,    1,    1,    0
  yuv420p 96x96 -> bgr24  128x  64 flags=16 SSD=    7,    0,    0,    0
  yuv420p 96x96 -> bgr24  128x  64 flags=32 SSD=    3,    1,    1,    0
[...]
 rgb24 -> yuv411p
- rgb24 96x96 -> yuv411p   64x  64 flags= 1 SSD=    3,   28,   22,    0
+ rgb24 96x96 -> yuv411p   64x  64 flags= 1 SSD=   16,   84,  167,    0
  rgb24 96x96 -> yuv411p   64x  64 flags= 2 SSD=    2,   12,   15,    0
  rgb24 96x96 -> yuv411p   64x  64 flags= 4 SSD=    1,    2,    3,    0
  rgb24 96x96 -> yuv411p   64x  64 flags= 8 SSD=    2,   13,   15,    0
  rgb24 96x96 -> yuv411p   64x  64 flags=16 SSD=   13,   29,   31,    0
  rgb24 96x96 -> yuv411p   64x  64 flags=32 SSD=    2,   10,   13,    0
- rgb24 96x96 -> yuv411p   64x  96 flags= 1 SSD=    4,   33,  101,    0
+ rgb24 96x96 -> yuv411p   64x  96 flags= 1 SSD=   11,   68,  154,    0
  rgb24 96x96 -> yuv411p   64x  96 flags= 2 SSD=    1,   12,   15,    0
  rgb24 96x96 -> yuv411p   64x  96 flags= 4 SSD=    1,    2,    3,    0
  rgb24 96x96 -> yuv411p   64x  96 flags= 8 SSD=    2,   12,   15,    0
  rgb24 96x96 -> yuv411p   64x  96 flags=16 SSD=    6,   29,   31,    0
  rgb24 96x96 -> yuv411p   64x  96 flags=32 SSD=    1,    9,   12,    0
- rgb24 96x96 -> yuv411p   64x 128 flags= 1 SSD=    4,   33,  166,    0
+ rgb24 96x96 -> yuv411p   64x 128 flags= 1 SSD=    8,   89,  166,    0
  rgb24 96x96 -> yuv411p   64x 128 flags= 2 SSD=    1,   12,   15,    0
  rgb24 96x96 -> yuv411p   64x 128 flags= 4 SSD=    1,    2,    3,    0
  rgb24 96x96 -> yuv411p   64x 128 flags= 8 SSD=    2,   12,   15,    0
  rgb24 96x96 -> yuv411p   64x 128 flags=16 SSD=    6,   29,   31,    0
  rgb24 96x96 -> yuv411p   64x 128 flags=32 SSD=    1,    9,   12,    0
- rgb24 96x96 -> yuv411p   96x  64 flags= 1 SSD=    1,   21,   46,    0
+ rgb24 96x96 -> yuv411p   96x  64 flags= 1 SSD=    1,   26,   76,    0
  rgb24 96x96 -> yuv411p   96x  64 flags= 2 SSD=    1,    4,    5,    0
  rgb24 96x96 -> yuv411p   96x  64 flags= 4 SSD=    1,    0,    0,    0
  rgb24 96x96 -> yuv411p   96x  64 flags= 8 SSD=    2,    4,    4,    0
  rgb24 96x96 -> yuv411p   96x  64 flags=16 SSD=    7,   18,   17,    0
  rgb24 96x96 -> yuv411p   96x  64 flags=32 SSD=    1,    2,    3,    0
- rgb24 96x96 -> yuv411p   96x  96 flags= 1 SSD=    1,   11,   74,    0
+ rgb24 96x96 -> yuv411p   96x  96 flags= 1 SSD=    1,   47,   74,    0
  rgb24 96x96 -> yuv411p   96x  96 flags= 2 SSD=    1,    4,    4,    0
  rgb24 96x96 -> yuv411p   96x  96 flags= 4 SSD=    1,    0,    0,    0
  rgb24 96x96 -> yuv411p   96x  96 flags= 8 SSD=    1,    3,    3,    0
  rgb24 96x96 -> yuv411p   96x  96 flags=16 SSD=    1,   18,   17,    0
  rgb24 96x96 -> yuv411p   96x  96 flags=32 SSD=    1,    1,    2,    0
- rgb24 96x96 -> yuv411p   96x 128 flags= 1 SSD=    1,   13,   74,    0
+ rgb24 96x96 -> yuv411p   96x 128 flags= 1 SSD=    1,   45,   74,    0
  rgb24 96x96 -> yuv411p   96x 128 flags= 2 SSD=    1,    4,    4,    0
  rgb24 96x96 -> yuv411p   96x 128 flags= 4 SSD=    1,    0,    0,    0
  rgb24 96x96 -> yuv411p   96x 128 flags= 8 SSD=    1,    3,    3,    0
  rgb24 96x96 -> yuv411p   96x 128 flags=16 SSD=    1,   18,   17,    0
  rgb24 96x96 -> yuv411p   96x 128 flags=32 SSD=    1,    1,    2,    0
- rgb24 96x96 -> yuv411p  128x  64 flags= 1 SSD=    5,    8,   34,    0
+ rgb24 96x96 -> yuv411p  128x  64 flags= 1 SSD=    5,   19,   34,    0
  rgb24 96x96 -> yuv411p  128x  64 flags= 2 SSD=    1,    2,    2,    0
  rgb24 96x96 -> yuv411p  128x  64 flags= 4 SSD=    1,    0,    0,    0
  rgb24 96x96 -> yuv411p  128x  64 flags= 8 SSD=    2,    2,    2,    0
  rgb24 96x96 -> yuv411p  128x  64 flags=16 SSD=    7,   14,   15,    0
  rgb24 96x96 -> yuv411p  128x  64 flags=32 SSD=    1,    2,    2,    0
- rgb24 96x96 -> yuv411p  128x  96 flags= 1 SSD=    5,    5,   33,    0
+ rgb24 96x96 -> yuv411p  128x  96 flags= 1 SSD=    5,   32,   33,    0
  rgb24 96x96 -> yuv411p  128x  96 flags= 2 SSD=    1,    1,    1,    0
  rgb24 96x96 -> yuv411p  128x  96 flags= 4 SSD=    1,    0,    0,    0
  rgb24 96x96 -> yuv411p  128x  96 flags= 8 SSD=    1,    2,    2,    0
  rgb24 96x96 -> yuv411p  128x  96 flags=16 SSD=    1,   14,   15,    0
  rgb24 96x96 -> yuv411p  128x  96 flags=32 SSD=    1,    1,    1,    0
- rgb24 96x96 -> yuv411p  128x 128 flags= 1 SSD=    5,   17,   33,    0
+ rgb24 96x96 -> yuv411p  128x 128 flags= 1 SSD=    5,   35,   33,    0

Also note that I don't want to hardcode the supported in/out formats
in the swscale-test-all.sh script, but currently I don't know which is
the best way to do that, I cannot extend avcodec_pix_fmt_string() with
sws_isSupported{In,Out} since that would add a dependancy lsws <-
lavc, my idea was to define a get_pix_fmt_string() in cmdutils.c.

Suggestions are welcome.

Regards.
-- 
FFmpeg = Furious & Friendly Mystic Porno Esoteric Guide
-------------- next part --------------
A non-text attachment was scrubbed...
Name: implement-swscale-test-lite.patch
Type: text/x-diff
Size: 4261 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100129/16df6c69/attachment.patch>



More information about the ffmpeg-devel mailing list