To elaborate on this, there are two distinct types of hardware decoding support in libavcodec - hwaccels and hardware decoders.
Hwaccels are integrated into the corresponding native libavcodec decoder; the decoder does all the high-level header parsing and then hands off parsed headers and remaining coded data to the API in question for actually reconstructing the frames. Hardware decoders are separate decoders that pass the whole bytestream to the API and receive decoded frames from it. Whether a given API is wrapped as a hwaccel or a hardware decoder depends on its design - DXVA/D3D*/VAAPI/VDPAU/NVDEC depend on their caller (i.e. libavcodec) doing the parsing and thus are hwaccels. QSV and Mediacodec do their parsing internally and so have to be hardware decoders. Generally hwaccel-style APIs are preferred, because * the same high-level code is run independently of the API vendor, so things like metadata propagation or various broken-stream workarounds work consistently everywhere; * you can switch at runtime between software and hardware decoding; but we have little control over how vendors choose to implement their APIs. -- Anton Khirnov _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".