Hardware Acceleration
Contents
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 MediaPin , set the HardwareEncoder
parameter to HardwareEncoder::Auto
. This must be done before calling Transcoder::open
:
// create output socket
auto outputSocket = primo::make_ref(
Library::createMediaSocket(Preset::Video::iPad::H264_720p)
);
// enable hardware acceleration
auto outVideoPin = outputSocket->pins()->at(0);
outVideoPin->params()->addInt(Param::HardwareEncoder, HardwareEncoder::Auto);
Complete C++ Code#
#include <primo/avblocks/avb.h>
#include <primo/platform/reference++.h>
// link with AVBlocks64.lib
#pragma comment(lib, "./avblocks/lib/x64/AVBlocks64.lib")
using namespace primo;
using namespace primo::codecs;
using namespace primo::avblocks;
int main(int argc, const char * argv[]) {
// needed for Windows Media Codecs
CoInitializeEx(nullptr, COINITBASE_MULTITHREADED);
Library::initialize();
auto inputInfo = primo::make_ref(
Library::createMediaInfo()
);
inputInfo->setInputFile(L"Wildlife.wmv");
if (inputInfo->load()) {
// create input socket
auto inputSocket = primo::make_ref(
Library::createMediaSocket(inputInfo.get())
);
// create output socket
auto outputSocket = primo::make_ref(
Library::createMediaSocket(Preset::Video::Generic::MP4::Base_H264_AAC)
);
// enable hardware acceleration
auto outVideoPin = outputSocket->pins()->at(0);
outVideoPin->params()->addInt(Param::HardwareEncoder, HardwareEncoder::Auto);
outputSocket->setFile(L"Wildlife.mp4");
// configure Transcoder inputs and outputs
auto transcoder = primo::make_ref(
Library::createTranscoder()
);
transcoder->inputs()->add(inputSocket.get());
transcoder->outputs()->add(outputSocket.get());
// run Transcoder
if (transcoder->open()) {
transcoder->run();
transcoder->close();
}
}
Library::shutdown();
CoUninitialize();
return 0;
}