[sldev] Re: OpenJPEG usuable now

Todd T. Fries sl at email.fries.net
Fri Feb 9 06:14:30 PST 2007


Congratulations!  I can't wait to try out this speed improvement myself.

Waiting with baited breath for the patches.. ;-)

Thanks,
-- 
Todd Fries .. todd at fries.net

 _____________________________________________
|                                             \  1.636.410.0632 (voice)
| Free Daemon Consulting, LLC                 \  1.405.227.9094 (voice)
| http://FreeDaemonConsulting.com             \  1.866.792.3418 (FAX)
| "..in support of free software solutions."  \          250797 (FWD)
|                                             \
 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
                                                 
              37E7 D3EB 74D0 8D66 A68D  B866 0326 204E 3F42 004A
                        http://todd.fries.net/pgp.txt

Penned by David D. Fries on 20070209  1:35.01, we have:
| I'm a bit excited.
| 
| I have some patches that I'm working on, but I was just able to fly a
| loop around a three region area just now with them and it seemed
| comparable to the binary client.  This is with OpenJPEG and the first
| look source client on a Linux dual core 64 bit AMD machine.  Good
| enough that I'm going to have to fly around it again with the binary
| version and compare.  Any suggestions on how to compare the
| performance between them?  My qualitative experience tonight says that
| it is good enough to run with.  Up until tonight it was like pulling
| teeth using OpenJPEG, so bad, now it looks good.
| 
| I hacked OpenJPEG to have an opj_meta_decode that would only decode
| enough to get the size and number of channels.  That's all getMetadata
| used anyway.  That patch needs to be cleaned up and submitted to
| OpenJPEG.  But here are the results.
| 
| A full decode can take anywhere on the order of .015 to .5 seconds
| (though I've seen 1.5 seconds before).  Currently Second Life does a
| full decode, saves the image size and channels, then tosses the image.
| This OpenJPEG meta decode just gets enough header decoded to get at
| the image sizes, and it AVERAGED at .000076 seconds that's with 6200
| samples and all but two under 1 millisecond.  That's a total of .474
| seconds spent in OpenJPEG getMetadata decode, or about the time it
| takes to decode a large image.
| 
| There is a function, LLImageJ2C::validate that calls
| mImpl->getMetadata in llimage/llimagej2c.cpp, my question is how much
| validation is required to be done to the image?  I only see that
| function being called by LLViewerImageList::createUploadFile.
| Seriously though, does it just need to find out if it has a jpeg
| header without looking at any data?  In that case the meta decode
| should work.
| 
| The last piece of the puzzle was based on a patch on jira by Hiro
| Sommambulist, VWR-66.  Without that patch textures decoded at say a
| 1/8 resolution would only take up 1/8 of the size leaving the rest
| blank and grow from there until it was fully decoded.  Some of his
| math didn't make sense to me, but it was enough to point me in the
| right direction.  I have some cleanup work to do on that patch as
| well.
| 
| Of course it wouldn't have been possible without the first look viewer
| FL-1.13.3.57679 doing the actual jpeg2000 decoding in another thread.
| I wasn't going to go as far as time slicing the decoding like the
| proprietary decoder does.
| 
| In my previous e-mail where things were still gray after an hour at
| the International Spaceflight Museum?  It was good in under a minute.
| 
| -- 
| David Fries <david at fries.net>
| http://fries.net/~david/ (PGP encryption key available)


More information about the SLDev mailing list