Category: Open source
About 10 days ago, I released a small new release of AGG - version 0.3.1.
- Ability to embed watermarks in the images;
- Ability to reorder the images in the gallery, or to add new images, to delete some, to do some "apply to multiple" operations like rotating of a bunch of images 90 degrees, sorting, etc. This is accessible from File->Add/Reorder images;
- AGG can find for you all duplicate images (strictly identical or just very similar) in the project. The threshold, which determines the maximum allowable difference between two "similar" images can be tuned;
- "Short names" of the files in the HTML of the gallery, in order to avoid messing up with the table layout;
- If requested, AGG can directly preview the resulting gallery in a browser;
- A list of recently-opened projects is added;
- The Timelapse tool is now official. As a slight improvement, it does no longer require Exif in the files, you can use it as a dumb deflicker/brightness correction filter. Also, it can now cope with images lacking an F-number (i.e., because you used a "full manual" lens like the MS Peleng 8mm fisheye :))
Besides that, there are numerous bugfixes. When using "Sort by exif date" in 0.3.0, creating a new project would usually lead to a crash. Also, if the input images are small (they don't require rescaling), sometimes you would get an empty gallery. In some cases, if Auto-save is on when you created a new project, the old project would be falsely overwritten. I also fixed a pesky bug, which appeared only rarely at gallery creation, causing the app to freeze. All in all, I'm very satisfied with the improved stability of the new version :).
With all this in mind, you should now go and download that new version immediately!
After 1½ years of laziness, I'm finally able to release a new version of the AGG - 0.3.0 :)
- Unicode support. You can use any language you want (for file names, gallery titles, title pictures, or whatnot);
- Because of that: the interface language can be changed to other than English. However, no translations are currently available - I only added a test Bulgarian translation, in order to check if everything works out (AGG in BG). If anyone wants to contribute a translation (about 400 lines tops), please don't hesitate to contact me for details. Volunteers will be immortalized in the translations page :)
- Batch transfer Exif tool
- Auto-save option
- Gamma-aware resizing. You can select this option in order to have absolutely precise resizing, performed in linear RGB, instead of the gamma-compressed sRGB (the differences are outlined here).
- Better Exif statistics page (compare: 0.2.5 vs. 0.3.0).
- Improved HTMLs (size issues) and related bugfixes.
- There was a bug in the resizer, whereby images having large white areas (overexposed skies, for example) would have artifacts in the 100% white areas of the results. The artifacts are of the form of an irregular grid of (254, 254, 254) pixels (not very easy to detect, I'm only seeing this issue on one out of ten monitors - which is also why I caught it just now).
- Using Exiv2 instead of libexif for reading Exif metadata (it decodes somewhat more tags, especially vendor-specific ones).
- And a whole lot of other small improvements. The new version should display "Version 0.3.0 β Official" in Help->About.
The controversy with the russian guy, who cloned AGG (as I wrote earlier) resolved very amicably: he agreed with my cease-and-desist letter, and introduced notes all over the place, which mark his software as an AGG derivative. Also, he offers the source code upon request (and he sent it to me, when I requested).
This was a triumph! Another victory for the open-source movement!
Every now and then, one can be astonished by human arrogance and ruthlessness. Some genius took the open-source project, AGG, added some copy-protection code, and put a $30 price tag on the resulting product. The GPL is for the losers, who have nothing else to do. Ladies and gentlemen, I present you: SoftOrbits's Html Web Gallery Creator.
Just for example: A gallery, made by AGG, and a take with SoftOrbits's product.
The company that does it is unusually stealthy, specifying nothing about its whereabouts or operations. But the domain still leads to some russian guy, whom I already sent a Cease and Desist letter, coined with the help of this very kind person. And now we wait. I see some interesting days ahead...
It's been a benchmark week - I worked on two benchmarks simultaneously :)
A new version for the new year :) The website is http://anrieff.net/ucbench2011.
We're still cracking .RAR archive passwords and benchmark the cracking speed, however we're now 8-12% faster. And it has better CPU speed detection, equalized Linux vs Windows performance, and lots of tweaks and improvements on the website and the program itself.
Fract Benchmark for Android
I was following this article about using SDL on Android; however, it turned out to be a plunge in the wrong direction and I lost a few hours in fruitless attempts:
1) The SDL that gets compiled that way does not work with Android 2.2, it lacks /dev/tty0 and other related devices;
2) For some reason it requires root access. You have to root your phone. Also, as it does not create an .apk directly, you need to run the benchmark from the command line.
So, what I find out in the end was to simply use the latest SDL 1.3, directly sourced from the Mercurial repository. It has a wonderful README.android that explains it all. You just put your C/C++ sources inside a mock "Java"+JNI project, type a few commands and you get an .apk. Plain and simple.
The porting of Fract itself was also easy and I quickly got to this point:
The score is somewhat disappointing, especially considering the benchmark is run in reduced 400x300 resolution - so I delved into the generated object code and saw (to my astonishment) that the instructions were FPU-less, the compiler issued software floating-point code. Well, you can't assume a FPU on the ARM, but the newer devices do have FPU units (two, to be more precise - a VFP, which is similar to x87 in the PC world, and NEON, which compares to SSE1). So, to compile the NDK-part of your project with FPU support, you need to specify a slightly different architecture, using this build command:
I recommend you add V=1 in the end of that, so you can see what commands are being executed exactly. -mfpu=vfp is the relevant GCC option.
The two builds (FPU and non-FPU) can be found here:
Go test your android :)
Some results: a stock HTC Desire / Android 2.2 gets around 5.5 FPS. In comparison, Asus Eee PC 901, using the same fract sources and --no-sse --no-mmx --no-mmx2 --xres=400 --cpus=1 yields 11.7 fps. So far x86 wins :)
I've released yet another version of my gallery editor/generator AGG. It is mostly a bugfix and optimization release. The major bug that prompted this release is: when you process a huge gallery on a lot of threads (e.g., two 4-core Nehalem-based Xeons, resulting in 16 "cores"), the working memory gets awfully fragmented, and malloc()s start to fail (you get NULLs) - because it can't allocate the large contiguous regions needed to store the pixel data. In 0.2.5, the images are stored using lots of small chunks.
There are some optimizations as well: I'm using libjpeg-turbo for decoding/encoding JPEGs, and also did a rehaul of the resizing algorithms. Another major thing is the 64-bit support (there are 64-bit builds for Windows and Linux). See here for a more detailed change list.
Some performance figures: while the new libjpeg and the resizer optimizations are significant by themselves, the convoluted image storing reorganization (creating a mess in the memory due to data fragmentation) offset the performance win by some margin, so I did some real-life tests to assess how is the new version scores, compared to 0.2.4. So here is it: on a dualcore laptop, a 325-image 8 MPix gallery is produced in 2m 11s (as opposed to 2:28 for 0.2.4), which is a 12% win. On my other (six-core) machine, there is no performance difference between 0.2.4 and 0.2.5 (64-bit), but I think it's the disk throughput that is the bottleneck there ;)
I've released a new version of my gallery generator - 0.2.4. It brings a lot of bugfixes and new features and is definitely worth the download (see the News for detailed change log). Be sure to comment here if you do or don't like it, suggest improvements, etc.