mfplat: Move IMFAttributes interface up to avoid forward declarations.
Signed-off-by: Sven Baars <sven.wine@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
ef19a46161
commit
ae220de098
|
@ -448,339 +448,6 @@ HRESULT WINAPI MFCopyImage(BYTE *dest, LONG deststride, const BYTE *src, LONG sr
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct _mfbytestream
|
|
||||||
{
|
|
||||||
IMFByteStream IMFByteStream_iface;
|
|
||||||
LONG ref;
|
|
||||||
} mfbytestream;
|
|
||||||
|
|
||||||
static inline mfbytestream *impl_from_IMFByteStream(IMFByteStream *iface)
|
|
||||||
{
|
|
||||||
return CONTAINING_RECORD(iface, mfbytestream, IMFByteStream_iface);
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_QueryInterface(IMFByteStream *iface, REFIID riid, void **out)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), out);
|
|
||||||
|
|
||||||
if(IsEqualGUID(riid, &IID_IUnknown) ||
|
|
||||||
IsEqualGUID(riid, &IID_IMFByteStream))
|
|
||||||
{
|
|
||||||
*out = &This->IMFByteStream_iface;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FIXME("(%s, %p)\n", debugstr_guid(riid), out);
|
|
||||||
*out = NULL;
|
|
||||||
return E_NOINTERFACE;
|
|
||||||
}
|
|
||||||
|
|
||||||
IUnknown_AddRef((IUnknown*)*out);
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static ULONG WINAPI mfbytestream_AddRef(IMFByteStream *iface)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
ULONG ref = InterlockedIncrement(&This->ref);
|
|
||||||
|
|
||||||
TRACE("(%p) ref=%u\n", This, ref);
|
|
||||||
|
|
||||||
return ref;
|
|
||||||
}
|
|
||||||
|
|
||||||
static ULONG WINAPI mfbytestream_Release(IMFByteStream *iface)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
ULONG ref = InterlockedDecrement(&This->ref);
|
|
||||||
|
|
||||||
TRACE("(%p) ref=%u\n", This, ref);
|
|
||||||
|
|
||||||
if (!ref)
|
|
||||||
{
|
|
||||||
HeapFree(GetProcessHeap(), 0, This);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ref;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_GetCapabilities(IMFByteStream *iface, DWORD *capabilities)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p, %p\n", This, capabilities);
|
|
||||||
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_GetLength(IMFByteStream *iface, QWORD *length)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p, %p\n", This, length);
|
|
||||||
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_SetLength(IMFByteStream *iface, QWORD length)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p, %s\n", This, wine_dbgstr_longlong(length));
|
|
||||||
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_GetCurrentPosition(IMFByteStream *iface, QWORD *position)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p, %p\n", This, position);
|
|
||||||
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_SetCurrentPosition(IMFByteStream *iface, QWORD position)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p, %s\n", This, wine_dbgstr_longlong(position));
|
|
||||||
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_IsEndOfStream(IMFByteStream *iface, BOOL *endstream)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p, %p\n", This, endstream);
|
|
||||||
|
|
||||||
if(endstream)
|
|
||||||
*endstream = TRUE;
|
|
||||||
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_Read(IMFByteStream *iface, BYTE *data, ULONG count, ULONG *byte_read)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p, %p, %u, %p\n", This, data, count, byte_read);
|
|
||||||
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_BeginRead(IMFByteStream *iface, BYTE *data, ULONG count,
|
|
||||||
IMFAsyncCallback *callback, IUnknown *state)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p, %p, %u, %p, %p\n", This, data, count, callback, state);
|
|
||||||
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_EndRead(IMFByteStream *iface, IMFAsyncResult *result, ULONG *byte_read)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p, %p, %p\n", This, result, byte_read);
|
|
||||||
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_Write(IMFByteStream *iface, const BYTE *data, ULONG count, ULONG *written)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p, %p, %u, %p\n", This, data, count, written);
|
|
||||||
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_BeginWrite(IMFByteStream *iface, const BYTE *data, ULONG count,
|
|
||||||
IMFAsyncCallback *callback, IUnknown *state)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p, %p, %u, %p, %p\n", This, data, count, callback, state);
|
|
||||||
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_EndWrite(IMFByteStream *iface, IMFAsyncResult *result, ULONG *written)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p, %p, %p\n", This, result, written);
|
|
||||||
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_Seek(IMFByteStream *iface, MFBYTESTREAM_SEEK_ORIGIN seek, LONGLONG offset,
|
|
||||||
DWORD flags, QWORD *current)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p, %u, %s, 0x%08x, %p\n", This, seek, wine_dbgstr_longlong(offset), flags, current);
|
|
||||||
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_Flush(IMFByteStream *iface)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p\n", This);
|
|
||||||
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI mfbytestream_Close(IMFByteStream *iface)
|
|
||||||
{
|
|
||||||
mfbytestream *This = impl_from_IMFByteStream(iface);
|
|
||||||
|
|
||||||
FIXME("%p\n", This);
|
|
||||||
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const IMFByteStreamVtbl mfbytesteam_vtbl =
|
|
||||||
{
|
|
||||||
mfbytestream_QueryInterface,
|
|
||||||
mfbytestream_AddRef,
|
|
||||||
mfbytestream_Release,
|
|
||||||
mfbytestream_GetCapabilities,
|
|
||||||
mfbytestream_GetLength,
|
|
||||||
mfbytestream_SetLength,
|
|
||||||
mfbytestream_GetCurrentPosition,
|
|
||||||
mfbytestream_SetCurrentPosition,
|
|
||||||
mfbytestream_IsEndOfStream,
|
|
||||||
mfbytestream_Read,
|
|
||||||
mfbytestream_BeginRead,
|
|
||||||
mfbytestream_EndRead,
|
|
||||||
mfbytestream_Write,
|
|
||||||
mfbytestream_BeginWrite,
|
|
||||||
mfbytestream_EndWrite,
|
|
||||||
mfbytestream_Seek,
|
|
||||||
mfbytestream_Flush,
|
|
||||||
mfbytestream_Close
|
|
||||||
};
|
|
||||||
|
|
||||||
HRESULT WINAPI MFCreateMFByteStreamOnStream(IStream *stream, IMFByteStream **bytestream)
|
|
||||||
{
|
|
||||||
mfbytestream *object;
|
|
||||||
|
|
||||||
TRACE("(%p, %p): stub\n", stream, bytestream);
|
|
||||||
|
|
||||||
object = heap_alloc( sizeof(*object) );
|
|
||||||
if(!object)
|
|
||||||
return E_OUTOFMEMORY;
|
|
||||||
|
|
||||||
object->ref = 1;
|
|
||||||
object->IMFByteStream_iface.lpVtbl = &mfbytesteam_vtbl;
|
|
||||||
|
|
||||||
*bytestream = &object->IMFByteStream_iface;
|
|
||||||
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI MFPluginControl_QueryInterface(IMFPluginControl *iface, REFIID riid, void **ppv)
|
|
||||||
{
|
|
||||||
if(IsEqualGUID(riid, &IID_IUnknown)) {
|
|
||||||
TRACE("(IID_IUnknown %p)\n", ppv);
|
|
||||||
*ppv = iface;
|
|
||||||
}else if(IsEqualGUID(riid, &IID_IMFPluginControl)) {
|
|
||||||
TRACE("(IID_IMFPluginControl %p)\n", ppv);
|
|
||||||
*ppv = iface;
|
|
||||||
}else {
|
|
||||||
FIXME("(%s %p)\n", debugstr_guid(riid), ppv);
|
|
||||||
*ppv = NULL;
|
|
||||||
return E_NOINTERFACE;
|
|
||||||
}
|
|
||||||
|
|
||||||
IUnknown_AddRef((IUnknown*)*ppv);
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static ULONG WINAPI MFPluginControl_AddRef(IMFPluginControl *iface)
|
|
||||||
{
|
|
||||||
TRACE("\n");
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
static ULONG WINAPI MFPluginControl_Release(IMFPluginControl *iface)
|
|
||||||
{
|
|
||||||
TRACE("\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI MFPluginControl_GetPreferredClsid(IMFPluginControl *iface, DWORD plugin_type,
|
|
||||||
const WCHAR *selector, CLSID *clsid)
|
|
||||||
{
|
|
||||||
FIXME("(%d %s %p)\n", plugin_type, debugstr_w(selector), clsid);
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI MFPluginControl_GetPreferredClsidByIndex(IMFPluginControl *iface, DWORD plugin_type,
|
|
||||||
DWORD index, WCHAR **selector, CLSID *clsid)
|
|
||||||
{
|
|
||||||
FIXME("(%d %d %p %p)\n", plugin_type, index, selector, clsid);
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI MFPluginControl_SetPreferredClsid(IMFPluginControl *iface, DWORD plugin_type,
|
|
||||||
const WCHAR *selector, const CLSID *clsid)
|
|
||||||
{
|
|
||||||
FIXME("(%d %s %s)\n", plugin_type, debugstr_w(selector), debugstr_guid(clsid));
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI MFPluginControl_IsDisabled(IMFPluginControl *iface, DWORD plugin_type, REFCLSID clsid)
|
|
||||||
{
|
|
||||||
FIXME("(%d %s)\n", plugin_type, debugstr_guid(clsid));
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI MFPluginControl_GetDisabledByIndex(IMFPluginControl *iface, DWORD plugin_type, DWORD index, CLSID *clsid)
|
|
||||||
{
|
|
||||||
FIXME("(%d %d %p)\n", plugin_type, index, clsid);
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI MFPluginControl_SetDisabled(IMFPluginControl *iface, DWORD plugin_type, REFCLSID clsid, BOOL disabled)
|
|
||||||
{
|
|
||||||
FIXME("(%d %s %x)\n", plugin_type, debugstr_guid(clsid), disabled);
|
|
||||||
return E_NOTIMPL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const IMFPluginControlVtbl MFPluginControlVtbl = {
|
|
||||||
MFPluginControl_QueryInterface,
|
|
||||||
MFPluginControl_AddRef,
|
|
||||||
MFPluginControl_Release,
|
|
||||||
MFPluginControl_GetPreferredClsid,
|
|
||||||
MFPluginControl_GetPreferredClsidByIndex,
|
|
||||||
MFPluginControl_SetPreferredClsid,
|
|
||||||
MFPluginControl_IsDisabled,
|
|
||||||
MFPluginControl_GetDisabledByIndex,
|
|
||||||
MFPluginControl_SetDisabled
|
|
||||||
};
|
|
||||||
|
|
||||||
static IMFPluginControl plugin_control = { &MFPluginControlVtbl };
|
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* MFGetPluginControl (mfplat.@)
|
|
||||||
*/
|
|
||||||
HRESULT WINAPI MFGetPluginControl(IMFPluginControl **ret)
|
|
||||||
{
|
|
||||||
TRACE("(%p)\n", ret);
|
|
||||||
|
|
||||||
*ret = &plugin_control;
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef struct _mfattributes
|
typedef struct _mfattributes
|
||||||
{
|
{
|
||||||
IMFAttributes IMFAttributes_iface;
|
IMFAttributes IMFAttributes_iface;
|
||||||
|
@ -1178,6 +845,339 @@ HRESULT WINAPI MFCreateAttributes(IMFAttributes **attributes, UINT32 size)
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef struct _mfbytestream
|
||||||
|
{
|
||||||
|
IMFByteStream IMFByteStream_iface;
|
||||||
|
LONG ref;
|
||||||
|
} mfbytestream;
|
||||||
|
|
||||||
|
static inline mfbytestream *impl_from_IMFByteStream(IMFByteStream *iface)
|
||||||
|
{
|
||||||
|
return CONTAINING_RECORD(iface, mfbytestream, IMFByteStream_iface);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_QueryInterface(IMFByteStream *iface, REFIID riid, void **out)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), out);
|
||||||
|
|
||||||
|
if(IsEqualGUID(riid, &IID_IUnknown) ||
|
||||||
|
IsEqualGUID(riid, &IID_IMFByteStream))
|
||||||
|
{
|
||||||
|
*out = &This->IMFByteStream_iface;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FIXME("(%s, %p)\n", debugstr_guid(riid), out);
|
||||||
|
*out = NULL;
|
||||||
|
return E_NOINTERFACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
IUnknown_AddRef((IUnknown*)*out);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI mfbytestream_AddRef(IMFByteStream *iface)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
ULONG ref = InterlockedIncrement(&This->ref);
|
||||||
|
|
||||||
|
TRACE("(%p) ref=%u\n", This, ref);
|
||||||
|
|
||||||
|
return ref;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI mfbytestream_Release(IMFByteStream *iface)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
ULONG ref = InterlockedDecrement(&This->ref);
|
||||||
|
|
||||||
|
TRACE("(%p) ref=%u\n", This, ref);
|
||||||
|
|
||||||
|
if (!ref)
|
||||||
|
{
|
||||||
|
HeapFree(GetProcessHeap(), 0, This);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ref;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_GetCapabilities(IMFByteStream *iface, DWORD *capabilities)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p, %p\n", This, capabilities);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_GetLength(IMFByteStream *iface, QWORD *length)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p, %p\n", This, length);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_SetLength(IMFByteStream *iface, QWORD length)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p, %s\n", This, wine_dbgstr_longlong(length));
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_GetCurrentPosition(IMFByteStream *iface, QWORD *position)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p, %p\n", This, position);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_SetCurrentPosition(IMFByteStream *iface, QWORD position)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p, %s\n", This, wine_dbgstr_longlong(position));
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_IsEndOfStream(IMFByteStream *iface, BOOL *endstream)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p, %p\n", This, endstream);
|
||||||
|
|
||||||
|
if(endstream)
|
||||||
|
*endstream = TRUE;
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_Read(IMFByteStream *iface, BYTE *data, ULONG count, ULONG *byte_read)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p, %p, %u, %p\n", This, data, count, byte_read);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_BeginRead(IMFByteStream *iface, BYTE *data, ULONG count,
|
||||||
|
IMFAsyncCallback *callback, IUnknown *state)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p, %p, %u, %p, %p\n", This, data, count, callback, state);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_EndRead(IMFByteStream *iface, IMFAsyncResult *result, ULONG *byte_read)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p, %p, %p\n", This, result, byte_read);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_Write(IMFByteStream *iface, const BYTE *data, ULONG count, ULONG *written)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p, %p, %u, %p\n", This, data, count, written);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_BeginWrite(IMFByteStream *iface, const BYTE *data, ULONG count,
|
||||||
|
IMFAsyncCallback *callback, IUnknown *state)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p, %p, %u, %p, %p\n", This, data, count, callback, state);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_EndWrite(IMFByteStream *iface, IMFAsyncResult *result, ULONG *written)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p, %p, %p\n", This, result, written);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_Seek(IMFByteStream *iface, MFBYTESTREAM_SEEK_ORIGIN seek, LONGLONG offset,
|
||||||
|
DWORD flags, QWORD *current)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p, %u, %s, 0x%08x, %p\n", This, seek, wine_dbgstr_longlong(offset), flags, current);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_Flush(IMFByteStream *iface)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p\n", This);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI mfbytestream_Close(IMFByteStream *iface)
|
||||||
|
{
|
||||||
|
mfbytestream *This = impl_from_IMFByteStream(iface);
|
||||||
|
|
||||||
|
FIXME("%p\n", This);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const IMFByteStreamVtbl mfbytesteam_vtbl =
|
||||||
|
{
|
||||||
|
mfbytestream_QueryInterface,
|
||||||
|
mfbytestream_AddRef,
|
||||||
|
mfbytestream_Release,
|
||||||
|
mfbytestream_GetCapabilities,
|
||||||
|
mfbytestream_GetLength,
|
||||||
|
mfbytestream_SetLength,
|
||||||
|
mfbytestream_GetCurrentPosition,
|
||||||
|
mfbytestream_SetCurrentPosition,
|
||||||
|
mfbytestream_IsEndOfStream,
|
||||||
|
mfbytestream_Read,
|
||||||
|
mfbytestream_BeginRead,
|
||||||
|
mfbytestream_EndRead,
|
||||||
|
mfbytestream_Write,
|
||||||
|
mfbytestream_BeginWrite,
|
||||||
|
mfbytestream_EndWrite,
|
||||||
|
mfbytestream_Seek,
|
||||||
|
mfbytestream_Flush,
|
||||||
|
mfbytestream_Close
|
||||||
|
};
|
||||||
|
|
||||||
|
HRESULT WINAPI MFCreateMFByteStreamOnStream(IStream *stream, IMFByteStream **bytestream)
|
||||||
|
{
|
||||||
|
mfbytestream *object;
|
||||||
|
|
||||||
|
TRACE("(%p, %p): stub\n", stream, bytestream);
|
||||||
|
|
||||||
|
object = heap_alloc( sizeof(*object) );
|
||||||
|
if(!object)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
|
object->ref = 1;
|
||||||
|
object->IMFByteStream_iface.lpVtbl = &mfbytesteam_vtbl;
|
||||||
|
|
||||||
|
*bytestream = &object->IMFByteStream_iface;
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI MFPluginControl_QueryInterface(IMFPluginControl *iface, REFIID riid, void **ppv)
|
||||||
|
{
|
||||||
|
if(IsEqualGUID(riid, &IID_IUnknown)) {
|
||||||
|
TRACE("(IID_IUnknown %p)\n", ppv);
|
||||||
|
*ppv = iface;
|
||||||
|
}else if(IsEqualGUID(riid, &IID_IMFPluginControl)) {
|
||||||
|
TRACE("(IID_IMFPluginControl %p)\n", ppv);
|
||||||
|
*ppv = iface;
|
||||||
|
}else {
|
||||||
|
FIXME("(%s %p)\n", debugstr_guid(riid), ppv);
|
||||||
|
*ppv = NULL;
|
||||||
|
return E_NOINTERFACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
IUnknown_AddRef((IUnknown*)*ppv);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI MFPluginControl_AddRef(IMFPluginControl *iface)
|
||||||
|
{
|
||||||
|
TRACE("\n");
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI MFPluginControl_Release(IMFPluginControl *iface)
|
||||||
|
{
|
||||||
|
TRACE("\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI MFPluginControl_GetPreferredClsid(IMFPluginControl *iface, DWORD plugin_type,
|
||||||
|
const WCHAR *selector, CLSID *clsid)
|
||||||
|
{
|
||||||
|
FIXME("(%d %s %p)\n", plugin_type, debugstr_w(selector), clsid);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI MFPluginControl_GetPreferredClsidByIndex(IMFPluginControl *iface, DWORD plugin_type,
|
||||||
|
DWORD index, WCHAR **selector, CLSID *clsid)
|
||||||
|
{
|
||||||
|
FIXME("(%d %d %p %p)\n", plugin_type, index, selector, clsid);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI MFPluginControl_SetPreferredClsid(IMFPluginControl *iface, DWORD plugin_type,
|
||||||
|
const WCHAR *selector, const CLSID *clsid)
|
||||||
|
{
|
||||||
|
FIXME("(%d %s %s)\n", plugin_type, debugstr_w(selector), debugstr_guid(clsid));
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI MFPluginControl_IsDisabled(IMFPluginControl *iface, DWORD plugin_type, REFCLSID clsid)
|
||||||
|
{
|
||||||
|
FIXME("(%d %s)\n", plugin_type, debugstr_guid(clsid));
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI MFPluginControl_GetDisabledByIndex(IMFPluginControl *iface, DWORD plugin_type, DWORD index, CLSID *clsid)
|
||||||
|
{
|
||||||
|
FIXME("(%d %d %p)\n", plugin_type, index, clsid);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI MFPluginControl_SetDisabled(IMFPluginControl *iface, DWORD plugin_type, REFCLSID clsid, BOOL disabled)
|
||||||
|
{
|
||||||
|
FIXME("(%d %s %x)\n", plugin_type, debugstr_guid(clsid), disabled);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const IMFPluginControlVtbl MFPluginControlVtbl = {
|
||||||
|
MFPluginControl_QueryInterface,
|
||||||
|
MFPluginControl_AddRef,
|
||||||
|
MFPluginControl_Release,
|
||||||
|
MFPluginControl_GetPreferredClsid,
|
||||||
|
MFPluginControl_GetPreferredClsidByIndex,
|
||||||
|
MFPluginControl_SetPreferredClsid,
|
||||||
|
MFPluginControl_IsDisabled,
|
||||||
|
MFPluginControl_GetDisabledByIndex,
|
||||||
|
MFPluginControl_SetDisabled
|
||||||
|
};
|
||||||
|
|
||||||
|
static IMFPluginControl plugin_control = { &MFPluginControlVtbl };
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* MFGetPluginControl (mfplat.@)
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI MFGetPluginControl(IMFPluginControl **ret)
|
||||||
|
{
|
||||||
|
TRACE("(%p)\n", ret);
|
||||||
|
|
||||||
|
*ret = &plugin_control;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct _mfsourceresolver
|
typedef struct _mfsourceresolver
|
||||||
{
|
{
|
||||||
IMFSourceResolver IMFSourceResolver_iface;
|
IMFSourceResolver IMFSourceResolver_iface;
|
||||||
|
|
Loading…
Reference in New Issue