Earlier quoted context omitted.
Thanks! :-) To be honest, none of my formal training prepared me for what went into SnappyCam---only the "how" to go about learning to do so. I'm sure you could pick up a few tricks in the same way by working on a cool pet project or two. With so many recent requests for AGIF, I'm absolutely going to add it to the app. (It's been on my list for a while, but lower priority than getting up a solid core product and the…
Hah, I told you getting your PhD was a waste of time ;-)
Scientific Breakthrough Lets SnappyCam App Take 20 Full-Res Photos Per Second
201–210 of 262 posts
Re: Scientific Breakthrough Lets SnappyCam App Take 20 Full-Res Photos Per Second
#202Earlier quoted context omitted.
You are right on the loss: it's purposefully introduced as a quantization step after performing the DCT, and before losslessly compressing the resulting coefficients with Huffman and encoding to the final JPEG bitstream. Despite all of that, JPEG has now become computationally tractable. I remember the days where it took tens of seconds to encode a JPEG on a commodity machine. Now, with the help of SIMD, we can encod…
SIMD, you say? Are you relying mainly on NEON optimizations or are you also doing encoding stuff on the GPU? Very impressive performance I must say!
I first tried using the GPU, using old school GPGPU textures and OpenGL ES 2.0 shaders, but unfortunately the performance wasn't there for a variety of reasons given in [1].
SnappyCam has since been making extensive use of ARM NEON for the JPEG codec and a bunch of other image signal processing operations, like digital zoom. It's a great instruction set!
[1] http://www.snappylabs.com/blog/snappycam/2013/07/31/iphone-k...
Re: Scientific Breakthrough Lets SnappyCam App Take 20 Full-Res Photos Per Second
#203Earlier quoted context omitted.
You are right on the loss: it's purposefully introduced as a quantization step after performing the DCT, and before losslessly compressing the resulting coefficients with Huffman and encoding to the final JPEG bitstream. Despite all of that, JPEG has now become computationally tractable. I remember the days where it took tens of seconds to encode a JPEG on a commodity machine. Now, with the help of SIMD, we can encod…
It's just bizarre that you would be doing the complete JPEG process at the instant you get the image from the sensor. As you note, there are a plethora of steps that JPEG performs, from color space conversion, to DCT transformation (essentially a gigantic matrix multiplication), Huffman coding, quantization, arithmetic coding and encoding as JPEG bitstream. The only reason would be that you are pressed for memory or…
Re: Scientific Breakthrough Lets SnappyCam App Take 20 Full-Res Photos Per Second
#204Looks like they've an instagram-type site set up too. http://snappyc.am/2LdRMF28U0 http://snappyc.am/4HHxyCad7D http://snappyc.am/3G3i6QCJUk
Just for your info, the top link actually crashed my Windows Phone 8's Internet Explorer. Clearly that's an IE bug and nothing else, but I thought you should know :-) Keep up the good work!
Thanks for letting me know!
Re: Scientific Breakthrough Lets SnappyCam App Take 20 Full-Res Photos Per Second
#205Earlier quoted context omitted.
I'm Aussie, so I did my schooling in Melbourne, Australia. I don't recommend the same path for everyone, but my ugrad at RMIT University, dual bachelors of EE and CS. I then went on to do a Ph.D at the University of Melbourne in EE. My dissertation was on mathematical optimization of wireless and wireline DSL. (Prof Jamie Evans is an awesome guy if you're on the lookout for an advisor!) I've been in SFO for just over…
Congrats fellow Australian. Two of us here in an office in Adelaide just bought the app. Guy behind me said "Hey, this is pretty cool. Have you seen... oh, you're looking at it already."
Re: Scientific Breakthrough Lets SnappyCam App Take 20 Full-Res Photos Per Second
#206Re: Scientific Breakthrough Lets SnappyCam App Take 20 Full-Res Photos Per Second
#207Re: Scientific Breakthrough Lets SnappyCam App Take 20 Full-Res Photos Per Second
#208Wow, amazing performance tuning, so rare these days! However, you should be careful with this online ARM simulator. It simulates Cortex-A8 while iPhone 5 runs on Apple Swift, two generations ahead. It very likely has different instruction timings compared to Cortex-A8. I didn't have a chance to test Swift, but here is a list of what might be different, judging by Qualcomm Krait and ARM Cortex-A15, which are in the sa…
It's a lot of work to optimize the assembly code to each ARM variant, but glad to know that Swift will generally run the same code at the same or faster speeds as the Cortex-A8.
The 3-cycle latency on simple ALU instructions is a bummer, but fortunately I use them sparingly for computation as compared to NEON. (They're great for pointer arithmetic and computing image row strides.)
The multiple issue of an ALU + LOAD is awesome. That would definitely help some of my routines.
Re: Scientific Breakthrough Lets SnappyCam App Take 20 Full-Res Photos Per Second
#209Please tell me there's an ipad version in the pipeline. This is the second non-free app I have on my ipad - it doesn't disappoint at all. Great work!
They really like to hide those iPhone apps! ;-)
It will be nice to play with the interactive living photos full-screen, though iOS 7 makes iPhone apps look amazing on the iPads in any case.
Re: Scientific Breakthrough Lets SnappyCam App Take 20 Full-Res Photos Per Second
#210To be clear, using SIMD for JPEG encoding is not new. I'd be curious how this JPEG encoder compares to libjpeg-turbo's NEON encoder. http://libjpeg-turbo.virtualgl.org/
See my post in another thread here on the same topic.