Media Foundation H264 硬件编码器中的锯齿/质量问题,尤其是文本(文本上的锯齿和模糊)

Bhu*_*yan 6 directx video-streaming h.264 hardware-acceleration ms-media-foundation

我一直在研究使用硬件加速的 h.264 编码和解码流式传输实时视频,并且我已经能够使用 Windows Media Foundation 使其工作。

我使用 d3d11 视频处理器将帧从 RGB 压缩为 NV12 格式,并使用硬件 MFT 编码为 h.264。

我现在唯一的问题是在解码和渲染视频后,锯齿和光晕效果与文本一起出现在屏幕上。

下面的图片显示了我的问题。

编码前的帧

原图

编解码后的帧

解码图像

经过一番研究,我发现了H.264/AVC 444,其中微软通过引入带有 RDP 10 的全屏 AVC 444 模式解决了这个问题。

在 AVC 444 模式下,通过显着提高帧吞吐量,我们可以使用 4:2:0 硬件编码器/解码器获得 4:4:4 质量的文本。

介绍 AVC 444 模式 在远程桌面场景中使用 AVC/H.264 作为唯一的编解码器的主要挑战是文本显示具有典型 AVC/H.264 实现的光环效果。这是由作为压缩的一部分发生的颜色转换过程引起的,该过程丢弃了一些色度信息,如 4:2:0 格式所示。对于人眼来说,视频内容缺乏色度信息并不那么明显,但是对于主要使用文本的远程桌面场景,这是显而易见的,用户会认为这是模糊的。AVC/H.264 标准定义了使用 4:4:4 格式的能力,在转换过程中不会丢失色度,但是通常这不是大多数 AVC/H.264 硬件编码器和解码器实现的一部分,因此提供一个挑战。

第 444 章

我试图在 Media Foundation 中实现相同的目标,但尚未找到任何资源来破解它。

我发现颜色转换为 NV12 是这个问题背后的原因,我一直在努力解决它,我也尝试过 YUV 444,但找不到支持它的硬件 MFT。我无法使用硬件 MFT 编码除 NV12 之外的任何其他颜色格式

有什么办法可以克服这个问题吗?任何帮助将不胜感激。

Mar*_*ann 2

  1. 您可以使用屏幕捕获优化编解码器: https://learn.microsoft.com/en-us/windows/win32/medfound/usingthewindowsmediavideo9screencodec

  2. NVIDIA 支持多种卡上的 4:4:4 硬件辅助: https://developer.nvidia.com/video-encode-decode-gpu-support-matrix

  3. 将屏幕从 1920x1080 缩放到 3840x2160 转换为 NV12 (4:2:0) 压缩为 H.264 并在接收器上执行相反的操作。升级和随后的 4:2:0 转换应保留全色分辨率。这听起来很浪费,但如果在硬件上完成,它应该可以工作。