2014-11-25 2 views
0

VMR9 인스턴스로 구성된 FilterGraph를 사용하여 비디오 파일을 렌더링하고 있습니다. FilterGraph는 GraphBuilder-> RenderFile()을 사용하여 자동으로 생성됩니다. 기본적으로 내 설정은 여기에 설명되어 있습니다 : http://www.codeproject.com/Articles/9206/Using-the-DirectShow-Video-Mixing-Renderer-filteVideo Mixing Renderer 9 (VMR9) : 입력 핀의 AM_MEDIA_TYPE에서 FPS 가져 오기

문제 : FPS, 재생 시간 등의 비디오 내부를 감지하고 싶습니다. RenderFile() 호출 후 MediaControl-> StopWhenReady() 및 Run() 및 Pause()로 재생됩니다. 내가 VMR9의 입력 핀에서 AM_MEDIA_TYPE 구조체 오려 프레임 속도를 검출하기 :

필터 그래프 RenderFile (호출 올바르게 작성한다) 때문에,이 핀이 연결되어야 내 의견
VRM->FindPin("VMR Input0", pin); // S_OK 
pin->ConnectionMediaType(&mt); // VFW_E_NOT_CONNECTED 

내 입력 스트림 왜 그렇지 않은가? 그리고이 문제를 어떻게 처리 할 것인가?

Microsoft는 그래프를 탐색하고 AM_MEDIA_TYPE에 대한 액세스를 허용하는 IID_IAMStreamConfig와 같은 특정 인터페이스를 찾기 위해 일부 기능 (http://msdn.microsoft.com/en-us/library/windows/desktop/dd375791%28v=vs.85%29.aspx)을 제공합니다. 그러나 이러한 옵션은 구현에 실패합니다. 내가 접근 할 수있는 유일한 핀은 위에서 언급 한 것입니다.

미리 감사드립니다.

답변

1

여러분이 가지고있는 필터와 핀 인터페이스가 연결되어 있고 여러분이 관심이있는 것과 정확히 일치한다는 가정을하고 있습니다. 이것은 반드시 사실이 아니며 과거에 많은 질문이 있었는데 그들이 만드는 토폴로지를 이해하십시오. 필터 그래프를 검토하여 예상 한 바를 확보해야합니다. 이를 참조 : How can I reverse engineer a DirectShow graph?

하나는 적절한 핀에 연결되어가, 실제로는 ConnectionMediaType을 사용하고 VIDEOINFOHEADER 또는 VIDEOINFOHEADER2 다음 AvgTimePerFrame 회원에게 AM_MEDIA_TYPE을 통해 이동해야합니다.

+0

고마워요! 실제로 그래프는 내가 예상했던 것처럼 보이지 않습니다. 이 솔루션 http://msdn.microsoft.com/en-us/library/windows/desktop/dd377551%28v=vs.85%29.aspx 나를 위해 일했습니다. – japedo