id **)&pAudioRender);
CString strFileName;
GetDlgItem(IDC_PATH)->GetWindowText(strFileName);
AM_MEDIA_TYPE type;
type.majortype = MEDIATYPE_Stream;
type.subtype =MEDIASUBTYPE_WAVE;
type.formattype = FORMAT_None;
type.bFixedSizeSamples = FALSE;
type.bTemporalCompression = FALSE;
type.pUnk = NULL;
WCHAR lpwszFileName[255];
TCHAR *lpszFileName;
lpszFileName=strFileName.GetBuffer(0);
MultiByteToWideChar(CP_ACP, 0, lpszFileName, -1, (LPWSTR)lpwszFileName, MAX_PATH);
pFileSource->Load(lpwszFileName,&type);
pGraph->AddFilter(pAsyncReader,L"AsyncReader");
pGraph->AddFilter(pAudioRender,L"AudioRender");
pGraph->AddFilter(pWaveParser,L"WaveParser");
IEnumPins* pEnumPins;
PIN_DIRECTION pDir;
IPin *pSoundIn,*pFileOut;
IPin *pParserIn,*pParserOut;
IPin* pTmppin=NULL;
pAsyncReader->EnumPins(&pEnumPins);
while(pEnumPins->Next(1,&pTmppin,NULL)==S_OK)
{
pTmppin->QueryDirection(&pDir);
if(pDir==PINDIR_OUTPUT)
{
pFileOut=pTmppin;
break;
}
}
pEnumPins=NULL;
pAudioRender->EnumPins(&pEnumPins);
while(pEnumPins->Next(1,&pTmppin,NULL)==S_OK)
{
pTmppin->QueryDirection(&pDir);
if(pDir==PINDIR_INPUT)
{
pSoundIn=pTmppin;
break;
}
}
pEnumPins=NULL;
pWaveParser->EnumPins(&pEnumPins);
while(pEnumPins->Next(1,&pTmppin,NULL)==S_OK)
{
pTmppin->QueryDirection(&pDir);
if(pDir==PINDIR_INPUT)
{
pParserIn=pTmppin;
}
}
pGraph->ConnectDirect(pFileOut,pParserIn,NULL);
pEnumPins=NULL;
上一篇:
DXPlayWav.cpp
下一篇:
2018年汽车自驾运动营地攻防箭大赛总决赛圆满落幕