1 Reply Latest reply on Oct 1, 2015 4:58 AM by pinform

    Recommended API for using VCE (H.264 hardware encoding)?

    svilst

      Hi everybody,

       

      I'd like to use the H.264 hardware encoding available in certain AMD GPUs (VCE).
      Currently I'm targeting Windows and I'm testing with Radeon HD 7700 (VCE 1.0) and Radeon R7 260x (VCE 2.0).

      In future I will target Linux and OS X as well.

      It seems that on Windows there are several APIs with different level of support that can leverage the Video Coding Engine.

       

      1. OpenVideo
      Pros:
      Libraries are distributed with the Catalyst driver (available in the latest Catalyst Omega driver 14.501.1003)

       

      Cons:
      Officially deprecated since the release of the AMF SDK.
      Cannot be used from latest SDKs (Media SDK 1.0/1.1, AMD APP SDK 2.9.1 and 3.0-Beta)
      It is said to be distributed with drivers till mid 2015. No guarantees after that.

       

      2. AMF.
      Pros:

      New C++ SDK (part of Media SDK).

      Advertised as OS and platform independent way to utilize the VCE.

       

      Cons:

      AMF libraries are not distributed as part of the Catalyst driver and apps must distribute the AMF libraries.
      As of Media SDK 1.1 the AMF is not reliable on all GPUs (with VCE).
      There are a number of complaints about this (including in this forum).
      For example it's not possible to use the VCE H264 Encoder on R7 260x.
      The simpleEncoder sample in AMF produces an exception inside the AMF libs (amf-core-windesktop) and the video driver stops responding and restarts.
      But simpleEncoder works fine on the older HD 7700.

       

      3. MFT transform (H.264 encoder).
      Pros:

      Distributed with the Catalyst driver.

      Advertised as production quality. Reliable.

       

      Cons:

      Not possible to utilize all VCE features and options.

      OS specific.

       

      Can you advise what's the recommended API to use VCE for new applications?
      Is there another API apart from the ones listed above?

       

      Thanks,
      Svilen Stoilov