H.264 encoding options

There are several options for H.264 encoding in MFormats SDK and MPlatform SDK - both CPU-based and GPU-powered. This post covers these options and helps to navigate for further, more technical information.


Download MFormats SDK



In MFormats SDK, all CPU-based H.264 encoding options are available in the Startup edition. All hardware-accelerated H.264 encoders are available with the H.264 GPU plugin. In MPlatform SDK, all encoders are part of Decoder lib.


Nvidia NVENC H.264 encoder


This is the best H.264 encoder we offer today. It uses a dedicated IP core that does nothing but H.264 encoding: the encoding process does not have any effect on the CPU or main GPU. For more information go to our post on Nvidia NVENC.


Performance tests:

  • CPU usage: 29%.
  • GPU usage: 4%.
  • Very fast and efficient; no dropped/skipped frames while encoding.


Intel Quick Sync


This encoder is based on the Intel Media SDK and works in two modes: software (CPU-based) and hardware-accelerated (GPU-powered).


We recommend to use the GPU version as it provides much better quality (using the hardware codec that is available on the Intel processors) and does not make any use of the CPU.


Performance tests (software mode):

  • CPU usage: 98%.
  • Huge numbers of breaks and buffer overflow while recording; resulting file is corrupted.


Performance tests (hardware mode):

  • CPU usage: 31%.
  • GPU usage: 25%.
  • Very fast and efficient; no dropped/skipped frames while encoding.


Elecard


We are in the process of integrating Elecard's codecs into our frameworks. Please get in touch with us if you are interested.


x264 encoder (GPL)


One of the best CPU-based encoders in the world. However, the GPL license prohibits to use this encoder in commercial applications without a special license.


We don't ship x264 with any of our products, but you can still try it with MPlatform by downloading a GPL build of FFmpeg (making sure that x264 is included) and extracting the archive to "\MediaLooks\MPlatform\Bin\MWriter", replacing existing DLLs. If you do this and also apply your Encoder lib license, the x264 encoder will become available in MWriter.


Performance tests ("faster" preset):

  • CPU usage: 99%
  • Huge numbers of breaks and buffer overflow while recording. Resulting file is corrupt.


Performance tests ("superfast" preset):

  • CPU usage: 51%.
  • No dropped/skipped frames while encoding.


Nvidia CUDA encoder


This encoder works with Nvidia cards that support CUDA. It makes use of both the CPU and GPU during the encoding process.


Starting from the 340.52 drivers, CUDA encoding has been disabled. In order to use it, a previous version of Nvidia drivers is needed (for example 337.88). We don't recommend this encoder, because there is a newer and more efficient one - the NVENC encoder.


Performance tests:

  • CPU usage: 19%.
  • GPU usage: 97%.
  • Uses much more GPU than NVENC. No dropped/skipped frames while encoding, but NVENC's quality is better.


How did we run our tests


These performance tests were made with the use of the [Writer sample] from MPlatform SDK. An HD 1080 50p signal was used as a source. The compressed stream was written to an MP4 file:


  • H.264 video at 6 Mbit/s;
  • AAC audio at 128 Kbit/s;
  • present/profiile: default;


Resource consumption was tracked via the Process Explorer utility.


System configuration:


  • Processor: Intel i7 4770;
  • Graphics: NVIDIA GTX 750 Ti;
  • RAM: 16 GB.


See also: