[Sony Ericsson Xperia Mini, Mini Pro, Xperia Pro, A] miniuser123:
Yes that's enough for CM10 which doesn't have video stabilizer.

For your roms (mainly tested 10.2) which have video stabilizer enabled this is only enough for 25-26 fps without further tuning using the camera app found in Super Jelly Bean 8. I can reach 30 fps by renicing some threads. One solution is to "undernice" surfaceflinger, the other is to modify the nice level of some mediaserver threads. Both have the side effect of making the preview very laggy, but the recorded video is smooth.

To make both preview and the recorded video smooth more changes are needed... I compared the logs while recording in stock ICS and CM and I can observe some differences. The input buffers of the video encoder in stock ICS and CM are allocated differently I think. Look at ICS logcat:

D/CameraService( 3486): getFrameBuffer: buffer_index = 0, heap_buffer_index = 0
E/OMX-VENC-720p( 3486): use_input_buffer: port = 0 appData = 0x1057f0 bytes = 13
82400 buffer = 0x2e67c000
D/CameraService( 3486): getFrameBuffer: buffer_index = 1, heap_buffer_index = 1
E/OMX-VENC-720p( 3486): use_input_buffer: port = 0 appData = 0x1dea8 bytes = 138
2400 buffer = 0x2e7cd800
D/CameraService( 3486): getFrameBuffer: buffer_index = 2, heap_buffer_index = 2
E/OMX-VENC-720p( 3486): use_input_buffer: port = 0 appData = 0x1cd510 bytes = 13
82400 buffer = 0x2e91f000
D/CameraService( 3486): getFrameBuffer: buffer_index = 3, heap_buffer_index = 3
E/OMX-VENC-720p( 3486): use_input_buffer: port = 0 appData = 0x1cd530 bytes = 13
82400 buffer = 0x2ea70800
D/CameraService( 3486): getFrameBuffer: buffer_index = 4, heap_buffer_index = 4
E/OMX-VENC-720p( 3486): use_input_buffer: port = 0 appData = 0x1cd550 bytes = 13
82400 buffer = 0x2ebc2000
D/CameraService( 3486): getFrameBuffer: buffer_index = 5, heap_buffer_index = 5
E/OMX-VENC-720p( 3486): use_input_buffer: port = 0 appData = 0x1cd648 bytes = 13
82400 buffer = 0x2ed13800
D/CameraService( 3486): getFrameBuffer: buffer_index = 6, heap_buffer_index = 6
E/OMX-VENC-720p( 3486): use_input_buffer: port = 0 appData = 0x1cd668 bytes = 13
82400 buffer = 0x2ee65000
D/CameraService( 3486): getFrameBuffer: buffer_index = 7, heap_buffer_index = 7
E/OMX-VENC-720p( 3486): use_input_buffer: port = 0 appData = 0x1cd6f8 bytes = 13
82400 buffer = 0x2efb6800
D/CameraService( 3486): getFrameBuffer: buffer_index = 8, heap_buffer_index = 8
E/OMX-VENC-720p( 3486): use_input_buffer: port = 0 appData = 0x1057c8 bytes = 13
82400 buffer = 0x2f108000
E/OMX-VENC-720p( 3486):
E/OMX-VENC-720p( 3486): allocate_output_buffer()::
E/OMX-VENC-720p( 3486):
E/OMX-VENC-720p( 3486): actual cnt = 5
E/OMX-VENC-720p( 3486):
E/OMX-VENC-720p( 3486): allocate_output_buffer()::
E/OMX-VENC-720p( 3486):
E/OMX-VENC-720p( 3486): actual cnt = 5
E/OMX-VENC-720p( 3486):
E/OMX-VENC-720p( 3486): allocate_output_buffer()::
E/OMX-VENC-720p( 3486):
E/OMX-VENC-720p( 3486): actual cnt = 5
E/OMX-VENC-720p( 3486):
E/OMX-VENC-720p( 3486): allocate_output_buffer()::
E/OMX-VENC-720p( 3486):
E/OMX-VENC-720p( 3486): actual cnt = 5
E/OMX-VENC-720p( 3486):
E/OMX-VENC-720p( 3486): allocate_output_buffer()::
E/OMX-VENC-720p( 3486):
E/OMX-VENC-720p( 3486): actual cnt = 5

In CM "allocate_input_buffer" is used instead of "use_input_buffer":

E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): allocate_input_buffer()::
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): allocate_input_buffer()::
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): allocate_input_buffer()::
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): allocate_input_buffer()::
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): allocate_input_buffer()::
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): allocate_input_buffer()::
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): allocate_input_buffer()::
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): allocate_input_buffer()::
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): allocate_input_buffer()::
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): allocate_output_buffer()::
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): actual cnt = 5
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): allocate_output_buffer()::
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): actual cnt = 5
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): allocate_output_buffer()::
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): actual cnt = 5
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): allocate_output_buffer()::
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): actual cnt = 5
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): allocate_output_buffer()::
E/OMX-VENC-720p( 190):
E/OMX-VENC-720p( 190): actual cnt = 5
E/OMX-VENC-720p( 190):

In my theory in stock ICS the camera preview buffer is used directly as the input of the video encoder while in CM new pmem is allocated for the input buffer, and every single frame is copied into this buffer for the encoder. Not difficult to predict which method is more efficient.

My thoery is also supported by pmem usage because in ICS it is much lower.

Libcameraservice.so in stock ics contains some of this logic, because it contains custom sony functions like getFrameBuffer which is not in the android source.

Unfortunately I cannot implement sony's method into CM because of lack of time/knowledge of android source, maybe you...