다이렉트쇼 필터 추가하는데
//Guid CLSID_textOver = new Guid("{8AF6F710-1AF5-4952-AAFF-ACCD0DB2C9BB}");
//IBaseFilter pTextOver = (IBaseFilter)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_textOver));
//hr = graphBuilder.AddFilter(pTextOver, " pTextOver ");
TextOverFilter hTextOverFilter = new TextOverFilter();
hr = graphBuilder.AddFilter((IBaseFilter)hTextOverFilter, " TextOverFilter ");
위의코드에서
TextOverFilter 와 위에서 주석처리된 Guid 로 생성된 IBaseFilter pTextOver 필터가 같습니다
Guid 로 생성해서 그래프빌더로 추가하면 잘동작합니다
근데 직접 객체를 생성해서 graphBuilder.AddFilter((IBaseFilter)hTextOverFilter, " TextOverFilter "); 하면
런타임 에러가 납니다
에러내용
System.InvalidCastException: 'ExampleFilters.TextOverFilter' 형식 개체를 'DirectShowLib.IBaseFilter' 형식으로 캐스팅할 수 없습니다.
혹시싶어서
IBaseFilter hTextOverFilter = (IBaseFilter)new TextOverFilter();
hr = graphBuilder.AddFilter(hTextOverFilter, " TextOverFilter ");
이렇게해줘도 마찬가지구요
이것 어디를 살펴봐야될까요?
필터에 인터페이스를 추가해서 사용해야되는데
Guid 로 생성한객체에는 인터페이스를 호출할수가 없습니다
해결방법 없을까요?
[최초 등록일: ]
[최종 수정일: 8/23/2018]