Tips for using Intel MSDK encoder in MediaCoder (Stanley posted on March 10th, 2012 )

Recently I’ve been spending some time improving MediaCoder’s support for Intel MSDK encoder, the GPU acclerated H.264 and MPEG-2 encoder from the chip giant. A new revision of MediaCoder (before I can finish and implement all the major improvements in my mind and release MediaCoder 2012), is released containing several improvements including slight performance boost when using Intel MSDK encoder to perform hardware accelerated encoding.

Actually the performance of Intel MSDK encoder is astonishing. This comes from the good implementation of the underlying multimedia facilities of Intel Media SDK framework, as well as the multi-threaded design of MediaCoder, espeically its built-in large circulla frame buffer used for efficiently transferring raw audio and video data from decoder to encoder.

Here I give some tips for using Intel MSDK encoder in MediaCoder.

  1. Only H.264 and MPEG-2 are supported for hardware acceleration which most people should already know. Don’t expect legacy formats to be supported. Stick to CPU encoding for them.
  2. Set higher priority (on the Task tab) for encoder can boost the speed a bit and this won’t slow down your system response noticablly because the GPU encoder will never eat up all the processor power.
  3. In the new version, I added the “Use D3D Surface” option. Though I found that some systems can use this and some other cannot, by enabling this, you can get some extra speed boost.
  4. On the picture tab, set “Effects” to “Encoder Filters”. This will hand over the video filtering job to the hardware accelerated encoder (by default it’s done by video decoders) and will increase transcoding speed noticablly when scaling and cropping are enabled. But please note that the Intel MSDK encoder doesn’t have so much filters implemented (basically it could only do scaling and I just added  cropping in the recent release), so if you want to performing denoising or deinterlacing, you should not use this.
  5. On Intel MSDK encoder tab, you can choose among “Quality”, “Balanced” and “Speed” for speed-quality trading.

Here is what I am getting with the latest version of MediaCoder working on my dev PC which consists of:

  •     Intel i7-2600 processor
  •     Asus H67 motherboard (onboard GPU, actually it’s in-processor GPU)
  •     16G RAM

 

In the transcoding, the source content is a H.264 MKV of 1024×576 and target is H.264 MP4 of 720×480. Crop-to-fit was chosen. The transcoding speed reached 17.25x or 413.5fps. That means, a 2-hour movie can be transcoded in less than 7 minutes. The speed is very impressive, isn’t it?

 

Here is a list of desktop processors supported by Intel MSDK

7 Responses

  1. rkm says:

    Based on your comments, it appears that Intel Media SDK (Sandy Bridge Encoder) is much quicker than x264 or CUDA.

    However, how does the quality of Media SDK compare to the x264 encoder?

    After reading your post, I’ve searched everywhere for objective comparisons, but have not found anything. Although Compression.ru compares all of the major H.264 encoders, they do not mention specific details about which settings they used for the Sandy Bridge Encoder, or summarize how it compares overall in quality.

    Thank you in advance for your feedback!

  2. Stanley says:

    The quality of Intel encoder is really acceptable. It can not reach the highest level of x264 (in its slowest mode) but it’s already used for serious transcoding by some people. For intermediate transcoding, it’s even more useful especially after the adding of CQP mode (can be used for lossless H.264 encoding) in MediaCoder.

  3. vitalyx says:

    Any idea why error 14 may show up even though Intel Media SDK is installed and option to install the Intel encoder was selected in MediaCoder’s installer (unchecked by default)? I even checked the path to MediaCoder’s encoder, it’s correct and the encoder was indeed installed. Intel Media SDK is installed as well. Both MediaCoder and Intel Media SDK are 64-bit running on Window 7 x64 SP1. Yet, I still get the error message that says encoder parameters are incorrect. I used the wizard that shows up on first run to configure for use of Intel’s encoder and did not change anything.

    Could you please look into this?

  4. Stanley says:

    Did you see “Intel MSDK” in MediaCoder’s status bar?

  5. RichardAD says:

    The advanced button for Intel encoding has a setting
    “Path to the encoder”: “.\codecs64\imsdkenc.exe”

    I downloaded “Intel® Media SDK 2012” from http://software.intel.com/en-us/articles/vcsource-tools-media-sdk/ which gave me w_MSDK-2012_p_3.0.014_GOLD.zip containing .msi files for 32 and 64 bit:
    – Intel(R)_Media_SDK_win32.msi and
    – Intel(R)_Media_SDK_x64.msi
    I installed both. Neither contain the exe “imsdkenc.exe” that MediaCoder seems to expected. The Intel install contains these dlls:
    – libmfxsw32.dll
    – libmfxsw64.dll

    Neither worked when I used them as “Path to the encoder” and error 14 was presented each time.

    So, where can I find this elusive imsdkenc.exe ?

  6. Stanley says:

    It’s shipped with MediaCoder and you can find it nowhere else.

  7. RichardAD says:

    I finally found it Stanley. As of yesterday, the imsdkenc program appears to only be included with the 32-bit version of MediaCoder. I did not see it in the 64-bit version, nor in the WebVideo version.