[FFmpeg-devel] [PATCH] Is gray8 a paletted format?

Stefano Sabatini stefano.sabatini-lala
Mon Feb 1 20:44:36 CET 2010


On date Monday 2010-02-01 02:28:17 +0100, Michael Niedermayer encoded:
> On Sun, Jan 31, 2010 at 06:04:16PM +0100, Stefano Sabatini wrote:
> > On date Monday 2009-11-16 01:07:09 +0100, Michael Niedermayer encoded:
> > > On Sun, Nov 15, 2009 at 11:36:03PM +0100, Stefano Sabatini wrote:
> > > > Hi all,
> > > > 
> > > > I see that in imgconvert.c gray8 is treated like a paletted format:
> > > > check for example ff_set_systematic_pal() and ff_fill_pointer(), where
> > > > it is allocated space for its palette.
> > > > 
> > > > If gray8 can be considered a paletted format, then I suggest to apply
> > > > the attached patch, updating both the pixdesc array and the lsws
> > > > macro.
> > > > 
> > > > Regards.
> > > > -- 
> > > > FFmpeg = Fundamental and Fantastic Most Porno Erudite Gadget
> > > 
> > > >  libavutil/pixdesc.c  |    1 +
> > > >  libswscale/swscale.c |    1 +
> > > >  2 files changed, 2 insertions(+)
> > > > d4e555c7f6b51930b736b49221f546314265ec41  gray-is-pal.patch
> > > 
> > > This is ok in principle but it has some potential to uncover bugs
> > > id like you to make sure that this works before comiting.
> > > Also please make sure by benchmark that this causes no slowdown
> > 
> > Can you suggest what I should benchmark?
> 
> id put some START/STOP_TIMER in swscale-test and look at the gray8 cases
> and see if one changes by a large amount

I used my lite version swscale-test and an ad-hoc script, the results
are in attachment.

Conversion in some cases is ~10% slower.

An alternative solution would be to make gray *non*-paletted, and
eventually add a gray8-pal variant.

Regards.
-- 
FFmpeg = Fast and Fabulous Most Pure Exciting God
-------------- next part --------------
A non-text attachment was scrubbed...
Name: add-swscale-gray-test.patch
Type: text/x-diff
Size: 1374 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100201/4af2cfdf/attachment.patch>
-------------- next part --------------
yuv420p -> gray
1912787040 dezicycles in gray-pal, 1 runs, 0 skips
yuyv422 -> gray
2433670680 dezicycles in gray-pal, 1 runs, 0 skips
rgb24 -> gray
2146036080 dezicycles in gray-pal, 1 runs, 0 skips
bgr24 -> gray
2447588520 dezicycles in gray-pal, 1 runs, 0 skips
yuv422p -> gray
3060547080 dezicycles in gray-pal, 1 runs, 0 skips
yuv444p -> gray
3246809520 dezicycles in gray-pal, 1 runs, 0 skips
yuv410p -> gray
2568772800 dezicycles in gray-pal, 1 runs, 0 skips
yuv411p -> gray
2575363560 dezicycles in gray-pal, 1 runs, 0 skips
gray -> gray
2368929600 dezicycles in gray-pal, 1 runs, 0 skips
monow -> gray
2539425600 dezicycles in gray-pal, 1 runs, 0 skips
monob -> gray
2066360880 dezicycles in gray-pal, 1 runs, 0 skips
pal8 -> gray
swScaler: pal8 is not supported as output pixel format
Failed to get yuva420p ---> pal8
2839440 dezicycles in gray-pal, 1 runs, 0 skips
yuvj420p -> gray
2587330680 dezicycles in gray-pal, 1 runs, 0 skips
yuvj422p -> gray
2860744200 dezicycles in gray-pal, 1 runs, 0 skips
yuvj444p -> gray
3287608560 dezicycles in gray-pal, 1 runs, 0 skips
uyvy422 -> gray
2473788240 dezicycles in gray-pal, 1 runs, 0 skips
bgr8 -> gray
2164354680 dezicycles in gray-pal, 1 runs, 0 skips
bgr4_byte -> gray
2414970600 dezicycles in gray-pal, 1 runs, 0 skips
rgb8 -> gray
2180440320 dezicycles in gray-pal, 1 runs, 0 skips
rgb4_byte -> gray
2152537440 dezicycles in gray-pal, 1 runs, 0 skips
nv12 -> gray
2212302120 dezicycles in gray-pal, 1 runs, 0 skips
nv21 -> gray
1914348120 dezicycles in gray-pal, 1 runs, 0 skips
argb -> gray
2462068920 dezicycles in gray-pal, 1 runs, 0 skips
rgba -> gray
2198148720 dezicycles in gray-pal, 1 runs, 0 skips
abgr -> gray
2215450200 dezicycles in gray-pal, 1 runs, 0 skips
bgra -> gray
2194670760 dezicycles in gray-pal, 1 runs, 0 skips
gray16be -> gray
2014628400 dezicycles in gray-pal, 1 runs, 0 skips
gray16le -> gray
2339133600 dezicycles in gray-pal, 1 runs, 0 skips
yuv440p -> gray
2579085000 dezicycles in gray-pal, 1 runs, 0 skips
yuvj440p -> gray
2843144880 dezicycles in gray-pal, 1 runs, 0 skips
yuva420p -> gray
2151078000 dezicycles in gray-pal, 1 runs, 0 skips
rgb48be -> gray
2295917400 dezicycles in gray-pal, 1 runs, 0 skips
rgb48le -> gray
2285587680 dezicycles in gray-pal, 1 runs, 0 skips
rgb565le -> gray
2165002080 dezicycles in gray-pal, 1 runs, 0 skips
rgb555le -> gray
2172642240 dezicycles in gray-pal, 1 runs, 0 skips
bgr565le -> gray
2164762560 dezicycles in gray-pal, 1 runs, 0 skips
bgr555le -> gray
2185379280 dezicycles in gray-pal, 1 runs, 0 skips
yuv420p16le -> gray
2074143600 dezicycles in gray-pal, 1 runs, 0 skips
yuv420p16be -> gray
2074802760 dezicycles in gray-pal, 1 runs, 0 skips
yuv422p16le -> gray
2739985680 dezicycles in gray-pal, 1 runs, 0 skips
yuv422p16be -> gray
2859398400 dezicycles in gray-pal, 1 runs, 0 skips
yuv444p16le -> gray
3157815240 dezicycles in gray-pal, 1 runs, 0 skips
yuv444p16be -> gray
3332613960 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2958770640 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2958168600 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2962167240 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2960723880 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2965263240 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2966678640 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2992539000 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2968808760 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2966166120 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2964380280 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2962420080 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2962623960 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3110459400 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3191649240 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2974684800 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2960875800 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3223633320 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3210023040 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2963892720 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3260263320 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3245052000 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2962209000 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2960490960 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2971048440 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2959012080 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2964488160 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2962545480 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2958317280 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3200269800 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2952208680 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2957881560 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2955113160 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2951017440 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2956971720 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2959835520 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2955192600 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2957238720 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2954688600 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2957700120 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2962124880 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2955553680 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3190800480 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2963315520 dezicycles in gray-pal, 1 runs, 0 skips
-------------- next part --------------
yuv420p -> gray
2101330080 dezicycles in gray-pal, 1 runs, 0 skips
yuyv422 -> gray
2434660200 dezicycles in gray-pal, 1 runs, 0 skips
rgb24 -> gray
2223310680 dezicycles in gray-pal, 1 runs, 0 skips
bgr24 -> gray
2614374840 dezicycles in gray-pal, 1 runs, 0 skips
yuv422p -> gray
2639499720 dezicycles in gray-pal, 1 runs, 0 skips
yuv444p -> gray
3022912200 dezicycles in gray-pal, 1 runs, 0 skips
yuv410p -> gray
2554189320 dezicycles in gray-pal, 1 runs, 0 skips
yuv411p -> gray
2883098520 dezicycles in gray-pal, 1 runs, 0 skips
gray -> gray
1871613720 dezicycles in gray-pal, 1 runs, 0 skips
monow -> gray
3607528680 dezicycles in gray-pal, 1 runs, 0 skips
monob -> gray
2335035120 dezicycles in gray-pal, 1 runs, 0 skips
pal8 -> gray
swScaler: pal8 is not supported as output pixel format
Failed to get yuva420p ---> pal8
2860920 dezicycles in gray-pal, 1 runs, 0 skips
yuvj420p -> gray
2577067920 dezicycles in gray-pal, 1 runs, 0 skips
yuvj422p -> gray
3128279160 dezicycles in gray-pal, 1 runs, 0 skips
yuvj444p -> gray
3389258160 dezicycles in gray-pal, 1 runs, 0 skips
uyvy422 -> gray
2425399440 dezicycles in gray-pal, 1 runs, 0 skips
bgr8 -> gray
2440070400 dezicycles in gray-pal, 1 runs, 0 skips
bgr4_byte -> gray
2147622000 dezicycles in gray-pal, 1 runs, 0 skips
rgb8 -> gray
2152555560 dezicycles in gray-pal, 1 runs, 0 skips
rgb4_byte -> gray
2185405680 dezicycles in gray-pal, 1 runs, 0 skips
nv12 -> gray
1937651640 dezicycles in gray-pal, 1 runs, 0 skips
nv21 -> gray
2062082520 dezicycles in gray-pal, 1 runs, 0 skips
argb -> gray
2207867400 dezicycles in gray-pal, 1 runs, 0 skips
rgba -> gray
2476711560 dezicycles in gray-pal, 1 runs, 0 skips
abgr -> gray
2204623080 dezicycles in gray-pal, 1 runs, 0 skips
bgra -> gray
2183477520 dezicycles in gray-pal, 1 runs, 0 skips
gray16be -> gray
2328175680 dezicycles in gray-pal, 1 runs, 0 skips
gray16le -> gray
2086765440 dezicycles in gray-pal, 1 runs, 0 skips
yuv440p -> gray
2684423160 dezicycles in gray-pal, 1 runs, 0 skips
yuvj440p -> gray
2948783400 dezicycles in gray-pal, 1 runs, 0 skips
yuva420p -> gray
2283037800 dezicycles in gray-pal, 1 runs, 0 skips
rgb48be -> gray
2547716880 dezicycles in gray-pal, 1 runs, 0 skips
rgb48le -> gray
2275329720 dezicycles in gray-pal, 1 runs, 0 skips
rgb565le -> gray
2155824600 dezicycles in gray-pal, 1 runs, 0 skips
rgb555le -> gray
2156102520 dezicycles in gray-pal, 1 runs, 0 skips
bgr565le -> gray
2483558640 dezicycles in gray-pal, 1 runs, 0 skips
bgr555le -> gray
2502401640 dezicycles in gray-pal, 1 runs, 0 skips
yuv420p16le -> gray
2084576640 dezicycles in gray-pal, 1 runs, 0 skips
yuv420p16be -> gray
2089374960 dezicycles in gray-pal, 1 runs, 0 skips
yuv422p16le -> gray
2751579120 dezicycles in gray-pal, 1 runs, 0 skips
yuv422p16be -> gray
2880759480 dezicycles in gray-pal, 1 runs, 0 skips
yuv444p16le -> gray
3174509760 dezicycles in gray-pal, 1 runs, 0 skips
yuv444p16be -> gray
3340803720 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3245873280 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2968753680 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2978532720 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2971457520 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3229829400 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3046769640 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3785041440 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2972873760 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2978399040 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2978770200 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2972345520 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3212414640 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3496279200 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2967976800 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2958269880 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3207588840 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3008952480 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3236851560 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2961869760 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2962818720 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3074789280 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2960743080 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2955804240 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3208744800 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2962448400 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2978045880 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2960006880 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2964007680 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2968814040 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2971030440 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2963591640 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2970459720 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2971363080 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2971866840 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2966711400 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3280233000 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3238072080 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3250070400 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3226386600 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2959973880 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
2969360160 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3280761840 dezicycles in gray-pal, 1 runs, 0 skips
gray -> yuv444p16be
3242607480 dezicycles in gray-pal, 1 runs, 0 skips



More information about the ffmpeg-devel mailing list