[FFmpeg-devel] [PATCH] Remove swscale_internal.h:fmt_depth()
Stefano Sabatini
stefano.sabatini-lala
Sun Jan 17 23:36:26 CET 2010
On date Sunday 2010-01-17 22:04:47 +0100, Michael Niedermayer encoded:
> On Sun, Jan 17, 2010 at 06:46:40PM +0100, Stefano Sabatini wrote:
> > On date Saturday 2010-01-16 17:08:48 -0200, Ramiro Polla encoded:
> > > Hi,
> > >
> > > On Sat, Jan 16, 2010 at 4:59 PM, Stefano Sabatini
> > > <stefano.sabatini-lala at poste.it> wrote:
> > > > Hi, I'm aware this patch introduces a slow-down, an idea would be to
> > > > initialize a ff_bits_per_pixel array during the init phase, and then
> > > > use a function of the kind:
> > > >
> > > > static inline int fmt_depth(int fmt)
> > > > {
> > > > ? ?return ff_bits_per_pixel[fmt];
> > > > }
> > > >
> > > > Would be that acceptable?
> > > > In this case can you suggest where to initialize stuff?
> > >
> > > I think all code that uses fmt_depth currently should eventually be
> > > moved to some init code that's only run once, and so a small slow-down
> > > wouldn't be a problem.
> >
> > Check the attached: smaller, more extensible, faster, the price is a
> > little more bloat in the context.
> >
>
> > Regression test passed.
>
> if(regression == swscale_example) patch ok
> else not ok
I had to hack swscale-example since the recent change in pixfmt.h
broke it (BTW does it ever worked with big-endian system?), anyway
what should I test with swscale-example?
I tried to run swscale-example first and before the patch, and then
many times with the same binary, each time I got some small differences
in the outputs, for example (two runs with the same binary):
stefano at geppetto ~/s/f/libswscale> diff -u swscale-example2.out swscale-example3.out
--- swscale-example2.out 2010-01-17 23:23:35.000000000 +0100
+++ swscale-example3.out 2010-01-17 23:29:15.000000000 +0100
@@ -50514,12 +50514,12 @@
argb 96x96 -> rgba 96x 64 flags= 8 SSD= 6, 0, 0, 1
argb 96x96 -> rgba 96x 64 flags=16 SSD= 12, 0, 0, 16
argb 96x96 -> rgba 96x 64 flags=32 SSD= 9, 1, 2, 1
- argb 96x96 -> rgba 96x 96 flags= 1 SSD= 1729, 1202, 729, 4513
- argb 96x96 -> rgba 96x 96 flags= 2 SSD= 1729, 1180, 720, 4513
- argb 96x96 -> rgba 96x 96 flags= 4 SSD= 1729, 1202, 730, 4513
- argb 96x96 -> rgba 96x 96 flags= 8 SSD= 1729, 1190, 724, 4513
- argb 96x96 -> rgba 96x 96 flags=16 SSD= 1729, 1234, 755, 4513
- argb 96x96 -> rgba 96x 96 flags=32 SSD= 1729, 1202, 729, 4513
+ argb 96x96 -> rgba 96x 96 flags= 1 SSD= 1728, 1202, 729, 4513
+ argb 96x96 -> rgba 96x 96 flags= 2 SSD= 1728, 1180, 720, 4513
+ argb 96x96 -> rgba 96x 96 flags= 4 SSD= 1728, 1202, 729, 4513
+ argb 96x96 -> rgba 96x 96 flags= 8 SSD= 1728, 1189, 724, 4513
+ argb 96x96 -> rgba 96x 96 flags=16 SSD= 1728, 1234, 755, 4513
+ argb 96x96 -> rgba 96x 96 flags=32 SSD= 1728, 1202, 729, 4513
argb 96x96 -> rgba 96x 128 flags= 1 SSD= 8, 1, 2, 0
argb 96x96 -> rgba 96x 128 flags= 2 SSD= 8, 1, 1, 0
argb 96x96 -> rgba 96x 128 flags= 4 SSD= 5, 0, 0, 0
@@ -55282,12 +55282,12 @@
abgr 96x96 -> bgra 96x 64 flags= 8 SSD= 6, 0, 0, 1
abgr 96x96 -> bgra 96x 64 flags=16 SSD= 12, 0, 0, 16
abgr 96x96 -> bgra 96x 64 flags=32 SSD= 9, 1, 2, 1
- abgr 96x96 -> bgra 96x 96 flags= 1 SSD= 1729, 1196, 724, 4513
- abgr 96x96 -> bgra 96x 96 flags= 2 SSD= 1729, 1174, 716, 4513
- abgr 96x96 -> bgra 96x 96 flags= 4 SSD= 1729, 1197, 725, 4513
- abgr 96x96 -> bgra 96x 96 flags= 8 SSD= 1729, 1183, 719, 4513
- abgr 96x96 -> bgra 96x 96 flags=16 SSD= 1729, 1229, 751, 4513
- abgr 96x96 -> bgra 96x 96 flags=32 SSD= 1729, 1196, 724, 4513
+ abgr 96x96 -> bgra 96x 96 flags= 1 SSD= 1728, 1196, 724, 4513
+ abgr 96x96 -> bgra 96x 96 flags= 2 SSD= 1728, 1174, 716, 4513
+ abgr 96x96 -> bgra 96x 96 flags= 4 SSD= 1728, 1197, 725, 4513
+ abgr 96x96 -> bgra 96x 96 flags= 8 SSD= 1728, 1183, 719, 4513
+ abgr 96x96 -> bgra 96x 96 flags=16 SSD= 1728, 1229, 751, 4513
+ abgr 96x96 -> bgra 96x 96 flags=32 SSD= 1728, 1196, 724, 4513
abgr 96x96 -> bgra 96x 128 flags= 1 SSD= 8, 1, 2, 0
abgr 96x96 -> bgra 96x 128 flags= 2 SSD= 8, 1, 1, 0
abgr 96x96 -> bgra 96x 128 flags= 4 SSD= 5, 0, 0, 0
which I found very strange and still cannot explain (where is the
random source, lfg in swscale-example.c uses always the same seed).
Regards.
--
FFmpeg = Foolish and Faboulous Marvellous Peaceless Egregious Gnome
More information about the ffmpeg-devel
mailing list