From owner-freebsd-multimedia Thu May 15 19:31:33 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id TAA02072 for multimedia-outgoing; Thu, 15 May 1997 19:31:33 -0700 (PDT) Received: from rah.star-gate.com (rah.star-gate.com [204.188.121.18]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id TAA02064 for ; Thu, 15 May 1997 19:31:30 -0700 (PDT) Received: from rah.star-gate.com (localhost.star-gate.com [127.0.0.1]) by rah.star-gate.com (8.8.5/8.8.5) with ESMTP id TAA13862; Thu, 15 May 1997 19:31:33 -0700 (PDT) Message-Id: <199705160231.TAA13862@rah.star-gate.com> X-Mailer: exmh version 1.6.9 8/22/96 To: Brad Parker cc: multimedia@FreeBSD.ORG Subject: Re: questions about current bt848 code In-reply-to: Your message of "Thu, 15 May 1997 20:59:53 EDT." <199705160059.AAA03836@compaq.parker.boston.ma.us> Mime-Version: 1.0 Content-Type: multipart/mixed ; boundary="===_0_Thu_May_15_19:09:12_PDT_1997" Date: Thu, 15 May 1997 19:31:33 -0700 From: Amancio Hasty Sender: owner-multimedia@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk This is a multipart MIME message. --===_0_Thu_May_15_19:09:12_PDT_1997 Content-Type: text/plain; charset=us-ascii Hi, I am still waiting for your system configuration --- take your time 8) Yes, vic works over here fine . Please try out my version of grabber-meteor.cc it supports meteor and bt848 by that I mean that it goes out and tries to do a stat on metero and bktr where x is 0 , 1, 2 , etc.. however the video capture portion is the same as the old grabber-meteor.cc Regards, Amancio >From The Desk Of Brad Park er : > > Amancio Hasty wrote: > ... > >Also you should be able to get vic going with very little problems > >Just use grabber-meteor.cc and change the reference to meteor0 to bktr0 > >or whatever bt848 device you have created. > ... > > You said this (and I believed it :-) so I tried it. I got a really > ugly green image with lots of pretty purple dots (it reminded me of my > college days). Does it work for you? > > vic-2.8 wants to use YUV_PACKED mode. It looks like there is > dma-program support for this in the current driver but no pixfmt, so > "oformat_meteor_to_bt()" failes w/-1 (I verified this - it happens in > my driver). Hmmm... I wonder if you have the latest driver or something else is wrong. Our vic uses METEOR_GEO_UNSIGNED | METEOR_GEO_YUV_422; Looking a little bit more into the driver . Just fill out an entry for YUV_422 and YUV_PACKED and make sure that the mode type is set to to the respective video format: METEOR_GEO_YUV_422 and METEOR_YUV_PACKED. Currently, yuv_422 and yuv_packed dont use any byte or word swapping on the Bt848 . However , do give a try to the vic video capture module which I sent you. Cheers, Amancio > There's also a comment in the code to the effect that pixel formats > for YUV_422 and YUV_PACKED are missing... I'm not sure how to fix this > but I'll look into it. > > any insights? Leave that alone you don't need it at least for now . It is useful to support different yuv encodings however we don't have a good to represent FourCCs . You see on Windos land video cards support different FourCCs codes -- basically for this case it means different ways of encoding yuv . Please check out the http link in the Bt848 page on what FourCC means and various yuv formats for video cards. As it is today, XFree86 is not supporting yuv to RGB color expansion. Have fun! Amancio > I added entries to the mapping tables to get the right dma program > to be built (that was easy), but still produced a nice green image > (only 1/2 of an image, oddly) with purple highlights. > > ps: thanks for the tip on the S3 card & xfree86 - I'm going to get xfree86a > and try the new "anti snow" fix > --===_0_Thu_May_15_19:09:12_PDT_1997 Content-Type: application/octet-stream Content-Description: grabber-meteor.cc Content-Transfer-Encoding: base64 LyoKICogQ29weXJpZ2h0IChjKSBKaW0gTG93ZSwgMTk5NSwgQWxsIHJpZ2h0cyByZXNlcnZl ZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm b3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAx LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl IGNvcHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ciBpbiB0aGUKICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICogMy4gQWxsIGFkdmVydGlzaW5nIG1h dGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCiAq ICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKICogICAg ICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IEppbSBMb3dl CiAqIDQuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9y c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwogKiAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2Fy ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICoKICogVEhJ UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5Z IEVYUFJFU1MgT1IKICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgVEhFIElNUExJRUQKICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQogKiBESVNDTEFJ TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBE SVJFQ1QsCiAqIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S IENPTlNFUVVFTlRJQUwgREFNQUdFUwogKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKICogU0VSVklDRVM7IExP U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p CiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF VEhFUiBJTiBDT05UUkFDVCwKICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOCiAqIEFOWSBXQVkgT1VU IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQog KiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICovCgovKgogKiAxLjAJMTEvMDkvOTUK ICoJSW5pdGlhbCBSZWxlYXNlLgogKiAxLjEJMTIvMjAvOTUKICoJQ2hhbmdlZCB0byB1c2Ug bmV3IG1vZGUgaW4gbWV0ZW9yIGRyaXZlciAoTUVURU9SX0dFT19ZVVZfNDIyKSBhbmQKICoJ YWxsb3cgZXZlbiBvbmx5IGZpZWxkcyB0byBiZSBjYXB0dXJlZCB1bmRlciBjZXJ0YWluIGNv bmRpdGlvbnMuCiAqCUFkZGVkIEZSQU1FX0NOVFMgZGVidWdnaW5nIG9wdGlvbi4KICogMS4y CTMvMjUvOTYKICoJQ2hhbmdlZCB0aGUgY29uZGl0aW9ucyBFVkVOX09OTFkgbW9kZSB3YXMg c3BlY2lmaWVkLiAgV2Ugbm93IGNoZWNrCiAqCXRoZSBzdGF0dXMgdG8gZGV0ZXJtaW5lIGlm IHdlIGNhbiBydW4gaW4gRVZFTl9PTkxZIG1vZGUuCiAqIDEuMwk1LzEzLzk2CiAqCUFkZGVk IHRoZSBmcHMgY29kZSB0byB0aGUgZ3JhYmJlciBzbyB3ZSBvbmx5IHRyYW5zZmVyIHdoYXQg d2UgbmVlZC4KICoJCiAqLwoKLyojZGVmaW5lIEZSQU1FX0NOVFMgLyogcHJpbnQgZnJhbWUg Y291bnRzIGFuZCBmcHMgd2hlbiBkZXZpY2Ugc3RvcHMgLS0gZGVidWcgKi8KI2luY2x1ZGUg PHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5j bHVkZSA8ZmNudGwuaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL2lv Y3RsLmg+CiNpbmNsdWRlIDxzeXMvbW1hbi5oPgojaWZkZWYgRlJBTUVfQ05UUwojaW5jbHVk ZSA8c3lzL3RpbWUuaD4KI2VuZGlmCgojaW5jbHVkZSAiZ3JhYmJlci5oIgojaW5jbHVkZSAi VGNsLmgiCiNpbmNsdWRlICJkZXZpY2UtaW5wdXQuaCIKI2luY2x1ZGUgIm1vZHVsZS5oIgoK I2luY2x1ZGUgPG1hY2hpbmUvaW9jdGxfbWV0ZW9yLmg+CgovKlhYWCovCiNkZWZpbmUgTlRT Q19XSURUSCAzMjAKI2RlZmluZSBOVFNDX0hFSUdIVCAyNDAKI2RlZmluZSBQQUxfV0lEVEgg Mzg0CiNkZWZpbmUgUEFMX0hFSUdIVCAyODgKI2RlZmluZSBDSUZfV0lEVEggMzUyCiNkZWZp bmUgQ0lGX0hFSUdIVCAyODgKCgpjbGFzcyBNZXRlb3JHcmFiYmVyIDogcHVibGljIEdyYWJi ZXIgewogcHVibGljOgoJTWV0ZW9yR3JhYmJlcihjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBj aGFyKiBmb3JtYXQpOwoJdmlydHVhbCB+TWV0ZW9yR3JhYmJlcigpOwoJdmlydHVhbCB2b2lk IHN0YXJ0KCk7Cgl2aXJ0dWFsIHZvaWQgc3RvcCgpOwoJdmlydHVhbCB2b2lkIGZwcyhpbnQp OwogcHJvdGVjdGVkOgoJdmlydHVhbCBpbnQgY29tbWFuZChpbnQgYXJnYywgY29uc3QgY2hh cipjb25zdCogYXJndik7Cgl2aXJ0dWFsIGludCBjYXB0dXJlKCk7Cgl2aXJ0dWFsIGludCBn cmFiKCk7Cgl2b2lkIGZvcm1hdCgpOwoJdm9pZCBzZXRzaXplKCk7CgoJaW50IHZpZGVvX2Zv cm1hdF87CS8qIHZpZGVvIGlucHV0IGZvcm1hdDogTlRTQyBvciBQQUwgKi8KCWludCBkZXZf OwkJLyogZGV2aWNlIGZkICovCglpbnQgcG9ydF87CQkvKiB2aWRlbyBpbnB1dCBwb3J0ICov CglpbnQgY29kZXJfZm9ybWF0XzsJLyogNDExLCA0MjIsIG9yIGNpZiAqLwoJdV9pbnQgYmFz ZXdpZHRoXzsJLyogSGVpZ2h0IG9mIGZyYW1lIHRvIGJlIGNhcHR1cmVkICovCgl1X2ludCBi YXNlaGVpZ2h0XzsJLyogV2lkdGggb2YgZnJhbWUgdG8gYmUgY2FwdHVyZWQgKi8KCXVfaW50 IGRlY2ltYXRlXzsJLyogZGl2aXNpb24gb2YgYmFzZSBzaXplcyAqLwoJdm9sYXRpbGUgdV9p bnQqIHB5dXZfOwkvKiBwb2ludGVyIHRvIHl1diBkYXRhICovCiNpZmRlZiBGUkFNRV9DTlRT CglzdHJ1Y3QgbWV0ZW9yX2NvdW50cyBjbnRzXzsJLyogcG9pbnRlciB0byBjb3VudGVycyAq LwoJZG91YmxlCXN0YXJ0X3RpbWVfOwojZW5kaWYKfTsKCnN0YXRpYyBjb25zdCBpbnQJZl80 MTEgPSAwOwkvKiBjb2Rlcl9mb3JtYXRfcyAqLwpzdGF0aWMgY29uc3QgaW50CWZfNDIyID0g MTsKc3RhdGljIGNvbnN0IGludAlmX2NpZiA9IDI7CgpjbGFzcyBNZXRlb3JEZXZpY2UgOiBw dWJsaWMgSW5wdXREZXZpY2UgewogcHVibGljOgoJTWV0ZW9yRGV2aWNlKGNvbnN0IGNoYXIq IG5pY2tuYW1lLCBjb25zdCBjaGFyKiBkZXZuYW1lLCBpbnQgZnJlZSk7Cgl2aXJ0dWFsIGlu dCBjb21tYW5kKGludCBhcmdjLCBjb25zdCBjaGFyKmNvbnN0KiBhcmd2KTsKIHByb3RlY3Rl ZDoKCWNvbnN0IGNoYXIqIG5hbWVfOwp9OwoKY2xhc3MgTWV0ZW9yU2Nhbm5lciB7CiBwdWJs aWM6CglNZXRlb3JTY2FubmVyKGNvbnN0IGludCBuKTsKfTsKc3RhdGljIE1ldGVvclNjYW5u ZXIgZmluZF9tZXRlb3JfZGV2aWNlcyg4KTsKCk1ldGVvclNjYW5uZXI6Ok1ldGVvclNjYW5u ZXIoY29uc3QgaW50IG4pCnsKCWNoYXIqCWRldm5hbWVfdGVtcGxhdGUgID0gIi9kZXYvbWV0 ZW9yJWQiOwoJY2hhcioJbmlja25hbWVfdGVtcGxhdGUgPSAiTWF0cm94IE1ldGVvciAlZCI7 CgljaGFyKglkZXZuYW1lX3RlbXBsYXRlMSAgPSAiL2Rldi9ia3RyJWQiOwoJY2hhcioJbmlj a25hbWVfdGVtcGxhdGUxID0gIkJyb29rVHJlZTg0OCAlZCI7CgoKCglmb3IoaW50IGkgPSAw OyBpIDwgbjsgaSsrKSB7CgkJY2hhcgkqZGV2bmFtZSAgPSBuZXcgY2hhcltzdHJsZW4oZGV2 bmFtZV90ZW1wbGF0ZSkgICsgM107CgkJY2hhcgkqbmlja25hbWUgPSBuZXcgY2hhcltzdHJs ZW4obmlja25hbWVfdGVtcGxhdGUpICsgM107CgkJY2hhcgkqZGV2bmFtZTEgID0gbmV3IGNo YXJbc3RybGVuKGRldm5hbWVfdGVtcGxhdGUxKSAgKyAzXTsKCQljaGFyCSpuaWNrbmFtZTEg PSBuZXcgY2hhcltzdHJsZW4obmlja25hbWVfdGVtcGxhdGUxKSArIDNdOwoKCQlzcHJpbnRm KG5pY2tuYW1lLCBuaWNrbmFtZV90ZW1wbGF0ZSwgaSArIDEpOwoJCXNwcmludGYoZGV2bmFt ZSwgZGV2bmFtZV90ZW1wbGF0ZSwgaSk7CgoJCXNwcmludGYobmlja25hbWUxLCBuaWNrbmFt ZV90ZW1wbGF0ZTEsIGkgKyAxKTsKCQlzcHJpbnRmKGRldm5hbWUxLCBkZXZuYW1lX3RlbXBs YXRlMSwgaSk7CgkJaWYoYWNjZXNzKGRldm5hbWUsIFJfT0spID09IDApIHsKCQkJaW50IGZk ID0gb3BlbihkZXZuYW1lLCBPX1JET05MWSk7CgkJCWlmKGZkIDwgMCkgewoJCQkJbmV3IE1l dGVvckRldmljZShuaWNrbmFtZSwgZGV2bmFtZSwgMCk7CgkJCX0gZWxzZSB7CgkJCQkodm9p ZCljbG9zZShmZCk7CgkJCQluZXcgTWV0ZW9yRGV2aWNlKG5pY2tuYW1lLCBkZXZuYW1lLCAx KTsKCQkJfQoJCX0gZWxzZSB7CgkJCWRlbGV0ZSBuaWNrbmFtZTsKCQkJZGVsZXRlIGRldm5h bWU7CgkJfQoKCQlpZihhY2Nlc3MoZGV2bmFtZTEsIFJfT0spID09IDApIHsKCQkJaW50IGZk ID0gb3BlbihkZXZuYW1lMSwgT19SRE9OTFkpOwoJCQlpZihmZCA8IDApIHsKCQkJCW5ldyBN ZXRlb3JEZXZpY2Uobmlja25hbWUxLCBkZXZuYW1lMSwgMCk7CgkJCX0gZWxzZSB7CgkJCQko dm9pZCljbG9zZShmZCk7CgkJCQluZXcgTWV0ZW9yRGV2aWNlKG5pY2tuYW1lMSwgZGV2bmFt ZTEsIDEpOwoJCQl9CgkJfSBlbHNlIHsKCQkJZGVsZXRlIG5pY2tuYW1lMTsKCQkJZGVsZXRl IGRldm5hbWUxOwoJCX0KCX0KfQoKTWV0ZW9yRGV2aWNlOjpNZXRlb3JEZXZpY2UoY29uc3Qg Y2hhciogbmlja25hbWUsIGNvbnN0IGNoYXIgKmRldm5hbWUsIGludCBmcmVlKToKCQkJCQlJ bnB1dERldmljZShuaWNrbmFtZSksIG5hbWVfKGRldm5hbWUpCnsKCWlmKGZyZWUpCgkJYXR0 cmlidXRlc18gPSAiXApmb3JtYXQgezQyMiA0MTF9IFwKc2l6ZSB7bGFyZ2Ugbm9ybWFsIHNt YWxsIGNpZn0gXApwb3J0IHtSQ0EgUG9ydC0xIFBvcnQtMiBQb3J0LTMgUy1WaWRlbyBSR0J9 IjsKCWVsc2UKCQlhdHRyaWJ1dGVzXyA9ICJkaXNhYmxlZCI7Cn0KCmludCBNZXRlb3JEZXZp Y2U6OmNvbW1hbmQoaW50IGFyZ2MsIGNvbnN0IGNoYXIqY29uc3QqIGFyZ3YpCnsKCVRjbCYg dGNsID0gVGNsOjppbnN0YW5jZSgpOwoJaWYgKChhcmdjID09IDMpICYmIChzdHJjbXAoYXJn dlsxXSwgIm9wZW4iKSA9PSAwKSkgewoJCVRjbE9iamVjdCogbyA9IDA7CgkJbyA9IG5ldyBN ZXRlb3JHcmFiYmVyKG5hbWVfLCBhcmd2WzJdKTsKCQlpZiAobyAhPSAwKQoJCQl0Y2wucmVz dWx0KG8tPm5hbWUoKSk7CgkJcmV0dXJuIChUQ0xfT0spOwoJfQoJcmV0dXJuIChJbnB1dERl dmljZTo6Y29tbWFuZChhcmdjLCBhcmd2KSk7Cn0KCk1ldGVvckdyYWJiZXI6Ok1ldGVvckdy YWJiZXIoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogZm9ybWF0KQp7Cgljb2Rlcl9m b3JtYXRfID0gLTE7CglpZighc3RyY21wKGZvcm1hdCwgIjQxMSIpKSBjb2Rlcl9mb3JtYXRf ID0gZl80MTE7CglpZighc3RyY21wKGZvcm1hdCwgIjQyMiIpKSBjb2Rlcl9mb3JtYXRfID0g Zl80MjI7CglpZighc3RyY21wKGZvcm1hdCwgImNpZiIpKSBjb2Rlcl9mb3JtYXRfID0gZl9j aWY7CglpZihjb2Rlcl9mb3JtYXRfID09IC0xKSB7CgkJZnByaW50ZihzdGRlcnIsCgkJCSJ2 aWM6IE1ldGVvckdyYWJiZXI6IHVuc3VwcG9ydGVkIGZvcm1hdDogJXNcbiIsCgkJCWZvcm1h dCk7CgkJYWJvcnQoKTsKCX0KCglkZXZfID0gb3BlbihuYW1lLCBPX1JET05MWSk7CglpZiAo ZGV2XyA9PSAtMSkgewoJCXN0YXR1c18gPSAtMTsKCQlyZXR1cm47Cgl9Cglwb3J0XyA9IE1F VEVPUl9JTlBVVF9ERVYwOwoJdmlkZW9fZm9ybWF0XyA9IE1FVEVPUl9GTVRfQVVUT01PREU7 CglkZWNpbWF0ZV8gPSAyOwoJYmFzZXdpZHRoXyA9IFBBTF9XSURUSCAqIDI7CgliYXNlaGVp Z2h0XyA9IFBBTF9IRUlHSFQgKiAyOwoJCglpbnQgdGVtcCA9ICgoYmFzZXdpZHRoXyAqIGJh c2VoZWlnaHRfICogMiArIDQwOTUpLzQwOTYpKjQwOTY7CglweXV2XyA9ICh1X2ludCopIG1t YXAoKGNhZGRyX3QpMCwgdGVtcCwgUFJPVF9SRUFELCAwLCBkZXZfLCAob2ZmX3QpMCk7Cglp ZihweXV2XyA9PSAodV9pbnQqKS0xKQoJCXB5dXZfID0gMDsKfQoKTWV0ZW9yR3JhYmJlcjo6 fk1ldGVvckdyYWJiZXIoKQp7CglpZiAoZGV2XyAhPSAtMSkgewoJCWNsb3NlKGRldl8pOwoJ fQp9Cgp2b2lkIE1ldGVvckdyYWJiZXI6OnNldHNpemUoKQp7CglzdHJ1Y3QgbWV0ZW9yX2dl b21ldCBnZW9tOwoKCWdlb20ucm93cyA9IChiYXNlaGVpZ2h0XyAvIGRlY2ltYXRlXykgJn4w eGYgKyAyOwkvKiAweGYsIHVnaCEgKi8KCWdlb20uY29sdW1ucyA9IChiYXNld2lkdGhfIC8g ZGVjaW1hdGVfKSAgJn4weGYgKyAyOwoJZ2VvbS5mcmFtZXMgPSAxOwoJZ2VvbS5vZm9ybWF0 ID0gTUVURU9SX0dFT19VTlNJR05FRDsKCWdlb20ub2Zvcm1hdCB8PSBNRVRFT1JfR0VPX1lV Vl80MjI7CgkvKgoJICogSWYgd2UgY2FuIGdldCBieSB3aXRoIG9ubHkgcmVhZGluZyBldmVu IGZpZWxkcywgdGhlbiBieSBhbGwKCSAqIG1lYW5zIGRvIHNvLgoJICovCgl1bnNpZ25lZCBz aG9ydCBzdGF0dXM7Cglpb2N0bChkZXZfLCBNRVRFT1JTVEFUVVMsICZzdGF0dXMpOwoJaWYo c3RhdHVzICYgTUVURU9SX1NUQVRVU19IQ0xLKSB7CS8qIGRvIHdlIGhhdmUgYSBzb3VyY2U/ ICovCgkJCQkJCS8qIE5vIHNvdXJjZSwgYXNzdW1lIG50c2MqLwoJCWlmKGdlb20ucm93cyA8 PSBOVFNDX0hFSUdIVCAmJiBnZW9tLmNvbHVtbnMgPD0gTlRTQ19XSURUSCkKCQkJZ2VvbS5v Zm9ybWF0IHw9IE1FVEVPUl9HRU9fT0REX09OTFk7Cgl9IGVsc2UgewoJCWlmKHN0YXR1cyAm IE1FVEVPUl9TVEFUVVNfRklEVCkgeyAvKiBpcyBpdCBwYWwgb3IgbnRzYz8gKi8KCQkJCQkJ LyogNjAgaHogKi8KCQkJaWYoZ2VvbS5yb3dzPD1OVFNDX0hFSUdIVCAmJiBnZW9tLmNvbHVt bnM8PU5UU0NfV0lEVEgpCgkJCQlnZW9tLm9mb3JtYXQgfD0gTUVURU9SX0dFT19FVkVOX09O TFk7CgkJfSBlbHNlIHsJCQkvKiA1MCBoeiAqLwoJCQlpZihnZW9tLnJvd3M8PVBBTF9IRUlH SFQgJiYgZ2VvbS5jb2x1bW5zPD1QQUxfV0lEVEgpCgkJCQlnZW9tLm9mb3JtYXQgfD0gTUVU RU9SX0dFT19FVkVOX09OTFk7CgkJfQoJfQoKCWlmKGlvY3RsKGRldl8sIE1FVEVPUlNFVEdF TywgJmdlb20pIDwgMCkgCgkJcGVycm9yKCJ2aWM6IE1FVEVSU0VUR0VPOiAiKTsKCglzd2l0 Y2goY29kZXJfZm9ybWF0XykgewoJY2FzZSBmXzQyMjoKCQlzZXRfc2l6ZV80MjIoZ2VvbS5j b2x1bW5zLCBnZW9tLnJvd3MpOwoJCWJyZWFrOwoJY2FzZSBmX2NpZjoKCWNhc2UgZl80MTE6 CgkJc2V0X3NpemVfNDExKGdlb20uY29sdW1ucywgZ2VvbS5yb3dzKTsKCQlicmVhazsKCX0K CglhbGxvY3JlZigpOwkvKiBhbGxvY2F0ZSByZWZlcmVuY2UgZnJhbWUgKi8KfQoKdm9pZCBN ZXRlb3JHcmFiYmVyOjpmb3JtYXQoKQp7Cgl1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CglpbnQJ Zm10OwoKCWlvY3RsKGRldl8sIE1FVEVPUlNJTlBVVCwgJnBvcnRfKTsKCS8vCWlvY3RsKGRl dl8sIE1FVEVPUlNGTVQsICZ2aWRlb19mb3JtYXRfKTsKCXNsZWVwKDEpOwkvKiB3YWl0IGZv ciBzaWduYWwgbG9jay4uLiAqLwoJaW9jdGwoZGV2XywgTUVURU9SU1RBVFVTLCAmc3RhdHVz KTsKCglpZih2aWRlb19mb3JtYXRfID09IE1FVEVPUl9GTVRfQVVUT01PREUpIHsKCQlzd2l0 Y2ggKHN0YXR1cyAmIChNRVRFT1JfU1RBVFVTX0hDTEt8TUVURU9SX1NUQVRVU19GSURUKSkg ewoJCWRlZmF1bHQ6CgkJCWZwcmludGYoc3RkZXJyLAoJCQkJInZpYzogbWV0ZW9yIHNlZXMg bm8gc2lnbmFsKCVkKS11c2luZyBudHNjLlxuIiwKCQkJCShzdGF0dXMmTUVURU9SX1NUQVRV U19IQ0xLKSA+IDAgKTsKCQkJLyogZmFsbCB0aHJvdWdoICovCgkJY2FzZSBNRVRFT1JfU1RB VFVTX0ZJRFQ6CgkJCWZtdCA9IE1FVEVPUl9GTVRfTlRTQzsKCQkJYnJlYWs7CgkJY2FzZSAw OgoJCQlmbXQ9IE1FVEVPUl9GTVRfUEFMOwoJCQlicmVhazsKCQl9Cgl9IGVsc2UKCQlmbXQg PSB2aWRlb19mb3JtYXRfOwoKCWlmKGZtdCA9PSBNRVRFT1JfRk1UX05UU0MpIHsKCQliYXNl aGVpZ2h0XyA9IE5UU0NfSEVJR0hUICogMjsKCQliYXNld2lkdGhfID0gTlRTQ19XSURUSCAq IDI7Cgl9IGVsc2UgeyAJLyogUEFMIGFuZCBTRUNBTSAqLwoJCWJhc2VoZWlnaHRfID0gUEFM X0hFSUdIVCAqIDI7CgkJYmFzZXdpZHRoXyA9IFBBTF9XSURUSCAqIDI7Cgl9CgkJCglpZihj b2Rlcl9mb3JtYXRfID09IGZfY2lmKSB7CgkJYmFzZWhlaWdodF8gPSBDSUZfSEVJR0hUICog MjsKCQliYXNld2lkdGhfID0gQ0lGX1dJRFRIICogMjsKCX0KCXNldHNpemUoKTsKfQoKCnZv aWQgTWV0ZW9yR3JhYmJlcjo6c3RhcnQoKQp7Cglmb3JtYXQoKTsKCWludCBjbWQgPSBNRVRF T1JfQ0FQX1NJTkdMRTsKCWlvY3RsKGRldl8sIE1FVEVPUkNBUFRVUiwgKGNoYXIqKSZjbWQp OwojaWZkZWYgRlJBTUVfQ05UUwoJY250c18uZmlmb19lcnJvcnMgPSAwOwoJY250c18uZG1h X2Vycm9ycyA9IDA7CgljbnRzXy5mcmFtZXNfY2FwdHVyZWQgPSAwOwoJY250c18uZXZlbl9m aWVsZHNfY2FwdHVyZWQgPSAwOwoJY250c18ub2RkX2ZpZWxkc19jYXB0dXJlZCA9IDA7Cglp b2N0bChkZXZfLCBNRVRFT1JTQ09VTlQsICZjbnRzXyk7CglzdGFydF90aW1lXyA9IGdldHRp bWVvZmRheSgpOwojZW5kaWYKCgljbWQgPSBNRVRFT1JfQ0FQX0NPTlRJTk9VUzsKCWlvY3Rs KGRldl8sIE1FVEVPUkNBUFRVUiwgKGNoYXIqKSZjbWQpOwoJR3JhYmJlcjo6c3RhcnQoKTsK fQoKdm9pZCBNZXRlb3JHcmFiYmVyOjpzdG9wKCkKewoKCWludCBjbWQgPSBNRVRFT1JfQ0FQ X1NUT1BfQ09OVDsKCWlvY3RsKGRldl8sIE1FVEVPUkNBUFRVUiwgKGNoYXIqKSZjbWQpOwoj aWZkZWYgRlJBTUVfQ05UUwoJZG91YmxlIGVuZHRpbWUgPSBnZXR0aW1lb2ZkYXkoKSA7Cglp b2N0bChkZXZfLCBNRVRFT1JHQ09VTlQsICZjbnRzXyk7CglpbnQgZGlmZiA9IChpbnQpKChl bmR0aW1lLXN0YXJ0X3RpbWVfKSAqIDFlLTYgKyAwLjUpOwoJcHJpbnRmKCJmcmFtZXMgPSAl ZCwgZXZlbiBmaWVsZHMgPSAlZCwgb2RkIGZpZWxkcyA9ICVkLFxuXApmaWZvIGVycm9ycyA9 ICVkLCBkbWEgZXJyb3JzID0gJWQsIHNlY29uZHMgPSAlZCIsCgkJY250c18uZnJhbWVzX2Nh cHR1cmVkLCBjbnRzXy5ldmVuX2ZpZWxkc19jYXB0dXJlZCwKCQljbnRzXy5vZGRfZmllbGRz X2NhcHR1cmVkLCBjbnRzXy5maWZvX2Vycm9ycywgY250c18uZG1hX2Vycm9ycywKCQlkaWZm KTsKCWlmKGRpZmYpCgkJcHJpbnRmKCIsZnBzID0gJWQiLCBjbnRzXy5mcmFtZXNfY2FwdHVy ZWQvZGlmZik7CglwcmludGYoIlxuIik7CiNlbmRpZgoJR3JhYmJlcjo6c3RvcCgpOwp9Cgp2 b2lkIE1ldGVvckdyYWJiZXI6OmZwcyhpbnQgZikKewoJdV9zaG9ydCBtZXRfZnBzID0gKHVf c2hvcnQpZjsKCSh2b2lkKWlvY3RsKGRldl8sIE1FVEVPUlNGUFMsICZtZXRfZnBzKTsKCglH cmFiYmVyOjpmcHMoZik7Cn0KCmludCBNZXRlb3JHcmFiYmVyOjpjb21tYW5kKGludCBhcmdj LCBjb25zdCBjaGFyKmNvbnN0KiBhcmd2KQp7CglpZiAoYXJnYyA9PSAzKSB7CgkJaWYgKHN0 cmNtcChhcmd2WzFdLCAiZGVjaW1hdGUiKSA9PSAwKSB7CgkJCWludCBkZWMgPSBhdG9pKGFy Z3ZbMl0pOwoJCQlUY2wmIHRjbCA9IFRjbDo6aW5zdGFuY2UoKTsKCQkJaWYgKGRlYyA8PSAw KSB7CgkJCQl0Y2wucmVzdWx0ZigiJXM6IGRpdmlkZSBieSB6ZXJvIiwgYXJndlswXSk7CgkJ CQlyZXR1cm4gKFRDTF9FUlJPUik7CgkJCX0KCQkJaWYgKGRlYyAhPSBkZWNpbWF0ZV8pIHsK CQkJCWRlY2ltYXRlXyA9IGRlYzsKCQkJCWlmKHJ1bm5pbmdfKSB7CgkJCQkJc3RvcCgpOwoJ CQkJCXNldHNpemUoKTsKCQkJCQlzdGFydCgpOwoJCQkJfQoJCQl9CgkJCXJldHVybiAoVENM X09LKTsJCgkJfSBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgInBvcnQiKSA9PSAwKSB7CgkJ CWludCBwID0gcG9ydF87CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFzdHJjbXAoYXJn dlsyXSwgIlJDQSIpKSBwID0gTUVURU9SX0lOUFVUX0RFVjA7CiAgICAgICAgICAgICAgICAg ICAgICAgIGlmKCFzdHJjbXAoYXJndlsyXSwgIlBvcnQtMSIpKSBwID0gTUVURU9SX0lOUFVU X0RFVjE7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFzdHJjbXAoYXJndlsyXSwgIlBv cnQtMiIpKSBwID0gTUVURU9SX0lOUFVUX0RFVjI7CiAgICAgICAgICAgICAgICAgICAgICAg IGlmKCFzdHJjbXAoYXJndlsyXSwgIlBvcnQtMyIpKSBwID0gTUVURU9SX0lOUFVUX0RFVjM7 CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFzdHJjbXAoYXJndlsyXSwgIlMtVmlkZW8i KSkKCQkJCXAgPSBNRVRFT1JfSU5QVVRfREVWX1NWSURFTzsKICAgICAgICAgICAgICAgICAg ICAgICAgaWYoIXN0cmNtcChhcmd2WzJdLCAiUkdCIikpIHAgPSBNRVRFT1JfSU5QVVRfREVW X1JHQjsKCgkJCWlmIChwICE9IHBvcnRfKSB7CgkJCQlwb3J0XyA9IHA7CgkJCQlpb2N0bChk ZXZfLCBNRVRFT1JTSU5QVVQsICZwb3J0Xyk7CgkJCX0KCQkJcmV0dXJuIChUQ0xfT0spOwkK CQl9IGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiZm9ybWF0IikgPT0gMCB8fAoJCQkgICBz dHJjbXAoYXJndlsxXSwgInR5cGUiKSA9PSAwKSB7CgkJCWlmIChzdHJjbXAoYXJndlsyXSwg ImF1dG8iKSA9PSAwKQoJCQkJdmlkZW9fZm9ybWF0XyA9IE1FVEVPUl9GTVRfQVVUT01PREU7 CgkJCWVsc2UgaWYgKHN0cmNtcChhcmd2WzJdLCAicGFsIikgPT0gMCkKCQkJCXZpZGVvX2Zv cm1hdF8gPSBNRVRFT1JfRk1UX1BBTDsKCQkJZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMl0sICJz ZWNhbSIpID09IDApCgkJCQl2aWRlb19mb3JtYXRfID0gTUVURU9SX0ZNVF9TRUNBTTsKCQkJ ZWxzZQoJCQkJdmlkZW9fZm9ybWF0XyA9IE1FVEVPUl9GTVRfTlRTQzsKCQkJaWYgKHJ1bm5p bmdfKQoJCQkJZm9ybWF0KCk7CgkJCXJldHVybiAoVENMX09LKTsJCgkJfSBlbHNlIGlmIChz dHJjbXAoYXJndlsxXSwgImNvbnRyYXN0IikgPT0gMCkgewoJCQljb250cmFzdChhdG9mKGFy Z3ZbMl0pKTsKCQkJcmV0dXJuIChUQ0xfT0spOwkKCQl9Cgl9IGVsc2UgaWYgKGFyZ2MgPT0g MikgewoJCWlmIChzdHJjbXAoYXJndlsxXSwgImZvcm1hdCIpID09IDAgfHwKCQkJICAgc3Ry Y21wKGFyZ3ZbMV0sICJ0eXBlIikgPT0gMCkgewoJCQlUY2wmIHRjbCA9IFRjbDo6aW5zdGFu Y2UoKTsKCQkJc3dpdGNoICh2aWRlb19mb3JtYXRfKSB7CgoJCQljYXNlIE1FVEVPUl9GTVRf QVVUT01PREU6CgkJCQl0Y2wucmVzdWx0KCJhdXRvIik7CgkJCQlicmVhazsKCgkJCWNhc2Ug TUVURU9SX0ZNVF9OVFNDOgoJCQkJdGNsLnJlc3VsdCgibnRzYyIpOwoJCQkJYnJlYWs7CgoJ CQljYXNlIE1FVEVPUl9GTVRfUEFMOgoJCQkJdGNsLnJlc3VsdCgicGFsIik7CgkJCQlicmVh azsKCgkJCWNhc2UgTUVURU9SX0ZNVF9TRUNBTToKCQkJCXRjbC5yZXN1bHQoInNlY2FtIik7 CgkJCQlicmVhazsKCgkJCWRlZmF1bHQ6CgkJCQl0Y2wucmVzdWx0KCIiKTsKCQkJCWJyZWFr OwoJCQl9CgkJCXJldHVybiAoVENMX09LKTsKCQkJCgkJfQoJfQoJcmV0dXJuIChHcmFiYmVy Ojpjb21tYW5kKGFyZ2MsIGFyZ3YpKTsKfQoKaW50IE1ldGVvckdyYWJiZXI6OmNhcHR1cmUo KQp7CglpZihweXV2XyA9PSAwKSByZXR1cm4gMDsKCgl2b2xhdGlsZSB1X2ludCogcHkgICA9 IHB5dXZfOwoJdm9sYXRpbGUgdV9pbnQqIHB1ICAgPSAodV9pbnQgKikoKHVfaW50KXB5ICsg KHVfaW50KWZyYW1lc2l6ZV8pOwoJdm9sYXRpbGUgdV9pbnQqIHB2ICAgPSAodV9pbnQgKiko KHVfaW50KXB1ICsgKGZyYW1lc2l6ZV8gPj4gMSkpOwoJdV9pbnQqIAkJbHVtICA9ICh1X2lu dCAqKWZyYW1lXzsKCXVfaW50KgkJdW9mZiA9ICh1X2ludCAqKSgodV9pbnQpbHVtICsgKHVf aW50KWZyYW1lc2l6ZV8pOwoJaW50CQlmNDIyID0gY29kZXJfZm9ybWF0XyA9PSBmXzQyMjsK CXVfaW50KgkgCXZvZmYgPSAodV9pbnQgKikoKHVfaW50KXVvZmYgKyAKCQkJCQkgKHVfaW50 KShmcmFtZXNpemVfPj4oZjQyMj8xOjIpKSk7CglpbnQgCQludW1jID0gKChiYXNld2lkdGhf L2RlY2ltYXRlXykgJn4weGYpID4+IDM7CgoJZm9yIChpbnQgcm93ID0gMDsgcm93IDwgKCgo YmFzZWhlaWdodF8vZGVjaW1hdGVfKSZ+MHhmKSA+PiAxKTsgcm93KyspIHsKCQlmb3IoaW50 IGNvbCA9IDA7IGNvbCA8IG51bWM7IGNvbCsrKSB7CgkJCSpsdW0rKyA9ICpweSsrOwoJCQkq bHVtKysgPSAqcHkrKzsKCQkJKnVvZmYrKyA9ICpwdSsrOwoJCQkqdm9mZisrID0gKnB2Kys7 CgkJfQoJCWZvcihjb2wgPSAwOyBjb2wgPCBudW1jOyBjb2wrKykgeyAgIAogICAgICAgICAg ICAgICAgICAgICAgICAqbHVtKysgPSAqcHkrKzsKICAgICAgICAgICAgICAgICAgICAgICAg Kmx1bSsrID0gKnB5Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGY0MjIpIHsJLyog b25seSBjb3B5IG9kZCBpbiA0OjI6MiBmb3JtYXQgKi8KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqdW9mZisrID0gKnB1Kys7IAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCSp2b2ZmKysgPSAqcHYrKzsKCQkJCiAgICAgICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKCFmNDIyKSB7CS8qIHNraXAg b2RkIGlmIDQ6MToxIG9yIGNpZiBmb3JtYXQgKi8KCQkJcHUgKz0gbnVtYzsKCQkJcHYgKz0g bnVtYzsKCQl9Cgl9CglyZXR1cm4gMTsKfQoKaW50IE1ldGVvckdyYWJiZXI6OmdyYWIoKQp7 CglpZiAoY2FwdHVyZSgpID09IDApCgkJcmV0dXJuICgwKTsKCXN1cHByZXNzKGZyYW1lXyk7 CglzYXZlYmxrcyhmcmFtZV8pOwoJWXV2RnJhbWUgZihtZWRpYV90cygpLCBmcmFtZV8sIGNy dmVjXywgb3V0d18sIG91dGhfKTsKCXJldHVybiAodGFyZ2V0Xy0+Y29uc3VtZSgmZikpOwp9 Cg== --===_0_Thu_May_15_19:09:12_PDT_1997--