I have three implementations of the B&W image processing core now. One of them uses GEGL, another one is written in C# and the third one in C. On my Core 2 Duo, utilizing only one core, GEGL can process 1.2 megapixels per second, and that’s without dodging and burning. The C# implementation does 6 MP/s, including dodging and burning (8.3 MP/s without), while the C implementation does 36 MP/s, including dodging and burning (59 MP/s without). I haven’t put any effort into optimizing either the C or C# implementations. Given that my C# experience is still rather limited I guess that there’s considerable room for optimization, there. Still, I expected more. If anybody knows to make this C# program faster, I’d be thankful for any hints.
So I guess I’ll be using my C implementation for now and later add the C# one as a fall-back for better portability.
My B&W processing application is progressing quite nicely. Loading/saving/importing/exporting works, and querying image pixels, which is very important, is now also possible. A histogram is still missing, though.
What’s really bugging me at this point is that the image processing is way too slow for interactive use, and I haven’t even implemented dodging and burning, yet. What I’m trying to do now is to see how fast I can implement the image processing by hand in C and in C#. Maybe the managed code implementation is fast enough, which would be wonderful, because then the whole application would have no requirements apart from Mono. We’ll see.
My hack week project has matured a bit. The UI works much better now and tinting works, too (I had to write a custom GEGL operation to implement it). I’ve wasted lots of time wrestling with issues that had to do with GObject reference counting. It sucks not to have GC from the ground up!
Today I’ll be working on loading, saving and exporting.
Oh, if anybody out there could tell me how to remove an item from a GnomeCanvas, I’d be very thankful :-)
It’s been a long time since I’ve last posted on this blog, and a lot has changed. I’m working for Novell now, hacking Mono. Not this week though, because this week is HACK WEEK!
The idea of hack week is, basically, to let everybody work on what is dear to their heart. What’s dear to my heart is photography, and more specifically black and white photography, and so I’ve decided to work on a B&W processing application. The goal is to implement my digital B&W workflow in an easy to use application that’s free and runs on Linux. I’m writing the application in C# and using GEGL as the imaging engine. This is what I have now:
The tint controls aren’t functional yet, but the rest works, more or less. My plan for this week is to get everything that’s in the UI working properly and to implement loading, saving (which must preserve all the B&W adjustments) and exporting (which just saves the end result). I certainly won’t have time to implement dodging and burning this week, though.