494 lines
9.5 KiB
C
494 lines
9.5 KiB
C
/*
|
|
* Implementation of IBasicVideo2 for FilterGraph.
|
|
*
|
|
* FIXME - stub.
|
|
*
|
|
* hidenori@a2.ctktv.ne.jp
|
|
*/
|
|
|
|
#include "config.h"
|
|
|
|
#include "windef.h"
|
|
#include "winbase.h"
|
|
#include "wingdi.h"
|
|
#include "winerror.h"
|
|
#include "wine/obj_base.h"
|
|
#include "wine/obj_oleaut.h"
|
|
#include "strmif.h"
|
|
#include "control.h"
|
|
#include "uuids.h"
|
|
|
|
#include "debugtools.h"
|
|
DEFAULT_DEBUG_CHANNEL(quartz);
|
|
|
|
#include "quartz_private.h"
|
|
#include "fgraph.h"
|
|
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnQueryInterface(IBasicVideo2* iface,REFIID riid,void** ppobj)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
TRACE("(%p)->()\n",This);
|
|
|
|
return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
|
|
}
|
|
|
|
static ULONG WINAPI
|
|
IBasicVideo2_fnAddRef(IBasicVideo2* iface)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
TRACE("(%p)->()\n",This);
|
|
|
|
return IUnknown_AddRef(This->unk.punkControl);
|
|
}
|
|
|
|
static ULONG WINAPI
|
|
IBasicVideo2_fnRelease(IBasicVideo2* iface)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
TRACE("(%p)->()\n",This);
|
|
|
|
return IUnknown_Release(This->unk.punkControl);
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnGetTypeInfoCount(IBasicVideo2* iface,UINT* pcTypeInfo)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnGetTypeInfo(IBasicVideo2* iface,UINT iTypeInfo, LCID lcid, ITypeInfo** ppobj)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnGetIDsOfNames(IBasicVideo2* iface,REFIID riid, LPOLESTR* ppwszName, UINT cNames, LCID lcid, DISPID* pDispId)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnInvoke(IBasicVideo2* iface,DISPID DispId, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarRes, EXCEPINFO* pExcepInfo, UINT* puArgErr)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnget_AvgTimePerFrame(IBasicVideo2* iface,REFTIME* prefTime)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnget_BitRate(IBasicVideo2* iface,long* plRate)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnget_BitErrorRate(IBasicVideo2* iface,long* plRate)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnget_VideoWidth(IBasicVideo2* iface,long* plWidth)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnget_VideoHeight(IBasicVideo2* iface,long* plHeight)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnput_SourceLeft(IBasicVideo2* iface,long lLeft)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnget_SourceLeft(IBasicVideo2* iface,long* plLeft)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnput_SourceWidth(IBasicVideo2* iface,long lWidth)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnget_SourceWidth(IBasicVideo2* iface,long* plWidth)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnput_SourceTop(IBasicVideo2* iface,long lTop)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnget_SourceTop(IBasicVideo2* iface,long* plTop)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnput_SourceHeight(IBasicVideo2* iface,long lHeight)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnget_SourceHeight(IBasicVideo2* iface,long* plHeight)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnput_DestinationLeft(IBasicVideo2* iface,long lLeft)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnget_DestinationLeft(IBasicVideo2* iface,long* plLeft)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnput_DestinationWidth(IBasicVideo2* iface,long lWidth)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnget_DestinationWidth(IBasicVideo2* iface,long* plWidth)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnput_DestinationTop(IBasicVideo2* iface,long lTop)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnget_DestinationTop(IBasicVideo2* iface,long* plTop)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnput_DestinationHeight(IBasicVideo2* iface,long lHeight)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnget_DestinationHeight(IBasicVideo2* iface,long* plHeight)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnSetSourcePosition(IBasicVideo2* iface,long lLeft,long lTop,long lWidth,long lHeight)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnGetSourcePosition(IBasicVideo2* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnSetDefaultSourcePosition(IBasicVideo2* iface)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnSetDestinationPosition(IBasicVideo2* iface,long lLeft,long lTop,long lWidth,long lHeight)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnGetDestinationPosition(IBasicVideo2* iface,long* plLeft,long* plTop,long* plWidth,long* plHeight)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnSetDefaultDestinationPosition(IBasicVideo2* iface)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnGetVideoSize(IBasicVideo2* iface,long* plWidth,long* plHeight)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnGetVideoPaletteEntries(IBasicVideo2* iface,long lStart,long lCount,long* plRet,long* plPaletteEntry)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnGetCurrentImage(IBasicVideo2* iface,long* plBufferSize,long* plDIBBuffer)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnIsUsingDefaultSource(IBasicVideo2* iface)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnIsUsingDefaultDestination(IBasicVideo2* iface)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
static HRESULT WINAPI
|
|
IBasicVideo2_fnGetPreferredAspectRatio(IBasicVideo2* iface,long* plRateX,long* plRateY)
|
|
{
|
|
CFilterGraph_THIS(iface,basvid);
|
|
|
|
FIXME("(%p)->()\n",This);
|
|
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
|
|
|
|
|
|
static ICOM_VTABLE(IBasicVideo2) ibasicvideo =
|
|
{
|
|
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
|
/* IUnknown fields */
|
|
IBasicVideo2_fnQueryInterface,
|
|
IBasicVideo2_fnAddRef,
|
|
IBasicVideo2_fnRelease,
|
|
/* IDispatch fields */
|
|
IBasicVideo2_fnGetTypeInfoCount,
|
|
IBasicVideo2_fnGetTypeInfo,
|
|
IBasicVideo2_fnGetIDsOfNames,
|
|
IBasicVideo2_fnInvoke,
|
|
/* IBasicVideo fields */
|
|
IBasicVideo2_fnget_AvgTimePerFrame,
|
|
IBasicVideo2_fnget_BitRate,
|
|
IBasicVideo2_fnget_BitErrorRate,
|
|
IBasicVideo2_fnget_VideoWidth,
|
|
IBasicVideo2_fnget_VideoHeight,
|
|
IBasicVideo2_fnput_SourceLeft,
|
|
IBasicVideo2_fnget_SourceLeft,
|
|
IBasicVideo2_fnput_SourceWidth,
|
|
IBasicVideo2_fnget_SourceWidth,
|
|
IBasicVideo2_fnput_SourceTop,
|
|
IBasicVideo2_fnget_SourceTop,
|
|
IBasicVideo2_fnput_SourceHeight,
|
|
IBasicVideo2_fnget_SourceHeight,
|
|
IBasicVideo2_fnput_DestinationLeft,
|
|
IBasicVideo2_fnget_DestinationLeft,
|
|
IBasicVideo2_fnput_DestinationWidth,
|
|
IBasicVideo2_fnget_DestinationWidth,
|
|
IBasicVideo2_fnput_DestinationTop,
|
|
IBasicVideo2_fnget_DestinationTop,
|
|
IBasicVideo2_fnput_DestinationHeight,
|
|
IBasicVideo2_fnget_DestinationHeight,
|
|
IBasicVideo2_fnSetSourcePosition,
|
|
IBasicVideo2_fnGetSourcePosition,
|
|
IBasicVideo2_fnSetDefaultSourcePosition,
|
|
IBasicVideo2_fnSetDestinationPosition,
|
|
IBasicVideo2_fnGetDestinationPosition,
|
|
IBasicVideo2_fnSetDefaultDestinationPosition,
|
|
IBasicVideo2_fnGetVideoSize,
|
|
IBasicVideo2_fnGetVideoPaletteEntries,
|
|
IBasicVideo2_fnGetCurrentImage,
|
|
IBasicVideo2_fnIsUsingDefaultSource,
|
|
IBasicVideo2_fnIsUsingDefaultDestination,
|
|
/* IBasicVideo2 fields */
|
|
IBasicVideo2_fnGetPreferredAspectRatio,
|
|
};
|
|
|
|
|
|
HRESULT CFilterGraph_InitIBasicVideo2( CFilterGraph* pfg )
|
|
{
|
|
TRACE("(%p)\n",pfg);
|
|
ICOM_VTBL(&pfg->basvid) = &ibasicvideo;
|
|
|
|
return NOERROR;
|
|
}
|
|
|
|
void CFilterGraph_UninitIBasicVideo2( CFilterGraph* pfg )
|
|
{
|
|
TRACE("(%p)\n",pfg);
|
|
}
|