incompatible versions of compface

Alan Skea (skea@vast.eecs.unsw.oz.au)
Thu, 9 May 91 15:53:49 +1000

Oh dear, something very bad seems to have happened somewhere. Sometime
between versions 1.4.9 and 1.5.1, some change to compface/uncompface has
made it produce different output. Here's some evidence. Start with the
following 48x48x1 image data:

0x0000,0x0000,0x0000,
0x0000,0x0000,0xE000,
0x0000,0x0005,0x0100,
0x0000,0x000C,0x1F00,
0x0000,0x000B,0xE000,
0x0000,0x0006,0x0000,
0x0000,0x0044,0x0220,
0x0000,0x01C2,0xABC0,
0x0000,0x0164,0x0000,
0x0000,0x0220,0x0000,
0x0000,0x0430,0x0000,
0x0000,0x0420,0x0000,
0x0000,0x07E0,0x0000,
0x0000,0x0340,0x0000,
0x0000,0x03C0,0x0000,
0x0000,0x0240,0x0000,
0x0000,0x0240,0x0000,
0x0000,0x3E7E,0x0000,
0x0007,0xC241,0xF000,
0x0078,0x4240,0x0F00,
0x0180,0xE24E,0x00C0,
0x0E24,0xA66A,0xEA38,
0x303C,0xE42E,0xAE06,
0x4024,0xA428,0xE401,
0x8024,0x0420,0x8401,
0x8000,0x0420,0x0001,
0x8005,0x03C0,0xA003,
0xE005,0x201C,0xE00D,
0x9C07,0x5394,0x4071,
0x8305,0x729C,0x4181,
0xE0F0,0x5390,0x1E09,
0x8E0F,0x8203,0xE071,
0x8000,0x7FFC,0x0383,
0xE040,0x0000,0x200D,
0x9C07,0xE015,0x4071,
0x8300,0x1DC0,0x0181,
0x90F0,0x0000,0x1E01,
0x830F,0x8003,0xE001,
0xC0E8,0x7FFC,0x07C3,
0xF006,0xC000,0x0C0F,
0x8E00,0x701F,0x01F9,
0x8380,0x1DC0,0x0F05,
0x90FC,0x0000,0xF853,
0xF103,0xFFFF,0x83CE,
0x0E36,0x0000,0x69F8,
0x0381,0x3A84,0x8F00,
0x00FC,0x0008,0xF800,
0x0003,0xFFFF,0x8000,

compface from the 1.4.9 distribution gives this:

#UW6Pu"eg3:p^#1__\&p,H;YIYx0i_KN:3hj1)^3hxYAv0+$UP0O7%\m(j/O*u%=#5LO8#L
Od;f^$.;q3))-kxw[b-)EsDR[m-wOn'=B{{,&M`ZXk2Xe:.z47Y&/+(a)q$V*/UXR;^K7tHK$VZ@:,
Q&7?>d1\Xbj+p=8TJrh-_~[jw'hmt+m_f}H_!VXE(-R%kh&#2fVk!ZSmanue8V9LcmGpHG'u'xKzf\
}|m

compface from the 1.5.1 distribution gives this:

+;75%|8:$u:]yiY/y5T!\P_%:l*1AOwKzYeav+!jKN{iSA(vFd)TVZR+L^E>7fpr!$rm\XW
Clh*|4wi{kT$,eC7~co-u)<p'C^WO@:>B"g4VZbgfAu$17/{?\P:'%OBE{Ge*!T'\P}Fx<TF^eq3{[
!WBqe:&`PICL-;trf_p;U[::,HL$kYXAD:j!^9@NM05A1`BEs/&r-#Nc#R)=|M,&Pa6eB^W$4L{JN]
cj^ii&

The face resulting from the uncompression of a 1.4.9 X-Face: using the
1.5.1 algorithm seems to shift the whole image to the left a bit (or
maybe two - I don't really have time to check this out thoroughly) and
introduces some corruption into the bottom right of the face. Caveat:
these observations are made on the basis of a sample space of 1 face.

I should think that it is _very_important_ that everyone be running a
compatible versions of compface. A patch to restore the old encoding
is critical (I should think most faces in existence were built using a
version <= 1.4.9). Sorry I don't have the time to go further with this
- hopefully someone else does and can provide a quick patch.

Also we now have the task of trying to determine which faces need to
be recompressed to make them compatible and to do this we will need to
determine at what version the new format first appeared. As a final
remark, maybe the version of faces should be somehow encoded into the
compressed face - this seems like a bad idea at this stage so maybe we
should just be careful that the encoding never changes.

Alan Skea.