[FFmpeg-devel] [RFC] Scalar color conversion utils (colorutils.[hc])?

Stefano Sabatini stefano.sabatini-lala
Mon May 4 01:08:33 CEST 2009


On date Monday 2009-05-04 00:25:59 +0200, Michael Niedermayer encoded:
> On Sun, May 03, 2009 at 03:42:04PM +0200, Stefano Sabatini wrote:
> > On date Saturday 2009-05-02 22:11:42 +0200, Michael Niedermayer encoded:
> > > On Sat, May 02, 2009 at 09:37:09PM +0200, Stefano Sabatini wrote:
> > > > On date Saturday 2009-05-02 18:45:49 +0200, Michael Niedermayer encoded:
> > [...]
> > > > > Once lavfi is merged this could be revissited but we surely wont combine
> > > > > the string parsing with colorspace convertion because frankly that is
> > > > > unflexible.
> > > > 
> > > > Would be:
> > > > int av_parse_color(uint16_t *rgba_color, const char *color_string, void *log_ctx);
> > > > 
> > > > an acceptable solution?
> > > 
> > > this looks better
> > 
> > Patch updated (as usage example I'm going to post an updated version
> > of the RGBA source).
> > 
> > Regards.
> > -- 
> > FFmpeg = Fierce and Faithless Marvellous Portable Ecstatic Gadget
> 
> >  Makefile     |    3 
> >  colorutils.c |  249 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >  colorutils.h |   41 +++++++++
> >  3 files changed, 293 insertions(+)
> > 9b57e8b85216d7af4169a2aec2df2aca4a10b1e3  implement-colorutils.patch
> > Index: libavfilter-soc/ffmpeg/libavfilter/colorutils.c
> > ===================================================================
> > --- /dev/null	1970-01-01 00:00:00.000000000 +0000
> > +++ libavfilter-soc/ffmpeg/libavfilter/colorutils.c	2009-05-03 14:38:23.000000000 +0200
> 
> wouldnt that stuff fit in parseutils.* ?

Yes that's a possibility, as you prefer.
  
> [...]
> > +int av_parse_color(uint8_t *rgba_color, const char *color_string, void *log_ctx)
> > +{
> > +    if (!strncmp(color_string, "0x", 2)) {
> > +        char *tail;
> > +        int len = strlen(color_string);
> > +        int rgba = strtol(color_string, &tail, 16);
> > +
> > +        if (*tail || (len != 8 && len != 10)) {
> > +            av_log(log_ctx, AV_LOG_ERROR, "Invalid RGB color string: '%s'\n", color_string);
> > +            return -1;
> > +        }
> > +        if (len == 10) {
> > +            rgba_color[3] = rgba & 0xFF;
> > +            rgba >>= 8;
> > +        }
> > +        rgba_color[0] = rgba >> 16;
> > +        rgba_color[1] = (rgba >> 8) & 0xFF;
> > +        rgba_color[2] = rgba & 0xFF;
> 
> the & 0xff is superflous
> 
> 
> > +    } else {
> > +        const ColorEntry *entry = NULL;
> 
> redundant assignment
> 
> 
> > +        entry = bsearch(color_string,
> > +                        color_table,
> > +                        FF_ARRAY_ELEMS(color_table),
> > +                        sizeof(ColorEntry),
> > +                        color_table_compare);
> > +        if (!entry) {
> > +            av_log(log_ctx, AV_LOG_DEBUG, "Cannot find color '%s'\n", color_string);
> > +            return -1;
> > +        }
> > +        rgba_color[0] = entry->color[0];
> > +        rgba_color[1] = entry->color[1];
> > +        rgba_color[2] = entry->color[2];
> > +        rgba_color[3] = entry->color[3];
> 
> memcpy
> 
> [...]
> > +#ifndef AVFILTER_COLORUTILS_H
> > +#define AVFILTER_COLORUTILS_H
> > +
> > +#include "libavutil/pixfmt.h"
> > +#include "libavcodec/pixdesc.h"
> > +
> > +/**
> > + * Parses the name in name,
> 
> ehm
> 
> > and puts in color the component values of the parsed color.
> 
> uhm
>
> 
> [...]
> > +int av_parse_color(uint8_t *rgba_color, const char *color_string, void *log_ctx);
> 
> and there is no name nor color in this ...

All fixed.

Regards.
-- 
FFmpeg = Fiendish Fundamental Maxi Powerful Easy Generator
-------------- next part --------------
A non-text attachment was scrubbed...
Name: implement-colorutils.patch
Type: text/x-diff
Size: 13416 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20090504/f88032b8/attachment.patch>



More information about the ffmpeg-devel mailing list