Slim fast for wcIIcam0.2

Vyskocil Vladimir vyskocil@math.unice.fr
Thu, 2 Sep 1999 15:51:40 +0200


This is a multi-part message in MIME format.

------=_NextPart_000_0009_01BEF55B.0C4F3860
Content-Type: multipart/alternative;
	boundary="----=_NextPart_001_000A_01BEF55B.0C4F3860"


------=_NextPart_001_000A_01BEF55B.0C4F3860
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hi !

I have modified a patch for b&w quickcam that do a realtime bilinear =
warp of the incoming
image to remove the geometric distortion of the lens. This patch add the =
option=20
in wcIIcam0.2 to use the warp or not (very funny with compression on :-)
I tried some value for the ALPHA parameter in wcIIcam_warp.c and -0.06 =
seems good but
prehaps someone can guess the exact value (and BETA also ?).
This patch is for you if you think the cam make your nose too big and =
your head too fat ;-)

I also noticed that with the new patch for cpia0.2, the compression is =
not working very good,
the video stream often stop with error : EOL not found giving up after =
... bytes. With unpatched
cpia0.2 it's never happen.

------=_NextPart_001_000A_01BEF55B.0C4F3860
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN">






Hi !
 
I have modified a patch for b&w = quickcam=20 that do a realtime bilinear warp of the incoming
image to remove the geometric = distortion of the=20 lens. This patch add the option
in wcIIcam0.2 to use the warp or not = (very funny=20 with compression on :-)
I tried some value for the ALPHA = parameter in=20 wcIIcam_warp.c and -0.06 seems good but
prehaps someone can guess the exact = value (and=20 BETA also ?).
This patch is for you if you think = the cam make=20 your nose too big and your head too fat ;-)
 
I also noticed that with the new patch for cpia0.2, = the=20 compression is not working very good,
the video stream often stop with error : EOL not = found giving=20 up after ... bytes. With unpatched
cpia0.2 it's never = happen.
------=_NextPart_001_000A_01BEF55B.0C4F3860-- ------=_NextPart_000_0009_01BEF55B.0C4F3860 Content-Type: application/octet-stream; name="wcIIcam_warp.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="wcIIcam_warp.patch" ZGlmZiAtciAtVSA0IC0tbmV3LWZpbGUgd2NJSWNhbTAuMi9NYWtlZmlsZSB3Y0lJY2FtMC4yX25l dy9NYWtlZmlsZQotLS0gd2NJSWNhbTAuMi9NYWtlZmlsZQlGcmkgSnVsIDIzIDIwOjA4OjAxIDE5 OTkKKysrIHdjSUljYW0wLjJfbmV3L01ha2VmaWxlCVRodSBTZXAgIDIgMTM6MDk6NDEgMTk5OQpA QCAtMzIsMTAgKzMyLDEwIEBACiAKIGNsZWFuOgogCXJtIC1mICQoUFJPRykgKi5vIGdudS1nZXRv cHQvKi5vICouY29yZSBjb3JlICouYmFrICp+ICouZmxjCiAKLSQoUFJPRyk6IHdjSUljYW0ubyB3 Y0lJX2h3Lm8gd2NJSV9jb252ZXJ0Lm8gd2NJSV9wcm9jcy5vICQoT0JKUykgJChJTkNMVURFUykK LQkkKExEKSAtbyAkKFBST0cpIHdjSUljYW0ubyB3Y0lJX2h3Lm8gd2NJSV9wcm9jcy5vIHdjSUlf Y29udmVydC5vICQoT0JKUykgJChMREZMQUdTKSAKKyQoUFJPRyk6IHdjSUljYW0ubyB3Y0lJX2h3 Lm8gd2NJSV9jb252ZXJ0Lm8gd2NJSV9wcm9jcy5vIHdjSUlfd2FycC5vICQoT0JKUykgJChJTkNM VURFUykKKwkkKExEKSAtbyAkKFBST0cpIHdjSUljYW0ubyB3Y0lJX2h3Lm8gd2NJSV9wcm9jcy5v IHdjSUlfY29udmVydC5vIHdjSUlfd2FycC5vICQoT0JKUykgJChMREZMQUdTKSAKIAkjc3RyaXAg JChQUk9HKQogCiB3Y0lJY2FtLm86IHdjSUljYW0uYyAkKElOQ0xVREVTKQogCSQoQ0MpICQoQ0ZM QUdTKSAtYyB3Y0lJY2FtLmMKQEAgLTQ4LDQgKzQ4LDYgQEAKIAogd2NJSV9wcm9jcy5vOiB3Y0lJ X3Byb2NzLmMgJChJTkNMVURFUykKIAkkKENDKSAkKENGTEFHUykgLWMgd2NJSV9wcm9jcy5jCiAK K3djSUlfd2FycC5vOiB3Y0lJX3dhcnAuYyAkKElOQ0xVREVTKQorCSQoQ0MpICQoQ0ZMQUdTKSAt YyB3Y0lJX3dhcnAuYwpkaWZmIC1yIC1VIDQgLS1uZXctZmlsZSB3Y0lJY2FtMC4yL01ha2VmaWxl X2Qgd2NJSWNhbTAuMl9uZXcvTWFrZWZpbGVfZAotLS0gd2NJSWNhbTAuMi9NYWtlZmlsZV9kCVdl ZCBKdWwgMjEgMjE6NDU6NTIgMTk5OQorKysgd2NJSWNhbTAuMl9uZXcvTWFrZWZpbGVfZAlUaHUg U2VwICAyIDE1OjA5OjQyIDE5OTkKQEAgLTMyLDEwICszMiwxMCBAQAogCiBjbGVhbjoKIAlybSAt ZiAkKFBST0cpICoubyBnbnUtZ2V0b3B0LyoubyAqLmNvcmUgY29yZSAqLmJhayAqfiAqLmZsYwog Ci0kKFBST0cpOiB3Y0lJY2FtLm8gd2NJSV9ody5vIHdjSUlfY29udmVydC5vIHdjSUlfcHJvY3Mu byAkKE9CSlMpICQoSU5DTFVERVMpCi0JJChMRCkgJChMREZMQUdTKSAtbyAkKFBST0cpIHdjSUlj YW0ubyB3Y0lJX2h3Lm8gd2NJSV9wcm9jcy5vIHdjSUlfY29udmVydC5vICQoT0JKUykgCiskKFBS T0cpOiB3Y0lJY2FtLm8gd2NJSV9ody5vIHdjSUlfY29udmVydC5vIHdjSUlfcHJvY3MubyB3Y0lJ X3dhcnAubyAkKE9CSlMpICQoSU5DTFVERVMpCisJJChMRCkgJChMREZMQUdTKSAtbyAkKFBST0cp IHdjSUljYW0ubyB3Y0lJX2h3Lm8gd2NJSV9wcm9jcy5vIHdjSUlfY29udmVydC5vIHdjSUlfd2Fy cC5vICQoT0JKUykgCiAJc3RyaXAgJChQUk9HKSAKIAogd2NJSWNhbS5vOiB3Y0lJY2FtLmMgJChJ TkNMVURFUykKIAkkKENDKSAkKENGTEFHUykgLWMgd2NJSWNhbS5jCkBAIC00OCw0ICs0OCw2IEBA CiAKIHdjSUlfcHJvY3Mubzogd2NJSV9wcm9jcy5jICQoSU5DTFVERVMpCiAJJChDQykgJChDRkxB R1MpIC1jIHdjSUlfcHJvY3MuYwogCit3Y0lJX3dhcnAubzogd2NJSV93YXJwLmMgJChJTkNMVURF UykKKwkkKENDKSAkKENGTEFHUykgLWMgd2NJSV93YXJwLmMKZGlmZiAtciAtVSA0IC0tbmV3LWZp bGUgd2NJSWNhbTAuMi93Y0lJX2NvbnZlcnQuYyB3Y0lJY2FtMC4yX25ldy93Y0lJX2NvbnZlcnQu YwotLS0gd2NJSWNhbTAuMi93Y0lJX2NvbnZlcnQuYwlTYXQgSnVsIDI0IDAxOjEzOjE5IDE5OTkK KysrIHdjSUljYW0wLjJfbmV3L3djSUlfY29udmVydC5jCVRodSBTZXAgIDIgMTQ6NTE6MzYgMTk5 OQpAQCAtMSw5ICsxLDE0IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogI2luY2x1ZGUgImNwaWEu aCIKKyNpbmNsdWRlICJ3Y0lJX3dhcnAuaCIKIAogZXh0ZXJuIGludCBWSURFT1NJWkU7CitleHRl cm4gaW50IFdBUlA7CisKK2ludCBnZXRXaWR0aCh2b2lkKTsKK2ludCBnZXRIZWlnaHQodm9pZCk7 CiAKIHVuc2lnbmVkIGNoYXIgKmxhc3RidWYodm9pZCk7CiB1bnNpZ25lZCBjaGFyICpleHBhbmRs aW5lcyhpbnQgLHVuc2lnbmVkIGNoYXIgKmR1YWxbXSx1bnNpZ25lZCBjaGFyICopOwogaW5saW5l IHVuc2lnbmVkIGNoYXIgKmV4cGFuZChpbnQgdGxpbmUsdW5zaWduZWQgY2hhciAqZHVhbDAsdW5z aWduZWQgY2hhciAqZHVhbDEsdW5zaWduZWQgY2hhciAqb2J1ZikgOwpAQCAtMzQxLDE5ICszNDYs MjUgQEAKIHJldHVybiBvYnVmLW9yaWdvYnVmOwogfQogCiBpbnQgc3RyZWFtMnJnYjMyKHVuc2ln bmVkIGNoYXIgKmlidWYsdW5zaWduZWQgY2hhciAqb2J1ZixpbnQgc2l6ZSkgewotCWlmICggVklE RU9TSVpFID09IFZJREVPU0laRV9YQ0lGICkgCi0JCXJldHVybiBzdHJlYW0ycmdiMzJfZXhwYW5k KGlidWYsb2J1ZixzaXplKTsKLQllbHNlCi0JCXJldHVybiBzdHJlYW0ycmdiMzJfbm9ybWFsKGli dWYsb2J1ZixzaXplKTsKKyAgaW50IHJldDsKKyAgaWYgKCBWSURFT1NJWkUgPT0gVklERU9TSVpF X1hDSUYgKSAKKyAgICByZXQgPSBzdHJlYW0ycmdiMzJfZXhwYW5kKGlidWYsb2J1ZixzaXplKTsK KyAgZWxzZQorICAgIHJldCA9IHN0cmVhbTJyZ2IzMl9ub3JtYWwoaWJ1ZixvYnVmLHNpemUpOwor ICBpZihXQVJQKSB3YXJwKG9idWYsIGdldFdpZHRoKCksIGdldEhlaWdodCgpKTsKKyAgcmV0dXJu IHJldDsKIH0KIAogaW50IHN0cmVhbTJyZ2IzMmModW5zaWduZWQgY2hhciAqaWJ1Zix1bnNpZ25l ZCBjaGFyICpvYnVmLGludCBzaXplKSB7Ci0JaWYgKCBWSURFT1NJWkUgPT0gVklERU9TSVpFX1hD SUYgKSAKLQkJcmV0dXJuIHN0cmVhbTJyZ2IzMmNfZXhwYW5kKGlidWYsb2J1ZixzaXplKTsKLQll bHNlCi0JCXJldHVybiBzdHJlYW0ycmdiMzJjX25vcm1hbChpYnVmLG9idWYsc2l6ZSk7CisgIGlu dCByZXQ7CisgIGlmICggVklERU9TSVpFID09IFZJREVPU0laRV9YQ0lGICkgCisgICAgcmV0ID0g c3RyZWFtMnJnYjMyY19leHBhbmQoaWJ1ZixvYnVmLHNpemUpOworICBlbHNlCisgICAgcmV0ID0g c3RyZWFtMnJnYjMyY19ub3JtYWwoaWJ1ZixvYnVmLHNpemUpOworICBpZihXQVJQKSB3YXJwKG9i dWYsIGdldFdpZHRoKCksIGdldEhlaWdodCgpKTsKKyAgcmV0dXJuIHJldDsKIH0KIAogdW5zaWdu ZWQgY2hhciAqZXhwYW5kbGluZXMoaW50IGxlbix1bnNpZ25lZCBjaGFyICpkdWFsW10sdW5zaWdu ZWQgY2hhciAqb2J1ZikgewogCmRpZmYgLXIgLVUgNCAtLW5ldy1maWxlIHdjSUljYW0wLjIvd2NJ SV93YXJwLmMgd2NJSWNhbTAuMl9uZXcvd2NJSV93YXJwLmMKLS0tIHdjSUljYW0wLjIvd2NJSV93 YXJwLmMJVGh1IEphbiAgMSAwMTowMDowMCAxOTcwCisrKyB3Y0lJY2FtMC4yX25ldy93Y0lJX3dh cnAuYwlUaHUgU2VwICAyIDE1OjA4OjE1IDE5OTkKQEAgLTAsMCArMSwyNzEgQEAKKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorTW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgcXVpY2t3YXJwIGZvciBRdWlja2NhbQorCisq IENvbG9yIGJpbGllYXIgd2FycCBpbnN0ZWFkIG9mIEImVworKiBEb24ndCB1c2UgZmlsZSBhbnlt b3JlIGZvciB0aGUgbWFwCisKKzA5LzE5OTkKK1Z5c2tvY2lsIFZsYWRpbWlyCit2eXNrb2NpbEB1 bmljZS5mcgorCitPcmlnaW5hbCBDb3B5cmlnaHQgZm9sbG93IDoKKworUXVpY2tXYXJwIHZlcnNp b24gMC4xIGltYWdlIHdhcnBpbmcgbW9kdWxlIGZvciBRdWlja0NhbS4KKworQ29weXJpZ2h0IChD KSAxOTk2IE1pY2hhZWwgSGVyZiAoaGVyZkBjbXUuZWR1KS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu CisKK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyhhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisKK1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKK0dOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKK1RoaXMgaW1hZ2Ugd2FycGluZyBtb2R1 bGUgaXMgYmVpbmcgcmVsZWFzZWQgaW50byB0aGUgTGludXgvQlNECitjb21tdW5pdHkgdW5kZXIg dGhlIEdQTC4gIFNlZSBDT1BZSU5HIGZvciBkZXRhaWxzLiAgSWYgeW91J3JlIGEKK2NvbW1lcmNp YWwgaW50ZXJlc3QgYW5kIHdpc2ggdG8gdXNlIHRoZSBjb2RlIGZvciBhbnkgcHJvcHJpZXRhcnkK K3NvZnR3YXJlIHdoaWNoIHdvdWxkIHZpb2xhdGUgdGhlIHRlcm1zIG9mIHRoZSBHUEwsIGxpY2Vu c2luZyBvcHRpb25zCithcmUgYXZhaWxhYmxlLCBhbmQgeW91IG11c3QgY29udGFjdCBtZSBmb3Ig ZnVydGhlciB0ZXJtcy4KKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3Rh bnRpYWwgcG9ydGlvbnMgb2YgdGhlIHByb2dyYW0uCisKKyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBmaWx0 ZXIgbW9kdWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8q IGhhcyB0aGUgaXJyaXRhdGluZ2x5IHVucm9sbGVkIGZ1bmN0aW9ucyB0byB3YXJwIGltYWdlcyAq LworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxt YXRoLmg+CisKKyNpbmNsdWRlICJjcGlhLmgiCisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIG5ld19z Y2FuW01BWF9SR0JBX0lNQUdFX1NJWkVdOworc3RhdGljIGludCAqZGVsdCA9IE5VTEw7CisKKy8q IGRvZXMgZmFzdCBiaWxpbmVhciBpbnRlcnBvbGF0aW9uLiAgSSBkb24ndCBrb253IG1hbnkgd2F5 cyAgICAgICAgKi8KKy8qIHRvIHNwZWVkIHRoaXMgdXAsIGJ1dCBpZiB5b3Uga25vdyBvZiBhbnkg c2hvcnQgb2YgaGFuZGNvZGVkIGFzbSwgKi8KKy8qIGxldCBtZSBrbm93LiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworc3RhdGljIHZvaWQg YmlsaW5lYXJfaW50ICh1bnNpZ25lZCBjaGFyICpwaXhlbHMsIGludCB4c2l6ZSwgaW50IHlzaXpl LCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIGNoYXIgKm91dHBpeGVscykgeworICAgIGludCBmeCwg ZnksIGl4eSwgcHgwLCBweDEsIHRlbXAsIHRlbXAyLCBpeHk0LCB4c2l6ZTQ7CisKKyAgICAvKiB3 YXJwIHNob3VsZCBndWFyYW50ZWUgdGhhdCB0aGVzZSBhcmUgbm90IG5lY2Vzc2FyeSAqLworICAg IC8qIEZvciBzcGVlZCByZWFzb25zIHdlIGxlYXZlIHRoZW0gb3V0ICAgICAgICAgICAgICAgICov CisgICAgLyogSW4gZ2VuZXJhbCwgaG93ZXZlciwgaW5jbHVkZSB0aGVtICAgICAgICAgICAgICAg ICAgKi8KKyAgICAvKiAgICBpZiAoIHgrMSA+PSAoeHNpemU8PDYpKSB4ID0gKHhzaXplIC0gMik8 PDY7ICAgICAqLworICAgIC8qICAgIGlmICggeSsxID49ICh5c2l6ZTw8NikpIHkgPSAoeXNpemUg LSAyKTw8NjsgICAgICovCisgICAgLyogICAgaWYgKCB4IDwgMCApIHggPSAwOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiAgICBpZiAoIHkgPCAwICkgeSA9IDA7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgaXh5ID0gKHg+PjYpKyh5Pj42KSp4c2l6 ZTsgLyogaW50ZWdlciBwYXJ0cyBvZiB4LCB5ICAgICAgICAgICAgICAgKi8KKyAgICBmeCA9IHgg JiAweDNGOyAgICAgICAgICAgICAvKiAwLi42NCAoc2l4IGJpdHMgLS0gZmxvYXQgcGFydCBvZiB4 KSAqLworICAgIGZ5ID0geSAmIDB4M0Y7CisgICAgCisgICAgaXh5NCA9IGl4eTw8MjsgICAgICAg ICAgICAgLyogaXh5ICogNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICB4c2l6 ZTQgPSB4c2l6ZTw8MjsgICAgICAgICAvKiB4c2l6ZSAqIDQgICAgICAgICAgICAgICAgICAgICAg ICAgICAqLworCisgICAgLyogZG8gdGhlIGludGVycG9sYXRpb24gKi8KKyAgICAvKiBSICovCisg ICAgdGVtcCA9IHBpeGVsc1tpeHk0XTsKKyAgICBweDAgPSAodGVtcDw8NikgKyBmeCAqIChwaXhl bHNbaXh5NCArIDRdIC0gdGVtcCk7CisgICAgdGVtcDIgPSBwaXhlbHNbaXh5NCt4c2l6ZTRdOwor ICAgIHB4MSA9ICh0ZW1wMjw8NikgKyBmeCAqIChwaXhlbHNbaXh5NCArIHhzaXplNCArIDRdIC0g dGVtcDIpOworICAgIC8qIHB4MCBhbmQgcHgxIGFyZSAyNi42ICovCisgICAgCisgICAgKm91dHBp eGVscyA9IChweDAgKyAoZnkqKHB4MSAtIHB4MCkgPj4gNikpID4+IDY7CisgICAgCisgICAgLyog RyAqLworICAgIHRlbXAgPSBwaXhlbHNbaXh5NCsxXTsKKyAgICBweDAgPSAodGVtcDw8NikgKyBm eCAqIChwaXhlbHNbaXh5NCArIDVdIC0gdGVtcCk7CisgICAgdGVtcDIgPSBwaXhlbHNbaXh5NCt4 c2l6ZTQrMV07CisgICAgcHgxID0gKHRlbXAyPDw2KSArIGZ4ICogKHBpeGVsc1tpeHk0ICsgeHNp emU0ICsgNV0gLSB0ZW1wMik7CisgICAgLyogcHgwIGFuZCBweDEgYXJlIDI2LjYgKi8KKyAgICAK KyAgICAqKG91dHBpeGVscysxKSA9IChweDAgKyAoZnkqKHB4MSAtIHB4MCkgPj4gNikpID4+IDY7 CisgICAgCisgICAgLyogQiAqLworICAgIHRlbXAgPSBwaXhlbHNbaXh5NCsyXTsKKyAgICBweDAg PSAodGVtcDw8NikgKyBmeCAqIChwaXhlbHNbaXh5NCArIDZdIC0gdGVtcCk7CisgICAgdGVtcDIg PSBwaXhlbHNbaXh5NCt4c2l6ZTQrMl07CisgICAgcHgxID0gKHRlbXAyPDw2KSArIGZ4ICogKHBp eGVsc1tpeHk0ICsgeHNpemU0ICsgNl0gLSB0ZW1wMik7CisgICAgLyogcHgwIGFuZCBweDEgYXJl IDI2LjYgKi8KKyAgICAKKyAgICAqKG91dHBpeGVscysyKSA9IChweDAgKyAoZnkqKHB4MSAtIHB4 MCkgPj4gNikpID4+IDY7CisgICAgCit9CisKK3ZvaWQgd2FycCh1bnNpZ25lZCBjaGFyICpzY2Fu LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKKyAgICBmbG9hdCBjZW50X3gsIGNlbnRfeTsKKyAg ICBpbnQgaGFsZngsIGhhbGZ5LCBoYWxmeDQsIGhhbGZ5NDsKKyAgICBpbnQgY2VudF94NiwgY2Vu dF95NjsKKyAgICBpbnQgKnRlbXA7CisgICAgdW5zaWduZWQgY2hhciAqcHRlbXA7CisgICAgaW50 IHgsIHksIGZ4LCBmeTsKKyAgICAKKyAgICBjZW50X3ggPSB3aWR0aC8yLTAuNTsKKyAgICBjZW50 X3kgPSBoZWlnaHQvMi0wLjU7CisgICAgaGFsZnggPSB3aWR0aC8yOworICAgIGhhbGZ5ID0gaGVp Z2h0LzI7CisgICAgaGFsZng0ID0gaGFsZngqNDsKKyAgICBoYWxmeTQgPSBoYWxmeSo0OworICAg IGNlbnRfeDYgPSAoaW50KShjZW50X3ggKiA2NCk7CisgICAgY2VudF95NiA9IChpbnQpKGNlbnRf eSAqIDY0KTsKKyAgICAKKyAgICAvKiBpbiBhIHJhZGlhbCB3YXJwLCB0aGUgc2NyZWVuIGNhbiBi ZSBicm9rZW4gaW50byBmb3VyICAgICAgICAgICAgICAgICAgKi8KKyAgICAvKiBzeW1tZXRyaWMg cXVhZHJhbnRzLiAgb3VyIGRlbHRhZmlsZSBoYXMgaW5mb3JtYXRpb24gZm9yIG9uZSBvZiB0aGVz ZS4gKi8KKyAgICAvKiBTbywgd2UgdXNlIGZvdXIgbG9vcHMgdG8gYXZvaWQgYnJhbmNoZXMgaW4g aW5uZXIgbG9vcC4gIHRoaW5ncyAgICAgICAgKi8KKyAgICAvKiB3aWxsIGJlIHNsb3cgaWYgd2Ug aGF2ZSAiaWZzIiBpbiB0aGUgaW5uZXIgbG9vcCB0byBkZXRlcm1pbmUgcXVhZHJhbnQgKi8KKwor ICAgIC8qIHVwcGVyIGxlZnQgcXVhZHJhbnQgKi8KKyAgICB0ZW1wPWRlbHQ7CisgICAgcHRlbXA9 bmV3X3NjYW47CisgICAgZm9yICh5PTA7IHk8aGFsZnk7IHkrKykgeworCWZvciAoeD0wOyB4PGhh bGZ4OyB4KyspIHsKKwkgICAgZnggPSAqKHRlbXArKykgKyBjZW50X3g2OworCSAgICBmeSA9ICoo dGVtcCsrKSArIGNlbnRfeTY7CisJICAgIGJpbGluZWFyX2ludChzY2FuLCB3aWR0aCwgaGVpZ2h0 LCBmeCwgZnksIHB0ZW1wKTsKKwkgICAgcHRlbXArPTQ7CisgICAgICAgIH0KKyAgICAgICAgLyog c2tpcCB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIHNjYW5saW5lICovCisJcHRlbXAgKz0gaGFsZng0 OworICAgIH0KKworICAgIC8qIHVwcGVyIHJpZ2h0IHF1YWRyYW50ICAgICAgICAgKi8KKyAgICAv KiB3b3JraW5nIGJhY2sgYWxvbmcgc2NhbmxpbmVzICovCisgICAgdGVtcCA9IGRlbHQtd2lkdGgt MTsKKyAgICBwdGVtcCA9IG5ld19zY2FuK2hhbGZ4NDsKKyAgICBmb3IgKHk9MDsgeTxoYWxmeTsg eSsrKSB7CisJdGVtcCArPSAyKndpZHRoOworCWZvciAoeD1oYWxmeDsgeDx3aWR0aDsgeCsrKSB7 CisgICAgICAgICAgICAvKiBkb24ndCBjaGFuZ2UgdGhlIG9yZGVyOyB3ZSdyZSBzY2FubmluZyBi YWNrd2FyZHMgKi8KKwkgICAgZnkgPSAqKHRlbXAtLSkgKyBjZW50X3k2OworCSAgICBmeCA9IC0q KHRlbXAtLSkgKyBjZW50X3g2OworCSAgICBiaWxpbmVhcl9pbnQoc2Nhbiwgd2lkdGgsIGhlaWdo dCwgZngsIGZ5LCBwdGVtcCk7CisJICAgIHB0ZW1wKz00OworCX0KKwlwdGVtcCArPSBoYWxmeDQ7 CisgICAgfQorCisgICAgLyogYm90dG9tIGxlZnQgcXVhZHJhbnQgKi8KKyAgICB0ZW1wID0gZGVs dCt3aWR0aCpoZWlnaHQvMit3aWR0aDsKKyAgICBwdGVtcCA9IG5ld19zY2FuK3dpZHRoKmhhbGZ5 NDsKKyAgICBmb3IgKHk9aGFsZnk7IHk8aGVpZ2h0OyB5KyspIHsKKwl0ZW1wIC09IDIqd2lkdGg7 CisJZm9yICh4PTA7IHg8aGFsZng7IHgrKykgeworCSAgICBmeCA9ICoodGVtcCsrKSArIGNlbnRf eDY7CisJICAgIGZ5ID0gLSoodGVtcCsrKSArIGNlbnRfeTY7CisJICAgIGJpbGluZWFyX2ludChz Y2FuLCB3aWR0aCwgaGVpZ2h0LCBmeCwgZnksIHB0ZW1wKTsKKwkgICAgcHRlbXArPTQ7CisJfQor CXB0ZW1wICs9IGhhbGZ4NDsKKyAgICB9CisKKyAgICAvKiBib3R0b20gcmlnaHQgcXVhZHJhbnQg Ki8KKyAgICB0ZW1wID0gZGVsdCt3aWR0aCpoZWlnaHQvMi0xOworICAgIHB0ZW1wID0gbmV3X3Nj YW4gKyB3aWR0aCpoYWxmeTQgKyBoYWxmeDQ7CisgICAgZm9yICh5PWhhbGZ5OyB5PGhlaWdodDsg eSsrKSB7CisJZm9yICh4PWhhbGZ4OyB4PHdpZHRoOyB4KyspIHsKKyAgICAgICAgICAgIC8qIGRv bid0IGNoYW5nZSB0aGUgb3JkZXIgKi8KKwkgICAgZnkgPSAtKih0ZW1wLS0pICsgY2VudF95NjsK KwkgICAgZnggPSAtKih0ZW1wLS0pICsgY2VudF94NjsKKwkgICAgYmlsaW5lYXJfaW50KHNjYW4s IHdpZHRoLCBoZWlnaHQsIGZ4LCBmeSwgcHRlbXApOworICAgICAgICAgICAgcHRlbXArPTQ7CisJ fQorCXB0ZW1wICs9IGhhbGZ4NDsKKyAgICB9CisKKyAgICBtZW1jcHkoc2NhbiwgbmV3X3NjYW4s IHdpZHRoKmhlaWdodCo0KTsKKworICAgIC8qIGFsbCBkb25lLiAqLworICAgIHJldHVybjsKK30K KworLyogKi8KKworLyogVGhpcyBjb2RlIGlzIGEgcHJlY29tcHV0YXRpb24gbW9kdWxlLiAgSXQg ZG9lc24ndCBuZWVkIHRvIGJlICAgICAgICovCisvKiBvcHRpbWl6ZWQuICBJIGZpZ3VyZSB0aGF0 IHJ1bm5pbmcgaXQgZXZlcnkgZnJhbWUgd291bGQgYXQgbGVhc3QgICAgKi8KKy8qIHRha2Ugc29t ZSB0aW1lLiAgSSd2ZSBjaG9zZW4gYWNjdXJhY3kgb3ZlciBzcGVlZCBpbiBzZXZlcmFsIGNhc2Vz LiAqLworCisvKiB0aGlzIGlzIGEgR1VFU1MgLS0gSSBmb3VuZCBpdCBieSBleHBlcmltZW50YXRp b24sIHNpbmNlIEkgZG9uJ3QgaGF2ZSAqLworLyogYW55IHJlYWwgZGF0YSBhYm91dCB0aGUgbGVu cy4gIElmIENvbm5lY3RpeCByZWxlYXNlcyB0aGUgcmVhbCAgICAgICAgKi8KKy8qIG51bWJlcnMg d2UgY291bGQgZXZlbiBoYXZlIGEgc2Vjb25kLW9yZGVyIGFwcHJveGltYXRpb24uICAgICAgICAg ICAgICovCisvKiNkZWZpbmUgQUxQSEEgLTAuMDcyKi8KKyNkZWZpbmUgQUxQSEEgLTAuMDYKKwor LyogdHJhbnMgcHV0cyB0aGUgc2lnbmVkIGRpc3RhbmNlIGZyb20gdGhlIGNlbnRlciBvZiB0aGUg c2NyZWVuIGluICppbi4gKi8KKy8qIHRoaXMgd2FzIHRoZSBiZXN0IHdheSBJIGNvdWxkIHRoaW5r IHRvIG1ha2UgcXVpY2tseSB1c2FibGUgZGF0YS4gICAgICovCisKK3N0YXRpYyB2b2lkIHRyYW5z IChmbG9hdCAqaW4sIGZsb2F0IGNlbnRfeCwgZmxvYXQgY2VudF95KSAKK3sKKyAgICBmbG9hdCBk ZWx0eDsKKyAgICBmbG9hdCBkZWx0eTsKKyAgICBmbG9hdCByLCBycHJpbWU7CisKKyAgICBkZWx0 eCA9IChpbnQpaW5bMF0gLSBjZW50X3g7CisgICAgZGVsdHkgPSAoaW50KWluWzFdIC0gY2VudF95 OworCisgICAgLyogciBpcyB0aGUgbm9ybWFsaXplZCByYWRpdXMgKGkuZS4gcj0xIGF0IDAsIGhh bGZ5KSAgICAgICAgICAgICAgICovCisgICAgLyogaWYgeW91IHdhbnQgdG8gbWFrZSB0aGlzIHdv cmsgZm9yICJ6b29tZWQiIHZpZXdzICh0aGF0ICAgICAgICAgICovCisgICAgLyogZG9uJ3QgdXNl IHRoZSBmdWxsIGxlbnMpLCBjaGFuZ2UgdGhpcyBsaW5lICAgICAgICAgICAgICAgICAgICAgICov CisgICAgLyogb3B0OiB0aGlzIHdhcyBhIHRhYmxlIGxvb2t1cCBidXQgSSBkZWNpZGVkIGZvciBh Y2N1cmFjeSBpbnN0ZWFkICovCisgICAgciA9IHNxcnQoZGVsdHgqZGVsdHgrZGVsdHkqZGVsdHkp LyhmbG9hdCkoY2VudF94KzAuNSk7IAorICAgICAgICAKKyAgICAvKiBqdXN0IGRvIHRoZSBmaXJz dC1vcmRlciBhcHByb3hpbWF0aW9uIG5vdy4gICAgICAgKi8KKyAgICAvKiBJIGRvbid0IGhhdmUg dGhlIHJlc29sdXRpb24gb3IgZGF0YSB0byBkbyBiZXR0ZXIgKi8KKyAgICAvKiB3ZSByZWFsbHkg d2FudCByICsgYWxwaGEqcl4zICsgYmV0YSpyXjUgKyAuLi4gICAgKi8KKyAgICAvKiBpZiBhbnlv bmUgY2FuIHNvbHZlIGZvciBiZXRhIHBsZWFzZSBsZXQgbWUga25vdy4gKi8KKyAgICBycHJpbWUg PSByICsgQUxQSEEqcipyKnI7CisKKyAgICAvKiBzY2FsZSB0aGUgaW1hZ2Ugc28gd2Ugc2VlIGFs bCBvZiBpdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogd2UgcmVhbGx5 IHNob3VsZCBkbyB0aGlzIGFuYWx5dGljYWxseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAq LworICAgIC8qIGkuZS4gc29sdmUgdHJhbnMoMCxjZW50X3kpIC0+ICgwLGNlbnRfeSkgYW5kIHNj YWxlIHNvIGl0IGhhcHBlbnMgKi8KKyAgICAvKiBidXQsIGZvciBub3c6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgcnByaW1lICo9IDEu MDU7CisgICAgCisgICAgaWYgKHIgIT0gMCkgeworCS8qIHNpbWlsYXIgdHJpYW5nbGUgY29uc3Ry dWN0aW9uICovCisJaW5bMF0gPSBycHJpbWUgKiBkZWx0eCAvIHI7CisJaW5bMV0gPSBycHJpbWUg KiBkZWx0eSAvIHI7CisgICAgfSBlbHNlIHsKKwlpblswXSA9IDA7CisJaW5bMV0gPSAwOworICAg IH0KKyAgICByZXR1cm47Cit9CisKK3ZvaWQgaW5pdF93YXJwKGludCB4c2l6ZSwgaW50IHlzaXpl KXsKKworICAgIGZsb2F0IGFbMl07CisgICAgZmxvYXQgY2VudF94LCBjZW50X3k7CisgICAgaW50 IHgseTsKKyAgICBpbnQgKnB0ZW1wOworICAgIAorICAgIGlmKGRlbHQpeworICAgICAgZnJlZShk ZWx0KTsKKyAgICB9CisgICAgZGVsdCA9IChpbnQgKiltYWxsb2Moc2l6ZW9mKGludCkqeHNpemUq eXNpemUvMik7CisgICAgcHRlbXAgPSBkZWx0OworICAgIC8qIG5vdGU6IHRoZSAiY2VudGVyIiBv ZiBhICgyYSB4IDJiKSBpbWFnZSBpcyBoYWxmd2F5IGJldHdlZW4gKi8KKyAgICAvKiAgICAgICB0 d28gcGl4ZWxzLCBoZW5jZSB0aGUgLTAuNSAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisg ICAgY2VudF94ID0geHNpemUvMi0wLjU7CisgICAgY2VudF95ID0geXNpemUvMi0wLjU7CisKKyAg ICBmb3IgKHk9MDsgeTx5c2l6ZS8yOyB5KyspIHsKKwlmb3IgKHg9MDsgeDx4c2l6ZS8yOyB4Kysp IHsKKwkgICAgYVswXSA9IHg7CisJICAgIGFbMV0gPSB5OworCSAgICB0cmFucyhhLCBjZW50X3gs IGNlbnRfeSk7CisJICAgIC8qIGNvbnZlcnQgZmxvYXQgdG8gMjYuNiBmaXhlZCBwb2ludCAqLwor CSAgICBpZiAoY2VudF94K2FbMF0gPCAyKSBhWzBdID0gLWNlbnRfeCsyOworCSAgICBpZiAoY2Vu dF95K2FbMV0gPCAyKSBhWzFdID0gLWNlbnRfeSsyOworCSAgICAqKHB0ZW1wKyspID0gKGludCko YVswXSo2NCk7CisJICAgICoocHRlbXArKykgPSAoaW50KShhWzFdKjY0KTsKKwl9CisgICAgfQor ICAgIHJldHVybjsKK30KZGlmZiAtciAtVSA0IC0tbmV3LWZpbGUgd2NJSWNhbTAuMi93Y0lJX3dh cnAuaCB3Y0lJY2FtMC4yX25ldy93Y0lJX3dhcnAuaAotLS0gd2NJSWNhbTAuMi93Y0lJX3dhcnAu aAlUaHUgSmFuICAxIDAxOjAwOjAwIDE5NzAKKysrIHdjSUljYW0wLjJfbmV3L3djSUlfd2FycC5o CVRodSBTZXAgIDIgMTM6MDg6MjcgMTk5OQpAQCAtMCwwICsxLDUgQEAKKyNpZm5kZWYgV0FSUF9I CisjZGVmaW5lIFdBUlBfSAordm9pZCBpbml0X3dhcnAoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK K3ZvaWQgd2FycCh1bnNpZ25lZCBjaGFyICpzY2FuLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwor I2VuZGlmCmRpZmYgLXIgLVUgNCAtLW5ldy1maWxlIHdjSUljYW0wLjIvd2NJSWNhbS5jIHdjSUlj YW0wLjJfbmV3L3djSUljYW0uYwotLS0gd2NJSWNhbTAuMi93Y0lJY2FtLmMJU2F0IEp1bCAyNCAw MTowMzo1OCAxOTk5CisrKyB3Y0lJY2FtMC4yX25ldy93Y0lJY2FtLmMJVGh1IFNlcCAgMiAxNTow MzoxNSAxOTk5CkBAIC00NSw4ICs0NSwxMCBAQAogCiAjaW5jbHVkZSAiY3BpYS5oIgogI2luY2x1 ZGUgIndjSUlfcHJvY3MuaCIKIAorI2luY2x1ZGUgIndjSUlfd2FycC5oIgorCiBpbnQgZGV2Owog CiBndWludCB0aW1lb3V0aWQ7CiBHdGtXaWRnZXQgKmRyYXdpbmdfYXJlYTsKQEAgLTYxLDggKzYz LDkgQEAKIAogaW50IFZJREVPU0laRSA9IFZJREVPU0laRV9YQ0lGOwogaW50IENPTVBSRVNTSU9O ID0gU1RBVEVfT047CiBpbnQgSU5JVF9XQ0lJID0gMTsKK2ludCBXQVJQID0gU1RBVEVfT0ZGOwog CiBpbnQgZ2V0RGVwdGgodm9pZCk7CiBpbnQgZ2V0V2lkdGgodm9pZCk7CiBpbnQgZ2V0SGVpZ2h0 KHZvaWQpOwpAQCAtODQsOCArODcsOSBAQAogdm9pZCBkZWxldGVfZXZlbnQoIEd0a1dpZGdldCAq d2lkZ2V0LAogCQkgICBHZGtFdmVudCAgKmV2ZW50LAogCQkgICBncG9pbnRlciAgIGRhdGEgKQog eworCSAgZ3RrX3RpbWVvdXRfcmVtb3ZlKHRpbWVvdXRpZCk7CiAJICBjbG9zZV93Y0lJKCk7CiAJ ICBndGtfbWFpbl9xdWl0ICgpOwogCX0KIAkvKi0tLS0tLS0tLS0tLS0gQmFja2luZyBjaGFuZ2Vz IC0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMjU4LDggKzI2Miw5IEBACiAJCVZJREVPU0laRSA9IFZJ REVPU0laRV9YQ0lGOwogCQlJTklUX1dDSUkgPSAxOwogCQlyZWZyZXNoID0gU1RBVEVfT0ZGOwog ICAgICAgICAJYWRqY29sb3VyID0gU1RBVEVfT047CisJCWluaXRfd2FycCg3MDQsIDU3Nik7CiAg ICAgICAgICAgICAgICAgdGltZW91dGlkID0gZ3RrX3RpbWVvdXRfYWRkIChUSU1FT1VUX0xFTiwg Z3JhYiwgKGdwb2ludGVyKSBkcmF3aW5nX2FyZWEpOwogCX0KIAogCXZvaWQgc2V0c2l6ZWZ1bGwo IEd0a1dpZGdldCAqd2lkZ2V0LCBHZGtFdmVudCAqZXZlbnQsIGdwb2ludGVyIGRhdGEgKSB7CkBA IC0yNzAsOCArMjc1LDkgQEAKIAkJVklERU9TSVpFID0gVklERU9TSVpFX0NJRjsKIAkJSU5JVF9X Q0lJID0gMTsKIAkJcmVmcmVzaCA9IFNUQVRFX09GRjsKICAgICAgICAgCWFkamNvbG91ciA9IFNU QVRFX09OOworCQlpbml0X3dhcnAoMzUyLCAyODgpOwogICAgICAgICAgICAgICAgIHRpbWVvdXRp ZCA9IGd0a190aW1lb3V0X2FkZCAoVElNRU9VVF9MRU4sIGdyYWIsIChncG9pbnRlcikgZHJhd2lu Z19hcmVhKTsKIAl9CiAKIAl2b2lkIHNldHNpemVoYWxmKCBHdGtXaWRnZXQgKndpZGdldCwgR2Rr RXZlbnQgKmV2ZW50LCBncG9pbnRlciBkYXRhICkgewpAQCAtMjgyLDggKzI4OCw5IEBACiAJCVZJ REVPU0laRSA9IFZJREVPU0laRV9RQ0lGOwogCQlyZWZyZXNoID0gU1RBVEVfT047CiAJCUlOSVRf V0NJSSA9IDE7CiAgICAgICAgIAlhZGpjb2xvdXIgPSBTVEFURV9PTjsKKwkJaW5pdF93YXJwKDE3 NiwgMTQ0KTsKICAgICAgICAgICAgICAgICB0aW1lb3V0aWQgPSBndGtfdGltZW91dF9hZGQgKFRJ TUVPVVRfTEVOLCBncmFiLCAoZ3BvaW50ZXIpIGRyYXdpbmdfYXJlYSk7CiAJfQogCiAJdm9pZCBz ZXRjb21wcmVzc2lvbihHdGtXaWRnZXQgKndpZGdldCwgR2RrRXZlbnQgKmV2ZW50LCBncG9pbnRl ciBkYXRhKSB7CkBAIC0zMjAsOCArMzI3LDE2IEBACiAgICAgICAgICAgICAgICAgdGltZW91dGlk ID0gZ3RrX3RpbWVvdXRfYWRkIChUSU1FT1VUX0xFTiwgZ3JhYiwgKGdwb2ludGVyKSBkcmF3aW5n X2FyZWEpOwogCQogCX0KIAorCXZvaWQgc2V0d2FycChHdGtXaWRnZXQgKndpZGdldCwgR2RrRXZl bnQgKmV2ZW50LCBncG9pbnRlciBkYXRhKSB7CisJICAgCSBXQVJQID0gU1RBVEVfT047CisJfQor CisJdm9pZCBzZXRub3dhcnAoR3RrV2lkZ2V0ICp3aWRnZXQsIEdka0V2ZW50ICpldmVudCwgZ3Bv aW50ZXIgZGF0YSkgeworCSAgIAkgV0FSUCA9IFNUQVRFX09GRjsKKwl9CisKIAl2b2lkIHNhdmVj YW5jZWwoR3RrV2lkZ2V0ICp3aWRnZXQsIEdka0V2ZW50ICpldmVudCwgZ3BvaW50ZXIgZGF0YSkK IAl7CiAJICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVCh3aWRnZXQpKTsKIAkgIHRpbWVv dXRpZCA9IGd0a190aW1lb3V0X2FkZCAoVElNRU9VVF9MRU4sIGdyYWIsIChncG9pbnRlcikgZGF0 YSk7CkBAIC01MzgsOCArNTUzLDMyIEBACiAgICAgIGd0a190b2dnbGVfYnV0dG9uX3NldF9hY3Rp dmUgKEdUS19UT0dHTEVfQlVUVE9OIChyYWRpb2J1dHRvbiksIFRSVUUpOwogICBndGtfc2lnbmFs X2Nvbm5lY3Rfb2JqZWN0IChHVEtfT0JKRUNUIChyYWRpb2J1dHRvbiksICJwcmVzc2VkIiwgR1RL X1NJR05BTF9GVU5DKHNldG5vY29tcHJlc3Npb24pLCBOVUxMKTsKICAgZ3RrX3dpZGdldF9zaG93 IChyYWRpb2J1dHRvbik7CiAKKworICBmcmFtZSA9IGd0a19mcmFtZV9uZXcoIldhcnAiKTsKKyAg Z3RrX2JveF9wYWNrX3N0YXJ0KCBHVEtfQk9YIChzaXplY29tcHJlc3Npb25ib3gpLCBmcmFtZSwg MSwgMSwgMCk7CisgIGd0a193aWRnZXRfc2hvdyAoZnJhbWUpOworCisgIGlubmVyYm94ID0gZ3Rr X3Zib3hfbmV3IChUUlVFLCAwKTsKKyAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlORVIg KGZyYW1lKSwgaW5uZXJib3gpOworICBndGtfd2lkZ2V0X3Nob3cgKGlubmVyYm94KTsKKworICBy YWRpb2J1dHRvbiA9IGd0a19yYWRpb19idXR0b25fbmV3X3dpdGhfbGFiZWwgKE5VTEwsICJPbiIp OworICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKGlubmVyYm94KSwgcmFkaW9idXR0b24s IFRSVUUsIFRSVUUsIDApOworICBpZiAoIFdBUlAgPT0gU1RBVEVfT04gKQorICAgICBndGtfdG9n Z2xlX2J1dHRvbl9zZXRfYWN0aXZlIChHVEtfVE9HR0xFX0JVVFRPTiAocmFkaW9idXR0b24pLCBU UlVFKTsKKyAgZ3RrX3NpZ25hbF9jb25uZWN0X29iamVjdCAoR1RLX09CSkVDVCAocmFkaW9idXR0 b24pLCAicHJlc3NlZCIsIEdUS19TSUdOQUxfRlVOQyhzZXR3YXJwKSwgTlVMTCk7CisgIGd0a193 aWRnZXRfc2hvdyAocmFkaW9idXR0b24pOworCisgIHJhZGlvZ3JvdXAgPSBndGtfcmFkaW9fYnV0 dG9uX2dyb3VwIChHVEtfUkFESU9fQlVUVE9OIChyYWRpb2J1dHRvbikpOworICByYWRpb2J1dHRv biA9IGd0a19yYWRpb19idXR0b25fbmV3X3dpdGhfbGFiZWwgKHJhZGlvZ3JvdXAsICJPZmYiKTsK KyAgZ3RrX2JveF9wYWNrX3N0YXJ0IChHVEtfQk9YIChpbm5lcmJveCksIHJhZGlvYnV0dG9uLCBU UlVFLCBUUlVFLCAwKTsKKyAgaWYgKCBXQVJQICE9IFNUQVRFX09OICkKKyAgICAgZ3RrX3RvZ2ds ZV9idXR0b25fc2V0X2FjdGl2ZSAoR1RLX1RPR0dMRV9CVVRUT04gKHJhZGlvYnV0dG9uKSwgVFJV RSk7CisgIGd0a19zaWduYWxfY29ubmVjdF9vYmplY3QgKEdUS19PQkpFQ1QgKHJhZGlvYnV0dG9u KSwgInByZXNzZWQiLCBHVEtfU0lHTkFMX0ZVTkMoc2V0bm93YXJwKSwgTlVMTCk7CisgIGd0a193 aWRnZXRfc2hvdyAocmFkaW9idXR0b24pOworCiAgIC8qIENyZWF0ZSBhIGNvdXBsZSBidXR0b25z ICovCiAgIC8vaW5uZXJib3ggPSBndGtfdmJveF9uZXcgKFRSVUUsIDApOwogICAvL2d0a19ib3hf cGFja19zdGFydCggR1RLX0JPWCAodG9wYm94KSwgaW5uZXJib3gsIDEsIDEsIDApOwogICAvL2d0 a193aWRnZXRfc2hvdyAoaW5uZXJib3gpOwpAQCAtNTY1LDggKzYwNCwxMCBAQAogICBndGtfd2lk Z2V0X3Nob3cgKG91dGVyYm94KTsKICAgZ3RrX3dpZGdldF9zaG93ICh0b3Bib3gpOwogICBndGtf d2lkZ2V0X3Nob3cgKHdpbmRvdyk7CiAKKyAgaW5pdF93YXJwKDcwNCwgNTc2KTsKKyAgCiAgIHRp bWVvdXRpZCA9ICBndGtfdGltZW91dF9hZGQgKFRJTUVPVVRfTEVOLCBncmFiLCAoZ3BvaW50ZXIp IGRyYXdpbmdfYXJlYSk7CiAKIAogLyogIGdyYWIoKGdwb2ludGVyKWRyYXdpbmdfYXJlYSk7Ki8K QmluYXJ5IGZpbGVzIHdjSUljYW0wLjIvd2NJSWNhbV9kIGFuZCB3Y0lJY2FtMC4yX25ldy93Y0lJ Y2FtX2QgZGlmZmVyCg== ------=_NextPart_000_0009_01BEF55B.0C4F3860-- ----------------------------------------------------------------------------- To unsubscribe from this mailinglist, send the line "unsubscribe vision-webcam" in the body of a message to "majordomo@errors.no".