2011-03-11 6 views
0

이상한 문제가 있습니다. COM 객체로 래핑 된 DirectShow 기반 플레이어가 있습니다.DirectShow 및 .NET Interop 문제

이 플레이어는 C# 형식으로 사용됩니다. 사실 두 개의 클립이 나란히 재생 될 수 있도록 두 개의 인스턴스가 있습니다.

이제 플레이어에서 파일을 처음로드 할 때 그래프를 렌더링 한 다음 그래프를 탐색하고 렌더러 및 렌더러 핀이 연결된 필터를 찾은 다음 두 필터 사이에 사용자 정의 필터를 삽입합니다. .

대부분의 경우 작동하지만 사용자 지정 필터의 출력을 렌더링에 연결하면 GraphBuilder.ConnectDirect를 호출하면 E_NOINTERFACE가 반환됩니다.

비슷한 행동을 본 사람이 있습니까?

+0

많은 사람들이 전에 E_NOINTERFACE를 보았습니다. 나는 누군가가 이전에 그것의 특정한 버전을 보았는지 의심 스럽다. "특정 상황"을 강화해야합니다. 너무 모호합니다. –

+0

글쎄, 두 개의 필터를 연결하고 핀이 있으면 E_NOINTERFACE를 반환하지 않아야합니다. 미디어 유형이 일치하지 않아 E_NOINTERFACE가 아니기 때문에 연결할 수 없습니다. 제 질문은 일반적인 COM 오류보다 directshow와 관련이 있습니다. – Saibal

답변

1

무슨 일이 일어나고 있는지 자세히 알아 보려면 IGraphBuilder :: SetlogFile을 사용하여 로그 파일을 만듭니다.

E_NOINTERFACE는 IGraphBuilder ConnectDirect에서 반환하는 표준 값으로 나열되어 있지 않지만 특정 필터의 내부 문제로 인해 필터가 E_NOINTERFACE를 DirectShow로 반환 할 수 있습니다. 오류 Z 드 자체는. 제를 진단하는 데 필요한 정보가 아 U니다.

E_NOINTERFACE는 매우 특별한 의미가 있지만 구성 요소 작성자가 잘못 반환하지 않도록하지는 않습니다. 레이몬드 첸 (Raymond Chen)의 블로그에 "E_NOINTERFACE 오류를 오버로드하지 마라."를 참조하십시오. http://blogs.msdn.com/b/oldnewthing/archive/2006/12/08/1239911.aspx