Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 May 1997 19:31:33 -0700
From:      Amancio Hasty <hasty@rah.star-gate.com>
To:        Brad Parker <brad@parker.boston.ma.us>
Cc:        multimedia@FreeBSD.ORG
Subject:   Re: questions about current bt848 code 
Message-ID:  <199705160231.TAA13862@rah.star-gate.com>
In-Reply-To: Your message of "Thu, 15 May 1997 20:59:53 EDT." <199705160059.AAA03836@compaq.parker.boston.ma.us> 

next in thread | previous in thread | raw e-mail | index | archive | help
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<x> and bktr<x>  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--





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199705160231.TAA13862>