[FFmpeg-devel] PATCH BlackFin yuv2rgb color space conversion

Michael Niedermayer michaelni
Thu May 10 12:54:41 CEST 2007


Hi

On Wed, May 09, 2007 at 09:29:57PM -0400, Marc Hoffman wrote:
> Michael Niedermayer writes:
>  > Hi
>  > 
>  > On Wed, May 09, 2007 at 08:25:19PM -0400, Marc Hoffman wrote:
>  > > Michael Niedermayer writes:
>  > >  > Hi
>  > >  > 
>  > >  > On Tue, May 08, 2007 at 08:46:32PM -0400, Marc Hoffman wrote:
>  > >  > > 
>  > >  > > Blackfin optimized YUV420 to RGB CSC Color Space Converters.
>  > >  > > 
>  > >  > > This patch includes YUV2 -> RGB BGR for 565, 555 and 888 a.k.a. 24bit  
>  > >  > > color.
>  > >  > > 
>  > >  > > Performance gain compared against -O3:
>  > >  > > 
>  > >  > > 2779809/1484290 187.28%
>  > >  > > 
>  > >  > > which normalized translates to ~33c/pel for the reference C vs ~17.5
>  > >  > > c/pel for this optimized implementation.
>  > >  > > 
>  > >  > > Please review again, I hope I got everyones points if I didn't I'm  
>  > >  > > sorry but there was a lot of feedback in the first round.
>  > >  > 
>  > >  > the mime type was application/octect stream which isnt correct for a patch
>  > >  > 
>  > >  > [...]
>  > >  > > +    if (masks == 555) {
>  > >  > > +        c->rmask = 0x001f * 0x00010001U;
>  > >  > > +        c->gmask = 0x03e0 * 0x00010001U;
>  > >  > > +        c->bmask = 0x7800 * 0x00010001U;
>  > >  > > +    } else if (masks == 565) {
>  > >  > > +        c->rmask = 0x001f * 0x00010001U;
>  > >  > > +        c->gmask = 0x07e0 * 0x00010001U;
>  > >  > > +        c->bmask = 0xf800 * 0x00010001U;
>  > >  > > +    }
>  > >  > 
>  > >  > the r/bmask can be factored out of the if/else
>  > > 
>  > > The red is obvious but the blue is a bit different what are you
>  > > thinking? 
>  > 
>  > not much today it seems
>  > c->bmask = 0x7800
>  > is wrong it should be 0x7C00 or 0xFC00
>  > 
>     c->rmask = 0x001f * 0x00010001U;
>     if (masks == 555) {
>         c->gmask = 0x03e0 * 0x00010001U;
>         c->bmask = 0x7c00 * 0x00010001U;
>     } else if (masks == 565) {
>         c->gmask = 0x07e0 * 0x00010001U;
>         c->bmask = 0xf800 * 0x00010001U;
>     }
> 
> Is that better? Or would you perfer something else here? BTW I really
> appreciate your time. That was such an extraordinary catch just from
> reading my text. :)
> 
> I still prefer this as it looks better I think.  I do agree with your
> less code makes it easier to review and maintain but this is already
> fairly compact.  I will make it however you want, so if you want
> something different let me know..
> 
>     if (masks == 555) {
>         c->rmask = 0x001f * 0x00010001U;
>         c->gmask = 0x03e0 * 0x00010001U;
>         c->bmask = 0x7c00 * 0x00010001U;
>     } else if (masks == 565) {
>         c->rmask = 0x001f * 0x00010001U;
>         c->gmask = 0x07e0 * 0x00010001U;
>         c->bmask = 0xf800 * 0x00010001U;
>     }

iam fine with either

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Those who are too smart to engage in politics are punished by being
governed by those who are dumber. -- Plato 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20070510/38e2ecac/attachment.pgp>



More information about the ffmpeg-devel mailing list