gpt4 book ai didi

c++ - 自定义过滤器不兼容?

转载 作者:太空狗 更新时间:2023-10-29 21:15:41 26 4
gpt4 key购买 nike

我在 DirectShow 中创建了一个名为 decryption 的自定义过滤器,但是当我尝试将 MP4 的输出连接到我的自定义过滤器的输入时,使用 GraphStudioNext 给我一个“VFW_E_NO_ACCEPTABLE_TYPES (0x80040207)”。

// Media Types 
const AMOVIESETUP_MEDIATYPE sudPinTypes =
{
&MEDIATYPE_Stream,
&MEDIASUBTYPE_NULL
};

// Pins
const AMOVIESETUP_PIN psudPins[] =
{
{ L"Input", FALSE, FALSE, FALSE, FALSE, &CLSID_NULL, L"Output", 1, &sudPinTypes },
{ L"Output", FALSE, TRUE, FALSE, FALSE, &CLSID_NULL, L"Input", 1, &sudPinTypes }
};

// Filters
const AMOVIESETUP_FILTER sudAudioVolume =
{
&CLSID_Decryption,
L"Decryption",
MERIT_NORMAL,
2,
psudPins
};

HRESULT DecryptionFilter::CheckInputType(const CMediaType *mtIn)
{
//Streaming
if (mtIn->majortype != MEDIATYPE_Stream) return E_FAIL;
if (mtIn->subtype != MEDIATYPE_NULL) return E_FAIL;

return S_OK;
}

HRESULT DecryptionFilter::CheckTransform(const CMediaType *mtIn, const CMediaType *mtOut)
{
HRESULT hr = CheckInputType(mtIn);
if (FAILED(hr)) return hr;

if (mtIn->majortype != MEDIATYPE_Stream) return E_FAIL;
if (mtIn->subtype != MEDIATYPE_NULL) return E_FAIL;

return S_OK;
}

我通过 GraphStudioNext 和调试

  • 源输出引脚的“connectionType”是 PIN_CONNECTION_TYPE_STREAM
  • 自定义过滤器输入引脚的“connectionType”是
    PIN_CONNECTION_TYPE_OTHER

我的图表是这样的: My Graph of what I'm trying to accomplish

源过滤器和自定义过滤器的属性 Properties for Source Filter and Custom Filter

关于为什么我的过滤器无法连接的任何线索?谢谢!

最佳答案

您的过滤器不兼容,因为它没有实现与 File Source Filter 相同的功能你在冒充。具体来说,需要实现IAsyncReader接口(interface)。

此外,GDCL 源代码可用 - 您可以步进源代码并使用调试器确定确切的问题。

关于c++ - 自定义过滤器不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37073998/

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