Where does latency occur? and What buffers are there in the application and how big are they
Depends what you are doing. If you are doing Mic Input to Headphone Output, the main latency is in the audio device input and output buffers. These were fixed sized buffers before, but we will be making them adjustable in Audio Hijack Pro v2.5 (they already are in LineIn 2).
If you are hijacking an application, any latency comes from the target application and how it buffers and uses CoreAudio. If you use Soundflower with Audio Hijack Pro, you’ll run into another pair of input and outputs buffers. Soundflower varies it’s buffer size based on the audio it’s dealing with.
How can I get the least amount of latency from Mic input through some microphone effects to my headphones?
You can get the biggest, quickest gain by waiting for v2.5 (no release date yet), and turning the buffer size in the Advanced Device Options dialog down as far as you can go until you start to hear skipping. You get to the Advanced Device Options dialog by option-clicking the ‘Hijack’ button. If there’s still too much latency after that, ask me again.
What affects the encoding and recording part and how can we make it most stable and least CPU- and Hard disk-intensive?
For reducing CPU usage, see the “Stop Skipping” page in the Audio Hijack Pro manual. The short version of that page is as follows. Encoding to AAC is faster then encoding to MP3. Encoding to Apple Lossless is faster still, and encoding to AIFF is the fastest of all. If you must record to MP3 or AAC, you can lower the “Quality” setting to give you a boost of speed (especially on MP3). Lowering the bit-rate helps as well.
Reducing hard drive access is the exact opposite of the list above: AIFF is more intensive then Apple Lossless, which is more intensive then MP3 and AAC. Just look at your bitrates, AIFF is around 1400 kilobits per second, Apple Lossless is half that, and MP3/AAC are typically 160 kbps.
Personally I like recording to Apple Lossless. It’s a good middle ground on CPU/HD usage, and the quality is, well, lossless. After recording I can then convert to whatever delivery format I need (say, AAC for my iPod and MP3 for posting to the Internet).