Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Assembly x86 > Re: MMX speedup...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 5 of 26 Topic 4642 of 4825
Post > Topic >>

Re: MMX speedup for Floyd Steinberg error diffusion

by James Harris <spamtrap@[EMAIL PROTECTED] > May 7, 2008 at 04:26 PM

On 7 May, 18:56, "Maarten Kronenburg"  <spamt...@[EMAIL PROTECTED]
> wrote:
> "rep_movsd"  wrote in message
> > Hi
>
> > I recently implemented an animated GIF encoder to convert any video
> > into a GIF ( I know it doesnt seem really useful, but thats what the
> > client wanted ).
>
> > I implemented floyd steinberg error diffusion to improve quality of
> > the quantized output.
>
> > The code is in Visual C++ and I use 32 bpp pixels for ease in
> > processing.
>
> > The diffusion process takes up about 1/2 the time required to encode a
> > frame and it seems to be the right place to optimize.
>
> > Heres how the algorithm works - pseudocode
>
> > for each pixel in the image
> > {
> >      palColor = Get color in palette thats nearest to current pixel
> >      get signed difference between actual color and palette color for
> > R G and B components
> >      add difference (with unsigned saturation) to surrounding pixels
> > with a weightage :
> >           EAST -> 7/16
> >           SOUTHWEST -> 5/16
> >           SOUTH -> 3/16
> >           SOUTHEAST -> 1/16
> > }
>
> > Now I thought I may be able to do this fast with MMX , subtracting the
> > 3 r, g, b bytes at once ( I use 32 bpp pixels, but alpha channel is
> > ignored )
>
> > I can do a packed subtract to get the differences, but thereafter the
> > multiplication and ****fting(for division by 16) seem to be impossible.
>
> > Moreover, how can one do a unsigned saturated addition of signed
> > difference values to the unsigned pixel values?
>
> > Any ideas anyone?
>
> The 4 32-bit words can be stored in a single 128-bit xmm register.

The OP asked for MMX which uses 64-bit regs. Are you sure a post-MMX
solution will work for him?

--
 




 26 Posts in Topic:
MMX speedup for Floyd Steinberg error diffusion
rep_movsd <spamtrap@[  2008-05-05 04:04:14 
Re: MMX speedup for Floyd Steinberg error diffusion
"Maarten Kronenburg&  2008-05-07 19:56:39 
Re: MMX speedup for Floyd Steinberg error diffusion
"Maarten Kronenburg&  2008-05-07 20:49:56 
Re: MMX speedup for Floyd Steinberg error diffusion
"Maarten Kronenburg&  2008-05-07 22:35:41 
Re: MMX speedup for Floyd Steinberg error diffusion
James Harris <spamtra  2008-05-07 16:26:13 
Re: MMX speedup for Floyd Steinberg error diffusion
rep_movsd <spamtrap@[  2008-05-08 00:57:41 
Re: MMX speedup for Floyd Steinberg error diffusion
Terje Mathisen <spamt  2008-05-08 18:00:18 
Re: MMX speedup for Floyd Steinberg error diffusion
"Maarten Kronenburg&  2008-05-08 17:14:21 
Re: MMX speedup for Floyd Steinberg error diffusion
Robert Redelmeier <red  2008-05-09 14:19:08 
Re: MMX speedup for Floyd Steinberg error diffusion
Terje Mathisen <spamt  2008-05-09 21:03:11 
Re: MMX speedup for Floyd Steinberg error diffusion
rep_movsd <spamtrap@[  2008-05-08 07:23:41 
Re: MMX speedup for Floyd Steinberg error diffusion
Jim Leonard <spamtrap  2008-05-08 13:48:14 
Re: MMX speedup for Floyd Steinberg error diffusion
Terje Mathisen <spamt  2008-05-09 10:21:40 
Re: MMX speedup for Floyd Steinberg error diffusion
rep_movsd <spamtrap@[  2008-05-09 00:24:23 
Re: MMX speedup for Floyd Steinberg error diffusion
Terje Mathisen <spamt  2008-05-09 15:31:53 
Re: MMX speedup for Floyd Steinberg error diffusion
Phil Carmody <thefatph  2008-05-09 17:18:44 
Re: MMX speedup for Floyd Steinberg error diffusion
Terje Mathisen <spamt  2008-05-09 21:03:09 
Re: MMX speedup for Floyd Steinberg error diffusion
rep_movsd <spamtrap@[  2008-05-10 00:28:25 
Re: MMX speedup for Floyd Steinberg error diffusion
Terje Mathisen <spamt  2008-05-10 21:25:29 
Re: MMX speedup for Floyd Steinberg error diffusion
Phil Carmody <thefatph  2008-05-10 22:48:49 
Re: MMX speedup for Floyd Steinberg error diffusion
Phil Carmody <thefatph  2008-05-10 22:07:04 
Re: MMX speedup for Floyd Steinberg error diffusion
rep_movsd <spamtrap@[  2008-05-10 02:28:42 
Re: MMX speedup for Floyd Steinberg error diffusion
Terje Mathisen <spamt  2008-05-10 21:17:34 
Re: MMX speedup for Floyd Steinberg error diffusion
rep_movsd <spamtrap@[  2008-05-11 01:33:13 
Re: MMX speedup for Floyd Steinberg error diffusion
Phil Carmody <thefatph  2008-05-11 13:14:37 
Re: MMX speedup for Floyd Steinberg error diffusion
rep_movsd <spamtrap@[  2008-05-11 01:25:56 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Tue Oct 14 8:24:01 CDT 2008.