Technically, the resolution of the camera will affect the frame rates achieved, as the higher the resolution, the more processing work has to be done to compress each frame.
As all phones have to do a lot of compression on the fly due to limited RAM and processor speeds (as opposed to grabbing everything to RAM then post-compresing), the higher the resolution they're grabbing, the slower it's going to be for the compression to happen. This in turn means a slower frame rate.
Where the clever bit comes in is in how you get round this problem. This is only guess work, but I *think* the X grabs as much as it can to available RAM, then post-compresses that data while continuing to grab new stuff to the newly released RAM. This process is obviously dependant on the amount of RAM that's available to the camcorder app. and what image quality / resolution you're asking for. This is basically how a FIFO queue (First In First Out (linear) queue) works in computing terms, and it makes sense for a phone (which is a computer after all) to use the same theory.
The next clever bit is to ensure that the data you're grabbing from the camera, and the resultant compressed frames which you're writing off to the movie file don't combine to overload the available data throughput paths (a buffer over-run) - in order to do this, you have to limit the amount of data coming in, in relation to the amount of data going out. This is why the camcorder app. can't record at the camera's full resolution of 640x480. Doing that would result in a data stream massively in excess of the current maximum allowed resolution (176x144), which would almost certainly be far too much data for the phone to process.
It was evident in earlier firmwares (and on slower SD cards) that the camcorder "paused" every 5 or so seconds while it swapped from grabbing to compressing, then continued to grab again a second or so later. I don't see that now on the 60D firmware, so they've obviously done some work on how the queues are managed, although I think they've had to sacrifice some image quality to keep the data rates managable.
Also remember that this whole process is very processor intensive, and even with a dedicated DSP (as the X has for graphics) the queues into and out of that DSP have to be managed by the main CPU, as does the rest of the phone's ongoing functions (cell registration, time calculation etc. etc.) so you're likely to be running both processors pretty close to flat out while doing this. This is where the next clever bit comes in - you avoid issues with the processors having too much / not enough to do by using time slicing, where you swap the processor's main task to / from one application to another. I think that in the later firmwares, Sendo have also upped the camcorder's CPU priority (the priority controlls how many of the available time slices it's allowed to take) to allow it to concentrate more on the compression side, while therefore allowing the grabbing to continue with far less interuption.
*phew* that ended up being pretty long, but hopefully it will give everyone an idea of what the issues are with camcorder apps. in general 😊