如何使dx9中提供的DSNetwork(即dsnet.ax过滤器)与AVI Mux过滤器(加上File Writer)能正确相连
不知道各位对dx9中提供的DSNetwork熟不熟悉。我对该过滤器改造如下:
接收端:
GetMediaType (
IN int iPosition,
OUT CMediaType * pmt
)
{
ASSERT (pmt) ;
HRESULT hr ;
if (iPosition == 0) {
ASSERT (pmt) ;
pmt -> InitMediaType () ;
pmt -> SetType (& MEDIATYPE_Video) ;///*MEDIATYPE_NULL
pmt -> SetSubtype (& (GUID)FOURCCMap(FCC('DIV3'))) ;
pmt->bFixedSizeSamples=false;
pmt -> bTemporalCompression = TRUE;
pmt -> lSampleSize = 0;
pmt -> formattype = FORMAT_VideoInfo;
pmt -> cbFormat = sizeof(VIDEOINFOHEADER);
VIDEOINFOHEADER * pvihr =new VIDEOINFOHEADER;
pvihr ->bmiHeader.biCompression = FCC('DIV3');
pvihr ->bmiHeader.biHeight = 240;
pvihr ->bmiHeader.biWidth = 320;
pvihr ->bmiHeader.biPlanes = 1;
pvihr ->bmiHeader.biBitCount=24;
::SetRect(&(pvihr ->rcSource),0,0,0,0);
::SetRect(&(pvihr ->rcTarget),0,0,0,0);
pmt -> pbFormat = (BYTE *)pvihr;
hr = S_OK ;
}
else {
hr = VFW_S_NO_MORE_ITEMS ;
}
return hr ;
}
CheckMediaType (
IN const CMediaType * pmt
)
{
if (pmt -> majortype == MEDIATYPE_Video)
{
return NOERROR ;
}
return S_FALSE ;
}
我现在将该过滤器与AVI Mux过滤器相连,以使其能将接收到的视频流写入到一个文件中。连接的时候没有问题,但一运行起来,就出现问题:
“0x1c21d6cd”指令引用的“0x05cc97ae”内存。该内存不能为“written”
各位大虾,救救我吧。