【问题标题】:Is it possible to implement a video codec using GLSL shaders?是否可以使用 GLSL 着色器实现视频编解码器?
【发布时间】:2015-07-04 01:59:55
【问题描述】:

是否可以使用 GLSL 着色器实现视频编解码器,如果可行,它是否比 cpu 编解码器更有效?

【问题讨论】:

  • AMD 和 Intel 至少分别用 VCE 和 QuickSync 实现了这一点。
  • 这似乎没有在着色器中实现,amd 的网站称其为“专用固定功能”。
  • 为什么不简单地使用现代 GPU 上的专用 h264 编解码器硬件?更节能,更容易实施。
  • 这个问题是理论上的。为此,您可以假设您的 gpu 上没有这样的解码器,或者您希望使用您的硬件不支持的编解码器,无论是 vp9、h265 还是您想出的任何示例。

标签: opengl video glsl h.264 codec


【解决方案1】:

由于 GPU 是并行处理器,因此必须设计编解码器以利用管道。编解码器是编码器或解码器,着色器是顶点或片段。

管道架构(堆栈图)将是:

设计应该将尽可能多的工作推到顶点着色器中,以实现高效的并行性。四叉树算法可能是分离片段的好选择。

实施将取决于 GPU 目标。 Khronos Vulkan 芯片组 (GL5+) 特别适合解决这个问题,允许多线程管道。

高端 GPU 编解码器实现可以轻松胜过某些硬件编解码器,并且肯定会淘汰任何类似的 CPU 编解码器(软件编解码器)。

专用硬件终将获胜。任何好的 GPU 编解码器都可以作为更快的硬件编解码器的模型,就像好的软件编解码器可以成为更快的 GPU 编解码器一样。

GPU codecs in the wild

【讨论】:

  • 也适用于音频纹理。非常有趣的是,任何 glsl 解码器都可以简单地包含在媒体容器(mp4 等)中。不再需要标准化的外部编解码器(h264 等)。每个制作人都可以拥有自己的秘密编码器!
  • 那真的实用吗?您不需要从 gpu 复制回来才能在其他声卡上播放它吗?
  • User1090729,这就是媒体播放器的用途。
  • 你能扩展一下吗?这与该方法的技术含义有什么关系?
  • 见上面添加的链接。
【解决方案2】:

嗯,所有图灵完备的系统都能够完成相同的事情,唯一的区别是速度和效率。因此,如果您将此问题理解为“GLSL 着色器图灵是否完整?”答案可以在这里找到:

Are GPU shaders Turing complete

TLDR; 着色器模型 3.0 是 其他可能(但可能没有)

至于更高效,可能不会。其他 GPGPU/CUDA/SIMD 很可能会更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    相关资源
    最近更新 更多