MediaFoundation SourceReader 기술을 사용하여 USB 카메라 스트리밍 데스크톱 응용 프로그램을 개발 중입니다. 카메라는 USB3.0을 지원하며 1080p MJPG 비디오 형식 해상도로 60fps를 제공합니다.MediaFoundation에서 Intel Hardware MJPEG 디코더 MFT를 사용하는 방법 Window Desktop 응용 프로그램 용 SourceReader?
소프트웨어 MJPEG 디코더 MFT를 사용하여 MJPG를 YUY2 프레임으로 변환 한 다음 RGB32 프레임으로 변환하여 창에 그립니다. 60fps 대신이 소프트웨어 디코더를 사용할 때 창당 30fps 만 렌더링 할 수 있습니다. 나는이 사이트에 질문을 올렸고 인텔 하드웨어 MJPEG 디코더 MFT를 사용하여 프레임 삭제 문제를 해결할 제안을 받았습니다. IMFTransform :: ProcessInput() 메서드를 호출 할 때을 MF_E_NOTACCEPTING -
나는 오류 0xC00D36B5에 직면했다. 이 오류를 해결하기 위해 MSDN은 IMFTranform 인터페이스를 비동기 적으로 사용하도록 제안했습니다. 그래서, 나는 모든 입/출력 샘플에 대해 GetEvent에 대한 인터페이스 인 IMFMediaEventGenerator 인터페이스를 사용했습니다. 성공적으로 하나의 입력 샘플 만 처리 한 다음 계속 IMFMediaEventGenerator :: GetEvent() 메서드가 MF_E_NO_EVENTS_AVAILABLE 오류 (GetEvent()가 동기식)를 반환합니다.
IMFTransform뿐만 아니라 SourceReader에 대한 비동기 콜백을 구성하려고 시도했지만 MFAsyncCallback :: Invoke 메서드가 호출되지 않아 GetEvent 메서드를 사용할 계획입니다.
누락 되었습니까? 그렇다면 누군가 인텔 ® 하드웨어 디코더를 프로젝트에 사용하도록 안내합니까?
topoedit에서 토폴로지를 먼저 조립하려고 시도 했습니까? – Mgetz
답장을 보내 주셔서 감사합니다. Mgetz. 카메라는 YUY2 및 MJPG 비디오 형식을 모두 지원합니다. 처음에는 카메라가 YUY2 비디오 형식을 재생하고 MJPG 형식을 변경해야합니다. DirectShow에서 그래프를 작성하는 방법을 알고있다. YUY2에서 MJPEG 비디오 형식으로 전환하는 방법을 알지 못했습니다. MJPG 형식의 토폴로지를 어셈블하는 방법을 알려주시겠습니까? 또한이 디코더를 MediaSession 토폴로지에 추가하여 모든 것이 성공하고 이벤트에서 0XC00D5212 (MF_E_TOPO_CODEC_NOT_FOUND)를 받았습니다. – Abi
따라서 SDK와 함께 제공되는 topoedit 유틸리티를 사용하여 토폴로지를 어셈블하고 작동하는지 테스트 할 것을 권장합니다. topoedit에서 토폴로지를 구성 할 수 없다면 아마 불가능할 것입니다. – Mgetz