我在哪里设置主要和子类型guid在一个引脚

时间:2014-03-05 13:46:08

标签: c++ directshow

使用GraphStudioNext显示我的过滤器输出引脚具有GUID_NULL的主要和子类型。 我在哪里用c ++中的代码设置它?

3 个答案:

答案 0 :(得分:1)

根据MSDN,IPin::QueryAccept

  

返回值S_OK表示引脚将在下一个采样或引脚重新连接后接受介质类型。

因此,您可以创建一个新的AM_MEDIA_TYPE并将其传递给IPin :: QueryAccept。

答案 1 :(得分:0)

在MSDN中查找AMOVIESETUP_FILTER,此结构描述了您在系统中注册的过滤器。它包含一些描述您的引脚的AMOVIESETUP_PIN,并包含一些AMOVIESETUP_MEDIATYPE结构,用于描述滤波器引脚的主要和子类型。如果您希望GraphEdits显示它们,则可以放置正确的类型。

答案 2 :(得分:0)

我不清楚你在这里做了什么(例如你的过滤器是什么,以及你是否试图将它连接到avi mux输入或输出)但是有一些一般要点:

  • 在连接之前,GraphStudioNext中的引脚属性显示过滤器提供的媒体类型。在使用基类的C ++过滤器中,这通过覆盖GetMediaType完成 - 确切的类取决于您使用的过滤器/引脚类。如果您没有覆盖它,通常看不到提供的媒体类型。有些过滤器会接受带有GUID_NULL / GUID_NULL介质类型的输入,但它不太可能给出合理的结果(例如Avi Mux)。
  • 某些过滤器支持从输入引脚提供媒体类型,但这种情况并不常见。
  • 连接后,GraphStudioNext中的引脚属性显示连接的媒体类型。
  • 如果您要连接到Avi Mux输入引脚,则需要仔细选择媒体类型 - GraphStudioNext具有支持此功能的模式。 Avi Mux相当混杂,将大多数DirectShow媒体类型和样本包装在AVI容器中,但如果媒体类型不常见,结果可能无法使用。这确实使AVI文件成为一个有用的通用容器文件,用于测试。请注意意外重新连接其输入引脚的AVI文件 - 它们通常会以输出引脚提供的第一种介质类型重新连接。
  • Avi Mux输出引脚需要连接到支持通过IStream(如文件编写器)进行随机访问的输入引脚,而不是通过媒体样本传递数据。在GraphStudioNext中,您可以使用分析器文件编写器筛选器,并在属性页中查看编写过程。
  • 如果您只想将所有输出样本数据连接到文件,则可以使用Microsoft样本转储过滤器执行此操作。例如,这对于诊断音频问题很有用。这也是编写自己的基于文件的渲染器的一个可能的起点。
  • 如果您对GraphStudioNext有特殊问题,请在Google Code网站上添加问题。开发者正在倾听!