C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[9426] [Q]DirectShow AddFilter써보신분 도움..
김상우 [] 2752 읽음    2001-07-28 10:39

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);
}
=================================================================================


+ -

관련 글 리스트
9426 [Q]DirectShow AddFilter써보신분 도움.. 김상우 2752 2001/07/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.