31class MFStream :
public QObject,
public QComObjectWithDeleteLater<MFStream, IMFByteStream>
35 MFStream(QIODevice *stream,
bool ownStream,
bool synchronous =
false);
40 STDMETHODIMP GetCapabilities(DWORD *pdwCapabilities)
override;
42 STDMETHODIMP GetLength(QWORD *pqwLength)
override;
44 STDMETHODIMP SetLength(QWORD)
override;
46 STDMETHODIMP GetCurrentPosition(QWORD *pqwPosition)
override;
48 STDMETHODIMP SetCurrentPosition(QWORD qwPosition)
override;
50 STDMETHODIMP IsEndOfStream(BOOL *pfEndOfStream)
override;
52 STDMETHODIMP Read(BYTE *pb, ULONG cb, ULONG *pcbRead)
override;
54 STDMETHODIMP BeginRead(BYTE *pb, ULONG cb, IMFAsyncCallback *pCallback,
55 IUnknown *punkState)
override;
57 STDMETHODIMP EndRead(IMFAsyncResult* pResult, ULONG *pcbRead)
override;
59 STDMETHODIMP Write(
const BYTE *, ULONG, ULONG *)
override;
61 STDMETHODIMP BeginWrite(
const BYTE *, ULONG ,
65 STDMETHODIMP EndWrite(IMFAsyncResult *,
69 MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,
70 LONGLONG llSeekOffset,
72 QWORD *pqwCurrentPosition)
override;
74 STDMETHODIMP Flush()
override;
76 STDMETHODIMP Close()
override;
79 class AsyncReadState :
public QComObject<IUnknown>
82 AsyncReadState(BYTE *pb, ULONG cb);
86 ULONG bytesRead()
const;
88 void setBytesRead(ULONG cbRead);
96 QPointer<QIODevice> m_stream;
103 ULONG m_syncReadCount = 0;
106 void customEvent(QEvent *event)
override;
107 ComPtr<IMFAsyncResult> m_currentReadResult;