2 ms·
I can't say, as SnappyCam is my first foray into image signal processing. (Though DSP isn't new to me.) I'd guess that DSLRs use a combination of hardware acc
by jpap 13y ago
I can't say, as SnappyCam is my first foray into image signal processing. (Though DSP isn't new to me.)
I'd guess that DSLRs use a combination of hardware acceleration on the "tricky" bits (like DCT) with firmware to control the compute hardware.
Huffman is a particularly difficult beast, as it can't be parallelized. The JPEG bitstream is inherently serial, though there has been some proposals to improve that.
If you run a SnappyCam JPEG that you pluck from iTunes File Sharing through djpeg (from libJpeg) you will notice that each of the YCbCr planes are not interleaved.
I once experimented with a parallel JPEG encoder, encoding the Y, Cb, and Cr planes in parallel but the threading overhead was more than just queuing up each JPEG encode separately in a multithread queue.
Bonus points if you notice another marker in the JPEG. That's intended for parallel JPEG decoding but hasn't yet been implemented in SnappyCam as yet. (The existing decoder is fast enough for 8Mpx shots.)
- damian2000 13y agoInteresting stuff, thanks for the info. Much respect for doing so much optimisation in assembly (my limit is C, even for embedded work).