|
Divx에서 MP3를 추출하기 위한 프로그램 짜고있는데요.
GraphEdit에서 FileSource(ASync)->AVI Splitter->Dump (Sound쪽 핀만연결)의 Sequence로
.grf 화일을 만들어서 C program에서 불러다가 FileSource(ASync)쪽을 임의의 화일소스로
바꾸어줄려고 기존필터 delete후 새필터 추가하려고 합니다.
제가 사용한 함수는 아래처럼 CoCreateInstance 와 AddFilter 그리고 첨가되 필터의
출력 Pin의 포인터를 알아내는 함수(SDK 샘플에서 만든거)사용하는데
!!문제는!!! 필터 추가는 잘 되는데(?) 출력핀을 찾지 못합니다.
제가 무었을 잘못했나요. 아시는분의 도움을 구합니다.
===============================================================================
if((hr = CoCreateInstance(CLSID_AsyncReader, NULL, CLSCTX_INPROC,
IID_IBaseFilter, (void **)&pSrcFilter)) != S_OK)
return 0;
if((hr = pGraph->AddFilter(pSrcFilter, L"f:\\AV-azumi.avi")) != S_OK)
return 0;
// HRESULT hr;
pSrcPin = GetPin(pSrcFilter, PINDIR_OUTPUT);
=================================================================================
IPin *GetPin(IBaseFilter *pFilter, PIN_DIRECTION PinDir)
{
BOOL bFound = FALSE;
IEnumPins *pEnum;
IPin *pPin;
pFilter->EnumPins(&pEnum);
while(pEnum->Next(1, &pPin, 0) == S_OK)
{
PIN_DIRECTION PinDirThis;
pPin->QueryDirection(&PinDirThis);
if (bFound = (PinDir == PinDirThis))
break;
pPin->Release();
}
pEnum->Release();
return (bFound ? pPin : 0);
}
=================================================================================
|