Struct HWEncodersAvailableInfo
- Namespace
- VisioForge.Core.Types
- Assembly
- VisioForge.Core.dll
Provides a summary of available hardware-accelerated video and audio encoders on the system.
public struct HWEncodersAvailableInfoInherited Members
Examples
// Query available hardware encoders
var encoderInfo = MediaFoundation.GetHWEncodersInfo();
// Select the best available H.264 encoder
if (encoderInfo.NVENC_H264)
{
Console.WriteLine("Using NVIDIA NVENC H.264 encoder");
// Configure for NVENC
}
else if (encoderInfo.QSV_H264)
{
Console.WriteLine("Using Intel Quick Sync H.264 encoder");
// Configure for QSV
}
else if (encoderInfo.AMD_H264)
{
Console.WriteLine("Using AMD AMF H.264 encoder");
// Configure for AMD
}
else if (encoderInfo.MS_H264)
{
Console.WriteLine("Using Microsoft software H.264 encoder");
// Fall back to software encoding
}
Remarks
This structure is used to query the system for the presence of specific hardware encoders, such as Intel Quick Sync, NVIDIA NVENC, and AMD AMF. Applications can use this information to offer hardware-accelerated encoding options to the user, which can significantly improve performance and reduce CPU usage during video encoding operations.
Hardware encoders leverage dedicated silicon on GPUs and CPUs to perform video compression, offering:
- Significantly faster encoding compared to software encoders
- Lower CPU usage, freeing resources for other tasks
- Real-time encoding capabilities for live streaming
- Lower power consumption on mobile and battery-powered devices
The availability of hardware encoders depends on:
- The installed GPU model and driver version
- CPU generation (for Intel Quick Sync)
- Operating system support and Media Foundation components
- Licensing restrictions (some encoders require additional licensing)
Properties
AAC
Gets or sets a value indicating whether a hardware-accelerated AAC audio encoder is available.
public bool AAC { readonly get; set; }Property Value
AMD_H264
Gets or sets a value indicating whether the AMD Advanced Media Framework (AMF) H.264 encoder is available.
public bool AMD_H264 { readonly get; set; }Property Value
Remarks
AMD AMF provides hardware video encoding on AMD GPUs (GCN architecture and newer) and APUs. It's AMD's equivalent to NVIDIA NVENC, offering dedicated encoding hardware with minimal impact on graphics performance.
AMF is supported on:
- AMD Radeon RX 400 series and newer
- AMD Radeon Pro graphics
- AMD APUs with integrated Radeon graphics
AMD_H265
Gets or sets a value indicating whether the AMD Advanced Media Framework (AMF) H.265/HEVC encoder is available.
public bool AMD_H265 { readonly get; set; }Property Value
Remarks
AMD AMF HEVC encoding is available on newer AMD GPUs, providing hardware-accelerated H.265 compression. Like NVENC, it offers improved compression efficiency compared to H.264 while maintaining high encoding performance.
HEVC encoding through AMF is typically available on:
- AMD Radeon RX 400 series (Polaris) and newer
- AMD Radeon VII and Radeon Pro series
- Recent AMD APUs with HEVC support
MS_H264
Gets or sets a value indicating whether the Microsoft H.264 software encoder is available.
public bool MS_H264 { readonly get; set; }Property Value
Remarks
This is typically the Windows Media Foundation H.264 encoder, which is a software-based encoder included with Windows. While not hardware-accelerated, it provides good compatibility and is available on most Windows systems.
This encoder is suitable as a fallback when no hardware encoders are available, though it will use significantly more CPU resources than hardware alternatives.
MS_H265
Gets or sets a value indicating whether the Microsoft H.265/HEVC software encoder is available.
public bool MS_H265 { readonly get; set; }Property Value
Remarks
The Microsoft HEVC encoder provides H.265 compression, offering better quality at lower bitrates compared to H.264. However, it requires more computational resources and may need additional codec components to be installed.
Note: HEVC encoding may require the HEVC Video Extensions from the Microsoft Store on some Windows 10/11 systems.
NVENC_H264
Gets or sets a value indicating whether the NVIDIA NVENC H.264 encoder is available.
public bool NVENC_H264 { readonly get; set; }Property Value
Remarks
NVIDIA NVENC is available on NVIDIA GeForce, Quadro, and Tesla GPUs (Kepler generation and newer). It provides dedicated hardware encoding with minimal impact on graphics performance, making it ideal for game streaming and recording.
NVENC features:
- Dedicated encoding hardware separate from CUDA cores
- Support for multiple simultaneous encoding sessions (varies by GPU)
- Low latency encoding for real-time applications
- B-frame support for better compression efficiency
NVENC_H265
Gets or sets a value indicating whether the NVIDIA NVENC H.265/HEVC encoder is available.
public bool NVENC_H265 { readonly get; set; }Property Value
Remarks
NVENC HEVC encoding is available on newer NVIDIA GPUs (typically Maxwell 2nd gen/GTX 960 and newer). It provides the same benefits as H.264 NVENC but with the improved compression efficiency of H.265.
Additional capabilities may include:
- 10-bit encoding support (Pascal and newer)
- 4K and 8K resolution support
- HDR encoding capabilities
OpenH264
Gets or sets a value indicating whether the OpenH264 software encoder is available.
public bool OpenH264 { readonly get; set; }Property Value
Remarks
OpenH264 is a software-based H.264 encoder provided via FFmpeg. It is always available as it does not require any specific hardware or additional system components.
QSV_H264
Gets or sets a value indicating whether the Intel Quick Sync Video (QSV) H.264 encoder is available.
public bool QSV_H264 { readonly get; set; }Property Value
Remarks
Intel Quick Sync Video is available on Intel processors with integrated graphics (2nd generation Core processors and later). It provides excellent performance with low power consumption, making it ideal for laptops and mobile devices.
QSV requires:
- Intel CPU with HD Graphics, Iris, or UHD Graphics
- Intel graphics drivers installed and enabled
- The integrated GPU must not be disabled in BIOS
QSV_H265
Gets or sets a value indicating whether the Intel Quick Sync Video (QSV) H.265/HEVC encoder is available.
public bool QSV_H265 { readonly get; set; }Property Value
Remarks
QSV HEVC encoding is available on newer Intel processors (typically 6th generation Skylake and later). It provides hardware-accelerated H.265 encoding with excellent quality and performance characteristics.
HEVC support in QSV offers:
- Up to 50% better compression than H.264 at the same quality
- Support for 4K and higher resolutions
- 10-bit color depth support on some models