DirectShow.Net을 사용 중이고 클래스에 ISampleGrabberCB를 구현하려고합니다.ISampleGrabber 콜백이 호출되지 않습니다.
SampleGrabber 객체
MediaType에 형식을 정의 만들기 : 그래프에서 그래버를 설정하기 위해
, 나는이 체크리스트에 따라 (AMMediaType : 비디오, RGB, VideoInfo을)과 SampleGrabber 객체로 설정합니다. HRESULT는 0이므로 괜찮다고 생각합니다.
콜백을 sampleGrabber.SetCallback (this, 0)으로 설정했습니다. ISampleGrabber가 구현되어 클래스 자체에 정의되기 때문에 "this"를 전달합니다. 두 번째 매개 변수는 0이므로 SampleCB 메서드를 호출해야합니다.
마지막으로 그래프에 필터를 추가합니다. HRESULT는 다시 0입니다.
그러나 ISampleGrabber.SampleCB 메서드는 호출되지 않습니다.
이 비행의 원인에 대해 알고 계십니까?
내가 여기에 무슨 일이 일어나고 있는지 발견 한
[편집]! 하지만 여전히 도움이 필요합니다. 내가 소유하고있는 두 웹캠 모두 YUY2 하위 형식의 비디오 형식을 반환합니다. 위에서 언급했듯이, 내가 사용하고있는 코드는 MediaType을 RGB24로 강제합니다. 런타임에 HResult가 0임을 알 수 있습니다. 따라서 괜찮습니다. 그러나 "호환되지 않기"때문에 샘플 콜백이 호출되지 않습니다. Subtype 명시 적 정의를 제거하면 콜백이 발생합니다. 그러나 내가받는 프레임은 YUY2입니다. 유효한 비트 맵이 아니므로 "손상된", "왜곡 된"것처럼 보입니다.
이 시점에서 어떻게 성공적으로 RGB24 형식을 강제 적용 할 수 있는지 또는 비디오 프레임을 RGB24 형식으로 변환 할 수 있는지 알고 싶습니다.
유효한 답변을 찾기 위해 Google에서 상당한 시간을 보냈지만 운이 없었습니다.
아이디어가 있으십니까?
건배. Gianluca.
몇 가지 코드를 볼 수 있습니까? – Goz
@ Goz : 코드가 광범위하며 여러 기능으로 나뉩니다. 어떤 부분을보고 싶습니까? –
귀하의 편집 내용에 비추어 볼 때 필터를 연결하는 부분을 보는 것이 좋습니다 – Goz