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;
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
IMFAttributes IMFAttributes_iface;
|
||||
|
@ -1178,6 +845,339 @@ HRESULT WINAPI MFCreateAttributes(IMFAttributes **attributes, UINT32 size)
|
|||
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
|
||||
{
|
||||
IMFSourceResolver IMFSourceResolver_iface;
|
||||
|
|
Loading…
Reference in New Issue