Windows runtime windows phone应用程序中的自定义MFT

Windows runtime windows phone应用程序中的自定义MFT,windows-runtime,windows-phone-8.1,ms-media-foundation,Windows Runtime,Windows Phone 8.1,Ms Media Foundation,我需要创建一个自定义MFT,因为这是在WindowsPhone8.1(运行时,无silverlight)上以YUV格式获取原始帧的唯一方法 我知道这不容易,但我别无选择 我正在尝试学习灰度变换的示例: 但我真的不明白它是怎么工作的。 在应用程序中,我看到的唯一一个关于C++灰度的参考是: _mediaCaptureMgr.AddEffectAsync(Windows.Media.Capture.MediaStreamType.Photo,“GrayscaleTransform.Grayscale

我需要创建一个自定义MFT,因为这是在WindowsPhone8.1(运行时,无silverlight)上以YUV格式获取原始帧的唯一方法

我知道这不容易,但我别无选择

我正在尝试学习灰度变换的示例:

但我真的不明白它是怎么工作的。 在应用程序中,我看到的唯一一个关于C++灰度的参考是:

_mediaCaptureMgr.AddEffectAsync(Windows.Media.Capture.MediaStreamType.Photo,“GrayscaleTransform.GrayscaleEffect”,null)

没有创建任何灰度实例,也没有调用任何方法。 所以,我想知道它是如何工作的

谢谢


Sebastien

MediaCapture示例在其pacage.appxmanifest的第35行中注册GrayscaleTransform.GrayscaleEffect:

<Extension Category="windows.activatableClass.inProcessServer">
  <InProcessServer>
    <Path>GrayscaleTransform.dll</Path>
    <ActivatableClass ActivatableClassId="GrayscaleTransform.GrayscaleEffect" ThreadingModel="both" />
  </InProcessServer>
</Extension>

GrayscaleTransform.dll

.

我想你是在问在哪里可以找到灰度cpp文件本身。在解决方案资源管理器中,您可以在MediaExtensions/MFExtensions/GrayscaleTransform/GrayscaleTransform.Shared下找到它/


在这里,您将看到Grayscale.cpp及其所有功能。希望看到这些会有所帮助

但是灰度在哪里实例化?我可以看到它的构造函数、析构函数和几十个方法,但我没有看到任何主要功能?它是基于对AddEffectAsync的调用在MediaCapture元素内部实例化的。然后它被添加到媒体管道中,并在解码器和渲染器之间调用。但是谁调用Grayscale类中的方法呢?这是媒体会话的内部调用。应用程序通过在MediaCapture元素上调用AddEffectAsync来触发此操作,然后MediaCapture元素将MFT添加到管道中。请参阅上的图表,当AddEffectAsync调用自定义MFT时,它将被实例化并放入管道中?cpp文件中该MFT的输入和输出在哪里?我不想要这种灰度效果,只是用YUV格式捕捉原始帧,你能给我一些提示吗?