문제

네트워크 스트림에서 MPEG2 / 4 영화를 렌더링하는 DirectShow 그래프가 있습니다.핀을 수동으로 연결하여 그래프를 조립하면 렌더링되지 않습니다.그러나 GraphBuilder에서 Render를 호출하면 제대로 렌더링됩니다.

분명히 GraphBuilder가 수행하는 그래프의 일부 필터에서 수행하지 않는 설정 단계가 있습니다.

그래프를 어셈블 할 때 GraphBuilder의 디버그 출력을 볼 수있는 방법이 있나요?

작동하는 그래프를 덤프하여 어떻게 구성되었는지 확인할 수있는 방법이 있나요?

DirectShow 상자에있는 미스터리를 풀기위한 다른 아이디어가 있습니까?

감사합니다! -Z

도움이 되었습니까?

해결책

DirectShow SDK의 도구 인 GraphEdit를 사용하여 만든 그래프를 볼 수 있습니다.GraphEdit에서 File-> Connect to remote Graph ... 를 선택합니다.

목록에서 그래프를 찾으려면 실행중인 개체 테이블에 등록해야합니다. 라코 디스

그래프를 삭제 한 후 IRunningObjectTable :: Revoke를 호출하여 ROT에서 그래프를 제거해야합니다.

다른 팁

Roman Ryltsov는 DirectShow 필터 그래프 스파이 도구를 만들었습니다 ( http://alax.info/blog/777), FilterGraph 인터페이스에 대한 래퍼 COM dll은 FilterGraph 메서드에 대한 모든 호출을 기록합니다.

또한 생성 된 모든 그래프를 실행중인 객체 테이블 (ROT)에 추가 한 다음 GraphEdit 또는 GraphStudio와 같은 도구를 사용하여 시각화 할 수 있습니다.Windows Media Player 그래프의 모양을 확인해야 할 때 매우 유용합니다.

IGraphBuilder :: SetLogFile ( http : / 참조)/msdn.microsoft.com/en-us/library/dd390091(v=vs.85).aspx )는 그래프 작성 중에 발생하는 상황에 대한 유용한 진단 정보를 많이 제공합니다.파일 핸들 (예 : CreateFile로 열림)을 전달하고 DWORD_PTR로 캐스팅합니다.NULL로 다시 호출하여 파일 핸들을 닫기 전에 로깅을 완료하십시오.

그래프 덤프를위한 다음 블로그 게시물의 코드는 로그 파일의 숫자를 해석하기위한 추가 정보를 제공합니다.

http://rxwen.blogspot.com/2010/04/directshow-debugging-tips.html

다음을 수행해야합니다.

  1. 필터 그래프를 "Running Objects Table"에 등록-ROT-아래 코드 사용
  2. GraphEdit (파일-> 원격 그래프에 연결)을 사용하여 필터 그래프에 연결하거나 더 나은 방법- GraphEditPlus

    필터 그래프를 '연결 가능한'그래프로 등록하려면 필터 그래프로 다음을 호출하세요. 라코 디스

    그래프를 출시하기 전에 다음을 호출하세요. 라코 디스

    `

DirectX의 이전 버전, 나는 9a를 믿지만 9b는 dshow를위한 "디버그 모드"를 가지고 있지 않았습니다.디버그 정보의 로그를 디버그 콘솔에 출력합니다.

이전 버전을 다운로드하고 디버그하도록 설정하세요.그런 다음 디버그보기를 열거 나 Visual Studio에서 graphedt.exe를로드하여 디버그 정보를 확인하세요.

그래프를 .grf graphedit 파일에 "저장"(직렬화) 할 수 있습니다. 가능하면 다음과 같습니다. https://stackoverflow.com/ a / 10612735 / 32453

또한 graphedit가 실행중인 그래프에 "원격으로 연결"할 수있는 것 같습니까? http://rxwen.blogspot.com/2010/04/directshow-debug-tips.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top