[cpia] cpia.c yuvconvert hack

john smallberries jackdied@yahoo.com
Thu, 23 Mar 2000 10:41:50 -0800 (PST)


--0-861021530-953836910=:3728
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Just for kicks here is some modifications I made to
the yuvconvert routine.  Basically I just expanded all
the rgb calculations, combined like terms and did all
that other 8th grade algebra.

The end result doesn't appear any faster, and isn't
even actually correct.  I include some funky shift ops
that are about 5% off the correct color, but should be
a little bit faster than multiplying and getting the
correct result.  This affects 1/2 of the pixels.  I
can't tell the difference when looking at the picture,
however.

This only covers the RGB24 and RGB 32 calculations,
all the others are unchanged.

The attached diff is against 0.7.4

-smallberries


__________________________________________________
Do You Yahoo!?
Talk to your friends online with Yahoo! Messenger.
http://im.yahoo.com
--0-861021530-953836910=:3728
Content-Type: application/x-unknown; name="cpia.c.diff"
Content-Description: cpia.c.diff
Content-Disposition: attachment; filename="cpia.c.diff"
Content-Transfer-Encoding: base64

KioqIGNwaWEuYwlTYXQgTWFyIDExIDE2OjQ0OjAxIDIwMDAKLS0tIC4uLy4u
L2NwaWEtamFjay9tb2R1bGUvY3BpYS5jCVRodSBNYXIgMTYgMDc6NTI6MzAg
MjAwMAoqKioqKioqKioqKioqKioKKioqIDE3NzAsMTg4MyAqKioqCiAgICog
Q29sb3JzcGFjZSBjb252ZXJzaW9uCiAgICoKICAgKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8KISAjZGVmaW5lIExJTUlUKHgpICgoKCh4KT4weGZmZmZm
Zik/MHhmZjAwMDA6KCgoeCk8PTB4ZmZmZik/MDooeCkmMHhmZjAwMDApKT4+
MTYpCiAgCiAgc3RhdGljIGludCB5dXZjb252ZXJ0KHVuc2lnbmVkIGNoYXIg
Knl1diwgdW5zaWduZWQgY2hhciAqcmdiLCBpbnQgb3V0X2ZtdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGluX3V5dnksIGludCBtbWFwX2tsdWRn
ZSkKICB7CiEgCWludCB5LCB1LCB2LCByLCBnLCBiLCB5MTsKISAKISAJc3dp
dGNoKG91dF9mbXQpIHsKISAJY2FzZSBWSURFT19QQUxFVFRFX1JHQjU1NToK
ISAJY2FzZSBWSURFT19QQUxFVFRFX1JHQjU2NToKISAJY2FzZSBWSURFT19Q
QUxFVFRFX1JHQjI0OgohIAljYXNlIFZJREVPX1BBTEVUVEVfUkdCMzI6CiEg
CQlpZiAoaW5fdXl2eSkgewohIAkJCXUgPSAqeXV2KysgLSAxMjg7CiEgCQkJ
eSA9ICgqeXV2KysgLSAxNikgKiA3NjMxMDsKISAJCQl2ID0gKnl1disrIC0g
MTI4OwohIAkJCXkxID0gKCp5dXYgLSAxNikgKiA3NjMxMDsKISAJCX0gZWxz
ZSB7CiEgCQkJeSA9ICgqeXV2KysgLSAxNikgKiA3NjMxMDsKISAJCQl1ID0g
Knl1disrIC0gMTI4OwohIAkJCXkxID0gKCp5dXYrKyAtIDE2KSAqIDc2MzEw
OwohIAkJCXYgPSAqeXV2IC0gMTI4OwohIAkJfQohIAkJciA9IDEwNDYzNSAq
IHY7CiEgCQlnID0gLTI1NjkwICogdSArIC01MzI5NCAqIHY7CiEgCQliID0g
MTMyMjc4ICogdTsKISAJCWJyZWFrOwohIAlkZWZhdWx0OgohIAkJeSA9ICp5
dXYrKzsKISAJCXUgPSAqeXV2Kys7CiEgCQl5MSA9ICp5dXYrKzsKISAJCXYg
PSAqeXV2OwohIAkJLyogSnVzdCB0byBhdm9pZCBjb21waWxlciB3YXJuaW5n
cyAqLwohIAkJciA9IDA7CiEgCQlnID0gMDsKISAJCWIgPSAwOwohIAkJYnJl
YWs7CiEgCX0KISAJc3dpdGNoKG91dF9mbXQpIHsKISAJY2FzZSBWSURFT19Q
QUxFVFRFX1JHQjU1NToKISAJCSpyZ2IrKyA9ICgoTElNSVQoZyt5KSAmIDB4
ZjgpIDw8IDIpIHwgKExJTUlUKGIreSkgPj4gMyk7CiEgCQkqcmdiKysgPSAo
KExJTUlUKHIreSkgJiAweGY4KSA+PiAxKSB8IChMSU1JVChnK3kpID4+IDYp
OwohIAkJKnJnYisrID0gKChMSU1JVChnK3kxKSAmIDB4ZjgpIDw8IDIpIHwg
KExJTUlUKGIreTEpID4+IDMpOwohIAkJKnJnYiA9ICgoTElNSVQocit5MSkg
JiAweGY4KSA+PiAxKSB8IChMSU1JVChnK3kxKSA+PiA2KTsKISAJCXJldHVy
biA0OwohIAljYXNlIFZJREVPX1BBTEVUVEVfUkdCNTY1OgohIAkJKnJnYisr
ID0gKChMSU1JVChnK3kpICYgMHhmYykgPDwgMykgfCAoTElNSVQoYit5KSA+
PiAzKTsKISAJCSpyZ2IrKyA9IChMSU1JVChyK3kpICYgMHhmOCkgfCAoTElN
SVQoZyt5KSA+PiA1KTsKISAJCSpyZ2IrKyA9ICgoTElNSVQoZyt5MSkgJiAw
eGZjKSA8PCAzKSB8IChMSU1JVChiK3kxKSA+PiAzKTsKISAJCSpyZ2IgPSAo
TElNSVQocit5MSkgJiAweGY4KSB8IChMSU1JVChnK3kxKSA+PiA1KTsKISAJ
CXJldHVybiA0OwohIAljYXNlIFZJREVPX1BBTEVUVEVfUkdCMjQ6CiEgCQlp
ZiAobW1hcF9rbHVkZ2UpIHsKISAJCQkqcmdiKysgPSBMSU1JVChiK3kpOwoh
IAkJCSpyZ2IrKyA9IExJTUlUKGcreSk7CiEgCQkJKnJnYisrID0gTElNSVQo
cit5KTsKISAJCQkqcmdiKysgPSBMSU1JVChiK3kxKTsKISAJCQkqcmdiKysg
PSBMSU1JVChnK3kxKTsKISAJCQkqcmdiID0gTElNSVQocit5MSk7CiEgCQl9
IGVsc2UgewohIAkJCSpyZ2IrKyA9IExJTUlUKHIreSk7CiEgCQkJKnJnYisr
ID0gTElNSVQoZyt5KTsKISAJCQkqcmdiKysgPSBMSU1JVChiK3kpOwohIAkJ
CSpyZ2IrKyA9IExJTUlUKHIreTEpOwohIAkJCSpyZ2IrKyA9IExJTUlUKGcr
eTEpOwohIAkJCSpyZ2IgPSBMSU1JVChiK3kxKTsKISAJCX0KISAJCXJldHVy
biA2OwohIAljYXNlIFZJREVPX1BBTEVUVEVfUkdCMzI6CiEgCQlpZiAobW1h
cF9rbHVkZ2UpIHsKISAJCQkqcmdiKysgPSBMSU1JVChiK3kpOwohIAkJCSpy
Z2IrKyA9IExJTUlUKGcreSk7CiEgCQkJKnJnYisrID0gTElNSVQocit5KTsK
ISAJCQlyZ2IrKzsKISAJCQkqcmdiKysgPSBMSU1JVChiK3kxKTsKISAJCQkq
cmdiKysgPSBMSU1JVChnK3kxKTsKISAJCQkqcmdiID0gTElNSVQocit5MSk7
CiEgCQl9IGVsc2UgewohIAkJCSpyZ2IrKyA9IExJTUlUKHIreSk7CiEgCQkJ
KnJnYisrID0gTElNSVQoZyt5KTsKISAJCQkqcmdiKysgPSBMSU1JVChiK3kp
OwohIAkJCXJnYisrOwohIAkJCSpyZ2IrKyA9IExJTUlUKHIreTEpOwohIAkJ
CSpyZ2IrKyA9IExJTUlUKGcreTEpOwohIAkJCSpyZ2IgPSBMSU1JVChiK3kx
KTsKISAJCX0KISAJCXJldHVybiA4OwohIAljYXNlIFZJREVPX1BBTEVUVEVf
R1JFWToKISAJCSpyZ2IrKyA9IHk7CiEgCQkqcmdiID0geTE7CiEgCQlyZXR1
cm4gMjsKISAJY2FzZSBWSURFT19QQUxFVFRFX1lVVjQyMjoKISAJY2FzZSBW
SURFT19QQUxFVFRFX1lVWVY6CiEgCQkqcmdiKysgPSB5OwohIAkJKnJnYisr
ID0gdTsKISAJCSpyZ2IrKyA9IHkxOwohIAkJKnJnYiA9IHY7CiEgCQlyZXR1
cm4gNDsKISAJY2FzZSBWSURFT19QQUxFVFRFX1VZVlk6CiEgCQkqcmdiKysg
PSB1OwohIAkJKnJnYisrID0geTsKISAJCSpyZ2IrKyA9IHY7CiEgCQkqcmdi
ID0geTE7CiEgCQlyZXR1cm4gNDsKISAJZGVmYXVsdDoKISAJCURCRygiRW1w
dHk6ICVkXG4iLCBvdXRfZm10KTsKISAJCXJldHVybiAwOwogIAl9CiAgfQog
IAogIHN0YXRpYyBpbnQgc2tpcGNvdW50KGludCBjb3VudCwgaW50IGZtdCkK
LS0tIDE3NzAsMTkyMCAtLS0tCiAgICogQ29sb3JzcGFjZSBjb252ZXJzaW9u
CiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KISAvKiAjZGVm
aW5lIExJTUlUKHgpICgoKCh4KT4weGZmZmZmZik/MHhmZjAwMDA6KCgoeCk8
PTB4ZmZmZik/MDooeCkmMHhmZjAwMDApKT4+MTYpICovCiEgaW5saW5lIAoh
IHN0YXRpYyBpbnQgTElNSVQoIGludCBpbnZhbCApIHsKISAgIGludCByZXR2
YWw7CiEgICBpZiggaW52YWwgPiAweGZmZmZmZiApCiEgICAgIHJldHZhbCA9
IDB4ZmY7CiEgICBlbHNlIGlmKCBpbnZhbCA8PSAweDAwZmZmZiApIAohICAg
ICByZXR2YWwgPSAwOwohICAgZWxzZQohICAgICByZXR2YWwgPSBpbnZhbCA+
PiAxNjsKISAgIHJldHVybiByZXR2YWw7CiEgfQogIAorIC8qIENvbnN0YW50
cyB0aGF0IGFwcGVhciBpbiB5dXZjb252ZXJzaW9uICovCisgc3RhdGljIGNv
bnN0IGludCBteV9BID0gMTI4OworIHN0YXRpYyBjb25zdCBpbnQgbXlfQiA9
IDE2OworIHN0YXRpYyBjb25zdCBpbnQgbXlfQyA9IDc2MzEwOworIHN0YXRp
YyBjb25zdCBpbnQgbXlfRCA9IDEwNDYzNTsKKyBzdGF0aWMgY29uc3QgaW50
IG15X0FBID0gMjU2OTA7Cisgc3RhdGljIGNvbnN0IGludCBteV9CQiA9IDUz
Mjk0OworIHN0YXRpYyBjb25zdCBpbnQgbXlfQ0MgPSAxMzIyNzg7CisgLyog
Q29tb3VuZCBjb25zdGFudHMsIGVuZCByZXN1bHQgb2YgbXVsdHMgYW5kIGFk
ZHMgKi8KKyBzdGF0aWMgY29uc3QgaW50IHJSID0gLTE0NjE0MjQwOyAvKiAo
LSAoIG15X0EgKiBteV9EICsgbXlfQiAqIG15X0MgKSk7ICovCisgc3RhdGlj
IGNvbnN0IGludCBnUiA9IDIzMTIzNTI7IC8qICggbXlfQSAqIG15X0JCIC0g
bXlfQSAqIG15X0FBIC0gbXlfQiAqIG15X0MgKTsgKi8KKyBzdGF0aWMgY29u
c3QgaW50IGJSID0gLTE4MTUyNTQ0OyAvKiAoLTEgKiAoIG15X0IgKiBteV9D
ICsgbXlfQSAqIG15X0NDICkpOyAqLworIAorIGlubGluZQogIHN0YXRpYyBp
bnQgeXV2Y29udmVydCh1bnNpZ25lZCBjaGFyICp5dXYsIHVuc2lnbmVkIGNo
YXIgKnJnYiwgaW50IG91dF9mbXQsCiAgICAgICAgICAgICAgICAgICAgICAg
IGludCBpbl91eXZ5LCBpbnQgbW1hcF9rbHVkZ2UpCiAgewohICAgc3dpdGNo
KG91dF9mbXQpIHsKISAgIGNhc2UgVklERU9fUEFMRVRURV9SR0IyNDoKISAg
IGNhc2UgVklERU9fUEFMRVRURV9SR0IzMjoKISAgICAgewohICAgICAgIGlu
dCB4MCwgeDEsIHgyLCB4MzsKISAgICAgICBpbnQgdDBhLCB0MGIsIHQxLCB0
MmEsIHQyYiwgdDM7CiEgICAgICAgaWYgKGluX3V5dnkpIHsKISAJeDIgPSAq
eXV2Kys7CiEgCXgxID0gKnl1disrOwohIAl4MCA9ICp5dXYrKzsKISAJeDMg
PSAqeXV2OwohICAgICAgIH0gZWxzZSB7CiEgCXgxID0gKnl1disrOwohIAl4
MiA9ICp5dXYrKzsKISAJeDMgPSAqeXV2Kys7CiEgCXgwID0gKnl1djsKISAg
ICAgICB9CiEgICAgICAgdDEgID0gbXlfQyAqIHgxOwohICAgICAgIHQzICA9
IG15X0MgKiB4MzsKISAgICAgICB0MGEgPSBteV9EICogeDA7ICAKISAgICAg
ICB0MGIgPSB0MGEgPj4gMTsgLyogdDBiID0gbXlfQkIgKiB4MDsgKi8KISAg
ICAgICB0MmEgPSBteV9BQSAqIHgyOyAKISAgICAgICB0MmIgPSAoIHQyYSA8
PCAyICkgKyB0MmE7IC8qIHQyYiA9IG15X0NDICogeDI7ICovCiEgICAgICAg
CiEgICAgICAgaWYgKG1tYXBfa2x1ZGdlKSB7CiEgCSpyZ2IrKyA9IExJTUlU
KCB0MSArIHQyYiArIGJSICk7CiEgCSpyZ2IrKyA9IExJTUlUKCB0MmEgLSB0
MGIgKyB0MSArIGdSICk7CiEgCSpyZ2IrKyA9IExJTUlUKCB0MGEgKyB0MSAr
IHJSICk7CiEgCSpyZ2IrKyA9IExJTUlUKCB0MyArIHQyYiArIGJSICk7CiEg
CSpyZ2IrKyA9IExJTUlUKCB0MmEgLSB0MGIgKyB0MyArIGdSICk7CiEgCSpy
Z2IgPSBMSU1JVCggdDBhICsgdDMgKyByUiApOwohICAgICAgIH0gZWxzZSB7
CiEgCSpyZ2IrKyA9IExJTUlUKCB0MGEgKyB0MSArIHJSICk7CiEgCSpyZ2Ir
KyA9IExJTUlUKCB0MmEgLSB0MGIgKyB0MSArIGdSICk7CiEgCSpyZ2IrKyA9
IExJTUlUKCB0MSArIHQyYiArIGJSICk7CiEgCSpyZ2IrKyA9IExJTUlUKCB0
MGEgKyB0MyArIHJSICk7CiEgCSpyZ2IrKyA9IExJTUlUKCB0MmEgLSB0MGIg
KyB0MyArIGdSICk7CiEgCSpyZ2IgPSBMSU1JVCggdDMgKyB0MmIgKyBiUiAp
OwohICAgICAgIH0KISAgICAgICBpZiggb3V0X2ZtdCA9PSBWSURFT19QQUxF
VFRFX1JHQjI0ICkKISAJcmV0dXJuIDY7CiEgICAgICAgZWxzZQohIAlyZXR1
cm4gODsKISAgICAgfQohICAgICBicmVhazsKISAgIGRlZmF1bHQ6CiEgICAg
IHsKISAgICAgICBpbnQgeSwgdSwgdiwgciwgZywgYiwgeTE7CiEgICAgICAg
c3dpdGNoKG91dF9mbXQpIHsKISAgICAgICBjYXNlIFZJREVPX1BBTEVUVEVf
UkdCNTU1OgohICAgICAgIGNhc2UgVklERU9fUEFMRVRURV9SR0I1NjU6CiEg
CWlmIChpbl91eXZ5KSB7CiEgCSAgdSA9ICp5dXYrKyAtIDEyODsKISAJICB5
ID0gKCp5dXYrKyAtIDE2KSAqIDc2MzEwOwohIAkgIHYgPSAqeXV2KysgLSAx
Mjg7CiEgCSAgeTEgPSAoKnl1diAtIDE2KSAqIDc2MzEwOwohIAl9IGVsc2Ug
ewohIAkgIHkgPSAoKnl1disrIC0gMTYpICogNzYzMTA7CiEgCSAgdSA9ICp5
dXYrKyAtIDEyODsKISAJICB5MSA9ICgqeXV2KysgLSAxNikgKiA3NjMxMDsK
ISAJICB2ID0gKnl1diAtIDEyODsKICAJfQorIAlyID0gMTA0NjM1ICogdjsK
KyAJZyA9IC0yNTY5MCAqIHUgKyAtNTMyOTQgKiB2OworIAliID0gMTMyMjc4
ICogdTsKKyAJYnJlYWs7CisgICAgICAgZGVmYXVsdDoKKyAJeSA9ICp5dXYr
KzsKKyAJdSA9ICp5dXYrKzsKKyAJeTEgPSAqeXV2Kys7CisgCXYgPSAqeXV2
OworIAkvKiBKdXN0IHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzICovCisg
CXIgPSAwOworIAlnID0gMDsKKyAJYiA9IDA7CisgCWJyZWFrOworICAgICAg
IH0gCisgICAgICAgc3dpdGNoKG91dF9mbXQpIHsKKyAgICAgICBjYXNlIFZJ
REVPX1BBTEVUVEVfUkdCNTU1OgorIAkqcmdiKysgPSAoKExJTUlUKGcreSkg
JiAweGY4KSA8PCAyKSB8IChMSU1JVChiK3kpID4+IDMpOworIAkqcmdiKysg
PSAoKExJTUlUKHIreSkgJiAweGY4KSA+PiAxKSB8IChMSU1JVChnK3kpID4+
IDYpOworIAkqcmdiKysgPSAoKExJTUlUKGcreTEpICYgMHhmOCkgPDwgMikg
fCAoTElNSVQoYit5MSkgPj4gMyk7CisgCSpyZ2IgPSAoKExJTUlUKHIreTEp
ICYgMHhmOCkgPj4gMSkgfCAoTElNSVQoZyt5MSkgPj4gNik7CisgCXJldHVy
biA0OworICAgICAgIGNhc2UgVklERU9fUEFMRVRURV9SR0I1NjU6CisgCSpy
Z2IrKyA9ICgoTElNSVQoZyt5KSAmIDB4ZmMpIDw8IDMpIHwgKExJTUlUKGIr
eSkgPj4gMyk7CisgCSpyZ2IrKyA9IChMSU1JVChyK3kpICYgMHhmOCkgfCAo
TElNSVQoZyt5KSA+PiA1KTsKKyAJKnJnYisrID0gKChMSU1JVChnK3kxKSAm
IDB4ZmMpIDw8IDMpIHwgKExJTUlUKGIreTEpID4+IDMpOworIAkqcmdiID0g
KExJTUlUKHIreTEpICYgMHhmOCkgfCAoTElNSVQoZyt5MSkgPj4gNSk7Cisg
CXJldHVybiA0OyAKKyAgICAgICBjYXNlIFZJREVPX1BBTEVUVEVfR1JFWToK
KyAJKnJnYisrID0geTsKKyAJKnJnYiA9IHkxOworIAlyZXR1cm4gMjsKKyAg
ICAgICBjYXNlIFZJREVPX1BBTEVUVEVfWVVWNDIyOgorICAgICAgIGNhc2Ug
VklERU9fUEFMRVRURV9ZVVlWOgorIAkqcmdiKysgPSB5OworIAkqcmdiKysg
PSB1OworIAkqcmdiKysgPSB5MTsKKyAJKnJnYiA9IHY7CisgCXJldHVybiA0
OworICAgICAgIGNhc2UgVklERU9fUEFMRVRURV9VWVZZOgorIAkqcmdiKysg
PSB1OworIAkqcmdiKysgPSB5OworIAkqcmdiKysgPSB2OworIAkqcmdiID0g
eTE7CisgCXJldHVybiA0OworICAgICAgIGRlZmF1bHQ6CisgCURCRygiRW1w
dHk6ICVkXG4iLCBvdXRfZm10KTsKKyAJcmV0dXJuIDA7CisgICAgICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor
ICAgICB9CisgICAgIGJyZWFrOworICAgfQorICAgcmV0dXJuIDA7IC8qIHVu
cmVhY2hhYmxlICovCiAgfQogIAogIHN0YXRpYyBpbnQgc2tpcGNvdW50KGlu
dCBjb3VudCwgaW50IGZtdCkK

--0-861021530-953836910=:3728--