Page 1 of 1

B3: Xjp2.dll - Doesn't like corruped Jpeg2000 streams (JP2)

Posted: Thu Jan 05, 2006 9:34 am
by BlindWanderer_
Incomplete JP2 files: Other older plugins handle incomplete files.
Steps to duplicate:
Start with a valid jp2 file (don't use the xnview beta version to create it)
Open the image in xnview beta to make sure it works.
Open the image in a hex editor and remove a couple hundered bytes off the end of the file.
Save the file and reopen in xnview.

Corruped JP2 files: Other older plugins handle partially corruped files.
Steps to duplicate:
Start with a valid jp2 file (don't use the xnview beta version to create it)
Open the image in xnview beta to make sure it works.
Open the image in a hex editor and overwrite with a couple hundered bytes anywhere in the stream.
Save the file and reopen in xnview.

XnView 1.82 Beta3

Posted: Thu Jan 05, 2006 9:36 am
by BlindWanderer
very sorry forgot to say, the release is beta 3

Posted: Thu Jan 05, 2006 10:14 am
by xnview
BlindWanderer wrote:very sorry forgot to say, the release is beta 3
Could you send me a sample?

Posted: Tue Jan 10, 2006 9:52 am
by Xyzzy
Hmm, I got this file:
http://www.phys.uni.torun.pl/~duch/Wykl ... 0/girl.jp2

In b3, xjp2.dll ver 1.82:
If I replace 500 bytes in the middle, picture is displayed OK (of course with some distortions).
If I cut 500 bytes from the end, XnView does not recognize it as an image. If filetype recognition is turned off, XnView displays "Format of the file could not be determined" when trying to view it. I don't know if it is OK.

In 1.80 with dll ver 1.80 the behaviour is identical.

So no confirmation.

X.

Posted: Tue Jan 31, 2006 12:12 am
by BlindWanderer-T
Sure...

Normal
Truncated
Zero'd blocks

ehh my forum registrations is taking forever ~_~

Posted: Tue Jan 31, 2006 12:18 am
by BlindWanderer-T
And this bug is still present in RC3.

The issue is that there are missing blocks (or is the word i'm looking for frames?) from the jp2 streams. Or that the boundries have become corruped.

The corrupted files I deal with, the amout of data corruped is in 1000 byte blocks. Where it's offset by 600. The corruption starts at N600 where N is an integer.