[PATCH 1/2] mfplat: Use underlying stream access mode for bytestream capabilities.
Nikolay Sivov
nsivov at codeweavers.com
Tue Dec 3 05:13:11 CST 2019
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/mfplat/main.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/dlls/mfplat/main.c b/dlls/mfplat/main.c
index e4ade7f202..fc656678ca 100644
--- a/dlls/mfplat/main.c
+++ b/dlls/mfplat/main.c
@@ -2700,6 +2700,24 @@ static ULONG WINAPI bytestream_Release(IMFByteStream *iface)
return refcount;
}
+static HRESULT WINAPI bytestream_stream_GetCapabilities(IMFByteStream *iface, DWORD *capabilities)
+{
+ struct bytestream *stream = impl_from_IMFByteStream(iface);
+ STATSTG stat;
+ HRESULT hr;
+
+ TRACE("%p, %p.\n", iface, capabilities);
+
+ if (FAILED(hr = IStream_Stat(stream->stream, &stat, STATFLAG_NONAME)))
+ return hr;
+
+ *capabilities = MFBYTESTREAM_IS_READABLE | MFBYTESTREAM_IS_SEEKABLE;
+ if (stat.grfMode & (STGM_WRITE | STGM_READWRITE))
+ *capabilities |= MFBYTESTREAM_IS_WRITABLE;
+
+ return S_OK;
+}
+
static HRESULT WINAPI bytestream_GetCapabilities(IMFByteStream *iface, DWORD *capabilities)
{
struct bytestream *stream = impl_from_IMFByteStream(iface);
@@ -3060,7 +3078,7 @@ static const IMFByteStreamVtbl bytestream_stream_vtbl =
bytestream_QueryInterface,
bytestream_AddRef,
bytestream_Release,
- bytestream_GetCapabilities,
+ bytestream_stream_GetCapabilities,
bytestream_stream_GetLength,
bytestream_stream_SetLength,
bytestream_stream_GetCurrentPosition,
@@ -3252,7 +3270,6 @@ HRESULT WINAPI MFCreateMFByteStreamOnStream(IStream *stream, IMFByteStream **byt
IStream_AddRef(object->stream);
position.QuadPart = 0;
IStream_Seek(object->stream, position, STREAM_SEEK_SET, NULL);
- object->capabilities = MFBYTESTREAM_IS_READABLE | MFBYTESTREAM_IS_SEEKABLE;
*bytestream = &object->IMFByteStream_iface;
--
2.24.0
More information about the wine-devel
mailing list