[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