Hi, On Thu, Nov 24, 2011 at 9:29 PM, Kostya Shishkov <[email protected]> wrote: > On Thu, Nov 24, 2011 at 12:21:11PM -0800, Ronald S. Bultje wrote: >> isGray() is left as a FIXME for later. >> --- >> libavutil/pixdesc.c | 3 +-- >> libswscale/swscale_internal.h | 9 +++++++++ >> 2 files changed, 10 insertions(+), 2 deletions(-) >> >> diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c >> index 2b5c2fd..3a830ba 100644 >> --- a/libavutil/pixdesc.c >> +++ b/libavutil/pixdesc.c >> @@ -219,7 +219,6 @@ const AVPixFmtDescriptor >> av_pix_fmt_descriptors[PIX_FMT_NB] = { >> .comp = { >> {0,0,1,0,7}, /* Y */ >> }, >> - .flags = PIX_FMT_PAL, >> }, >> [PIX_FMT_MONOWHITE] = { >> .name = "monow", >> @@ -567,7 +566,7 @@ const AVPixFmtDescriptor >> av_pix_fmt_descriptors[PIX_FMT_NB] = { >> {0,5,3,0,15}, /* G */ >> {0,5,5,0,15}, /* B */ >> }, >> - .flags = PIX_FMT_BE, >> + .flags = PIX_FMT_RGB | PIX_FMT_BE, >> }, >> [PIX_FMT_RGB48LE] = { >> .name = "rgb48le", >> diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h >> index b20e0a3..7bfdc7e 100644 >> --- a/libswscale/swscale_internal.h >> +++ b/libswscale/swscale_internal.h >> @@ -552,9 +552,18 @@ const char *sws_format_name(enum PixelFormat format); >> #define isRGB(x) \ >> (av_pix_fmt_descriptors[x].flags & PIX_FMT_RGB) >> >> +#if 0 // FIXME >> #define isGray(x) \ >> (!(av_pix_fmt_descriptors[x].flags & PIX_FMT_PAL) && \ >> av_pix_fmt_descriptors[x].nb_components <= 2) >> +#else >> +#define isGray(x) ( \ >> + (x)==PIX_FMT_GRAY8 \ >> + || (x)==PIX_FMT_Y400A \ >> + || (x)==PIX_FMT_GRAY16BE \ >> + || (x)==PIX_FMT_GRAY16LE \ >> + ) >> +#endif >> >> #define isRGBinInt(x) ( \ >> (x)==PIX_FMT_RGB48BE \ >> -- > > I have a strong suspicion that > #define isGray(x) \ > (!(av_pix_fmt_descriptors[x].flags & PIX_FMT_PAL) && \ > !(av_pix_fmt_descriptors[x].flags & PIX_FMT_BITSTREAM) && \ > av_pix_fmt_descriptors[x].nb_components <= 2) > > would do the trick. > But I'm too lazy to test that claim :(
It does. But I don't think it's right as part of the longer-term effort of cleaning up swscale. monow/b is gray. All RGB workarounds that we do right now should die. I don't understand why monow/b is a RGB format according to swscale. It appears to be because RGB is the only place that did dithering back in 2003 when this was written. That's barely a good reason to keep the architecture in place. Ronald _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
