Hardware Acceleration

How to enable Intel Graphics, AMD, or NVIDIA hardware acceleration.

For detailed information about the supported hardware platforms, see About Hardware Acceleration.

Example

To enable hardware encoding, on the output TMediaPin, set the HardwareEncoder parameter to HardwareEncoder::Auto. This must be done before calling TTranscoder::open:

// create output socket
TMediaSocket outputSocket = TMediaSocket(Preset::Video::iPad::H264_720p);

// enable hardware acceleration
outputSocket.pins(0).addParam(Param::HardwareEncoder, HardwareEncoder::Auto);

Complete C++ Code

#include <primo/avblocks/avb++.h>

// link with AVBlocks64.lib
#pragma comment(lib, "./avblocks/lib/x64/AVBlocks64.lib")

using namespace primo::codecs;
using namespace primo::avblocks;
using namespace primo::avblocks::modern;

int main(int argc, const char * argv[]) {
    // needed for Windows Media Codecs
    CoInitializeEx(nullptr, COINITBASE_MULTITHREADED);

    {
        TLibrary library;

        auto inputInfo = TMediaInfoW().file(L"Wildlife.wmv");

        if (inputInfo.tryOpen()) {

            // create input socket
            TMediaSocketW inputSocket(inputInfo);

            // create output socket
            TMediaSocketW outputSocket(Preset::Video::Generic::MP4::Base_H264_AAC);

            // enable hardware acceleration
            outputSocket.pins(0).addParam(Param::HardwareEncoder, HardwareEncoder::Auto);

            outputSocket.file(L"Wildlife.mp4");

            // configure Transcoder inputs and outputs
            TTranscoderW transcoder;

            transcoder.addInput(inputSocket);
            transcoder.addOutput(outputSocket);

            // run Transcoder
            if (transcoder.tryOpen()) {
                transcoder.run();
                transcoder.close();
            }
        }
    }

    CoUninitialize();

    return 0;
}