AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Floyd-Steinberg Dithering
Thema durchsuchen
Ansicht
Themen-Optionen

Floyd-Steinberg Dithering

Ein Thema von shmia · begonnen am 21. Aug 2008 · letzter Beitrag vom 30. Nov 2023
 
Kas Ob.

Registriert seit: 3. Sep 2023
457 Beiträge
 
#27

AW: Floyd-Steinberg Dithering

  Alt 8. Nov 2023, 08:12
@Stevie, nice !

I was going to more generic reusable one like this:
Code:
{$ALIGN 16}
procedure TestCMovShort;
const
  LOWER_LIMIT = 0;
  HIGHER_LIMIT = 255;
asm
        mov    esi, HIGHER_LIMIT         // High Limit
        mov    ecx, Count
        db     $48, $48

@1:    mov    edi, 0
        db     $48, $48, $48

@2:    mov    edx, dword[Data + edi * 4]
        mov    eax, LOWER_LIMIT
        //XOR    eax, eax    // eax is destination value filled with the lowest value
        cmp    edx, esi    // comapare v (edx) with high value
        cmovg  eax, esi    // if bigger then take the highest esi
        cmovbe eax, edx    // if below or equal we fill value v (edx)
        mov    Byte[CData + edi], al
        inc    edi
        cmp    edi, DATA_LEN
        jl     @2
        dec    ecx
        jne    @1
end;
But it is little slower than xor , and for sure slower then using cmovae and cmovge.
Kas
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz