Commit 913e6ef8 authored by Zebediah Figura's avatar Zebediah Figura Committed by Alexandre Julliard

quartz/vmr9: Add a stub IVMRMixerBitmap9 interface.

Needed by Sniper Fury and Modern Combat 5. Signed-off-by: 's avatarZebediah Figura <z.figura12@gmail.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent e7ed2798
...@@ -231,7 +231,7 @@ static void test_common_interfaces(IBaseFilter *filter) ...@@ -231,7 +231,7 @@ static void test_common_interfaces(IBaseFilter *filter)
todo_wine check_interface(filter, &IID_IVMRAspectRatioControl9, TRUE); todo_wine check_interface(filter, &IID_IVMRAspectRatioControl9, TRUE);
todo_wine check_interface(filter, &IID_IVMRDeinterlaceControl9, TRUE); todo_wine check_interface(filter, &IID_IVMRDeinterlaceControl9, TRUE);
check_interface(filter, &IID_IVMRFilterConfig9, TRUE); check_interface(filter, &IID_IVMRFilterConfig9, TRUE);
todo_wine check_interface(filter, &IID_IVMRMixerBitmap9, TRUE); check_interface(filter, &IID_IVMRMixerBitmap9, TRUE);
check_interface(filter, &IID_IBasicAudio, FALSE); check_interface(filter, &IID_IBasicAudio, FALSE);
check_interface(filter, &IID_IDirectDrawVideo, FALSE); check_interface(filter, &IID_IDirectDrawVideo, FALSE);
......
...@@ -39,6 +39,12 @@ ...@@ -39,6 +39,12 @@
WINE_DEFAULT_DEBUG_CHANNEL(quartz); WINE_DEFAULT_DEBUG_CHANNEL(quartz);
static inline const char *debugstr_normalized_rect(const VMR9NormalizedRect *rect)
{
if (!rect) return "(null)";
return wine_dbg_sprintf("(%.8e,%.8e)-(%.8e,%.8e)", rect->left, rect->top, rect->right, rect->bottom);
}
struct quartz_vmr struct quartz_vmr
{ {
struct strmbase_renderer renderer; struct strmbase_renderer renderer;
...@@ -49,6 +55,7 @@ struct quartz_vmr ...@@ -49,6 +55,7 @@ struct quartz_vmr
IAMFilterMiscFlags IAMFilterMiscFlags_iface; IAMFilterMiscFlags IAMFilterMiscFlags_iface;
IVMRFilterConfig IVMRFilterConfig_iface; IVMRFilterConfig IVMRFilterConfig_iface;
IVMRFilterConfig9 IVMRFilterConfig9_iface; IVMRFilterConfig9 IVMRFilterConfig9_iface;
IVMRMixerBitmap9 IVMRMixerBitmap9_iface;
IVMRMonitorConfig IVMRMonitorConfig_iface; IVMRMonitorConfig IVMRMonitorConfig_iface;
IVMRMonitorConfig9 IVMRMonitorConfig9_iface; IVMRMonitorConfig9 IVMRMonitorConfig9_iface;
IVMRSurfaceAllocatorNotify IVMRSurfaceAllocatorNotify_iface; IVMRSurfaceAllocatorNotify IVMRSurfaceAllocatorNotify_iface;
...@@ -632,6 +639,8 @@ static HRESULT vmr_query_interface(struct strmbase_renderer *iface, REFIID iid, ...@@ -632,6 +639,8 @@ static HRESULT vmr_query_interface(struct strmbase_renderer *iface, REFIID iid,
*out = &filter->IVMRFilterConfig_iface; *out = &filter->IVMRFilterConfig_iface;
else if (IsEqualGUID(iid, &IID_IVMRFilterConfig9)) else if (IsEqualGUID(iid, &IID_IVMRFilterConfig9))
*out = &filter->IVMRFilterConfig9_iface; *out = &filter->IVMRFilterConfig9_iface;
else if (IsEqualGUID(iid, &IID_IVMRMixerBitmap9) && is_vmr9(filter))
*out = &filter->IVMRMixerBitmap9_iface;
else if (IsEqualGUID(iid, &IID_IVMRMonitorConfig)) else if (IsEqualGUID(iid, &IID_IVMRMonitorConfig))
*out = &filter->IVMRMonitorConfig_iface; *out = &filter->IVMRMonitorConfig_iface;
else if (IsEqualGUID(iid, &IID_IVMRMonitorConfig9)) else if (IsEqualGUID(iid, &IID_IVMRMonitorConfig9))
...@@ -2254,6 +2263,63 @@ static const IVMRSurfaceAllocatorNotify9Vtbl VMR9_SurfaceAllocatorNotify_Vtbl = ...@@ -2254,6 +2263,63 @@ static const IVMRSurfaceAllocatorNotify9Vtbl VMR9_SurfaceAllocatorNotify_Vtbl =
VMR9SurfaceAllocatorNotify_NotifyEvent VMR9SurfaceAllocatorNotify_NotifyEvent
}; };
static inline struct quartz_vmr *impl_from_IVMRMixerBitmap9(IVMRMixerBitmap9 *iface)
{
return CONTAINING_RECORD(iface, struct quartz_vmr, IVMRMixerBitmap9_iface);
}
static HRESULT WINAPI mixer_bitmap9_QueryInterface(IVMRMixerBitmap9 *iface, REFIID iid, void **out)
{
struct quartz_vmr *filter = impl_from_IVMRMixerBitmap9(iface);
return IUnknown_QueryInterface(filter->renderer.filter.outer_unk, iid, out);
}
static ULONG WINAPI mixer_bitmap9_AddRef(IVMRMixerBitmap9 *iface)
{
struct quartz_vmr *filter = impl_from_IVMRMixerBitmap9(iface);
return IUnknown_AddRef(filter->renderer.filter.outer_unk);
}
static ULONG WINAPI mixer_bitmap9_Release(IVMRMixerBitmap9 *iface)
{
struct quartz_vmr *filter = impl_from_IVMRMixerBitmap9(iface);
return IUnknown_Release(filter->renderer.filter.outer_unk);
}
static HRESULT WINAPI mixer_bitmap9_SetAlphaBitmap(IVMRMixerBitmap9 *iface,
const VMR9AlphaBitmap *bitmap)
{
FIXME("iface %p, bitmap %p, stub!\n", iface, bitmap);
TRACE("dwFlags %#x, hdc %p, pDDS %p, rSrc %s, rDest %s, fAlpha %.8e, clrSrcKey #%06x, dwFilterMode %#x.\n",
bitmap->dwFlags, bitmap->hdc, bitmap->pDDS, wine_dbgstr_rect(&bitmap->rSrc),
debugstr_normalized_rect(&bitmap->rDest), bitmap->fAlpha, bitmap->clrSrcKey, bitmap->dwFilterMode);
return E_NOTIMPL;
}
static HRESULT WINAPI mixer_bitmap9_UpdateAlphaBitmapParameters(IVMRMixerBitmap9 *iface,
const VMR9AlphaBitmap *bitmap)
{
FIXME("iface %p, bitmap %p, stub!\n", iface, bitmap);
return E_NOTIMPL;
}
static HRESULT WINAPI mixer_bitmap9_GetAlphaBitmapParameters(IVMRMixerBitmap9 *iface,
VMR9AlphaBitmap *bitmap)
{
FIXME("iface %p, bitmap %p, stub!\n", iface, bitmap);
return E_NOTIMPL;
}
static const IVMRMixerBitmap9Vtbl mixer_bitmap9_vtbl =
{
mixer_bitmap9_QueryInterface,
mixer_bitmap9_AddRef,
mixer_bitmap9_Release,
mixer_bitmap9_SetAlphaBitmap,
mixer_bitmap9_UpdateAlphaBitmapParameters,
mixer_bitmap9_GetAlphaBitmapParameters,
};
static inline struct quartz_vmr *impl_from_IOverlay(IOverlay *iface) static inline struct quartz_vmr *impl_from_IOverlay(IOverlay *iface)
{ {
return CONTAINING_RECORD(iface, struct quartz_vmr, IOverlay_iface); return CONTAINING_RECORD(iface, struct quartz_vmr, IOverlay_iface);
...@@ -2379,6 +2445,7 @@ static HRESULT vmr_create(IUnknown *outer, IUnknown **out, const CLSID *clsid) ...@@ -2379,6 +2445,7 @@ static HRESULT vmr_create(IUnknown *outer, IUnknown **out, const CLSID *clsid)
object->IAMFilterMiscFlags_iface.lpVtbl = &IAMFilterMiscFlags_Vtbl; object->IAMFilterMiscFlags_iface.lpVtbl = &IAMFilterMiscFlags_Vtbl;
object->IVMRFilterConfig_iface.lpVtbl = &VMR7_FilterConfig_Vtbl; object->IVMRFilterConfig_iface.lpVtbl = &VMR7_FilterConfig_Vtbl;
object->IVMRFilterConfig9_iface.lpVtbl = &VMR9_FilterConfig_Vtbl; object->IVMRFilterConfig9_iface.lpVtbl = &VMR9_FilterConfig_Vtbl;
object->IVMRMixerBitmap9_iface.lpVtbl = &mixer_bitmap9_vtbl;
object->IVMRMonitorConfig_iface.lpVtbl = &VMR7_MonitorConfig_Vtbl; object->IVMRMonitorConfig_iface.lpVtbl = &VMR7_MonitorConfig_Vtbl;
object->IVMRMonitorConfig9_iface.lpVtbl = &VMR9_MonitorConfig_Vtbl; object->IVMRMonitorConfig9_iface.lpVtbl = &VMR9_MonitorConfig_Vtbl;
object->IVMRSurfaceAllocatorNotify_iface.lpVtbl = &VMR7_SurfaceAllocatorNotify_Vtbl; object->IVMRSurfaceAllocatorNotify_iface.lpVtbl = &VMR7_SurfaceAllocatorNotify_Vtbl;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment