- HOME
- Post in | media/directshow
- Post at | 2015. 3. 20. 11:42 | by 밀크빵.
- View comment
[DirectShow] SetProperties()에서 E_FAIL 발생
변환 필터 제작 중
INPUT 핀 타입을 RGB에서 YUY2로 변경 하였다
Current Media Type |
|
Majortype |
MEDIATYPE_Video |
Subtype |
MEDIASUBTYPE_YUY2 |
formattype |
FORMAT_VIDEOINFO2 |
기존 방식과 동일하게 input으로 받는 핀의 정보를 output 핀 형식과 동일하게 사용하려는데,
DecideBufferSize 함수에서
할당자를 설정하는 부분인 setProperties에서 계속 E_FAIL을 반환하여
Video Renderer와 Output 핀 연결이 되지 않았다
나랑 같은 문제여서 참고함
CheckTransform 함수에서 Input , output 핀의 FormatLength를 체크 함?
이걸로 문제가 해결 됨… 왜지??
- Old
HRESULT CheckTransForm(const CMediaType *mtIn, const CMediaType *mtOut) { if (*mtIn == *mtOut) return S_OK; return E_FAIL; } |
- Now
HRESULT CheckTransForm(const CMediaType *mtIn, const CMediaType *mtOut) { HRESULT hr; hr = CheckInputType(mtIn); if (FAILED(hr)) return hr; // format must be a VIDEOINFOHEADER if (*mtOut->FormatType() != FORMAT_VideoInfo) return E_INVALIDARG; //formats must be big enough if (mtIn->FormatLength() < sizeof(VIDEOINFOHEADER) || mtOut->FormatLength() < sizeof(VIDEOINFOHEADER)) return E_INVALIDARG; return S_OK; } |
'media > directshow' 카테고리의 다른 글
[DirectShow] FORMAT_VideoInfo2 (0) | 2015.03.20 |
---|