我正在为Directshow编写自定义视频渲染过滤器。我的渲染器假设传入的像素一次被组织一行像素(正确的假设?)并使用DirectX纹理将它们blits到其他地方的另一个DirectX显示器。
这种方法适用于网络摄像头作为输入,但是当我使用模拟捕获板时,渲染器接收的样本不是任何预期的顺序(见左下图)。当我使用股票DirectShow视频渲染器渲染捕获时,它看起来很好(见下图右图)。所以directshow渲染器必须做一些额外的事情,而我的渲染器不是。知道它是什么吗?
更多细节:
MEDIASUBTYPE_RGB24
,所以我认为这不是YUV问题(是吗?)。
答案 0 :(得分:3)
也许纹理被填充以保持行对齐(乘以)每行32个字节?请注意,我没有使用过DirectShow,但这正是我在D3D中所期望的。
换句话说,你的输入可能会比你想象的有不同的步伐。不幸的是我不知道DS所以我只能假设计算输入/输出坐标的东西应该有不同的步幅因素,例如代码中的内容看起来像offset = y * stride + x
。