diff --git a/modules/videoio/src/cap_msmf.cpp b/modules/videoio/src/cap_msmf.cpp index 863f46bc89..a540238d23 100644 --- a/modules/videoio/src/cap_msmf.cpp +++ b/modules/videoio/src/cap_msmf.cpp @@ -616,7 +616,7 @@ class SourceReaderCB : public IMFSourceReaderCallback { public: SourceReaderCB() : - m_nRefCount(1), m_hEvent(CreateEvent(NULL, FALSE, FALSE, NULL)), m_bEOS(FALSE), m_hrStatus(S_OK), m_dwStreamIndex(0) + m_nRefCount(0), m_hEvent(CreateEvent(NULL, FALSE, FALSE, NULL)), m_bEOS(FALSE), m_hrStatus(S_OK), m_reader(NULL), m_dwStreamIndex(0) { } @@ -677,7 +677,7 @@ public: BOOL m_bEOS; HRESULT m_hrStatus; - _ComPtr m_reader; + IMFSourceReader *m_reader; DWORD m_dwStreamIndex; _ComPtr m_lastSample; }; @@ -1140,7 +1140,7 @@ bool CvCapture_MSMF::grabFrame() if (!reader->m_reader) { // Initiate capturing with async callback - reader->m_reader = videoFileSource; + reader->m_reader = videoFileSource.Get(); reader->m_dwStreamIndex = dwStreamIndex; if (FAILED(hr = videoFileSource->ReadSample(dwStreamIndex, 0, NULL, NULL, NULL, NULL))) {