Re[3]: [XviD-devel] SAD of last visited neighbour positions

Radek 'sysKin' Czyz xvid-devel@xvid.org
Wed, 23 Oct 2002 19:04:57 +0930


------------8E1101023DE7D99E
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi,
I updated AdvDiamond to provide with information about neighbouring
SADs. I attach the file, just paste it over 'normal' advdiamond in the
code I had sent yesterday.
I also conducted some speed tests and I didn't measure any slowdown
with either AdvDiamond nor Square. :)

Radek

PS. I hate this code. It's probably fast and it works good, but it's
long, impossible to debug and impossible to understand. Oh well...

PSv2.0: I think I have an idea how to change DiamondSearch (the
fastest of the three) to be even faster - basing the search on
neighbouring SADs. It's gonna be a super-ultra-minimalistic version of
a diamond.
------------8E1101023DE7D99E
Content-Type: application/octet-stream; name="AdvDiamond.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="AdvDiamond.c"

c3RhdGljIHZvaWQNCkFkdkRpYW1vbmRTZWFyY2goaW50IHgsIGludCB5LCBjb25zdCBTZWFyY2hE
YXRhICogY29uc3QgZGF0YSwgaW50IGJEaXJlY3Rpb24pDQp7DQoNCi8qIGRpcmVjdGlvbnM6IDEg
LSBsZWZ0ICh4LTEpOyAyIC0gcmlnaHQgKHgrMSksIDQgLSB1cCAoeS0xKTsgOCAtIGRvd24gKHkr
MSkgKi8NCg0KCWludCBpRGlyZWN0aW9uOyBpbnQzMl90IGN1cnNhZDsNCg0KCWRvIHsNCgkJaURp
cmVjdGlvbiA9IDA7DQoJCWN1cnNhZCA9IGRhdGEtPmlNaW5TQURbMF07IC8vc2FkIGJlZm9yZSB3
ZSBzdGFydGVkIHRoZSBzZWFyY2gNCgkJaWYgKGJEaXJlY3Rpb24gJiAxKSB7IENIRUNLX0NBTkRJ
REFURSh4IC0gaURpYW1vbmRTaXplLCB5LCAxKTsgZGF0YS0+c2Fkc1s2XSA9IGRhdGEtPnRlbXBb
MF07IH0NCgkJaWYgKGJEaXJlY3Rpb24gJiAyKSB7IENIRUNLX0NBTkRJREFURSh4ICsgaURpYW1v
bmRTaXplLCB5LCAyKTsgZGF0YS0+c2Fkc1syXSA9IGRhdGEtPnRlbXBbMF07IH0NCgkJaWYgKGJE
aXJlY3Rpb24gJiA0KSB7IENIRUNLX0NBTkRJREFURSh4LCB5IC0gaURpYW1vbmRTaXplLCA0KTsg
ZGF0YS0+c2Fkc1swXSA9IGRhdGEtPnRlbXBbMF07IH0NCgkJaWYgKGJEaXJlY3Rpb24gJiA4KSB7
IENIRUNLX0NBTkRJREFURSh4LCB5ICsgaURpYW1vbmRTaXplLCA4KTsgZGF0YS0+c2Fkc1s0XSA9
IGRhdGEtPnRlbXBbMF07IH0NCg0KCQlzd2l0Y2ggKGlEaXJlY3Rpb24pIHsNCgkJY2FzZSAxOg0K
CQkJZGF0YS0+c2Fkc1sxXSA9IGRhdGEtPnNhZHNbMF07DQoJCQlkYXRhLT5zYWRzWzNdID0gZGF0
YS0+c2Fkc1s0XTsNCgkJCWRhdGEtPnNhZHNbMF0gPSBkYXRhLT5zYWRzWzddOw0KCQkJZGF0YS0+
c2Fkc1s0XSA9IGRhdGEtPnNhZHNbNV07DQoJCQlkYXRhLT5zYWRzWzJdID0gY3Vyc2FkOw0KCQkJ
YnJlYWs7DQoJCWNhc2UgMjoNCgkJCWRhdGEtPnNhZHNbN10gPSBkYXRhLT5zYWRzWzBdOw0KCQkJ
ZGF0YS0+c2Fkc1s1XSA9IGRhdGEtPnNhZHNbNF07DQoJCQlkYXRhLT5zYWRzWzBdID0gZGF0YS0+
c2Fkc1sxXTsNCgkJCWRhdGEtPnNhZHNbNF0gPSBkYXRhLT5zYWRzWzNdOw0KCQkJZGF0YS0+c2Fk
c1s2XSA9IGN1cnNhZDsNCgkJCWJyZWFrOw0KCQljYXNlIDQ6DQoJCQlkYXRhLT5zYWRzWzVdID0g
ZGF0YS0+c2Fkc1s2XTsNCgkJCWRhdGEtPnNhZHNbM10gPSBkYXRhLT5zYWRzWzJdOw0KCQkJZGF0
YS0+c2Fkc1s2XSA9IGRhdGEtPnNhZHNbN107DQoJCQlkYXRhLT5zYWRzWzJdID0gZGF0YS0+c2Fk
c1sxXTsNCgkJCWRhdGEtPnNhZHNbNF0gPSBjdXJzYWQ7DQoJCQlicmVhazsNCgkJY2FzZSA4Og0K
CQkJZGF0YS0+c2Fkc1s3XSA9IGRhdGEtPnNhZHNbNl07DQoJCQlkYXRhLT5zYWRzWzFdID0gZGF0
YS0+c2Fkc1syXTsNCgkJCWRhdGEtPnNhZHNbNl0gPSBkYXRhLT5zYWRzWzVdOw0KCQkJZGF0YS0+
c2Fkc1syXSA9IGRhdGEtPnNhZHNbM107DQoJCQlkYXRhLT5zYWRzWzRdID0gY3Vyc2FkOw0KCQlk
ZWZhdWx0Og0KCQkJYnJlYWs7DQoJCX0NCgkJY3Vyc2FkID0gZGF0YS0+aU1pblNBRFswXTsNCg0K
CQkvKiBub3cgd2UncmUgZG9pbmcgZGlhZ29uYWwgY2hlY2tzIG5lYXIgb3VyIGNhbmRpZGF0ZSAq
Lw0KCQlpZiAoaURpcmVjdGlvbikgewkJLy9jaGVja2luZyBpZiBhbnl0aGluZyBmb3VuZA0KCQkJ
YkRpcmVjdGlvbiA9IGlEaXJlY3Rpb247DQoJCQlpRGlyZWN0aW9uID0gMDsNCgkJCXggPSBkYXRh
LT5jdXJyZW50TVYtPng7IHkgPSBkYXRhLT5jdXJyZW50TVYtPnk7DQoJCQlpZiAoYkRpcmVjdGlv
biAmIDMpIHsJLy9vdXIgY2FuZGlkYXRlIGlzIGxlZnQgb3IgcmlnaHQNCgkJCQlDSEVDS19DQU5E
SURBVEUoeCwgeSAtIGlEaWFtb25kU2l6ZSwgNCk7IGRhdGEtPnNhZHNbMF0gPSBkYXRhLT50ZW1w
WzBdOw0KCQkJCUNIRUNLX0NBTkRJREFURSh4LCB5ICsgaURpYW1vbmRTaXplLCA4KTsgZGF0YS0+
c2Fkc1s0XSA9IGRhdGEtPnRlbXBbMF07DQoJCQl9IGVsc2UgewkJCS8vIHdoYXQgcmVtYWlucyBo
ZXJlIGlzIHVwIG9yIGRvd24NCgkJCQlDSEVDS19DQU5ESURBVEUoeCAtIGlEaWFtb25kU2l6ZSwg
eSwgMSk7IGRhdGEtPnNhZHNbNl0gPSBkYXRhLT50ZW1wWzBdOw0KCQkJCUNIRUNLX0NBTkRJREFU
RSh4ICsgaURpYW1vbmRTaXplLCB5LCAyKTsgZGF0YS0+c2Fkc1syXSA9IGRhdGEtPnRlbXBbMF07
IA0KCQkJfQ0KCQkJaWYgKGlEaXJlY3Rpb24pIHsNCgkJCQlzd2l0Y2ggKGlEaXJlY3Rpb24pIHsN
CgkJCQljYXNlIDE6DQoJCQkJCWRhdGEtPnNhZHNbMV0gPSBkYXRhLT5zYWRzWzBdOw0KCQkJCQlk
YXRhLT5zYWRzWzNdID0gZGF0YS0+c2Fkc1s0XTsNCgkJCQkJZGF0YS0+c2Fkc1swXSA9IGRhdGEt
PnNhZHNbN107DQoJCQkJCWRhdGEtPnNhZHNbNF0gPSBkYXRhLT5zYWRzWzVdOw0KCQkJCQlkYXRh
LT5zYWRzWzJdID0gY3Vyc2FkOw0KCQkJCQlicmVhazsNCgkJCQljYXNlIDI6DQoJCQkJCWRhdGEt
PnNhZHNbN10gPSBkYXRhLT5zYWRzWzBdOw0KCQkJCQlkYXRhLT5zYWRzWzVdID0gZGF0YS0+c2Fk
c1s0XTsNCgkJCQkJZGF0YS0+c2Fkc1swXSA9IGRhdGEtPnNhZHNbMV07DQoJCQkJCWRhdGEtPnNh
ZHNbNF0gPSBkYXRhLT5zYWRzWzNdOw0KCQkJCQlkYXRhLT5zYWRzWzZdID0gY3Vyc2FkOw0KCQkJ
CQlicmVhazsNCgkJCQljYXNlIDQ6DQoJCQkJCWRhdGEtPnNhZHNbNV0gPSBkYXRhLT5zYWRzWzZd
Ow0KCQkJCQlkYXRhLT5zYWRzWzNdID0gZGF0YS0+c2Fkc1syXTsNCgkJCQkJZGF0YS0+c2Fkc1s2
XSA9IGRhdGEtPnNhZHNbN107DQoJCQkJCWRhdGEtPnNhZHNbMl0gPSBkYXRhLT5zYWRzWzFdOw0K
CQkJCQlkYXRhLT5zYWRzWzRdID0gY3Vyc2FkOw0KCQkJCQlicmVhazsNCgkJCQljYXNlIDg6DQoJ
CQkJCWRhdGEtPnNhZHNbN10gPSBkYXRhLT5zYWRzWzZdOw0KCQkJCQlkYXRhLT5zYWRzWzFdID0g
ZGF0YS0+c2Fkc1syXTsNCgkJCQkJZGF0YS0+c2Fkc1s2XSA9IGRhdGEtPnNhZHNbNV07DQoJCQkJ
CWRhdGEtPnNhZHNbMl0gPSBkYXRhLT5zYWRzWzNdOw0KCQkJCQlkYXRhLT5zYWRzWzRdID0gY3Vy
c2FkOw0KCQkJCWRlZmF1bHQ6DQoJCQkJCWJyZWFrOw0KCQkJCX0NCg0KCQkJCWJEaXJlY3Rpb24g
Kz0gaURpcmVjdGlvbjsNCgkJCQl4ID0gZGF0YS0+Y3VycmVudE1WLT54OyB5ID0gZGF0YS0+Y3Vy
cmVudE1WLT55OyANCgkJCX0NCgkJfSBlbHNlIHsJCQkJLy9hYm91dCB0byBxdWl0LCBlaD8gbm90
IHNvIGZhc3QuLi4uDQoJCQlzd2l0Y2ggKGJEaXJlY3Rpb24pIHsNCgkJCWNhc2UgMjoNCgkJCQlD
SEVDS19DQU5ESURBVEUoeCArIGlEaWFtb25kU2l6ZSwgeSAtIGlEaWFtb25kU2l6ZSwgMiArIDQp
OyBkYXRhLT5zYWRzWzFdID0gZGF0YS0+dGVtcFswXTsNCgkJCQlDSEVDS19DQU5ESURBVEUoeCAr
IGlEaWFtb25kU2l6ZSwgeSArIGlEaWFtb25kU2l6ZSwgMiArIDgpOyBkYXRhLT5zYWRzWzNdID0g
ZGF0YS0+dGVtcFswXTsNCgkJCQlicmVhazsNCgkJCWNhc2UgMToNCgkJCQlDSEVDS19DQU5ESURB
VEUoeCAtIGlEaWFtb25kU2l6ZSwgeSAtIGlEaWFtb25kU2l6ZSwgMSArIDQpOyBkYXRhLT5zYWRz
WzddID0gZGF0YS0+dGVtcFswXTsNCgkJCQlDSEVDS19DQU5ESURBVEUoeCAtIGlEaWFtb25kU2l6
ZSwgeSArIGlEaWFtb25kU2l6ZSwgMSArIDgpOyBkYXRhLT5zYWRzWzVdID0gZGF0YS0+dGVtcFsw
XTsNCgkJCQlicmVhazsNCgkJCWNhc2UgMiArIDQ6DQoJCQkJQ0hFQ0tfQ0FORElEQVRFKHggLSBp
RGlhbW9uZFNpemUsIHkgLSBpRGlhbW9uZFNpemUsIDEgKyA0KTsgZGF0YS0+c2Fkc1s3XSA9IGRh
dGEtPnRlbXBbMF07DQoJCQkJQ0hFQ0tfQ0FORElEQVRFKHggKyBpRGlhbW9uZFNpemUsIHkgLSBp
RGlhbW9uZFNpemUsIDIgKyA0KTsgZGF0YS0+c2Fkc1sxXSA9IGRhdGEtPnRlbXBbMF07DQoJCQkJ
Q0hFQ0tfQ0FORElEQVRFKHggKyBpRGlhbW9uZFNpemUsIHkgKyBpRGlhbW9uZFNpemUsIDIgKyA4
KTsgZGF0YS0+c2Fkc1szXSA9IGRhdGEtPnRlbXBbMF07DQoJCQkJYnJlYWs7DQoJCQljYXNlIDQ6
DQoJCQkJQ0hFQ0tfQ0FORElEQVRFKHggKyBpRGlhbW9uZFNpemUsIHkgLSBpRGlhbW9uZFNpemUs
IDIgKyA0KTsgZGF0YS0+c2Fkc1sxXSA9IGRhdGEtPnRlbXBbMF07DQoJCQkJQ0hFQ0tfQ0FORElE
QVRFKHggLSBpRGlhbW9uZFNpemUsIHkgLSBpRGlhbW9uZFNpemUsIDEgKyA0KTsgZGF0YS0+c2Fk
c1s3XSA9IGRhdGEtPnRlbXBbMF07DQoJCQkJYnJlYWs7DQoJCQljYXNlIDg6DQoJCQkJQ0hFQ0tf
Q0FORElEQVRFKHggKyBpRGlhbW9uZFNpemUsIHkgKyBpRGlhbW9uZFNpemUsIDIgKyA4KTsgZGF0
YS0+c2Fkc1szXSA9IGRhdGEtPnRlbXBbMF07DQoJCQkJQ0hFQ0tfQ0FORElEQVRFKHggLSBpRGlh
bW9uZFNpemUsIHkgKyBpRGlhbW9uZFNpemUsIDEgKyA4KTsgZGF0YS0+c2Fkc1s1XSA9IGRhdGEt
PnRlbXBbMF07DQoJCQkJYnJlYWs7DQoJCQljYXNlIDEgKyA0Og0KCQkJCUNIRUNLX0NBTkRJREFU
RSh4IC0gaURpYW1vbmRTaXplLCB5ICsgaURpYW1vbmRTaXplLCAxICsgOCk7IGRhdGEtPnNhZHNb
NV0gPSBkYXRhLT50ZW1wWzBdOw0KCQkJCUNIRUNLX0NBTkRJREFURSh4IC0gaURpYW1vbmRTaXpl
LCB5IC0gaURpYW1vbmRTaXplLCAxICsgNCk7IGRhdGEtPnNhZHNbN10gPSBkYXRhLT50ZW1wWzBd
Ow0KCQkJCUNIRUNLX0NBTkRJREFURSh4ICsgaURpYW1vbmRTaXplLCB5IC0gaURpYW1vbmRTaXpl
LCAyICsgNCk7IGRhdGEtPnNhZHNbMV0gPSBkYXRhLT50ZW1wWzBdOw0KCQkJCWJyZWFrOw0KCQkJ
Y2FzZSAyICsgODoNCgkJCQlDSEVDS19DQU5ESURBVEUoeCAtIGlEaWFtb25kU2l6ZSwgeSAtIGlE
aWFtb25kU2l6ZSwgMSArIDQpOyBkYXRhLT5zYWRzWzddID0gZGF0YS0+dGVtcFswXTsNCgkJCQlD
SEVDS19DQU5ESURBVEUoeCAtIGlEaWFtb25kU2l6ZSwgeSArIGlEaWFtb25kU2l6ZSwgMSArIDgp
OyBkYXRhLT5zYWRzWzVdID0gZGF0YS0+dGVtcFswXTsNCgkJCQlDSEVDS19DQU5ESURBVEUoeCAr
IGlEaWFtb25kU2l6ZSwgeSArIGlEaWFtb25kU2l6ZSwgMiArIDgpOyBkYXRhLT5zYWRzWzNdID0g
ZGF0YS0+dGVtcFswXTsNCgkJCQlicmVhazsNCgkJCWRlZmF1bHQ6CQkvLzErMis0KzggPT0gd2Ug
ZGlkbid0IGZpbmQgYW55dGhpbmcgYXQgYWxsDQoJCQkJQ0hFQ0tfQ0FORElEQVRFKHggLSBpRGlh
bW9uZFNpemUsIHkgLSBpRGlhbW9uZFNpemUsIDEgKyA0KTsgZGF0YS0+c2Fkc1s3XSA9IGRhdGEt
PnRlbXBbMF07DQoJCQljYXNlIDEgKyA4OiAvLyBoZXJlPyB0byBtYWtlIHRoZSBjb2RlIHNob3J0
ZXIgLSBidXQgbm90aGluZyBjaGFuZ2VzDQoJCQkJQ0hFQ0tfQ0FORElEQVRFKHggLSBpRGlhbW9u
ZFNpemUsIHkgKyBpRGlhbW9uZFNpemUsIDEgKyA4KTsgZGF0YS0+c2Fkc1s1XSA9IGRhdGEtPnRl
bXBbMF07DQoJCQkJQ0hFQ0tfQ0FORElEQVRFKHggKyBpRGlhbW9uZFNpemUsIHkgLSBpRGlhbW9u
ZFNpemUsIDIgKyA0KTsgZGF0YS0+c2Fkc1sxXSA9IGRhdGEtPnRlbXBbMF07DQoJCQkJQ0hFQ0tf
Q0FORElEQVRFKHggKyBpRGlhbW9uZFNpemUsIHkgKyBpRGlhbW9uZFNpemUsIDIgKyA4KTsgZGF0
YS0+c2Fkc1szXSA9IGRhdGEtPnRlbXBbMF07DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlpZiAoIWlE
aXJlY3Rpb24pIGJyZWFrOwkJLy9vaywgdGhlIGVuZC4gcmVhbGx5DQoJCQlzd2l0Y2ggKGlEaXJl
Y3Rpb24pIHsgLy8gbm93IHJlYWxseSwgM3JkIHRpbWUsIHRoaXMgaXMgc2ljaw0KCQkJY2FzZSAx
KzQ6DQoJCQkJZGF0YS0+c2Fkc1syXSA9IGRhdGEtPnNhZHNbMF07DQoJCQkJZGF0YS0+c2Fkc1s0
XSA9IGRhdGEtPnNhZHNbNl07DQoJCQkJZGF0YS0+c2Fkc1szXSA9IGN1cnNhZDsNCgkJCQlicmVh
azsNCgkJCWNhc2UgMis0Og0KCQkJCWRhdGEtPnNhZHNbNl0gPSBkYXRhLT5zYWRzWzBdOw0KCQkJ
CWRhdGEtPnNhZHNbNF0gPSBkYXRhLT5zYWRzWzJdOw0KCQkJCWRhdGEtPnNhZHNbNV0gPSBjdXJz
YWQ7DQoJCQkJYnJlYWs7DQoJCQljYXNlIDErODoNCgkJCQlkYXRhLT5zYWRzWzBdID0gZGF0YS0+
c2Fkc1s2XTsNCgkJCQlkYXRhLT5zYWRzWzJdID0gZGF0YS0+c2Fkc1s0XTsNCgkJCQlkYXRhLT5z
YWRzWzFdID0gY3Vyc2FkOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAyKzg6DQoJCQkJZGF0YS0+c2Fk
c1swXSA9IGRhdGEtPnNhZHNbMl07DQoJCQkJZGF0YS0+c2Fkc1s2XSA9IGRhdGEtPnNhZHNbNF07
DQoJCQkJZGF0YS0+c2Fkc1s3XSA9IGN1cnNhZDsNCgkJCWRlZmF1bHQ6DQoJCQkJYnJlYWs7DQoJ
CQl9DQoJCQliRGlyZWN0aW9uID0gaURpcmVjdGlvbjsNCgkJCXggPSBkYXRhLT5jdXJyZW50TVYt
Png7IHkgPSBkYXRhLT5jdXJyZW50TVYtPnk7DQoJCX0NCgl9DQoJd2hpbGUgKDEpOwkJCQkvL2Zv
cmV2ZXINCn0NCg==



------------8E1101023DE7D99E--