gpt4 book ai didi

windows - WIC 位图处理最有效的像素格式是什么?

转载 作者:可可西里 更新时间:2023-11-01 09:53:20 29 4
gpt4 key购买 nike

我正在尝试制作一个简单的视频播放器,例如使用 Direct2D 和 WIC 位图的程序。
它需要快速和 CPU 经济地绘制(拉伸(stretch))YUV 像素格式帧数据。

我已经用 GDI 测试过了。我希望切换到 Direct2D 至少可以提高 10 倍的性能(CPU 开销更小)。

我要做的基本上是这样的:

  1. 创建一个空的 WIC 位图 A(用于绘制 Canvas )
  2. 用YUV帧数据创建另一个WIC位图B(格式转换)
  3. 将位图 B 绘制到 A 上,然后将 A 绘制到 D2D 渲染目标

对于第 1、2 步,我必须选择一种像素格式。
WIC Native Pixel Formats

有一个MSDN页面推荐WICPixelFormat32bppPBGRA
http://msdn.microsoft.com/en-us/library/windows/desktop/hh780393(v=vs.85).aspx

WICPixelFormat32bppPBGRAWICPixelFormat32bppBGRA 有什么区别? (前者有附加P)

如果 WICPixelFormat32bppPBGRA 是要走的路,它总是这样吗?无论硬件和/或配置如何?

WIC 位图处理实际上最有效的像素格式是什么?

最佳答案

不幸的是,使用 Direct2D 1.1 或更低版本,您不能使用不同于 DXGI_FORMAT_B8G8R8A8_UNORM 的像素格式,后者等同于 WIC 的WICPixelFormat32bppPBGRA(“P”表示您使用D2D1_ALPHA_MODE_PREMULTIPLIED D2D 中的 alpha 模式)。

如果您的目标操作系统是 Windows 8,那么您可以使用 Direct2D 的更新功能。据我所知,D2D 位图有某种 YUV 支持。 (编辑:不,没有。RGB32 仍然是唯一支持的像素格式以及一些仅 alpha 格式)

What is the most effective pixel format for WIC bitmap processing actually?

我不确定如何衡量像素格式的有效性,但如果您想使用硬件加速,您应该使用 D2D 而不是 WIC 进行绘制,并且仅将 WIC 用于颜色空间转换。 (顺便说一句,GDI 也是硬件加速的)。

What's the difference WICPixelFormat32bppPBGRA and WICPixelFormat32bppBGRA? (former has additional P)

P表示RGB分量预乘。 (see here)

What I'll doing is basically such as below:

  1. Create an empty WIC bitmap A (for drawing canvas)
  2. Create another WIC bitmap B with YUV frame data (format conversion)
  3. Draw bitmap B onto A, then draw A to the D2D render target

如果您以性能为目标,则应尽量减少位图复制操作,还应避免使用 WIC 位图渲染目标,因为它使用软件渲染。如果你的播放器只渲染到一个窗口,你可以使用 HWND render target , 或 DeviceContext与交换链(取决于您使用的 Direct2D 版本)。

您可以使用 WIC 的软件像素格式转换功能(例如 IWICFormatConverter),而不是将帧 B 渲染到帧 A。另一种方法是使用 SIMD 操作编写(或查找)自定义转换例程。或者使用着色器在 GPU 端 转换格式(色彩空间)。但后两者需要高深的知识。

转换后,您可以锁定像素以获取像素数据并将该数据直接复制到 D2D 位图 (ID2D1Bitmap::CopyFromMemory())。鉴于您已经有了一个现成的 d2d 位图。

最后一步是将位图渲染到渲染目标。并且可以使用变换矩阵来实现拉伸(stretch)。

关于windows - WIC 位图处理最有效的像素格式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26139710/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com