实时直接显示渲染 [英] Realtime Direct Show rendering
问题描述
你好,
我刚刚开始使用Directshow进行一些编程.
我可以轻松地安静完成的工作是将IGraphBuilder链接到一些过滤器(例如IMediaControl,IBaseFilter,IVMRWindowlessControl等),并使用pGraph-> RenderFile(..)函数从本地硬盘驱动器播放avi文件.
这一切都很好,但是,现在我面临一个问题,我在RAM中有一个帧数组,我想对它们进行一些处理,并想在DirectShow曲面上渲染它们.
但是,我不想将其保存到临时avi文件中,而是要随着它们的出现"渲染这些帧. (实时)
我已经搜索并继续进行codeproject,大多数实现都使用RenderFile()函数,这是我不想做的事情,因为首先将帧保存到Tmp文件夹会导致很多延迟.
我真的很感谢你们的帮助,在这里我有点迷失了:(
Hello,
I have just started off a little bit of programming with Directshow.
What I can do quiet easily is link up IGraphBuilder to a few filters such as IMediaControl, IBaseFilter, IVMRWindowlessControl, etc and play an avi file from the local harddrive by using a pGraph->RenderFile(..) function.
This is all good, however, now I am faced with a problem where I have an array of frames in RAM, I want to do some processing on them , and I want to render them on a directshow surface.
However, I do NOT want to save it to a temporary avi file, I want to render these frames "as they come". (real-time)
I have googled and went on codeproject, most of the implementations are using the RenderFile() function, which is something I do not want to do as saving frames to a Tmp folder first will cause a lot of delays.
I would really appreciate some help from you guys, I am a bit lost here :(
推荐答案
当然您不应该使用临时文件.这是一个很大的话题但是.
我希望本周期的三篇CodeProject文章可以帮助您了解所涉及的技术:
DirectShow过滤器开发第1部分:使用Direct2D进行视频渲染 [ ^ ] ,
DirectShow过滤器开发第2部分:实时源过滤器 [ ^ ],
DirectShow过滤器开发第3部分:变换过滤器 [ ^ ].
祝你好运,
—SA
Of course you should not use temporary files. This is a pretty big topic though.
I hope this cycle of three CodeProject articles can help you to understand the techniques involved:
DirectShow Filters Development Part 1: Video Rendering with Direct2D[^],
DirectShow Filters Development Part 2: Live Source Filter[^],
DirectShow Filters Development Part 3: Transform Filters[^].
Good luck,
—SA
这篇关于实时直接显示渲染的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!