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;
}