Here are the settings I used (I had to clip off some of the long comments to make this fit better):
You need a fast multi-core system and set the number of slices per frame accordingly.
You can disable deblocking and use cavlc instead of cabac.
You can try 0-maximum speed which will adjust the encoding parameters automatically.
Hi mhmacleod, and welcome to Intel Software Network, IPP forum.
Please be aware that IPP video library does not utilize any GPU or video acceleration, it is performing completely on the CPU, with a highly optimized performance on Intel processors.
This means that the performance of your H.264 encoding operation is totally based upon your processor (latest Intel processor = Highest performance).
Also, you may try to reduce the processing amount in number of ways; for example, you are setting "Number of B frames between I (or P) " = 3
Well, reducing B frames usage will increase the result video stream size, but also it will reduce the processing load.
Also, the H.264 encoder is threaded with OpenMP*. You need to use the Compiler that can support OpenMP* to compile to threaded code. (Intel C++ Compiler, Microsoft* Visual C++*.NET* 2008, etc).
Perhaps, your images are not highly correlated and difficult for efficient video compression by H.264 as you specify 15fps output framerate. Do you know what was a capture framerate? or perhaps you should try to specify a larger search_x + _y ranges to achieve a reasonable Motion Estimation convergence if your capture rate was <=15 fps. Fora higher speed of encoder I'd definitely reccomend todisable the subblock split at expense of higher bitrate/lower quality. Fianlly, if your content is really difficult to compress you may want to try INTRA/IDR encoding only and increase your bitrate (if you can afford). As said before using CAVLC is good if you care more about speed than bitrate/quality, but I'd probably keep deblocking ON for a better video quality unless your bitrate is really high like +10Mbps.
Hope it helps.
OpenMP performs the multi threading.
So you need to consider:
1) Encoder threading; check the number of threads used and watch out for limitation.
2) Processor capabilities; Intel new processors powered by Hyper threading (more physical threads per core) and Turbo boost (Load-balancing among processor cores) such as Intel Core i7;
It makes sense, because the encoder is threaded, and it runs within your process (application), the CPU must not be too busy even if the encoders thread is, unless the encoders thread runs with a high priority.
More pixels = more processing. Note that, UMC are just examples, for a complete Intel implementation of video processing, you may consider Intel Media SDK, it is a higher level API, and allows these settings for H.264 encoder (among other components).
The IPP audio-video-codecs samples are contained within a separate IPP samples package ipp-samples_p_6.1.5.060.zip, you may try to locate it within the ISN; also, you may consult an expert from Intel in order to locate the appropriate download link location.
Intel Media SDK forum would be the right place for the media SDK issues and discussions. http://software.intel.com/en-us/forums/intel-media-sdk/
The Media SDK may uses hardware-acceleration for h.264 decoding if your graphics card supports it, otherwise it calls the IPP too.