1
저는 DSPACK 컴포넌트 라이브러리를 사용하여 델파이 6로 작성된 DirectShow 필터를 가지고 있습니다. 푸시 소스 비디오 필터입니다. 필터는 비디오 프레임을 생성하는 다른 스레드에서 신호를 보내는 이벤트를 차단합니다. 프레임이 준비되면 FillBuffer() 메서드가 차단 해제 될 때 액세스하는 공유 메모리 영역에 씁니다. DirectShow에 의해 필터가 셧다운되고있을 때, FillBuffer() thread의 블록을 해제하기 위해서 피기 배킹 할 수있는 편리한 DirectShow 이벤트가 있습니까? 그렇지 않다면이 분야에서 "표준 관행"은 무엇입니까?필터 종료시 원본 스트림 스레드를 차단하는 데 사용할 수있는 DirectShow 필터 이벤트는 무엇입니까?
일반 DLL 스레드/프로세스 분리 Windows 이벤트를 사용하여 FillBuffer를 잠금 해제해야합니다) 종료하기 전에, 또는 DLL을 종료 할 때 전혀 FillBuffer() 차단 해제 걱정해야합니까? 필터가 언로드 될 때 필터가 얻어 지지만 그렇지 않을 것이라고 전담하는 DirectShow 알림이있을 것이라고 생각했습니다. –
필터 그래프는, 필터의'Stop'를 호출합니다. 이것은, 핀의'Inactive'로서 핀에 전송됩니다. 다른 이벤트들 사이에서'FillBuffer'에서 기다릴 이벤트를 설정할 수 있도록하기 위해이 메소드를 오버라이드 할 수 있습니다. 그러면 새로운 샘플과 중지 요청에 대한 잠금을 해제 할 수 있습니다. –
우수. 필터를 종료 할 때 이러한 메서드를 사용하여 정리할 것입니다. –