strmbase: Implement BaseControlVideo.
This commit is contained in:
parent
73efbff484
commit
4ae6f928aa
|
@ -11,6 +11,7 @@ C_SRCS = \
|
|||
qualitycontrol.c \
|
||||
seeking.c \
|
||||
transform.c \
|
||||
video.c \
|
||||
window.c
|
||||
|
||||
@MAKE_IMPLIB_RULES@
|
||||
|
|
|
@ -0,0 +1,480 @@
|
|||
/*
|
||||
* Generic Implementation of strmbase video classes
|
||||
*
|
||||
* Copyright 2012 Aric Stewart, CodeWeavers
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#define COBJMACROS
|
||||
|
||||
#include <assert.h>
|
||||
#include "dshow.h"
|
||||
#include "uuids.h"
|
||||
#include "vfwmsgs.h"
|
||||
#include "wine/debug.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "wine/strmbase.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(strmbase);
|
||||
|
||||
static inline BaseControlVideo *impl_from_IBasicVideo(IBasicVideo *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, BaseControlVideo, IBasicVideo_iface);
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideo_Init(BaseControlVideo *pControlVideo, const IBasicVideoVtbl *lpVtbl, BaseFilter *owner, CRITICAL_SECTION *lock, BasePin* pPin, const BaseControlVideoFuncTable* pFuncsTable)
|
||||
{
|
||||
pControlVideo->IBasicVideo_iface.lpVtbl = lpVtbl;
|
||||
pControlVideo->pFilter = owner;
|
||||
pControlVideo->pInterfaceLock = lock;
|
||||
pControlVideo->pPin = pPin;
|
||||
pControlVideo->pFuncsTable = pFuncsTable;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetTypeInfoCount(IBasicVideo *iface, UINT*pctinfo)
|
||||
{
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%p): stub !!!\n", This, iface, pctinfo);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetTypeInfo(IBasicVideo *iface, UINT iTInfo, LCID lcid, ITypeInfo**ppTInfo)
|
||||
{
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%d, %d, %p): stub !!!\n", This, iface, iTInfo, lcid, ppTInfo);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetIDsOfNames(IBasicVideo *iface, REFIID riid, LPOLESTR*rgszNames, UINT cNames, LCID lcid, DISPID*rgDispId)
|
||||
{
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%s (%p), %p, %d, %d, %p): stub !!!\n", This, iface, debugstr_guid(riid), riid, rgszNames, cNames, lcid, rgDispId);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_Invoke(IBasicVideo *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS*pDispParams, VARIANT*pVarResult, EXCEPINFO*pExepInfo, UINT*puArgErr)
|
||||
{
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
FIXME("(%p/%p)->(%d, %s (%p), %d, %04x, %p, %p, %p, %p): stub !!!\n", This, iface, dispIdMember, debugstr_guid(riid), riid, lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_AvgTimePerFrame(IBasicVideo *iface, REFTIME *pAvgTimePerFrame)
|
||||
{
|
||||
VIDEOINFOHEADER *vih;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
if (!This->pPin->pConnectedTo)
|
||||
return VFW_E_NOT_CONNECTED;
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pAvgTimePerFrame);
|
||||
|
||||
vih = This->pFuncsTable->pfnGetVideoFormat(This);
|
||||
*pAvgTimePerFrame = vih->AvgTimePerFrame;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_BitRate(IBasicVideo *iface, LONG *pBitRate)
|
||||
{
|
||||
VIDEOINFOHEADER *vih;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pBitRate);
|
||||
|
||||
if (!This->pPin->pConnectedTo)
|
||||
return VFW_E_NOT_CONNECTED;
|
||||
|
||||
vih = This->pFuncsTable->pfnGetVideoFormat(This);
|
||||
*pBitRate = vih->dwBitRate;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_BitErrorRate(IBasicVideo *iface, LONG *pBitErrorRate)
|
||||
{
|
||||
VIDEOINFOHEADER *vih;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pBitErrorRate);
|
||||
|
||||
if (!This->pPin->pConnectedTo)
|
||||
return VFW_E_NOT_CONNECTED;
|
||||
|
||||
vih = This->pFuncsTable->pfnGetVideoFormat(This);
|
||||
*pBitErrorRate = vih->dwBitErrorRate;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_VideoWidth(IBasicVideo *iface, LONG *pVideoWidth)
|
||||
{
|
||||
VIDEOINFOHEADER *vih;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pVideoWidth);
|
||||
|
||||
vih = This->pFuncsTable->pfnGetVideoFormat(This);
|
||||
*pVideoWidth = vih->bmiHeader.biWidth;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_VideoHeight(IBasicVideo *iface, LONG *pVideoHeight)
|
||||
{
|
||||
VIDEOINFOHEADER *vih;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pVideoHeight);
|
||||
|
||||
vih = This->pFuncsTable->pfnGetVideoFormat(This);
|
||||
*pVideoHeight = vih->bmiHeader.biHeight;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_SourceLeft(IBasicVideo *iface, LONG SourceLeft)
|
||||
{
|
||||
RECT SourceRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, SourceLeft);
|
||||
This->pFuncsTable->pfnGetSourceRect(This, &SourceRect);
|
||||
SourceRect.left = SourceLeft;
|
||||
This->pFuncsTable->pfnSetSourceRect(This, &SourceRect);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_SourceLeft(IBasicVideo *iface, LONG *pSourceLeft)
|
||||
{
|
||||
RECT SourceRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pSourceLeft);
|
||||
This->pFuncsTable->pfnGetSourceRect(This, &SourceRect);
|
||||
*pSourceLeft = SourceRect.left;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_SourceWidth(IBasicVideo *iface, LONG SourceWidth)
|
||||
{
|
||||
RECT SourceRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, SourceWidth);
|
||||
This->pFuncsTable->pfnGetSourceRect(This, &SourceRect);
|
||||
SourceRect.right = SourceRect.left + SourceWidth;
|
||||
This->pFuncsTable->pfnSetSourceRect(This, &SourceRect);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_SourceWidth(IBasicVideo *iface, LONG *pSourceWidth)
|
||||
{
|
||||
RECT SourceRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pSourceWidth);
|
||||
This->pFuncsTable->pfnGetSourceRect(This, &SourceRect);
|
||||
*pSourceWidth = SourceRect.right - SourceRect.left;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_SourceTop(IBasicVideo *iface, LONG SourceTop)
|
||||
{
|
||||
RECT SourceRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, SourceTop);
|
||||
This->pFuncsTable->pfnGetSourceRect(This, &SourceRect);
|
||||
SourceRect.top = SourceTop;
|
||||
This->pFuncsTable->pfnSetSourceRect(This, &SourceRect);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_SourceTop(IBasicVideo *iface, LONG *pSourceTop)
|
||||
{
|
||||
RECT SourceRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pSourceTop);
|
||||
This->pFuncsTable->pfnGetSourceRect(This, &SourceRect);
|
||||
*pSourceTop = SourceRect.top;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_SourceHeight(IBasicVideo *iface, LONG SourceHeight)
|
||||
{
|
||||
RECT SourceRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, SourceHeight);
|
||||
This->pFuncsTable->pfnGetSourceRect(This, &SourceRect);
|
||||
SourceRect.bottom = SourceRect.top + SourceHeight;
|
||||
This->pFuncsTable->pfnSetSourceRect(This, &SourceRect);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_SourceHeight(IBasicVideo *iface, LONG *pSourceHeight)
|
||||
{
|
||||
RECT SourceRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pSourceHeight);
|
||||
This->pFuncsTable->pfnGetSourceRect(This, &SourceRect);
|
||||
|
||||
*pSourceHeight = SourceRect.bottom - SourceRect.top;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_DestinationLeft(IBasicVideo *iface, LONG DestinationLeft)
|
||||
{
|
||||
RECT DestRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, DestinationLeft);
|
||||
This->pFuncsTable->pfnGetTargetRect(This, &DestRect);
|
||||
DestRect.left = DestinationLeft;
|
||||
This->pFuncsTable->pfnSetTargetRect(This, &DestRect);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_DestinationLeft(IBasicVideo *iface, LONG *pDestinationLeft)
|
||||
{
|
||||
RECT DestRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pDestinationLeft);
|
||||
This->pFuncsTable->pfnGetTargetRect(This, &DestRect);
|
||||
*pDestinationLeft = DestRect.left;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_DestinationWidth(IBasicVideo *iface, LONG DestinationWidth)
|
||||
{
|
||||
RECT DestRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, DestinationWidth);
|
||||
This->pFuncsTable->pfnGetTargetRect(This, &DestRect);
|
||||
DestRect.right = DestRect.left + DestinationWidth;
|
||||
This->pFuncsTable->pfnSetTargetRect(This, &DestRect);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_DestinationWidth(IBasicVideo *iface, LONG *pDestinationWidth)
|
||||
{
|
||||
RECT DestRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pDestinationWidth);
|
||||
This->pFuncsTable->pfnGetTargetRect(This, &DestRect);
|
||||
*pDestinationWidth = DestRect.right - DestRect.left;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_DestinationTop(IBasicVideo *iface, LONG DestinationTop)
|
||||
{
|
||||
RECT DestRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, DestinationTop);
|
||||
This->pFuncsTable->pfnGetTargetRect(This, &DestRect);
|
||||
DestRect.top = DestinationTop;
|
||||
This->pFuncsTable->pfnSetTargetRect(This, &DestRect);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_DestinationTop(IBasicVideo *iface, LONG *pDestinationTop)
|
||||
{
|
||||
RECT DestRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pDestinationTop);
|
||||
This->pFuncsTable->pfnGetTargetRect(This, &DestRect);
|
||||
*pDestinationTop = DestRect.top;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_DestinationHeight(IBasicVideo *iface, LONG DestinationHeight)
|
||||
{
|
||||
RECT DestRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d)\n", This, iface, DestinationHeight);
|
||||
This->pFuncsTable->pfnGetTargetRect(This, &DestRect);
|
||||
DestRect.right = DestRect.left + DestinationHeight;
|
||||
This->pFuncsTable->pfnSetTargetRect(This, &DestRect);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_DestinationHeight(IBasicVideo *iface, LONG *pDestinationHeight)
|
||||
{
|
||||
RECT DestRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p)\n", This, iface, pDestinationHeight);
|
||||
This->pFuncsTable->pfnGetTargetRect(This, &DestRect);
|
||||
*pDestinationHeight = DestRect.right - DestRect.left;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_SetSourcePosition(IBasicVideo *iface, LONG Left, LONG Top, LONG Width, LONG Height)
|
||||
{
|
||||
RECT SourceRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d, %d, %d, %d)\n", This, iface, Left, Top, Width, Height);
|
||||
SourceRect.left = Left;
|
||||
SourceRect.top = Top;
|
||||
SourceRect.right = Left + Width;
|
||||
SourceRect.bottom = Top + Height;
|
||||
This->pFuncsTable->pfnSetSourceRect(This, &SourceRect);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetSourcePosition(IBasicVideo *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight)
|
||||
{
|
||||
RECT SourceRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p, %p, %p, %p)\n", This, iface, pLeft, pTop, pWidth, pHeight);
|
||||
This->pFuncsTable->pfnGetSourceRect(This, &SourceRect);
|
||||
|
||||
*pLeft = SourceRect.left;
|
||||
*pTop = SourceRect.top;
|
||||
*pWidth = SourceRect.right - SourceRect.left;
|
||||
*pHeight = SourceRect.bottom - SourceRect.top;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_SetDefaultSourcePosition(IBasicVideo *iface)
|
||||
{
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->()\n", This, iface);
|
||||
return This->pFuncsTable->pfnSetDefaultSourceRect(This);
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_SetDestinationPosition(IBasicVideo *iface, LONG Left, LONG Top, LONG Width, LONG Height)
|
||||
{
|
||||
RECT DestRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d, %d, %d, %d)\n", This, iface, Left, Top, Width, Height);
|
||||
|
||||
DestRect.left = Left;
|
||||
DestRect.top = Top;
|
||||
DestRect.right = Left + Width;
|
||||
DestRect.bottom = Top + Height;
|
||||
This->pFuncsTable->pfnSetTargetRect(This, &DestRect);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetDestinationPosition(IBasicVideo *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight)
|
||||
{
|
||||
RECT DestRect;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p, %p, %p, %p)\n", This, iface, pLeft, pTop, pWidth, pHeight);
|
||||
This->pFuncsTable->pfnGetTargetRect(This, &DestRect);
|
||||
|
||||
*pLeft = DestRect.left;
|
||||
*pTop = DestRect.top;
|
||||
*pWidth = DestRect.right - DestRect.left;
|
||||
*pHeight = DestRect.bottom - DestRect.top;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_SetDefaultDestinationPosition(IBasicVideo *iface)
|
||||
{
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->()\n", This, iface);
|
||||
return This->pFuncsTable->pfnSetDefaultTargetRect(This);
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetVideoSize(IBasicVideo *iface, LONG *pWidth, LONG *pHeight)
|
||||
{
|
||||
VIDEOINFOHEADER *vih;
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%p, %p)\n", This, iface, pWidth, pHeight);
|
||||
|
||||
vih = This->pFuncsTable->pfnGetVideoFormat(This);
|
||||
*pHeight = vih->bmiHeader.biHeight;
|
||||
*pWidth = vih->bmiHeader.biWidth;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetVideoPaletteEntries(IBasicVideo *iface, LONG StartIndex, LONG Entries, LONG *pRetrieved, LONG *pPalette)
|
||||
{
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
TRACE("(%p/%p)->(%d, %d, %p, %p)\n", This, iface, StartIndex, Entries, pRetrieved, pPalette);
|
||||
|
||||
if (pRetrieved)
|
||||
*pRetrieved = 0;
|
||||
return VFW_E_NO_PALETTE_AVAILABLE;
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetCurrentImage(IBasicVideo *iface, LONG *pBufferSize, LONG *pDIBImage)
|
||||
{
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
return This->pFuncsTable->pfnGetStaticImage(This, pBufferSize, pDIBImage);
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_IsUsingDefaultSource(IBasicVideo *iface)
|
||||
{
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
return This->pFuncsTable->pfnIsDefaultSourceRect(This);
|
||||
}
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_IsUsingDefaultDestination(IBasicVideo *iface)
|
||||
{
|
||||
BaseControlVideo *This = impl_from_IBasicVideo(iface);
|
||||
|
||||
return This->pFuncsTable->pfnIsDefaultTargetRect(This);
|
||||
}
|
|
@ -495,6 +495,85 @@ HRESULT WINAPI BaseControlWindowImpl_HideCursor(IVideoWindow *iface, LONG HideCu
|
|||
HRESULT WINAPI BaseControlWindowImpl_IsCursorHidden(IVideoWindow *iface, LONG *CursorHidden);
|
||||
#endif
|
||||
|
||||
#ifdef __IBasicVideo_FWD_DEFINED__
|
||||
#ifdef __amvideo_h__
|
||||
typedef struct tagBaseControlVideo
|
||||
{
|
||||
IBasicVideo IBasicVideo_iface;
|
||||
|
||||
BaseFilter* pFilter;
|
||||
CRITICAL_SECTION* pInterfaceLock;
|
||||
BasePin* pPin;
|
||||
|
||||
const struct BaseControlVideoFuncTable* pFuncsTable;
|
||||
} BaseControlVideo;
|
||||
|
||||
typedef HRESULT (WINAPI *BaseControlVideo_GetSourceRect)(BaseControlVideo* This, RECT *pSourceRect);
|
||||
typedef HRESULT (WINAPI *BaseControlVideo_GetStaticImage)(BaseControlVideo* This, LONG *pBufferSize, LONG *pDIBImage);
|
||||
typedef HRESULT (WINAPI *BaseControlVideo_GetTargetRect)(BaseControlVideo* This, RECT *pTargetRect);
|
||||
typedef VIDEOINFOHEADER* (WINAPI *BaseControlVideo_GetVideoFormat)(BaseControlVideo* This);
|
||||
typedef HRESULT (WINAPI *BaseControlVideo_IsDefaultSourceRect)(BaseControlVideo* This);
|
||||
typedef HRESULT (WINAPI *BaseControlVideo_IsDefaultTargetRect)(BaseControlVideo* This);
|
||||
typedef HRESULT (WINAPI *BaseControlVideo_SetDefaultSourceRect)(BaseControlVideo* This);
|
||||
typedef HRESULT (WINAPI *BaseControlVideo_SetDefaultTargetRect)(BaseControlVideo* This);
|
||||
typedef HRESULT (WINAPI *BaseControlVideo_SetSourceRect)(BaseControlVideo* This, RECT *pSourceRect);
|
||||
typedef HRESULT (WINAPI *BaseControlVideo_SetTargetRect)(BaseControlVideo* This, RECT *pTargetRect);
|
||||
|
||||
typedef struct BaseControlVideoFuncTable {
|
||||
/* Required */
|
||||
BaseControlVideo_GetSourceRect pfnGetSourceRect;
|
||||
BaseControlVideo_GetStaticImage pfnGetStaticImage;
|
||||
BaseControlVideo_GetTargetRect pfnGetTargetRect;
|
||||
BaseControlVideo_GetVideoFormat pfnGetVideoFormat;
|
||||
BaseControlVideo_IsDefaultSourceRect pfnIsDefaultSourceRect;
|
||||
BaseControlVideo_IsDefaultTargetRect pfnIsDefaultTargetRect;
|
||||
BaseControlVideo_SetDefaultSourceRect pfnSetDefaultSourceRect;
|
||||
BaseControlVideo_SetDefaultTargetRect pfnSetDefaultTargetRect;
|
||||
BaseControlVideo_SetSourceRect pfnSetSourceRect;
|
||||
BaseControlVideo_SetTargetRect pfnSetTargetRect;
|
||||
} BaseControlVideoFuncTable;
|
||||
|
||||
HRESULT WINAPI BaseControlVideo_Init(BaseControlVideo *pControlVideo, const IBasicVideoVtbl *lpVtbl, BaseFilter *owner, CRITICAL_SECTION *lock, BasePin* pPin, const BaseControlVideoFuncTable* pFuncsTable);
|
||||
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetTypeInfoCount(IBasicVideo *iface, UINT*pctinfo);
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetTypeInfo(IBasicVideo *iface, UINT iTInfo, LCID lcid, ITypeInfo**ppTInfo);
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetIDsOfNames(IBasicVideo *iface, REFIID riid, LPOLESTR*rgszNames, UINT cNames, LCID lcid, DISPID*rgDispId);
|
||||
HRESULT WINAPI BaseControlVideoImpl_Invoke(IBasicVideo *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS*pDispParams, VARIANT*pVarResult, EXCEPINFO*pExepInfo, UINT*puArgErr);
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_AvgTimePerFrame(IBasicVideo *iface, REFTIME *pAvgTimePerFrame);
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_BitRate(IBasicVideo *iface, LONG *pBitRate);
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_BitErrorRate(IBasicVideo *iface, LONG *pBitErrorRate);
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_VideoWidth(IBasicVideo *iface, LONG *pVideoWidth);
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_VideoHeight(IBasicVideo *iface, LONG *pVideoHeight);
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_SourceLeft(IBasicVideo *iface, LONG SourceLeft);
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_SourceLeft(IBasicVideo *iface, LONG *pSourceLeft);
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_SourceWidth(IBasicVideo *iface, LONG SourceWidth);
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_SourceWidth(IBasicVideo *iface, LONG *pSourceWidth);
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_SourceTop(IBasicVideo *iface, LONG SourceTop);
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_SourceTop(IBasicVideo *iface, LONG *pSourceTop);
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_SourceHeight(IBasicVideo *iface, LONG SourceHeight);
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_SourceHeight(IBasicVideo *iface, LONG *pSourceHeight);
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_DestinationLeft(IBasicVideo *iface, LONG DestinationLeft);
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_DestinationLeft(IBasicVideo *iface, LONG *pDestinationLeft);
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_DestinationWidth(IBasicVideo *iface, LONG DestinationWidth);
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_DestinationWidth(IBasicVideo *iface, LONG *pDestinationWidth);
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_DestinationTop(IBasicVideo *iface, LONG DestinationTop);
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_DestinationTop(IBasicVideo *iface, LONG *pDestinationTop);
|
||||
HRESULT WINAPI BaseControlVideoImpl_put_DestinationHeight(IBasicVideo *iface, LONG DestinationHeight);
|
||||
HRESULT WINAPI BaseControlVideoImpl_get_DestinationHeight(IBasicVideo *iface, LONG *pDestinationHeight);
|
||||
HRESULT WINAPI BaseControlVideoImpl_SetSourcePosition(IBasicVideo *iface, LONG Left, LONG Top, LONG Width, LONG Height);
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetSourcePosition(IBasicVideo *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight);
|
||||
HRESULT WINAPI BaseControlVideoImpl_SetDefaultSourcePosition(IBasicVideo *iface);
|
||||
HRESULT WINAPI BaseControlVideoImpl_SetDestinationPosition(IBasicVideo *iface, LONG Left, LONG Top, LONG Width, LONG Height);
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetDestinationPosition(IBasicVideo *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight);
|
||||
HRESULT WINAPI BaseControlVideoImpl_SetDefaultDestinationPosition(IBasicVideo *iface);
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetVideoSize(IBasicVideo *iface, LONG *pWidth, LONG *pHeight);
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetVideoPaletteEntries(IBasicVideo *iface, LONG StartIndex, LONG Entries, LONG *pRetrieved, LONG *pPalette);
|
||||
HRESULT WINAPI BaseControlVideoImpl_GetCurrentImage(IBasicVideo *iface, LONG *pBufferSize, LONG *pDIBImage);
|
||||
HRESULT WINAPI BaseControlVideoImpl_IsUsingDefaultSource(IBasicVideo *iface);
|
||||
HRESULT WINAPI BaseControlVideoImpl_IsUsingDefaultDestination(IBasicVideo *iface);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Dll Functions */
|
||||
BOOL WINAPI STRMBASE_DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv);
|
||||
HRESULT WINAPI STRMBASE_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv);
|
||||
|
|
Loading…
Reference in New Issue