ReactOS 0.4.17-dev-934-g091855f
vmr9.c File Reference
#include "quartz_private.h"
#include "uuids.h"
#include "vfwmsgs.h"
#include "amvideo.h"
#include "windef.h"
#include "winbase.h"
#include "dshow.h"
#include "evcode.h"
#include "strmif.h"
#include "ddraw.h"
#include "dvdmedia.h"
#include "d3d9.h"
#include "videoacc.h"
#include "vmr9.h"
#include "wine/debug.h"
Include dependency graph for vmr9.c:

Go to the source code of this file.

Classes

struct  quartz_vmr
 
struct  default_presenter
 
struct  get_available_monitors_args
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (quartz)
 
static const char * debugstr_normalized_rect (const VMR9NormalizedRect *rect)
 
static const BITMAPINFOHEADER * get_bitmap_header (const AM_MEDIA_TYPE *mt)
 
static const BITMAPINFOHEADER * get_filter_bitmap_header (const struct quartz_vmr *filter)
 
static struct quartz_vmr * impl_from_video_window (struct video_window *iface)
 
static struct quartz_vmr * impl_from_IAMCertifiedOutputProtection (IAMCertifiedOutputProtection *iface)
 
static struct quartz_vmr * impl_from_IAMFilterMiscFlags (IAMFilterMiscFlags *iface)
 
static struct quartz_vmr * impl_from_IVMRFilterConfig9 (IVMRFilterConfig9 *iface)
 
static struct quartz_vmr * impl_from_IVMRMonitorConfig9 (IVMRMonitorConfig9 *iface)
 
static struct quartz_vmr * impl_from_IVMRSurfaceAllocatorNotify9 (IVMRSurfaceAllocatorNotify9 *iface)
 
static struct quartz_vmr * impl_from_IVMRWindowlessControl9 (IVMRWindowlessControl9 *iface)
 
static struct default_presenter * impl_from_IVMRImagePresenter9 (IVMRImagePresenter9 *iface)
 
static struct default_presenter * impl_from_IVMRSurfaceAllocator9 (IVMRSurfaceAllocator9 *iface)
 
static HRESULT default_presenter_create (struct quartz_vmr *parent, struct default_presenter **presenter)
 
static struct quartz_vmr * impl_from_IBaseFilter (IBaseFilter *iface)
 
static void copy_plane (BYTE **dstp, unsigned int dst_pitch, unsigned int dst_height, const BYTE **srcp, unsigned int src_pitch, int src_height)
 
static HRESULT vmr_render (struct strmbase_renderer *iface, IMediaSample *sample)
 
static HRESULT vmr_query_accept (struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)
 
static HRESULT initialize_device (struct quartz_vmr *filter, VMR9AllocationInfo *info, DWORD count)
 
static HRESULT allocate_surfaces (struct quartz_vmr *filter, const AM_MEDIA_TYPE *mt)
 
static void vmr_init_stream (struct strmbase_renderer *iface)
 
static void vmr_start_stream (struct strmbase_renderer *iface)
 
static void vmr_stop_stream (struct strmbase_renderer *iface)
 
static HRESULT vmr_connect (struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)
 
static void deallocate_surfaces (struct quartz_vmr *filter)
 
static void vmr_disconnect (struct strmbase_renderer *This)
 
static void vmr_destroy (struct strmbase_renderer *iface)
 
static HRESULT vmr_query_interface (struct strmbase_renderer *iface, REFIID iid, void **out)
 
static HRESULT vmr_pin_query_interface (struct strmbase_renderer *iface, REFIID iid, void **out)
 
static void vmr_get_default_rect (struct video_window *iface, RECT *rect)
 
static HRESULT vmr_get_current_image (struct video_window *iface, LONG *size, LONG *image)
 
static HRESULT WINAPI AMCertifiedOutputProtection_QueryInterface (IAMCertifiedOutputProtection *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI AMCertifiedOutputProtection_AddRef (IAMCertifiedOutputProtection *iface)
 
static ULONG WINAPI AMCertifiedOutputProtection_Release (IAMCertifiedOutputProtection *iface)
 
static HRESULT WINAPI AMCertifiedOutputProtection_KeyExchange (IAMCertifiedOutputProtection *iface, GUID *pRandom, BYTE **VarLenCertGH, DWORD *pdwLengthCertGH)
 
static HRESULT WINAPI AMCertifiedOutputProtection_SessionSequenceStart (IAMCertifiedOutputProtection *iface, AMCOPPSignature *pSig)
 
static HRESULT WINAPI AMCertifiedOutputProtection_ProtectionCommand (IAMCertifiedOutputProtection *iface, const AMCOPPCommand *cmd)
 
static HRESULT WINAPI AMCertifiedOutputProtection_ProtectionStatus (IAMCertifiedOutputProtection *iface, const AMCOPPStatusInput *pStatusInput, AMCOPPStatusOutput *pStatusOutput)
 
static HRESULT WINAPI AMFilterMiscFlags_QueryInterface (IAMFilterMiscFlags *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI AMFilterMiscFlags_AddRef (IAMFilterMiscFlags *iface)
 
static ULONG WINAPI AMFilterMiscFlags_Release (IAMFilterMiscFlags *iface)
 
static ULONG WINAPI AMFilterMiscFlags_GetMiscFlags (IAMFilterMiscFlags *iface)
 
static BOOL CALLBACK get_available_monitors_proc (HMONITOR hmon, HDC hdc, LPRECT lprc, LPARAM lparam)
 
static HRESULT WINAPI VMR9MonitorConfig_QueryInterface (IVMRMonitorConfig9 *iface, REFIID riid, LPVOID *ppv)
 
static ULONG WINAPI VMR9MonitorConfig_AddRef (IVMRMonitorConfig9 *iface)
 
static ULONG WINAPI VMR9MonitorConfig_Release (IVMRMonitorConfig9 *iface)
 
static HRESULT WINAPI VMR9MonitorConfig_SetMonitor (IVMRMonitorConfig9 *iface, UINT uDev)
 
static HRESULT WINAPI VMR9MonitorConfig_GetMonitor (IVMRMonitorConfig9 *iface, UINT *uDev)
 
static HRESULT WINAPI VMR9MonitorConfig_SetDefaultMonitor (IVMRMonitorConfig9 *iface, UINT uDev)
 
static HRESULT WINAPI VMR9MonitorConfig_GetDefaultMonitor (IVMRMonitorConfig9 *iface, UINT *uDev)
 
static HRESULT WINAPI VMR9MonitorConfig_GetAvailableMonitors (IVMRMonitorConfig9 *iface, VMR9MonitorInfo *info, DWORD arraysize, DWORD *numdev)
 
static HRESULT WINAPI VMR9FilterConfig_QueryInterface (IVMRFilterConfig9 *iface, REFIID riid, LPVOID *ppv)
 
static ULONG WINAPI VMR9FilterConfig_AddRef (IVMRFilterConfig9 *iface)
 
static ULONG WINAPI VMR9FilterConfig_Release (IVMRFilterConfig9 *iface)
 
static HRESULT WINAPI VMR9FilterConfig_SetImageCompositor (IVMRFilterConfig9 *iface, IVMRImageCompositor9 *compositor)
 
static HRESULT WINAPI VMR9FilterConfig_SetNumberOfStreams (IVMRFilterConfig9 *iface, DWORD count)
 
static HRESULT WINAPI VMR9FilterConfig_GetNumberOfStreams (IVMRFilterConfig9 *iface, DWORD *count)
 
static HRESULT WINAPI VMR9FilterConfig_SetRenderingPrefs (IVMRFilterConfig9 *iface, DWORD flags)
 
static HRESULT WINAPI VMR9FilterConfig_GetRenderingPrefs (IVMRFilterConfig9 *iface, DWORD *renderflags)
 
static HRESULT WINAPI VMR9FilterConfig_SetRenderingMode (IVMRFilterConfig9 *iface, DWORD mode)
 
static HRESULT WINAPI VMR9FilterConfig_GetRenderingMode (IVMRFilterConfig9 *iface, DWORD *mode)
 
static HRESULT WINAPI VMR9WindowlessControl_QueryInterface (IVMRWindowlessControl9 *iface, REFIID riid, LPVOID *ppv)
 
static ULONG WINAPI VMR9WindowlessControl_AddRef (IVMRWindowlessControl9 *iface)
 
static ULONG WINAPI VMR9WindowlessControl_Release (IVMRWindowlessControl9 *iface)
 
static HRESULT WINAPI VMR9WindowlessControl_GetNativeVideoSize (IVMRWindowlessControl9 *iface, LONG *width, LONG *height, LONG *aspect_width, LONG *aspect_height)
 
static HRESULT WINAPI VMR9WindowlessControl_GetMinIdealVideoSize (IVMRWindowlessControl9 *iface, LONG *width, LONG *height)
 
static HRESULT WINAPI VMR9WindowlessControl_GetMaxIdealVideoSize (IVMRWindowlessControl9 *iface, LONG *width, LONG *height)
 
static HRESULT WINAPI VMR9WindowlessControl_SetVideoPosition (IVMRWindowlessControl9 *iface, const RECT *src, const RECT *dst)
 
static HRESULT WINAPI VMR9WindowlessControl_GetVideoPosition (IVMRWindowlessControl9 *iface, RECT *src, RECT *dst)
 
static HRESULT WINAPI VMR9WindowlessControl_GetAspectRatioMode (IVMRWindowlessControl9 *iface, DWORD *mode)
 
static HRESULT WINAPI VMR9WindowlessControl_SetAspectRatioMode (IVMRWindowlessControl9 *iface, DWORD mode)
 
static HRESULT WINAPI VMR9WindowlessControl_SetVideoClippingWindow (IVMRWindowlessControl9 *iface, HWND window)
 
static HRESULT WINAPI VMR9WindowlessControl_RepaintVideo (IVMRWindowlessControl9 *iface, HWND hwnd, HDC hdc)
 
static HRESULT WINAPI VMR9WindowlessControl_DisplayModeChanged (IVMRWindowlessControl9 *iface)
 
static HRESULT WINAPI VMR9WindowlessControl_GetCurrentImage (IVMRWindowlessControl9 *iface, BYTE **dib)
 
static HRESULT WINAPI VMR9WindowlessControl_SetBorderColor (IVMRWindowlessControl9 *iface, COLORREF color)
 
static HRESULT WINAPI VMR9WindowlessControl_GetBorderColor (IVMRWindowlessControl9 *iface, COLORREF *color)
 
static HRESULT WINAPI VMR9SurfaceAllocatorNotify_QueryInterface (IVMRSurfaceAllocatorNotify9 *iface, REFIID riid, LPVOID *ppv)
 
static ULONG WINAPI VMR9SurfaceAllocatorNotify_AddRef (IVMRSurfaceAllocatorNotify9 *iface)
 
static ULONG WINAPI VMR9SurfaceAllocatorNotify_Release (IVMRSurfaceAllocatorNotify9 *iface)
 
static HRESULT WINAPI VMR9SurfaceAllocatorNotify_AdviseSurfaceAllocator (IVMRSurfaceAllocatorNotify9 *iface, DWORD_PTR cookie, IVMRSurfaceAllocator9 *allocator)
 
static HRESULT WINAPI VMR9SurfaceAllocatorNotify_SetD3DDevice (IVMRSurfaceAllocatorNotify9 *iface, IDirect3DDevice9 *device, HMONITOR monitor)
 
static HRESULT WINAPI VMR9SurfaceAllocatorNotify_ChangeD3DDevice (IVMRSurfaceAllocatorNotify9 *iface, IDirect3DDevice9 *device, HMONITOR monitor)
 
static HRESULT WINAPI VMR9SurfaceAllocatorNotify_AllocateSurfaceHelper (IVMRSurfaceAllocatorNotify9 *iface, VMR9AllocationInfo *allocinfo, DWORD *numbuffers, IDirect3DSurface9 **surface)
 
static HRESULT WINAPI VMR9SurfaceAllocatorNotify_NotifyEvent (IVMRSurfaceAllocatorNotify9 *iface, LONG code, LONG_PTR param1, LONG_PTR param2)
 
static struct quartz_vmr * impl_from_IVMRMixerControl9 (IVMRMixerControl9 *iface)
 
static HRESULT WINAPI mixer_control9_QueryInterface (IVMRMixerControl9 *iface, REFIID iid, void **out)
 
static ULONG WINAPI mixer_control9_AddRef (IVMRMixerControl9 *iface)
 
static ULONG WINAPI mixer_control9_Release (IVMRMixerControl9 *iface)
 
static HRESULT WINAPI mixer_control9_SetAlpha (IVMRMixerControl9 *iface, DWORD stream, float alpha)
 
static HRESULT WINAPI mixer_control9_GetAlpha (IVMRMixerControl9 *iface, DWORD stream, float *alpha)
 
static HRESULT WINAPI mixer_control9_SetZOrder (IVMRMixerControl9 *iface, DWORD stream, DWORD z)
 
static HRESULT WINAPI mixer_control9_GetZOrder (IVMRMixerControl9 *iface, DWORD stream, DWORD *z)
 
static HRESULT WINAPI mixer_control9_SetOutputRect (IVMRMixerControl9 *iface, DWORD stream, const VMR9NormalizedRect *rect)
 
static HRESULT WINAPI mixer_control9_GetOutputRect (IVMRMixerControl9 *iface, DWORD stream, VMR9NormalizedRect *rect)
 
static HRESULT WINAPI mixer_control9_SetBackgroundClr (IVMRMixerControl9 *iface, COLORREF color)
 
static HRESULT WINAPI mixer_control9_GetBackgroundClr (IVMRMixerControl9 *iface, COLORREF *color)
 
static HRESULT WINAPI mixer_control9_SetMixingPrefs (IVMRMixerControl9 *iface, DWORD flags)
 
static HRESULT WINAPI mixer_control9_GetMixingPrefs (IVMRMixerControl9 *iface, DWORD *flags)
 
static HRESULT WINAPI mixer_control9_SetProcAmpControl (IVMRMixerControl9 *iface, DWORD stream, VMR9ProcAmpControl *settings)
 
static HRESULT WINAPI mixer_control9_GetProcAmpControl (IVMRMixerControl9 *iface, DWORD stream, VMR9ProcAmpControl *settings)
 
static HRESULT WINAPI mixer_control9_GetProcAmpControlRange (IVMRMixerControl9 *iface, DWORD stream, VMR9ProcAmpControlRange *settings)
 
static struct quartz_vmr * impl_from_IVMRMixerBitmap9 (IVMRMixerBitmap9 *iface)
 
static HRESULT WINAPI mixer_bitmap9_QueryInterface (IVMRMixerBitmap9 *iface, REFIID iid, void **out)
 
static ULONG WINAPI mixer_bitmap9_AddRef (IVMRMixerBitmap9 *iface)
 
static ULONG WINAPI mixer_bitmap9_Release (IVMRMixerBitmap9 *iface)
 
static HRESULT WINAPI mixer_bitmap9_SetAlphaBitmap (IVMRMixerBitmap9 *iface, const VMR9AlphaBitmap *bitmap)
 
static HRESULT WINAPI mixer_bitmap9_UpdateAlphaBitmapParameters (IVMRMixerBitmap9 *iface, const VMR9AlphaBitmap *bitmap)
 
static HRESULT WINAPI mixer_bitmap9_GetAlphaBitmapParameters (IVMRMixerBitmap9 *iface, VMR9AlphaBitmap *bitmap)
 
static struct quartz_vmr * impl_from_IVMRAspectRatioControl9 (IVMRAspectRatioControl9 *iface)
 
static HRESULT WINAPI aspect_ratio_control9_QueryInterface (IVMRAspectRatioControl9 *iface, REFIID iid, void **out)
 
static ULONG WINAPI aspect_ratio_control9_AddRef (IVMRAspectRatioControl9 *iface)
 
static ULONG WINAPI aspect_ratio_control9_Release (IVMRAspectRatioControl9 *iface)
 
static HRESULT WINAPI aspect_ratio_control9_GetAspectRatioMode (IVMRAspectRatioControl9 *iface, DWORD *mode)
 
static HRESULT WINAPI aspect_ratio_control9_SetAspectRatioMode (IVMRAspectRatioControl9 *iface, DWORD mode)
 
static struct quartz_vmr * impl_from_IAMVideoAccelerator (IAMVideoAccelerator *iface)
 
static HRESULT WINAPI video_accelerator_QueryInterface (IAMVideoAccelerator *iface, REFIID iid, void **out)
 
static ULONG WINAPI video_accelerator_AddRef (IAMVideoAccelerator *iface)
 
static ULONG WINAPI video_accelerator_Release (IAMVideoAccelerator *iface)
 
static HRESULT WINAPI video_accelerator_GetVideoAcceleratorGUIDs (IAMVideoAccelerator *iface, DWORD *count, GUID *accelerators)
 
static HRESULT WINAPI video_accelerator_GetUncompFormatsSupported (IAMVideoAccelerator *iface, const GUID *accelerator, DWORD *count, DDPIXELFORMAT *formats)
 
static HRESULT WINAPI video_accelerator_GetInternalMemInfo (IAMVideoAccelerator *iface, const GUID *accelerator, const AMVAUncompDataInfo *format_info, AMVAInternalMemInfo *mem_info)
 
static HRESULT WINAPI video_accelerator_GetCompBufferInfo (IAMVideoAccelerator *iface, const GUID *accelerator, const AMVAUncompDataInfo *uncompressed_info, DWORD *compressed_info_count, AMVACompBufferInfo *compressed_infos)
 
static HRESULT WINAPI video_accelerator_GetInternalCompBufferInfo (IAMVideoAccelerator *iface, DWORD *count, AMVACompBufferInfo *infos)
 
static HRESULT WINAPI video_accelerator_BeginFrame (IAMVideoAccelerator *iface, const AMVABeginFrameInfo *info)
 
static HRESULT WINAPI video_accelerator_EndFrame (IAMVideoAccelerator *iface, const AMVAEndFrameInfo *info)
 
static HRESULT WINAPI video_accelerator_GetBuffer (IAMVideoAccelerator *iface, DWORD type_index, DWORD buffer_index, BOOL read_only, void **buffer, LONG *stride)
 
static HRESULT WINAPI video_accelerator_ReleaseBuffer (IAMVideoAccelerator *iface, DWORD type_index, DWORD buffer_index)
 
static HRESULT WINAPI video_accelerator_Execute (IAMVideoAccelerator *iface, DWORD function, void *in_data, DWORD in_size, void *out_data, DWORD out_size, DWORD buffer_count, const AMVABUFFERINFO *buffers)
 
static HRESULT WINAPI video_accelerator_QueryRenderStatus (IAMVideoAccelerator *iface, DWORD type_index, DWORD buffer_index, DWORD flags)
 
static HRESULT WINAPI video_accelerator_DisplayFrame (IAMVideoAccelerator *iface, DWORD index, IMediaSample *sample)
 
static struct quartz_vmr * impl_from_IOverlay (IOverlay *iface)
 
static HRESULT WINAPI overlay_QueryInterface (IOverlay *iface, REFIID iid, void **out)
 
static ULONG WINAPI overlay_AddRef (IOverlay *iface)
 
static ULONG WINAPI overlay_Release (IOverlay *iface)
 
static HRESULT WINAPI overlay_GetPalette (IOverlay *iface, DWORD *count, PALETTEENTRY **palette)
 
static HRESULT WINAPI overlay_SetPalette (IOverlay *iface, DWORD count, PALETTEENTRY *palette)
 
static HRESULT WINAPI overlay_GetDefaultColorKey (IOverlay *iface, COLORKEY *key)
 
static HRESULT WINAPI overlay_GetColorKey (IOverlay *iface, COLORKEY *key)
 
static HRESULT WINAPI overlay_SetColorKey (IOverlay *iface, COLORKEY *key)
 
static HRESULT WINAPI overlay_GetWindowHandle (IOverlay *iface, HWND *window)
 
static HRESULT WINAPI overlay_GetClipList (IOverlay *iface, RECT *source, RECT *dest, RGNDATA **region)
 
static HRESULT WINAPI overlay_GetVideoPosition (IOverlay *iface, RECT *source, RECT *dest)
 
static HRESULT WINAPI overlay_Advise (IOverlay *iface, IOverlayNotify *sink, DWORD flags)
 
static HRESULT WINAPI overlay_Unadvise (IOverlay *iface)
 
HRESULT vmr9_create (IUnknown *outer, IUnknown **out)
 
static HRESULT WINAPI VMR9_ImagePresenter_QueryInterface (IVMRImagePresenter9 *iface, REFIID riid, void **ppv)
 
static ULONG WINAPI VMR9_ImagePresenter_AddRef (IVMRImagePresenter9 *iface)
 
static ULONG WINAPI VMR9_ImagePresenter_Release (IVMRImagePresenter9 *iface)
 
static HRESULT WINAPI VMR9_ImagePresenter_StartPresenting (IVMRImagePresenter9 *iface, DWORD_PTR cookie)
 
static HRESULT WINAPI VMR9_ImagePresenter_StopPresenting (IVMRImagePresenter9 *iface, DWORD_PTR cookie)
 
static HRESULT WINAPI VMR9_ImagePresenter_PresentImage (IVMRImagePresenter9 *iface, DWORD_PTR cookie, VMR9PresentationInfo *info)
 
static HRESULT WINAPI VMR9_SurfaceAllocator_QueryInterface (IVMRSurfaceAllocator9 *iface, REFIID iid, void **out)
 
static ULONG WINAPI VMR9_SurfaceAllocator_AddRef (IVMRSurfaceAllocator9 *iface)
 
static ULONG WINAPI VMR9_SurfaceAllocator_Release (IVMRSurfaceAllocator9 *iface)
 
static void adjust_surface_size (const D3DCAPS9 *caps, VMR9AllocationInfo *allocinfo)
 
static UINT d3d9_adapter_from_hwnd (IDirect3D9 *d3d9, HWND hwnd, HMONITOR *mon_out)
 
static HRESULT WINAPI VMR9_SurfaceAllocator_InitializeDevice (IVMRSurfaceAllocator9 *iface, DWORD_PTR cookie, VMR9AllocationInfo *info, DWORD *numbuffers)
 
static HRESULT WINAPI VMR9_SurfaceAllocator_TerminateDevice (IVMRSurfaceAllocator9 *iface, DWORD_PTR cookie)
 
static HRESULT WINAPI VMR9_SurfaceAllocator_GetSurface (IVMRSurfaceAllocator9 *iface, DWORD_PTR cookie, DWORD surfaceindex, DWORD flags, IDirect3DSurface9 **surface)
 
static HRESULT WINAPI VMR9_SurfaceAllocator_AdviseNotify (IVMRSurfaceAllocator9 *iface, IVMRSurfaceAllocatorNotify9 *notify)
 
static IDirect3D9 * init_d3d9 (HMODULE d3d9_handle)
 

Variables

static const struct strmbase_renderer_ops renderer_ops
 
static const struct video_window_ops window_ops
 
static const IVideoWindowVtbl IVideoWindow_VTable
 
static const IAMCertifiedOutputProtectionVtbl IAMCertifiedOutputProtection_Vtbl
 
static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_Vtbl
 
static const IVMRMonitorConfig9Vtbl VMR9_MonitorConfig_Vtbl
 
static const IVMRFilterConfig9Vtbl VMR9_FilterConfig_Vtbl
 
static const IVMRWindowlessControl9Vtbl VMR9_WindowlessControl_Vtbl
 
static const IVMRSurfaceAllocatorNotify9Vtbl VMR9_SurfaceAllocatorNotify_Vtbl
 
static const IVMRMixerControl9Vtbl mixer_control9_vtbl
 
static const IVMRMixerBitmap9Vtbl mixer_bitmap9_vtbl
 
static const IVMRAspectRatioControl9Vtbl aspect_ratio_control9_vtbl
 
static const IAMVideoAcceleratorVtbl video_accelerator_vtbl
 
static const IOverlayVtbl overlay_vtbl
 
static const IVMRImagePresenter9Vtbl VMR9_ImagePresenter
 
static const IVMRSurfaceAllocator9Vtbl VMR9_SurfaceAllocator
 

Function Documentation

◆ adjust_surface_size()

static void adjust_surface_size ( const D3DCAPS9 *  caps,
VMR9AllocationInfo *  allocinfo 
)
static

Definition at line 2398 of file vmr9.c.

2399{
2400 UINT width, height;
2401
2402 /* There are no restrictions on the size of offscreen surfaces. */
2403 if (!(allocinfo->dwFlags & VMR9AllocFlag_TextureSurface))
2404 return;
2405
2407 {
2408 width = allocinfo->dwWidth;
2409 height = allocinfo->dwHeight;
2410 }
2411 else
2412 {
2413 width = height = 1;
2414 while (width < allocinfo->dwWidth)
2415 width *= 2;
2416
2417 while (height < allocinfo->dwHeight)
2418 height *= 2;
2419 FIXME("NPOW2 support missing, not using proper surfaces!\n");
2420 }
2421
2423 {
2424 if (height > width)
2425 width = height;
2426 else
2427 height = width;
2428 FIXME("Square texture support required..\n");
2429 }
2430
2431 allocinfo->dwHeight = height;
2432 allocinfo->dwWidth = width;
2433}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define D3DPTEXTURECAPS_SQUAREONLY
Definition: d3d8caps.h:116
#define D3DPTEXTURECAPS_POW2
Definition: d3d8caps.h:114
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLint GLsizei width
Definition: gl.h:1546
unsigned int UINT
Definition: sysinfo.c:13
DWORD TextureCaps
Definition: d3d9caps.h:279
@ VMR9AllocFlag_TextureSurface
Definition: vmr9.idl:87

Referenced by VMR9_SurfaceAllocator_InitializeDevice().

◆ allocate_surfaces()

static HRESULT allocate_surfaces ( struct quartz_vmr *  filter,
const AM_MEDIA_TYPE *  mt 
)
static

Definition at line 385 of file vmr9.c.

386{
387#ifdef __REACTOS__ /* '{}' initializer is C23; MSVC before 19.32 rejects it */
389#else
391#endif
392 HRESULT hr = E_FAIL;
393 DWORD count = 1;
394 unsigned int i;
395 const BITMAPINFOHEADER *bmiheader = get_bitmap_header(mt);
396
397 static const struct
398 {
399 const GUID *subtype;
401 DWORD flags;
402 }
403 formats[] =
404 {
405 {&MEDIASUBTYPE_ARGB1555, D3DFMT_A1R5G5B5, VMR9AllocFlag_TextureSurface},
406 {&MEDIASUBTYPE_ARGB32, D3DFMT_A8R8G8B8, VMR9AllocFlag_TextureSurface},
407 {&MEDIASUBTYPE_ARGB4444, D3DFMT_A4R4G4B4, VMR9AllocFlag_TextureSurface},
408
413
414 {&MEDIASUBTYPE_NV12, MAKEFOURCC('N','V','1','2'), VMR9AllocFlag_OffscreenSurface},
415 {&MEDIASUBTYPE_UYVY, D3DFMT_UYVY, VMR9AllocFlag_OffscreenSurface},
416 {&MEDIASUBTYPE_YUY2, D3DFMT_YUY2, VMR9AllocFlag_OffscreenSurface},
417 {&MEDIASUBTYPE_YV12, MAKEFOURCC('Y','V','1','2'), VMR9AllocFlag_OffscreenSurface},
418 };
419
420 TRACE("Initializing in mode %u, our window %p, clipping window %p.\n",
421 filter->mode, filter->window.hwnd, filter->clipping_window);
422
423 if (filter->mode == VMR9Mode_Windowless && !filter->clipping_window)
424 return S_OK;
425
426 info.Pool = D3DPOOL_DEFAULT;
427 info.MinBuffers = count;
428 info.dwWidth = info.szAspectRatio.cx = info.szNativeSize.cx = bmiheader->biWidth;
429 info.dwHeight = info.szAspectRatio.cy = info.szNativeSize.cy = bmiheader->biHeight;
430
431 if (!(filter->surfaces = calloc(count, sizeof(IDirect3DSurface9 *))))
432 return E_OUTOFMEMORY;
433 filter->num_surfaces = count;
434 filter->cur_surface = 0;
435
436 for (i = 0; i < ARRAY_SIZE(formats); ++i)
437 {
438 if (IsEqualGUID(&mt->subtype, formats[i].subtype))
439 {
440 info.Format = formats[i].format;
441
443 {
446 return hr;
447 }
448
450 {
453 return hr;
454 }
455 }
456 }
457
458 free(filter->surfaces);
460}
#define ARRAY_SIZE(A)
Definition: main.h:20
@ D3DFMT_A1R5G5B5
Definition: d3d8types.h:608
@ D3DFMT_UYVY
Definition: d3d8types.h:632
@ D3DFMT_YUY2
Definition: d3d8types.h:633
@ D3DFMT_X1R5G5B5
Definition: d3d8types.h:607
@ D3DFMT_R8G8B8
Definition: d3d8types.h:603
@ D3DFMT_A8R8G8B8
Definition: d3d8types.h:604
@ D3DFMT_R5G6B5
Definition: d3d8types.h:606
@ D3DFMT_A4R4G4B4
Definition: d3d8types.h:609
@ D3DFMT_X8R8G8B8
Definition: d3d8types.h:605
@ D3DPOOL_DEFAULT
Definition: d3d8types.h:709
enum _D3DFORMAT D3DFORMAT
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_FAIL
Definition: ddrawi.h:102
#define free
Definition: debug_ros.c:5
HRESULT hr
Definition: delayimp.cpp:582
static const struct pixel_format_desc formats[]
Definition: util.c:31
static HRESULT initialize_device(struct quartz_vmr *filter, VMR9AllocationInfo *info, DWORD count)
Definition: vmr9.c:357
static const BITMAPINFOHEADER * get_bitmap_header(const AM_MEDIA_TYPE *mt)
Definition: vmr9.c:49
#define MAKEFOURCC(ch0, ch1, ch2, ch3)
Definition: ddsformat.c:45
DWORD IDirect3DSurface9
Definition: dxva2api.idl:23
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLbitfield flags
Definition: glext.h:7161
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
const GUID * subtype
Definition: mpegvideo.c:120
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define calloc
Definition: rosglue.h:14
#define TRACE(s)
Definition: solgame.cpp:4
Definition: filter.c:165
#define VFW_E_TYPE_NOT_ACCEPTED
Definition: vfwmsgs.h:81
@ VMR9AllocFlag_OffscreenSurface
Definition: vmr9.idl:88
@ VMR9Mode_Windowless
Definition: vmr9.idl:355

Referenced by VMR9SurfaceAllocatorNotify_ChangeD3DDevice(), and vmr_connect().

◆ AMCertifiedOutputProtection_AddRef()

static ULONG WINAPI AMCertifiedOutputProtection_AddRef ( IAMCertifiedOutputProtection *  iface)
static

Definition at line 758 of file vmr9.c.

759{
761 return IUnknown_AddRef(This->renderer.filter.outer_unk);
762}
static struct quartz_vmr * impl_from_IAMCertifiedOutputProtection(IAMCertifiedOutputProtection *iface)
Definition: vmr9.c:118

◆ AMCertifiedOutputProtection_KeyExchange()

static HRESULT WINAPI AMCertifiedOutputProtection_KeyExchange ( IAMCertifiedOutputProtection *  iface,
GUID *  pRandom,
BYTE **  VarLenCertGH,
DWORD *  pdwLengthCertGH 
)
static

Definition at line 770 of file vmr9.c.

773{
775
776 FIXME("(%p/%p)->(%p, %p, %p) stub\n", iface, This, pRandom, VarLenCertGH, pdwLengthCertGH);
777 return VFW_E_NO_COPP_HW;
778}
#define VFW_E_NO_COPP_HW
Definition: vfwmsgs.h:160

◆ AMCertifiedOutputProtection_ProtectionCommand()

static HRESULT WINAPI AMCertifiedOutputProtection_ProtectionCommand ( IAMCertifiedOutputProtection *  iface,
const AMCOPPCommand *  cmd 
)
static

Definition at line 789 of file vmr9.c.

791{
793
794 FIXME("(%p/%p)->(%p) stub\n", iface, This, cmd);
795 return VFW_E_NO_COPP_HW;
796}
Definition: ftp_var.h:139

◆ AMCertifiedOutputProtection_ProtectionStatus()

static HRESULT WINAPI AMCertifiedOutputProtection_ProtectionStatus ( IAMCertifiedOutputProtection *  iface,
const AMCOPPStatusInput *  pStatusInput,
AMCOPPStatusOutput *  pStatusOutput 
)
static

Definition at line 798 of file vmr9.c.

801{
803
804 FIXME("(%p/%p)->(%p, %p) stub\n", iface, This, pStatusInput, pStatusOutput);
805 return VFW_E_NO_COPP_HW;
806}

◆ AMCertifiedOutputProtection_QueryInterface()

static HRESULT WINAPI AMCertifiedOutputProtection_QueryInterface ( IAMCertifiedOutputProtection *  iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 751 of file vmr9.c.

753{
755 return IUnknown_QueryInterface(This->renderer.filter.outer_unk, riid, ppv);
756}
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39

◆ AMCertifiedOutputProtection_Release()

static ULONG WINAPI AMCertifiedOutputProtection_Release ( IAMCertifiedOutputProtection *  iface)
static

Definition at line 764 of file vmr9.c.

765{
767 return IUnknown_Release(This->renderer.filter.outer_unk);
768}

◆ AMCertifiedOutputProtection_SessionSequenceStart()

static HRESULT WINAPI AMCertifiedOutputProtection_SessionSequenceStart ( IAMCertifiedOutputProtection *  iface,
AMCOPPSignature *  pSig 
)
static

Definition at line 780 of file vmr9.c.

782{
784
785 FIXME("(%p/%p)->(%p) stub\n", iface, This, pSig);
786 return VFW_E_NO_COPP_HW;
787}

◆ AMFilterMiscFlags_AddRef()

static ULONG WINAPI AMFilterMiscFlags_AddRef ( IAMFilterMiscFlags *  iface)
static

Definition at line 824 of file vmr9.c.

824 {
826 return IUnknown_AddRef(This->renderer.filter.outer_unk);
827}
static struct quartz_vmr * impl_from_IAMFilterMiscFlags(IAMFilterMiscFlags *iface)
Definition: vmr9.c:123

◆ AMFilterMiscFlags_GetMiscFlags()

static ULONG WINAPI AMFilterMiscFlags_GetMiscFlags ( IAMFilterMiscFlags *  iface)
static

Definition at line 834 of file vmr9.c.

834 {
836}
@ AM_FILTER_MISC_FLAGS_IS_RENDERER
Definition: axextend.idl:1244

◆ AMFilterMiscFlags_QueryInterface()

static HRESULT WINAPI AMFilterMiscFlags_QueryInterface ( IAMFilterMiscFlags *  iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 819 of file vmr9.c.

819 {
821 return IUnknown_QueryInterface(This->renderer.filter.outer_unk, riid, ppv);
822}

◆ AMFilterMiscFlags_Release()

static ULONG WINAPI AMFilterMiscFlags_Release ( IAMFilterMiscFlags *  iface)
static

Definition at line 829 of file vmr9.c.

829 {
831 return IUnknown_Release(This->renderer.filter.outer_unk);
832}

◆ aspect_ratio_control9_AddRef()

static ULONG WINAPI aspect_ratio_control9_AddRef ( IVMRAspectRatioControl9 *  iface)
static

Definition at line 1884 of file vmr9.c.

1885{
1887 return IUnknown_AddRef(filter->renderer.filter.outer_unk);
1888}
static struct quartz_vmr * impl_from_IVMRAspectRatioControl9(IVMRAspectRatioControl9 *iface)
Definition: vmr9.c:1873
IBaseFilter * filter
Definition: filtergraph.c:75

◆ aspect_ratio_control9_GetAspectRatioMode()

static HRESULT WINAPI aspect_ratio_control9_GetAspectRatioMode ( IVMRAspectRatioControl9 *  iface,
DWORD *  mode 
)
static

Definition at line 1896 of file vmr9.c.

1897{
1899
1900 TRACE("filter %p, mode %p.\n", filter, mode);
1901
1902 EnterCriticalSection(&filter->renderer.filter.filter_cs);
1903 *mode = filter->aspect_mode;
1904 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1905 return S_OK;
1906}
GLenum mode
Definition: glext.h:6217
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

◆ aspect_ratio_control9_QueryInterface()

static HRESULT WINAPI aspect_ratio_control9_QueryInterface ( IVMRAspectRatioControl9 *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 1878 of file vmr9.c.

1879{
1881 return IUnknown_QueryInterface(filter->renderer.filter.outer_unk, iid, out);
1882}
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

◆ aspect_ratio_control9_Release()

static ULONG WINAPI aspect_ratio_control9_Release ( IVMRAspectRatioControl9 *  iface)
static

Definition at line 1890 of file vmr9.c.

1891{
1893 return IUnknown_Release(filter->renderer.filter.outer_unk);
1894}

◆ aspect_ratio_control9_SetAspectRatioMode()

static HRESULT WINAPI aspect_ratio_control9_SetAspectRatioMode ( IVMRAspectRatioControl9 *  iface,
DWORD  mode 
)
static

Definition at line 1908 of file vmr9.c.

1909{
1911
1912 TRACE("filter %p, mode %lu.\n", filter, mode);
1913
1914 EnterCriticalSection(&filter->renderer.filter.filter_cs);
1915 filter->aspect_mode = mode;
1916 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1917 return S_OK;
1918}

◆ copy_plane()

static void copy_plane ( BYTE **  dstp,
unsigned int  dst_pitch,
unsigned int  dst_height,
const BYTE **  srcp,
unsigned int  src_pitch,
int  src_height 
)
static

Definition at line 184 of file vmr9.c.

186{
187 size_t copy_size = min(src_pitch, dst_pitch);
188 const BYTE *src = *srcp;
189 BYTE *dst = *dstp;
190 unsigned int i;
191
192 if (src_height < 0)
193 {
194 TRACE("Inverting image.\n");
195
196 src_height = -src_height;
197 src += src_height * src_pitch;
198
199 for (i = 0; i < src_height; ++i)
200 {
201 src -= src_pitch;
202 memcpy(dst, src, copy_size);
203 dst += dst_pitch;
204 }
205 }
206 else
207 {
208 for (i = 0; i < src_height; ++i)
209 {
210 memcpy(dst, src, copy_size);
211 dst += dst_pitch;
212 src += src_pitch;
213 }
214 }
215
216 *srcp += src_pitch * src_height;
217 *dstp += dst_pitch * dst_height;
218}
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define min(a, b)
Definition: monoChain.cc:55
unsigned char BYTE
Definition: xxhash.c:193

Referenced by vmr_render().

◆ d3d9_adapter_from_hwnd()

static UINT d3d9_adapter_from_hwnd ( IDirect3D9 *  d3d9,
HWND  hwnd,
HMONITOR *  mon_out 
)
static

Definition at line 2435 of file vmr9.c.

2436{
2437 UINT d3d9_adapter;
2438 HMONITOR mon;
2439
2440 mon = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONULL);
2441 if (!mon)
2442 d3d9_adapter = 0;
2443 else
2444 {
2445 for (d3d9_adapter = 0; d3d9_adapter < IDirect3D9_GetAdapterCount(d3d9); ++d3d9_adapter)
2446 {
2447 if (mon == IDirect3D9_GetAdapterMonitor(d3d9, d3d9_adapter))
2448 break;
2449 }
2450 if (d3d9_adapter >= IDirect3D9_GetAdapterCount(d3d9))
2451 d3d9_adapter = 0;
2452 }
2453 if (mon_out)
2454 *mon_out = mon;
2455 return d3d9_adapter;
2456}
#define IDirect3D9_GetAdapterMonitor(p, a)
Definition: d3d9.h:223
#define IDirect3D9_GetAdapterCount(p)
Definition: d3d9.h:212
HMONITOR WINAPI MonitorFromWindow(HWND, DWORD)
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023

Referenced by VMR9_SurfaceAllocator_InitializeDevice().

◆ deallocate_surfaces()

static void deallocate_surfaces ( struct quartz_vmr *  filter)
static

Definition at line 511 of file vmr9.c.

512{
513 DWORD i;
514
515 if (filter->mode && filter->allocator && filter->presenter)
516 {
517 for (i = 0; i < filter->num_surfaces; ++i)
519 free(filter->surfaces);
520
521 IVMRSurfaceAllocator9_TerminateDevice(filter->allocator, filter->cookie);
522 filter->num_surfaces = 0;
523 }
524}
#define IDirect3DSurface9_Release(p)
Definition: d3d9.h:450

Referenced by VMR9SurfaceAllocatorNotify_ChangeD3DDevice(), and vmr_disconnect().

◆ debugstr_normalized_rect()

static const char * debugstr_normalized_rect ( const VMR9NormalizedRect *  rect)
inlinestatic

Definition at line 43 of file vmr9.c.

44{
45 if (!rect) return "(null)";
46 return wine_dbg_sprintf("(%.8e,%.8e)-(%.8e,%.8e)", rect->left, rect->top, rect->right, rect->bottom);
47}
RECT rect
Definition: combotst.c:67
const char * wine_dbg_sprintf(const char *format,...)
Definition: compat.c:296
long bottom
Definition: dcommon.idl:29
long right
Definition: dcommon.idl:29
long left
Definition: dcommon.idl:29
long top
Definition: dcommon.idl:29

Referenced by mixer_bitmap9_SetAlphaBitmap(), and mixer_control9_SetOutputRect().

◆ default_presenter_create()

static HRESULT default_presenter_create ( struct quartz_vmr *  parent,
struct default_presenter **  presenter 
)
static

Definition at line 2590 of file vmr9.c.

2591{
2592 struct default_presenter *object;
2593
2594 if (!(object = calloc(1, sizeof(*object))))
2595 return E_OUTOFMEMORY;
2596
2597 object->d3d9_ptr = init_d3d9(parent->hD3d9);
2598 if (!object->d3d9_ptr)
2599 {
2600 WARN("Could not initialize d3d9.dll\n");
2601 free(object);
2603 }
2604
2605 object->IVMRImagePresenter9_iface.lpVtbl = &VMR9_ImagePresenter;
2606 object->IVMRSurfaceAllocator9_iface.lpVtbl = &VMR9_SurfaceAllocator;
2607
2608 object->refCount = 1;
2609 object->pVMR9 = parent;
2610
2611 TRACE("Created default presenter %p.\n", object);
2612 *presenter = object;
2613 return S_OK;
2614}
#define WARN(fmt,...)
Definition: precomp.h:61
static const IVMRSurfaceAllocator9Vtbl VMR9_SurfaceAllocator
Definition: vmr9.c:2569
static const IVMRImagePresenter9Vtbl VMR9_ImagePresenter
Definition: vmr9.c:2370
static IDirect3D9 * init_d3d9(HMODULE d3d9_handle)
Definition: vmr9.c:2580
r parent
Definition: btrfs.c:3010
#define VFW_E_DDRAW_CAPS_NOT_SUITABLE
Definition: vfwmsgs.h:124

Referenced by VMR9FilterConfig_SetRenderingMode().

◆ get_available_monitors_proc()

static BOOL CALLBACK get_available_monitors_proc ( HMONITOR  hmon,
HDC  hdc,
LPRECT  lprc,
LPARAM  lparam 
)
static

Definition at line 853 of file vmr9.c.

854{
857
858 if (args->info7 || args->info9)
859 {
860
861 if (!args->arraysize)
862 return FALSE;
863
864 mi.cbSize = sizeof(mi);
866 return TRUE;
867
868 /* fill VMRMONITORINFO struct */
869 if (args->info7)
870 {
871 VMRMONITORINFO *info = args->info7++;
872 memset(info, 0, sizeof(*info));
873
874 if (args->numdev > 0)
875 {
876 info->guid.pGUID = &info->guid.GUID;
877 info->guid.GUID.Data4[7] = args->numdev;
878 }
879 else
880 info->guid.pGUID = NULL;
881
882 info->rcMonitor = mi.rcMonitor;
883 info->hMon = hmon;
884 info->dwFlags = mi.dwFlags;
885
886 lstrcpynW(info->szDevice, mi.szDevice, ARRAY_SIZE(info->szDevice));
887
888 /* FIXME: how to get these values? */
889 info->szDescription[0] = 0;
890 }
891
892 /* fill VMR9MonitorInfo struct */
893 if (args->info9)
894 {
895 VMR9MonitorInfo *info = args->info9++;
896 memset(info, 0, sizeof(*info));
897
898 info->uDevID = 0; /* FIXME */
899 info->rcMonitor = mi.rcMonitor;
900 info->hMon = hmon;
901 info->dwFlags = mi.dwFlags;
902
903 lstrcpynW(info->szDevice, mi.szDevice, ARRAY_SIZE(info->szDevice));
904
905 /* FIXME: how to get these values? */
906 info->szDescription[0] = 0;
907 info->dwVendorId = 0;
908 info->dwDeviceId = 0;
909 info->dwSubSysId = 0;
910 info->dwRevision = 0;
911 }
912
913 args->arraysize--;
914 }
915
916 args->numdev++;
917 return TRUE;
918}
@ lparam
Definition: SystemMenu.c:31
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define lstrcpynW
Definition: compat.h:738
static HANDLE hmon
Definition: localmon.c:41
static MONITORINFO mi
Definition: win.c:9400
BOOL WINAPI GetMonitorInfoW(_In_ HMONITOR, _Inout_ LPMONITORINFO)
#define memset(x, y, z)
Definition: compat.h:39
Definition: match.c:390
RECT rcMonitor
Definition: winuser.h:3893
DWORD dwFlags
Definition: winuser.h:3895
DWORD cbSize
Definition: winuser.h:3892

Referenced by VMR9MonitorConfig_GetAvailableMonitors().

◆ get_bitmap_header()

static const BITMAPINFOHEADER * get_bitmap_header ( const AM_MEDIA_TYPE *  mt)
static

Definition at line 49 of file vmr9.c.

50{
51 if (IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo))
52 return &((VIDEOINFOHEADER *)mt->pbFormat)->bmiHeader;
53 else
54 return &((VIDEOINFOHEADER2 *)mt->pbFormat)->bmiHeader;
55}

Referenced by allocate_surfaces(), get_filter_bitmap_header(), and vmr_connect().

◆ get_filter_bitmap_header()

static const BITMAPINFOHEADER * get_filter_bitmap_header ( const struct quartz_vmr *  filter)
static

Definition at line 108 of file vmr9.c.

109{
110 return get_bitmap_header(&filter->renderer.sink.pin.mt);
111}

Referenced by VMR9WindowlessControl_GetNativeVideoSize(), vmr_get_current_image(), vmr_get_default_rect(), and vmr_render().

◆ impl_from_IAMCertifiedOutputProtection()

static struct quartz_vmr * impl_from_IAMCertifiedOutputProtection ( IAMCertifiedOutputProtection *  iface)
inlinestatic

◆ impl_from_IAMFilterMiscFlags()

static struct quartz_vmr * impl_from_IAMFilterMiscFlags ( IAMFilterMiscFlags *  iface)
inlinestatic

Definition at line 123 of file vmr9.c.

124{
125 return CONTAINING_RECORD(iface, struct quartz_vmr, IAMFilterMiscFlags_iface);
126}

Referenced by AMFilterMiscFlags_AddRef(), AMFilterMiscFlags_QueryInterface(), and AMFilterMiscFlags_Release().

◆ impl_from_IAMVideoAccelerator()

static struct quartz_vmr * impl_from_IAMVideoAccelerator ( IAMVideoAccelerator *  iface)
static

Definition at line 1929 of file vmr9.c.

1930{
1931 return CONTAINING_RECORD(iface, struct quartz_vmr, IAMVideoAccelerator_iface);
1932}

Referenced by video_accelerator_AddRef(), video_accelerator_QueryInterface(), and video_accelerator_Release().

◆ impl_from_IBaseFilter()

static struct quartz_vmr * impl_from_IBaseFilter ( IBaseFilter *  iface)
inlinestatic

Definition at line 179 of file vmr9.c.

180{
181 return CONTAINING_RECORD(iface, struct quartz_vmr, renderer.filter.IBaseFilter_iface);
182}

Referenced by vmr_connect(), vmr_destroy(), vmr_disconnect(), vmr_init_stream(), vmr_pin_query_interface(), vmr_query_interface(), vmr_render(), vmr_start_stream(), and vmr_stop_stream().

◆ impl_from_IOverlay()

static struct quartz_vmr * impl_from_IOverlay ( IOverlay *  iface)
inlinestatic

Definition at line 2062 of file vmr9.c.

2063{
2064 return CONTAINING_RECORD(iface, struct quartz_vmr, IOverlay_iface);
2065}

Referenced by overlay_AddRef(), overlay_GetWindowHandle(), overlay_QueryInterface(), and overlay_Release().

◆ impl_from_IVMRAspectRatioControl9()

static struct quartz_vmr * impl_from_IVMRAspectRatioControl9 ( IVMRAspectRatioControl9 *  iface)
inlinestatic

◆ impl_from_IVMRFilterConfig9()

◆ impl_from_IVMRImagePresenter9()

◆ impl_from_IVMRMixerBitmap9()

static struct quartz_vmr * impl_from_IVMRMixerBitmap9 ( IVMRMixerBitmap9 *  iface)
inlinestatic

Definition at line 1816 of file vmr9.c.

1817{
1818 return CONTAINING_RECORD(iface, struct quartz_vmr, IVMRMixerBitmap9_iface);
1819}

Referenced by mixer_bitmap9_AddRef(), mixer_bitmap9_QueryInterface(), and mixer_bitmap9_Release().

◆ impl_from_IVMRMixerControl9()

◆ impl_from_IVMRMonitorConfig9()

◆ impl_from_IVMRSurfaceAllocator9()

◆ impl_from_IVMRSurfaceAllocatorNotify9()

◆ impl_from_IVMRWindowlessControl9()

◆ impl_from_video_window()

static struct quartz_vmr * impl_from_video_window ( struct video_window *  iface)
inlinestatic

Definition at line 113 of file vmr9.c.

114{
115 return CONTAINING_RECORD(iface, struct quartz_vmr, window);
116}
static IHTMLWindow2 * window
Definition: events.c:77

Referenced by vmr_get_current_image(), and vmr_get_default_rect().

◆ init_d3d9()

static IDirect3D9 * init_d3d9 ( HMODULE  d3d9_handle)
static

Definition at line 2580 of file vmr9.c.

2581{
2582 IDirect3D9 * (__stdcall * d3d9_create)(UINT SDKVersion);
2583
2584 d3d9_create = (void *)GetProcAddress(d3d9_handle, "Direct3DCreate9");
2585 if (!d3d9_create) return NULL;
2586
2587 return d3d9_create(D3D_SDK_VERSION);
2588}
#define GetProcAddress(x, y)
Definition: compat.h:753
#define __stdcall
Definition: corecrt.h:120
#define D3D_SDK_VERSION
Definition: d3d8.h:52

Referenced by default_presenter_create().

◆ initialize_device()

static HRESULT initialize_device ( struct quartz_vmr *  filter,
VMR9AllocationInfo *  info,
DWORD  count 
)
static

Definition at line 357 of file vmr9.c.

358{
359 HRESULT hr;
360 DWORD i;
361
362 if (FAILED(hr = IVMRSurfaceAllocator9_InitializeDevice(filter->allocator,
363 filter->cookie, info, &count)))
364 {
365 WARN("Failed to initialize device (flags %#lx), hr %#lx.\n", info->dwFlags, hr);
366 return hr;
367 }
368
369 for (i = 0; i < count; ++i)
370 {
371 if (FAILED(hr = IVMRSurfaceAllocator9_GetSurface(filter->allocator,
372 filter->cookie, i, 0, &filter->surfaces[i])))
373 {
374 ERR("Failed to get surface %lu, hr %#lx.\n", i, hr);
375 while (i--)
377 IVMRSurfaceAllocator9_TerminateDevice(filter->allocator, filter->cookie);
378 return hr;
379 }
380 }
381
382 return hr;
383}
#define ERR(fmt,...)
Definition: precomp.h:57
#define FAILED(hr)
Definition: intsafe.h:51

Referenced by allocate_surfaces().

◆ mixer_bitmap9_AddRef()

static ULONG WINAPI mixer_bitmap9_AddRef ( IVMRMixerBitmap9 *  iface)
static

Definition at line 1827 of file vmr9.c.

1828{
1830 return IUnknown_AddRef(filter->renderer.filter.outer_unk);
1831}
static struct quartz_vmr * impl_from_IVMRMixerBitmap9(IVMRMixerBitmap9 *iface)
Definition: vmr9.c:1816

◆ mixer_bitmap9_GetAlphaBitmapParameters()

static HRESULT WINAPI mixer_bitmap9_GetAlphaBitmapParameters ( IVMRMixerBitmap9 *  iface,
VMR9AlphaBitmap *  bitmap 
)
static

Definition at line 1856 of file vmr9.c.

1858{
1859 FIXME("iface %p, bitmap %p, stub!\n", iface, bitmap);
1860 return E_NOTIMPL;
1861}
#define E_NOTIMPL
Definition: ddrawi.h:99
Definition: uimain.c:89

◆ mixer_bitmap9_QueryInterface()

static HRESULT WINAPI mixer_bitmap9_QueryInterface ( IVMRMixerBitmap9 *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 1821 of file vmr9.c.

1822{
1824 return IUnknown_QueryInterface(filter->renderer.filter.outer_unk, iid, out);
1825}

◆ mixer_bitmap9_Release()

static ULONG WINAPI mixer_bitmap9_Release ( IVMRMixerBitmap9 *  iface)
static

Definition at line 1833 of file vmr9.c.

1834{
1836 return IUnknown_Release(filter->renderer.filter.outer_unk);
1837}

◆ mixer_bitmap9_SetAlphaBitmap()

static HRESULT WINAPI mixer_bitmap9_SetAlphaBitmap ( IVMRMixerBitmap9 *  iface,
const VMR9AlphaBitmap *  bitmap 
)
static

Definition at line 1839 of file vmr9.c.

1841{
1842 FIXME("iface %p, bitmap %p, stub!\n", iface, bitmap);
1843 TRACE("dwFlags %#lx, hdc %p, pDDS %p, rSrc %s, rDest %s, fAlpha %.8e, clrSrcKey #%06lx, dwFilterMode %#lx.\n",
1844 bitmap->dwFlags, bitmap->hdc, bitmap->pDDS, wine_dbgstr_rect(&bitmap->rSrc),
1845 debugstr_normalized_rect(&bitmap->rDest), bitmap->fAlpha, bitmap->clrSrcKey, bitmap->dwFilterMode);
1846 return E_NOTIMPL;
1847}
static const char * wine_dbgstr_rect(const RECT *prc)
Definition: atltest.h:160
static const char * debugstr_normalized_rect(const VMR9NormalizedRect *rect)
Definition: vmr9.c:43

◆ mixer_bitmap9_UpdateAlphaBitmapParameters()

static HRESULT WINAPI mixer_bitmap9_UpdateAlphaBitmapParameters ( IVMRMixerBitmap9 *  iface,
const VMR9AlphaBitmap *  bitmap 
)
static

Definition at line 1849 of file vmr9.c.

1851{
1852 FIXME("iface %p, bitmap %p, stub!\n", iface, bitmap);
1853 return E_NOTIMPL;
1854}

◆ mixer_control9_AddRef()

static ULONG WINAPI mixer_control9_AddRef ( IVMRMixerControl9 *  iface)
static

Definition at line 1656 of file vmr9.c.

1657{
1659 return IUnknown_AddRef(filter->renderer.filter.outer_unk);
1660}
static struct quartz_vmr * impl_from_IVMRMixerControl9(IVMRMixerControl9 *iface)
Definition: vmr9.c:1645

◆ mixer_control9_GetAlpha()

static HRESULT WINAPI mixer_control9_GetAlpha ( IVMRMixerControl9 *  iface,
DWORD  stream,
float *  alpha 
)
static

Definition at line 1677 of file vmr9.c.

1678{
1680
1681 FIXME("filter %p, stream %lu, alpha %p, stub!\n", filter, stream, alpha);
1682
1683 return E_NOTIMPL;
1684}
GLclampf GLclampf GLclampf alpha
Definition: gl.h:1740
Definition: parse.h:23

◆ mixer_control9_GetBackgroundClr()

static HRESULT WINAPI mixer_control9_GetBackgroundClr ( IVMRMixerControl9 *  iface,
COLORREF *  color 
)
static

Definition at line 1733 of file vmr9.c.

1734{
1736
1737 FIXME("filter %p, color %p, stub!\n", filter, color);
1738
1739 return E_NOTIMPL;
1740}
GLuint color
Definition: glext.h:6243

◆ mixer_control9_GetMixingPrefs()

static HRESULT WINAPI mixer_control9_GetMixingPrefs ( IVMRMixerControl9 *  iface,
DWORD *  flags 
)
static

Definition at line 1754 of file vmr9.c.

1755{
1757
1758 FIXME("filter %p, flags %p, stub!\n", filter, flags);
1759
1760 EnterCriticalSection(&filter->renderer.filter.filter_cs);
1761 *flags = filter->mixing_prefs;
1762 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1763 return S_OK;
1764}

◆ mixer_control9_GetOutputRect()

static HRESULT WINAPI mixer_control9_GetOutputRect ( IVMRMixerControl9 *  iface,
DWORD  stream,
VMR9NormalizedRect *  rect 
)
static

Definition at line 1714 of file vmr9.c.

1716{
1718
1719 FIXME("filter %p, stream %lu, rect %p, stub!\n", filter, stream, rect);
1720
1721 return E_NOTIMPL;
1722}

◆ mixer_control9_GetProcAmpControl()

static HRESULT WINAPI mixer_control9_GetProcAmpControl ( IVMRMixerControl9 *  iface,
DWORD  stream,
VMR9ProcAmpControl *  settings 
)
static

Definition at line 1776 of file vmr9.c.

1778{
1780
1781 FIXME("filter %p, settings %p, stub!\n", filter, settings);
1782
1783 return E_NOTIMPL;
1784}
struct mke2fs_defaults settings[]

◆ mixer_control9_GetProcAmpControlRange()

static HRESULT WINAPI mixer_control9_GetProcAmpControlRange ( IVMRMixerControl9 *  iface,
DWORD  stream,
VMR9ProcAmpControlRange *  settings 
)
static

Definition at line 1786 of file vmr9.c.

1788{
1790
1791 FIXME("filter %p, settings %p, stub!\n", filter, settings);
1792
1793 return E_NOTIMPL;
1794}

◆ mixer_control9_GetZOrder()

static HRESULT WINAPI mixer_control9_GetZOrder ( IVMRMixerControl9 *  iface,
DWORD  stream,
DWORD *  z 
)
static

Definition at line 1695 of file vmr9.c.

1696{
1698
1699 FIXME("filter %p, stream %lu, z %p, stub!\n", filter, stream, z);
1700
1701 return E_NOTIMPL;
1702}
GLdouble GLdouble z
Definition: glext.h:5874

◆ mixer_control9_QueryInterface()

static HRESULT WINAPI mixer_control9_QueryInterface ( IVMRMixerControl9 *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 1650 of file vmr9.c.

1651{
1653 return IUnknown_QueryInterface(filter->renderer.filter.outer_unk, iid, out);
1654}

◆ mixer_control9_Release()

static ULONG WINAPI mixer_control9_Release ( IVMRMixerControl9 *  iface)
static

Definition at line 1662 of file vmr9.c.

1663{
1665 return IUnknown_Release(filter->renderer.filter.outer_unk);
1666}

◆ mixer_control9_SetAlpha()

static HRESULT WINAPI mixer_control9_SetAlpha ( IVMRMixerControl9 *  iface,
DWORD  stream,
float  alpha 
)
static

Definition at line 1668 of file vmr9.c.

1669{
1671
1672 FIXME("filter %p, stream %lu, alpha %.8e, stub!\n", filter, stream, alpha);
1673
1674 return E_NOTIMPL;
1675}

◆ mixer_control9_SetBackgroundClr()

static HRESULT WINAPI mixer_control9_SetBackgroundClr ( IVMRMixerControl9 *  iface,
COLORREF  color 
)
static

Definition at line 1724 of file vmr9.c.

1725{
1727
1728 FIXME("filter %p, color #%06lx, stub!\n", filter, color);
1729
1730 return E_NOTIMPL;
1731}

◆ mixer_control9_SetMixingPrefs()

static HRESULT WINAPI mixer_control9_SetMixingPrefs ( IVMRMixerControl9 *  iface,
DWORD  flags 
)
static

Definition at line 1742 of file vmr9.c.

1743{
1745
1746 FIXME("filter %p, flags %#lx, stub!\n", filter, flags);
1747
1748 EnterCriticalSection(&filter->renderer.filter.filter_cs);
1749 filter->mixing_prefs = flags;
1750 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1751 return S_OK;
1752}

◆ mixer_control9_SetOutputRect()

static HRESULT WINAPI mixer_control9_SetOutputRect ( IVMRMixerControl9 *  iface,
DWORD  stream,
const VMR9NormalizedRect *  rect 
)
static

Definition at line 1704 of file vmr9.c.

1706{
1708
1709 FIXME("filter %p, stream %lu, rect %s, stub!\n", filter, stream, debugstr_normalized_rect(rect));
1710
1711 return E_NOTIMPL;
1712}

◆ mixer_control9_SetProcAmpControl()

static HRESULT WINAPI mixer_control9_SetProcAmpControl ( IVMRMixerControl9 *  iface,
DWORD  stream,
VMR9ProcAmpControl *  settings 
)
static

Definition at line 1766 of file vmr9.c.

1768{
1770
1771 FIXME("filter %p, settings %p, stub!\n", filter, settings);
1772
1773 return E_NOTIMPL;
1774}

◆ mixer_control9_SetZOrder()

static HRESULT WINAPI mixer_control9_SetZOrder ( IVMRMixerControl9 *  iface,
DWORD  stream,
DWORD  z 
)
static

Definition at line 1686 of file vmr9.c.

1687{
1689
1690 FIXME("filter %p, stream %lu, z %lu, stub!\n", filter, stream, z);
1691
1692 return E_NOTIMPL;
1693}

◆ overlay_AddRef()

static ULONG WINAPI overlay_AddRef ( IOverlay *  iface)
static

Definition at line 2073 of file vmr9.c.

2074{
2075 struct quartz_vmr *filter = impl_from_IOverlay(iface);
2076 return IPin_AddRef(&filter->renderer.sink.pin.IPin_iface);
2077}
static struct quartz_vmr * impl_from_IOverlay(IOverlay *iface)
Definition: vmr9.c:2062

◆ overlay_Advise()

static HRESULT WINAPI overlay_Advise ( IOverlay *  iface,
IOverlayNotify *  sink,
DWORD  flags 
)
static

Definition at line 2140 of file vmr9.c.

2141{
2142 FIXME("iface %p, sink %p, flags %#lx, stub!\n", iface, sink, flags);
2143 return E_NOTIMPL;
2144}
GLsizei GLenum GLboolean sink
Definition: glext.h:5672

◆ overlay_GetClipList()

static HRESULT WINAPI overlay_GetClipList ( IOverlay *  iface,
RECT *  source,
RECT *  dest,
RGNDATA **  region 
)
static

Definition at line 2128 of file vmr9.c.

2129{
2130 FIXME("iface %p, source %p, dest %p, region %p, stub!\n", iface, source, dest, region);
2131 return E_NOTIMPL;
2132}
static char * dest
Definition: rtl.c:149

◆ overlay_GetColorKey()

static HRESULT WINAPI overlay_GetColorKey ( IOverlay *  iface,
COLORKEY *  key 
)
static

Definition at line 2103 of file vmr9.c.

2104{
2105 FIXME("iface %p, key %p, stub!\n", iface, key);
2106 return E_NOTIMPL;
2107}
Definition: copy.c:22

◆ overlay_GetDefaultColorKey()

static HRESULT WINAPI overlay_GetDefaultColorKey ( IOverlay *  iface,
COLORKEY *  key 
)
static

Definition at line 2097 of file vmr9.c.

2098{
2099 FIXME("iface %p, key %p, stub!\n", iface, key);
2100 return E_NOTIMPL;
2101}

◆ overlay_GetPalette()

static HRESULT WINAPI overlay_GetPalette ( IOverlay *  iface,
DWORD *  count,
PALETTEENTRY **  palette 
)
static

Definition at line 2085 of file vmr9.c.

2086{
2087 FIXME("iface %p, count %p, palette %p, stub!\n", iface, count, palette);
2088 return E_NOTIMPL;
2089}
static HPALETTE palette
Definition: clipboard.c:1457

◆ overlay_GetVideoPosition()

static HRESULT WINAPI overlay_GetVideoPosition ( IOverlay *  iface,
RECT *  source,
RECT *  dest 
)
static

Definition at line 2134 of file vmr9.c.

2135{
2136 FIXME("iface %p, source %p, dest %p, stub!\n", iface, source, dest);
2137 return E_NOTIMPL;
2138}

◆ overlay_GetWindowHandle()

static HRESULT WINAPI overlay_GetWindowHandle ( IOverlay *  iface,
HWND *  window 
)
static

Definition at line 2115 of file vmr9.c.

2116{
2117 struct quartz_vmr *filter = impl_from_IOverlay(iface);
2118
2119 TRACE("filter %p, window %p.\n", filter, window);
2120
2121 if (!filter->window.hwnd)
2122 return VFW_E_WRONG_STATE;
2123
2124 *window = filter->window.hwnd;
2125 return S_OK;
2126}
#define VFW_E_WRONG_STATE
Definition: vfwmsgs.h:78

◆ overlay_QueryInterface()

static HRESULT WINAPI overlay_QueryInterface ( IOverlay *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 2067 of file vmr9.c.

2068{
2069 struct quartz_vmr *filter = impl_from_IOverlay(iface);
2070 return IPin_QueryInterface(&filter->renderer.sink.pin.IPin_iface, iid, out);
2071}

◆ overlay_Release()

static ULONG WINAPI overlay_Release ( IOverlay *  iface)
static

Definition at line 2079 of file vmr9.c.

2080{
2081 struct quartz_vmr *filter = impl_from_IOverlay(iface);
2082 return IPin_Release(&filter->renderer.sink.pin.IPin_iface);
2083}

◆ overlay_SetColorKey()

static HRESULT WINAPI overlay_SetColorKey ( IOverlay *  iface,
COLORKEY *  key 
)
static

Definition at line 2109 of file vmr9.c.

2110{
2111 FIXME("iface %p, key %p, stub!\n", iface, key);
2112 return E_NOTIMPL;
2113}

◆ overlay_SetPalette()

static HRESULT WINAPI overlay_SetPalette ( IOverlay *  iface,
DWORD  count,
PALETTEENTRY *  palette 
)
static

Definition at line 2091 of file vmr9.c.

2092{
2093 FIXME("iface %p, count %lu, palette %p, stub!\n", iface, count, palette);
2094 return E_NOTIMPL;
2095}

◆ overlay_Unadvise()

static HRESULT WINAPI overlay_Unadvise ( IOverlay *  iface)
static

Definition at line 2146 of file vmr9.c.

2147{
2148 FIXME("iface %p, stub!\n", iface);
2149 return E_NOTIMPL;
2150}

◆ video_accelerator_AddRef()

static ULONG WINAPI video_accelerator_AddRef ( IAMVideoAccelerator *  iface)
static

Definition at line 1940 of file vmr9.c.

1941{
1943 return IPin_AddRef(&filter->renderer.sink.pin.IPin_iface);
1944}
static struct quartz_vmr * impl_from_IAMVideoAccelerator(IAMVideoAccelerator *iface)
Definition: vmr9.c:1929

◆ video_accelerator_BeginFrame()

static HRESULT WINAPI video_accelerator_BeginFrame ( IAMVideoAccelerator *  iface,
const AMVABeginFrameInfo *  info 
)
static

Definition at line 1991 of file vmr9.c.

1992{
1993 FIXME("iface %p, info %p, stub!\n", iface, info);
1994 return E_NOTIMPL;
1995}

◆ video_accelerator_DisplayFrame()

static HRESULT WINAPI video_accelerator_DisplayFrame ( IAMVideoAccelerator *  iface,
DWORD  index,
IMediaSample *  sample 
)
static

Definition at line 2036 of file vmr9.c.

2038{
2039 FIXME("iface %p, index %lu, sample %p, stub!\n", iface, index, sample);
2040 return E_NOTIMPL;
2041}
GLuint index
Definition: glext.h:6031
Definition: wave.c:25

◆ video_accelerator_EndFrame()

static HRESULT WINAPI video_accelerator_EndFrame ( IAMVideoAccelerator *  iface,
const AMVAEndFrameInfo *  info 
)
static

Definition at line 1997 of file vmr9.c.

1998{
1999 FIXME("iface %p, info %p, stub!\n", iface, info);
2000 return E_NOTIMPL;
2001}

◆ video_accelerator_Execute()

static HRESULT WINAPI video_accelerator_Execute ( IAMVideoAccelerator *  iface,
DWORD  function,
void *  in_data,
DWORD  in_size,
void *  out_data,
DWORD  out_size,
DWORD  buffer_count,
const AMVABUFFERINFO *  buffers 
)
static

Definition at line 2018 of file vmr9.c.

2021{
2022 FIXME("iface %p, function %#lx, in_data %p, in_size %lu,"
2023 " out_data %p, out_size %lu, buffer_count %lu, buffers %p, stub!\n",
2024 iface, function, in_data, in_size, out_data, out_size, buffer_count, buffers);
2025 return E_NOTIMPL;
2026}
const GLuint * buffers
Definition: glext.h:5916
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK ULONG PVOID ULONG PVOID ULONG out_size
Definition: file.c:72
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK ULONG PVOID ULONG in_size
Definition: file.c:72
size_t const buffer_count
Definition: xtoa.cpp:36

◆ video_accelerator_GetBuffer()

static HRESULT WINAPI video_accelerator_GetBuffer ( IAMVideoAccelerator *  iface,
DWORD  type_index,
DWORD  buffer_index,
BOOL  read_only,
void **  buffer,
LONG *  stride 
)
static

Definition at line 2003 of file vmr9.c.

2005{
2006 FIXME("iface %p, type_index %lu, buffer_index %lu, read_only %d, buffer %p, stride %p, stub!\n",
2007 iface, type_index, buffer_index, read_only, buffer, stride);
2008 return E_NOTIMPL;
2009}
GLsizei stride
Definition: glext.h:5848
GLuint buffer
Definition: glext.h:5915

◆ video_accelerator_GetCompBufferInfo()

static HRESULT WINAPI video_accelerator_GetCompBufferInfo ( IAMVideoAccelerator *  iface,
const GUID *  accelerator,
const AMVAUncompDataInfo *  uncompressed_info,
DWORD *  compressed_info_count,
AMVACompBufferInfo *  compressed_infos 
)
static

Definition at line 1975 of file vmr9.c.

1978{
1979 FIXME("iface %p, accelerator %s, uncompressed_info %p, compressed_info_count %p, compressed_infos %p, stub!\n",
1980 iface, debugstr_guid(accelerator), uncompressed_info, compressed_info_count, compressed_infos);
1981 return E_NOTIMPL;
1982}
#define debugstr_guid
Definition: kernel32.h:35

◆ video_accelerator_GetInternalCompBufferInfo()

static HRESULT WINAPI video_accelerator_GetInternalCompBufferInfo ( IAMVideoAccelerator *  iface,
DWORD *  count,
AMVACompBufferInfo *  infos 
)
static

Definition at line 1984 of file vmr9.c.

1986{
1987 FIXME("iface %p, count %p, infos %p, stub!\n", iface, count, infos);
1988 return E_NOTIMPL;
1989}

◆ video_accelerator_GetInternalMemInfo()

static HRESULT WINAPI video_accelerator_GetInternalMemInfo ( IAMVideoAccelerator *  iface,
const GUID *  accelerator,
const AMVAUncompDataInfo *  format_info,
AMVAInternalMemInfo *  mem_info 
)
static

Definition at line 1967 of file vmr9.c.

1969{
1970 FIXME("iface %p, accelerator %s, format_info %p, mem_info %p, stub!\n",
1971 iface, debugstr_guid(accelerator), format_info, mem_info);
1972 return E_NOTIMPL;
1973}
format_info

◆ video_accelerator_GetUncompFormatsSupported()

static HRESULT WINAPI video_accelerator_GetUncompFormatsSupported ( IAMVideoAccelerator *  iface,
const GUID *  accelerator,
DWORD *  count,
DDPIXELFORMAT *  formats 
)
static

Definition at line 1959 of file vmr9.c.

1961{
1962 FIXME("iface %p, accelerator %s, count %p, formats %p, stub!\n",
1963 iface, debugstr_guid(accelerator), count, formats);
1964 return E_NOTIMPL;
1965}

◆ video_accelerator_GetVideoAcceleratorGUIDs()

static HRESULT WINAPI video_accelerator_GetVideoAcceleratorGUIDs ( IAMVideoAccelerator *  iface,
DWORD *  count,
GUID *  accelerators 
)
static

Definition at line 1952 of file vmr9.c.

1954{
1955 FIXME("iface %p, count %p, accelerators %p, stub!\n", iface, count, accelerators);
1956 return E_NOTIMPL;
1957}

◆ video_accelerator_QueryInterface()

static HRESULT WINAPI video_accelerator_QueryInterface ( IAMVideoAccelerator *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 1934 of file vmr9.c.

1935{
1937 return IPin_QueryInterface(&filter->renderer.sink.pin.IPin_iface, iid, out);
1938}

◆ video_accelerator_QueryRenderStatus()

static HRESULT WINAPI video_accelerator_QueryRenderStatus ( IAMVideoAccelerator *  iface,
DWORD  type_index,
DWORD  buffer_index,
DWORD  flags 
)
static

Definition at line 2028 of file vmr9.c.

2030{
2031 FIXME("iface %p, type_index %lu, buffer_index %lu, flags %#lx, stub!\n",
2032 iface, type_index, buffer_index, flags);
2033 return E_NOTIMPL;
2034}

◆ video_accelerator_Release()

static ULONG WINAPI video_accelerator_Release ( IAMVideoAccelerator *  iface)
static

Definition at line 1946 of file vmr9.c.

1947{
1949 return IPin_Release(&filter->renderer.sink.pin.IPin_iface);
1950}

◆ video_accelerator_ReleaseBuffer()

static HRESULT WINAPI video_accelerator_ReleaseBuffer ( IAMVideoAccelerator *  iface,
DWORD  type_index,
DWORD  buffer_index 
)
static

Definition at line 2011 of file vmr9.c.

2013{
2014 FIXME("iface %p, type_index %lu, buffer_index %lu, stub!\n", iface, type_index, buffer_index);
2015 return E_NOTIMPL;
2016}

◆ vmr9_create()

HRESULT vmr9_create ( IUnknown *  outer,
IUnknown **  out 
)

Definition at line 2169 of file vmr9.c.

2170{
2171 struct quartz_vmr *object;
2172 HRESULT hr;
2173
2174 if (!(object = calloc(1, sizeof(*object))))
2175 return E_OUTOFMEMORY;
2176
2177 object->hD3d9 = LoadLibraryA("d3d9.dll");
2178 if (!object->hD3d9)
2179 {
2180 WARN("Could not load d3d9.dll\n");
2181 free(object);
2183 }
2184
2185 strmbase_renderer_init(&object->renderer, outer, &CLSID_VideoMixingRenderer9, L"VMR Input0", &renderer_ops);
2186 object->IAMCertifiedOutputProtection_iface.lpVtbl = &IAMCertifiedOutputProtection_Vtbl;
2187 object->IAMFilterMiscFlags_iface.lpVtbl = &IAMFilterMiscFlags_Vtbl;
2188 object->IVMRAspectRatioControl9_iface.lpVtbl = &aspect_ratio_control9_vtbl;
2189 object->IVMRFilterConfig9_iface.lpVtbl = &VMR9_FilterConfig_Vtbl;
2190 object->IVMRMixerBitmap9_iface.lpVtbl = &mixer_bitmap9_vtbl;
2191 object->IVMRMixerControl9_iface.lpVtbl = &mixer_control9_vtbl;
2192 object->IVMRMonitorConfig9_iface.lpVtbl = &VMR9_MonitorConfig_Vtbl;
2193 object->IVMRSurfaceAllocatorNotify9_iface.lpVtbl = &VMR9_SurfaceAllocatorNotify_Vtbl;
2194 object->IVMRWindowlessControl9_iface.lpVtbl = &VMR9_WindowlessControl_Vtbl;
2195
2196 object->IAMVideoAccelerator_iface.lpVtbl = &video_accelerator_vtbl;
2197 object->IOverlay_iface.lpVtbl = &overlay_vtbl;
2198
2200 &object->renderer.filter, &object->renderer.sink.pin, &window_ops);
2201
2202 if (FAILED(hr = video_window_create_window(&object->window)))
2203 {
2204 video_window_cleanup(&object->window);
2206 FreeLibrary(object->hD3d9);
2207 free(object);
2208 return hr;
2209 }
2210
2211 object->mixing_prefs = MixerPref9_NoDecimation | MixerPref9_ARAdjustXorY
2213
2214 TRACE("Created VMR %p.\n", object);
2215 *out = &object->renderer.filter.IUnknown_inner;
2216 return S_OK;
2217}
static const IVMRMixerBitmap9Vtbl mixer_bitmap9_vtbl
Definition: vmr9.c:1863
static const IAMCertifiedOutputProtectionVtbl IAMCertifiedOutputProtection_Vtbl
Definition: vmr9.c:808
static const IVMRFilterConfig9Vtbl VMR9_FilterConfig_Vtbl
Definition: vmr9.c:1172
static const IAMVideoAcceleratorVtbl video_accelerator_vtbl
Definition: vmr9.c:2043
static const struct video_window_ops window_ops
Definition: vmr9.c:695
static const struct strmbase_renderer_ops renderer_ops
Definition: vmr9.c:612
static const IOverlayVtbl overlay_vtbl
Definition: vmr9.c:2152
static const IVMRMonitorConfig9Vtbl VMR9_MonitorConfig_Vtbl
Definition: vmr9.c:1008
static const IVMRAspectRatioControl9Vtbl aspect_ratio_control9_vtbl
Definition: vmr9.c:1920
static const IVMRWindowlessControl9Vtbl VMR9_WindowlessControl_Vtbl
Definition: vmr9.c:1391
static const IVideoWindowVtbl IVideoWindow_VTable
Definition: vmr9.c:701
static const IVMRSurfaceAllocatorNotify9Vtbl VMR9_SurfaceAllocatorNotify_Vtbl
Definition: vmr9.c:1633
static const IVMRMixerControl9Vtbl mixer_control9_vtbl
Definition: vmr9.c:1796
static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_Vtbl
Definition: vmr9.c:838
#define FreeLibrary(x)
Definition: compat.h:748
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
Definition: loader.c:111
#define L(x)
Definition: resources.c:13
static IUnknown * outer
Definition: compobj.c:82
void video_window_init(struct video_window *window, const IVideoWindowVtbl *vtbl, struct strmbase_filter *filter, struct strmbase_pin *pin, const struct video_window_ops *ops)
Definition: window.c:1275
HRESULT video_window_create_window(struct video_window *window)
Definition: window.c:98
void video_window_cleanup(struct video_window *window)
Definition: window.c:1288
void strmbase_renderer_init(struct strmbase_renderer *filter, IUnknown *outer, const CLSID *clsid, const WCHAR *sink_name, const struct strmbase_renderer_ops *ops)
Definition: renderer.c:584
void strmbase_renderer_cleanup(struct strmbase_renderer *filter)
Definition: renderer.c:568
@ MixerPref9_NoDecimation
Definition: vmr9.idl:182
@ MixerPref9_RenderTargetRGB
Definition: vmr9.idl:198
@ MixerPref9_BiLinearFiltering
Definition: vmr9.idl:189
@ MixerPref9_ARAdjustXorY
Definition: vmr9.idl:184

◆ VMR9_ImagePresenter_AddRef()

static ULONG WINAPI VMR9_ImagePresenter_AddRef ( IVMRImagePresenter9 *  iface)
static

Definition at line 2243 of file vmr9.c.

2244{
2246 ULONG refcount = InterlockedIncrement(&presenter->refCount);
2247
2248 TRACE("%p increasing refcount to %lu.\n", presenter, refcount);
2249
2250 return refcount;
2251}
#define InterlockedIncrement
Definition: armddk.h:53
static struct default_presenter * impl_from_IVMRImagePresenter9(IVMRImagePresenter9 *iface)
Definition: vmr9.c:167
uint32_t ULONG
Definition: typedefs.h:59

◆ VMR9_ImagePresenter_PresentImage()

static HRESULT WINAPI VMR9_ImagePresenter_PresentImage ( IVMRImagePresenter9 *  iface,
DWORD_PTR  cookie,
VMR9PresentationInfo *  info 
)
static

Definition at line 2302 of file vmr9.c.

2304{
2306 const struct quartz_vmr *filter = presenter->pVMR9;
2307 IDirect3DDevice9 *device = presenter->d3d9_dev;
2308 const RECT src = filter->window.src;
2309 IDirect3DSurface9 *backbuffer;
2310 RECT dst = filter->window.dst;
2311 HRESULT hr;
2312
2313 TRACE("presenter %p, cookie %#Ix, info %p.\n", presenter, cookie, info);
2314
2315 /* This might happen if we don't have active focus (eg on a different virtual desktop) */
2316 if (!device)
2317 return S_OK;
2318
2320 D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0)))
2321 ERR("Failed to clear, hr %#lx.\n", hr);
2322
2324 ERR("Failed to begin scene, hr %#lx.\n", hr);
2325
2327 {
2328 ERR("Failed to get backbuffer, hr %#lx.\n", hr);
2329 return hr;
2330 }
2331
2332 if (FAILED(hr = IDirect3DDevice9_StretchRect(device, info->lpSurf, NULL, backbuffer, NULL, D3DTEXF_POINT)))
2333 ERR("Failed to blit image, hr %#lx.\n", hr);
2334 IDirect3DSurface9_Release(backbuffer);
2335
2337 ERR("Failed to end scene, hr %#lx.\n", hr);
2338
2339 if (filter->aspect_mode == VMR9ARMode_LetterBox)
2340 {
2341 unsigned int src_width = src.right - src.left, src_height = src.bottom - src.top;
2342 unsigned int dst_width = dst.right - dst.left, dst_height = dst.bottom - dst.top;
2343
2344 if (src_width * dst_height > dst_width * src_height)
2345 {
2346 /* src is "wider" than dst. */
2347 unsigned int dst_center = (dst.top + dst.bottom) / 2;
2348 unsigned int scaled_height = src_height * dst_width / src_width;
2349
2350 dst.top = dst_center - scaled_height / 2;
2351 dst.bottom = dst.top + scaled_height;
2352 }
2353 else if (src_width * dst_height < dst_width * src_height)
2354 {
2355 /* src is "taller" than dst. */
2356 unsigned int dst_center = (dst.left + dst.right) / 2;
2357 unsigned int scaled_width = src_width * dst_height / src_height;
2358
2359 dst.left = dst_center - scaled_width / 2;
2360 dst.right = dst.left + scaled_width;
2361 }
2362 }
2363
2365 ERR("Failed to present, hr %#lx.\n", hr);
2366
2367 return S_OK;
2368}
@ D3DTEXF_POINT
Definition: d3d8types.h:871
@ D3DBACKBUFFER_TYPE_MONO
Definition: d3d8types.h:493
#define D3DCOLOR_XRGB(r, g, b)
Definition: d3d8types.h:44
#define D3DCLEAR_TARGET
Definition: d3d8types.h:30
#define IDirect3DDevice9_EndScene(p)
Definition: d3d9.h:1377
#define IDirect3DDevice9_BeginScene(p)
Definition: d3d9.h:1376
#define IDirect3DDevice9_GetBackBuffer(p, a, b, c, d)
Definition: d3d9.h:1353
#define IDirect3DDevice9_StretchRect(p, a, b, c, d, e)
Definition: d3d9.h:1369
#define IDirect3DDevice9_Present(p, a, b, c, d)
Definition: d3d9.h:1352
#define IDirect3DDevice9_Clear(p, a, b, c, d, e, f)
Definition: d3d9.h:1378
DWORD IDirect3DDevice9
Definition: dxva2api.idl:22
Definition: dcommon.idl:28
Definition: cookie.c:34
Definition: devices.h:37
@ VMR9ARMode_LetterBox
Definition: vmr9.idl:152

◆ VMR9_ImagePresenter_QueryInterface()

static HRESULT WINAPI VMR9_ImagePresenter_QueryInterface ( IVMRImagePresenter9 *  iface,
REFIID  riid,
void **  ppv 
)
static

Definition at line 2219 of file vmr9.c.

2220{
2222
2223 TRACE("(%p/%p)->(%s, %p)\n", This, iface, qzdebugstr_guid(riid), ppv);
2224
2225 *ppv = NULL;
2226
2227 if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IVMRImagePresenter9))
2228 *ppv = &This->IVMRImagePresenter9_iface;
2229 else if (IsEqualIID(riid, &IID_IVMRSurfaceAllocator9))
2230 *ppv = &This->IVMRSurfaceAllocator9_iface;
2231
2232 if (*ppv)
2233 {
2234 IUnknown_AddRef((IUnknown *)(*ppv));
2235 return S_OK;
2236 }
2237
2238 FIXME("No interface for %s\n", debugstr_guid(riid));
2239
2240 return E_NOINTERFACE;
2241}
const GUID IID_IUnknown
const char * qzdebugstr_guid(const GUID *id)
Definition: main.c:671
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ VMR9_ImagePresenter_Release()

static ULONG WINAPI VMR9_ImagePresenter_Release ( IVMRImagePresenter9 *  iface)
static

Definition at line 2253 of file vmr9.c.

2254{
2256 ULONG refcount = InterlockedDecrement(&This->refCount);
2257
2258 TRACE("%p decreasing refcount to %lu.\n", This, refcount);
2259
2260 if (!refcount)
2261 {
2262 DWORD i;
2263
2264 IDirect3D9_Release(This->d3d9_ptr);
2265
2266 for (i = 0; i < This->num_surfaces; ++i)
2267 {
2268 IDirect3DSurface9 *surface = This->d3d9_surfaces[i];
2269 if (surface)
2271 }
2272
2273 if (This->d3d9_dev)
2274 IDirect3DDevice9_Release(This->d3d9_dev);
2275 free(This->d3d9_surfaces);
2276 This->d3d9_surfaces = NULL;
2277 This->num_surfaces = 0;
2278 free(This);
2279 return 0;
2280 }
2281 return refcount;
2282}
#define InterlockedDecrement
Definition: armddk.h:52
#define IDirect3D9_Release(p)
Definition: d3d9.h:209
#define IDirect3DDevice9_Release(p)
Definition: d3d9.h:1336

◆ VMR9_ImagePresenter_StartPresenting()

static HRESULT WINAPI VMR9_ImagePresenter_StartPresenting ( IVMRImagePresenter9 *  iface,
DWORD_PTR  cookie 
)
static

Definition at line 2284 of file vmr9.c.

2285{
2287
2288 TRACE("presenter %p, cookie %#Ix.\n", presenter, cookie);
2289
2290 return S_OK;
2291}

◆ VMR9_ImagePresenter_StopPresenting()

static HRESULT WINAPI VMR9_ImagePresenter_StopPresenting ( IVMRImagePresenter9 *  iface,
DWORD_PTR  cookie 
)
static

Definition at line 2293 of file vmr9.c.

2294{
2296
2297 TRACE("presenter %p, cookie %#Ix.\n", presenter, cookie);
2298
2299 return S_OK;
2300}

◆ VMR9_SurfaceAllocator_AddRef()

static ULONG WINAPI VMR9_SurfaceAllocator_AddRef ( IVMRSurfaceAllocator9 *  iface)
static

Definition at line 2386 of file vmr9.c.

2387{
2389 return IVMRImagePresenter9_AddRef(&presenter->IVMRImagePresenter9_iface);
2390}
static struct default_presenter * impl_from_IVMRSurfaceAllocator9(IVMRSurfaceAllocator9 *iface)
Definition: vmr9.c:172
IVMRImagePresenter9 IVMRImagePresenter9_iface
Definition: vmr9.c:2932

◆ VMR9_SurfaceAllocator_AdviseNotify()

static HRESULT WINAPI VMR9_SurfaceAllocator_AdviseNotify ( IVMRSurfaceAllocator9 *  iface,
IVMRSurfaceAllocatorNotify9 *  notify 
)
static

Definition at line 2557 of file vmr9.c.

2559{
2561
2562 TRACE("presenter %p, notify %p.\n", presenter, notify);
2563
2564 /* No AddRef taken here or the base VMR9 filter would never be destroyed */
2565 presenter->SurfaceAllocatorNotify = notify;
2566 return S_OK;
2567}
int notify
Definition: msacm.c:1366

◆ VMR9_SurfaceAllocator_GetSurface()

static HRESULT WINAPI VMR9_SurfaceAllocator_GetSurface ( IVMRSurfaceAllocator9 *  iface,
DWORD_PTR  cookie,
DWORD  surfaceindex,
DWORD  flags,
IDirect3DSurface9 **  surface 
)
static

Definition at line 2534 of file vmr9.c.

2536{
2538
2539 /* Update everything first, this is needed because the surface might be destroyed in the reset */
2540 if (!This->d3d9_dev)
2541 {
2542 TRACE("Device has left me!\n");
2543 return E_FAIL;
2544 }
2545
2546 if (surfaceindex >= This->num_surfaces)
2547 {
2548 ERR("surfaceindex is greater than num_surfaces\n");
2549 return E_FAIL;
2550 }
2551 *surface = This->d3d9_surfaces[surfaceindex];
2552 IDirect3DSurface9_AddRef(*surface);
2553
2554 return S_OK;
2555}
#define IDirect3DSurface9_AddRef(p)
Definition: d3d9.h:449

◆ VMR9_SurfaceAllocator_InitializeDevice()

static HRESULT WINAPI VMR9_SurfaceAllocator_InitializeDevice ( IVMRSurfaceAllocator9 *  iface,
DWORD_PTR  cookie,
VMR9AllocationInfo *  info,
DWORD *  numbuffers 
)
static

Definition at line 2458 of file vmr9.c.

2460{
2464 DWORD d3d9_adapter;
2465 D3DCAPS9 caps;
2466 HWND window;
2467 HRESULT hr;
2468
2469 TRACE("presenter %p, cookie %#Ix, info %p, numbuffers %p.\n", This, cookie, info, numbuffers);
2470
2471 This->info = *info;
2472
2473 if (This->pVMR9->mode == VMR9Mode_Windowed)
2474 window = This->pVMR9->window.hwnd;
2475 else
2476 window = This->pVMR9->clipping_window;
2477
2478 /* Obtain a monitor and d3d9 device */
2479 d3d9_adapter = d3d9_adapter_from_hwnd(This->d3d9_ptr, window, &This->hMon);
2480
2481 /* Now try to create the d3d9 device */
2482 ZeroMemory(&d3dpp, sizeof(d3dpp));
2483 d3dpp.Windowed = TRUE;
2484 d3dpp.hDeviceWindow = window;
2486 d3dpp.BackBufferWidth = info->dwWidth;
2487 d3dpp.BackBufferHeight = info->dwHeight;
2488
2489 hr = IDirect3D9_CreateDevice(This->d3d9_ptr, d3d9_adapter, D3DDEVTYPE_HAL,
2491 if (FAILED(hr))
2492 {
2493 ERR("Failed to create device, hr %#lx.\n", hr);
2494 return hr;
2495 }
2496
2499 {
2500 WARN("Device does not support blitting from textures.\n");
2503 }
2504
2505 This->d3d9_dev = device;
2506 IVMRSurfaceAllocatorNotify9_SetD3DDevice(This->SurfaceAllocatorNotify, This->d3d9_dev, This->hMon);
2507
2508 if (!(This->d3d9_surfaces = calloc(*numbuffers, sizeof(IDirect3DSurface9 *))))
2509 return E_OUTOFMEMORY;
2510
2511 adjust_surface_size(&caps, info);
2512
2513 hr = IVMRSurfaceAllocatorNotify9_AllocateSurfaceHelper(This->SurfaceAllocatorNotify,
2514 info, numbuffers, This->d3d9_surfaces);
2515 if (FAILED(hr))
2516 {
2517 ERR("Failed to allocate surfaces, hr %#lx.\n", hr);
2518 IVMRSurfaceAllocator9_TerminateDevice(This->pVMR9->allocator, This->pVMR9->cookie);
2519 return hr;
2520 }
2521
2522 This->num_surfaces = *numbuffers;
2523
2524 return S_OK;
2525}
@ D3DSWAPEFFECT_COPY
Definition: d3d8types.h:853
@ D3DDEVTYPE_HAL
Definition: d3d8types.h:576
#define IDirect3D9_CreateDevice(p, a, b, c, d, e, f)
Definition: d3d9.h:224
#define IDirect3DDevice9_GetDeviceCaps(p, a)
Definition: d3d9.h:1342
static void adjust_surface_size(const D3DCAPS9 *caps, VMR9AllocationInfo *allocinfo)
Definition: vmr9.c:2398
static UINT d3d9_adapter_from_hwnd(IDirect3D9 *d3d9, HWND hwnd, HMONITOR *mon_out)
Definition: vmr9.c:2435
#define D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES
Definition: d3d9caps.h:205
#define ZeroMemory
Definition: minwinbase.h:31
#define D3DCREATE_MIXED_VERTEXPROCESSING
Definition: d3d8.h:42
DWORD DevCaps2
Definition: d3d9caps.h:317
D3DSWAPEFFECT SwapEffect
Definition: d3d8types.h:1128
VMR9AllocationInfo info
Definition: vmr9.c:161
@ VMR9Mode_Windowed
Definition: vmr9.idl:354

◆ VMR9_SurfaceAllocator_QueryInterface()

static HRESULT WINAPI VMR9_SurfaceAllocator_QueryInterface ( IVMRSurfaceAllocator9 *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 2380 of file vmr9.c.

2381{
2383 return IVMRImagePresenter9_QueryInterface(&presenter->IVMRImagePresenter9_iface, iid, out);
2384}

◆ VMR9_SurfaceAllocator_Release()

static ULONG WINAPI VMR9_SurfaceAllocator_Release ( IVMRSurfaceAllocator9 *  iface)
static

Definition at line 2392 of file vmr9.c.

2393{
2395 return IVMRImagePresenter9_Release(&presenter->IVMRImagePresenter9_iface);
2396}

◆ VMR9_SurfaceAllocator_TerminateDevice()

static HRESULT WINAPI VMR9_SurfaceAllocator_TerminateDevice ( IVMRSurfaceAllocator9 *  iface,
DWORD_PTR  cookie 
)
static

Definition at line 2527 of file vmr9.c.

2528{
2529 TRACE("iface %p, cookie %#Ix.\n", iface, cookie);
2530
2531 return S_OK;
2532}

◆ VMR9FilterConfig_AddRef()

static ULONG WINAPI VMR9FilterConfig_AddRef ( IVMRFilterConfig9 *  iface)
static

Definition at line 1026 of file vmr9.c.

1027{
1029 return IUnknown_AddRef(This->renderer.filter.outer_unk);
1030}
static struct quartz_vmr * impl_from_IVMRFilterConfig9(IVMRFilterConfig9 *iface)
Definition: vmr9.c:128

◆ VMR9FilterConfig_GetNumberOfStreams()

static HRESULT WINAPI VMR9FilterConfig_GetNumberOfStreams ( IVMRFilterConfig9 *  iface,
DWORD *  count 
)
static

Definition at line 1073 of file vmr9.c.

1074{
1076
1077 TRACE("filter %p, count %p.\n", filter, count);
1078
1079 EnterCriticalSection(&filter->renderer.filter.filter_cs);
1080
1081 if (!filter->stream_count)
1082 {
1083 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1085 }
1086
1087 *count = filter->stream_count;
1088
1089 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1090 return S_OK;
1091}
#define VFW_E_VMR_NOT_IN_MIXER_MODE
Definition: vfwmsgs.h:155

◆ VMR9FilterConfig_GetRenderingMode()

static HRESULT WINAPI VMR9FilterConfig_GetRenderingMode ( IVMRFilterConfig9 *  iface,
DWORD *  mode 
)
static

Definition at line 1156 of file vmr9.c.

1157{
1159
1160 TRACE("(%p/%p)->(%p)\n", iface, This, mode);
1161 if (!mode)
1162 return E_POINTER;
1163
1164 if (This->mode)
1165 *mode = This->mode;
1166 else
1168
1169 return S_OK;
1170}
#define E_POINTER
Definition: winerror.h:3480

◆ VMR9FilterConfig_GetRenderingPrefs()

static HRESULT WINAPI VMR9FilterConfig_GetRenderingPrefs ( IVMRFilterConfig9 *  iface,
DWORD *  renderflags 
)
static

Definition at line 1102 of file vmr9.c.

1103{
1105
1106 FIXME("(%p/%p)->(%p) stub\n", iface, This, renderflags);
1107 return E_NOTIMPL;
1108}

◆ VMR9FilterConfig_QueryInterface()

static HRESULT WINAPI VMR9FilterConfig_QueryInterface ( IVMRFilterConfig9 *  iface,
REFIID  riid,
LPVOID *  ppv 
)
static

Definition at line 1020 of file vmr9.c.

1021{
1023 return IUnknown_QueryInterface(This->renderer.filter.outer_unk, riid, ppv);
1024}

◆ VMR9FilterConfig_Release()

static ULONG WINAPI VMR9FilterConfig_Release ( IVMRFilterConfig9 *  iface)
static

Definition at line 1032 of file vmr9.c.

1033{
1035 return IUnknown_Release(This->renderer.filter.outer_unk);
1036}

◆ VMR9FilterConfig_SetImageCompositor()

static HRESULT WINAPI VMR9FilterConfig_SetImageCompositor ( IVMRFilterConfig9 *  iface,
IVMRImageCompositor9 *  compositor 
)
static

Definition at line 1038 of file vmr9.c.

1039{
1041
1042 FIXME("(%p/%p)->(%p) stub\n", iface, This, compositor);
1043 return E_NOTIMPL;
1044}

◆ VMR9FilterConfig_SetNumberOfStreams()

static HRESULT WINAPI VMR9FilterConfig_SetNumberOfStreams ( IVMRFilterConfig9 *  iface,
DWORD  count 
)
static

Definition at line 1046 of file vmr9.c.

1047{
1049
1050 FIXME("iface %p, count %lu, stub!\n", iface, count);
1051
1052 if (!count)
1053 {
1054 WARN("Application requested zero streams; returning E_INVALIDARG.\n");
1055 return E_INVALIDARG;
1056 }
1057
1058 EnterCriticalSection(&filter->renderer.filter.filter_cs);
1059
1060 if (filter->stream_count)
1061 {
1062 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1063 WARN("Stream count is already set; returning VFW_E_WRONG_STATE.\n");
1064 return VFW_E_WRONG_STATE;
1065 }
1066
1067 filter->stream_count = count;
1068
1069 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1070 return S_OK;
1071}
#define E_INVALIDARG
Definition: ddrawi.h:101

◆ VMR9FilterConfig_SetRenderingMode()

static HRESULT WINAPI VMR9FilterConfig_SetRenderingMode ( IVMRFilterConfig9 *  iface,
DWORD  mode 
)
static

Definition at line 1110 of file vmr9.c.

1111{
1113 HRESULT hr = S_OK;
1115
1116 TRACE("filter %p, mode %lu.\n", This, mode);
1117
1118 EnterCriticalSection(&This->renderer.filter.filter_cs);
1119 if (This->mode)
1120 {
1121 LeaveCriticalSection(&This->renderer.filter.filter_cs);
1122 return VFW_E_WRONG_STATE;
1123 }
1124
1125 switch (mode)
1126 {
1127 case VMR9Mode_Windowed:
1130 {
1131 ERR("Failed to create default presenter, hr %#lx.\n", hr);
1132 LeaveCriticalSection(&This->renderer.filter.filter_cs);
1133 return hr;
1134 }
1137 IVMRImagePresenter9_AddRef(This->presenter);
1138
1139 IVMRSurfaceAllocator9_AdviseNotify(This->allocator, &This->IVMRSurfaceAllocatorNotify9_iface);
1140 break;
1142 break;
1143 default:
1144 LeaveCriticalSection(&This->renderer.filter.filter_cs);
1145 return E_INVALIDARG;
1146 }
1147
1148 if (mode != VMR9Mode_Windowed)
1149 video_window_cleanup(&This->window);
1150
1151 This->mode = mode;
1152 LeaveCriticalSection(&This->renderer.filter.filter_cs);
1153 return hr;
1154}
static HRESULT default_presenter_create(struct quartz_vmr *parent, struct default_presenter **presenter)
Definition: vmr9.c:2590
IVMRSurfaceAllocator9 IVMRSurfaceAllocator9_iface
Definition: vmr9.c:151
IVMRImagePresenter9 IVMRImagePresenter9_iface
Definition: vmr9.c:150
@ VMR9Mode_Renderless
Definition: vmr9.idl:356

◆ VMR9FilterConfig_SetRenderingPrefs()

static HRESULT WINAPI VMR9FilterConfig_SetRenderingPrefs ( IVMRFilterConfig9 *  iface,
DWORD  flags 
)
static

Definition at line 1093 of file vmr9.c.

1094{
1096
1097 TRACE("filter %p, flags %#lx.\n", filter, flags);
1098
1099 return E_NOTIMPL;
1100}

◆ VMR9MonitorConfig_AddRef()

static ULONG WINAPI VMR9MonitorConfig_AddRef ( IVMRMonitorConfig9 *  iface)
static

Definition at line 927 of file vmr9.c.

928{
930 return IUnknown_AddRef(This->renderer.filter.outer_unk);
931}
static struct quartz_vmr * impl_from_IVMRMonitorConfig9(IVMRMonitorConfig9 *iface)
Definition: vmr9.c:133

◆ VMR9MonitorConfig_GetAvailableMonitors()

static HRESULT WINAPI VMR9MonitorConfig_GetAvailableMonitors ( IVMRMonitorConfig9 *  iface,
VMR9MonitorInfo *  info,
DWORD  arraysize,
DWORD *  numdev 
)
static

Definition at line 983 of file vmr9.c.

986{
989
990 TRACE("filter %p, info %p, arraysize %lu, numdev %p.\n", This, info, arraysize, numdev);
991
992 if (!numdev)
993 return E_POINTER;
994
995 if (info && arraysize == 0)
996 return E_INVALIDARG;
997
998 args.info7 = NULL;
999 args.info9 = info;
1000 args.arraysize = arraysize;
1001 args.numdev = 0;
1003
1004 *numdev = args.numdev;
1005 return S_OK;
1006}
static BOOL CALLBACK get_available_monitors_proc(HMONITOR hmon, HDC hdc, LPRECT lprc, LPARAM lparam)
Definition: vmr9.c:853
LONG_PTR LPARAM
Definition: minwindef.h:175
BOOL WINAPI EnumDisplayMonitors(_In_opt_ HDC, _In_opt_ LPCRECT, _In_ MONITORENUMPROC, _In_ LPARAM)

◆ VMR9MonitorConfig_GetDefaultMonitor()

static HRESULT WINAPI VMR9MonitorConfig_GetDefaultMonitor ( IVMRMonitorConfig9 *  iface,
UINT *  uDev 
)
static

Definition at line 970 of file vmr9.c.

971{
973
974 FIXME("(%p/%p)->(%p) stub\n", iface, This, uDev);
975
976 if (!uDev)
977 return E_POINTER;
978
979 *uDev = 0;
980 return S_OK;
981}

◆ VMR9MonitorConfig_GetMonitor()

static HRESULT WINAPI VMR9MonitorConfig_GetMonitor ( IVMRMonitorConfig9 *  iface,
UINT *  uDev 
)
static

Definition at line 948 of file vmr9.c.

949{
951
952 FIXME("(%p/%p)->(%p) stub\n", iface, This, uDev);
953
954 if (!uDev)
955 return E_POINTER;
956
957 *uDev = 0;
958 return S_OK;
959}

◆ VMR9MonitorConfig_QueryInterface()

static HRESULT WINAPI VMR9MonitorConfig_QueryInterface ( IVMRMonitorConfig9 *  iface,
REFIID  riid,
LPVOID *  ppv 
)
static

Definition at line 920 of file vmr9.c.

922{
924 return IUnknown_QueryInterface(This->renderer.filter.outer_unk, riid, ppv);
925}

◆ VMR9MonitorConfig_Release()

static ULONG WINAPI VMR9MonitorConfig_Release ( IVMRMonitorConfig9 *  iface)
static

Definition at line 933 of file vmr9.c.

934{
936 return IUnknown_Release(This->renderer.filter.outer_unk);
937}

◆ VMR9MonitorConfig_SetDefaultMonitor()

static HRESULT WINAPI VMR9MonitorConfig_SetDefaultMonitor ( IVMRMonitorConfig9 *  iface,
UINT  uDev 
)
static

Definition at line 961 of file vmr9.c.

962{
964
965 FIXME("(%p/%p)->(%u) stub\n", iface, This, uDev);
966
967 return S_OK;
968}

◆ VMR9MonitorConfig_SetMonitor()

static HRESULT WINAPI VMR9MonitorConfig_SetMonitor ( IVMRMonitorConfig9 *  iface,
UINT  uDev 
)
static

Definition at line 939 of file vmr9.c.

940{
942
943 FIXME("(%p/%p)->(%u) stub\n", iface, This, uDev);
944
945 return S_OK;
946}

◆ VMR9SurfaceAllocatorNotify_AddRef()

static ULONG WINAPI VMR9SurfaceAllocatorNotify_AddRef ( IVMRSurfaceAllocatorNotify9 *  iface)
static

Definition at line 1417 of file vmr9.c.

1418{
1420 ULONG refcount = InterlockedIncrement(&filter->IVMRSurfaceAllocatorNotify9_refcount);
1421
1422 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
1423
1424 return refcount;
1425}
static struct quartz_vmr * impl_from_IVMRSurfaceAllocatorNotify9(IVMRSurfaceAllocatorNotify9 *iface)
Definition: vmr9.c:138

◆ VMR9SurfaceAllocatorNotify_AdviseSurfaceAllocator()

static HRESULT WINAPI VMR9SurfaceAllocatorNotify_AdviseSurfaceAllocator ( IVMRSurfaceAllocatorNotify9 *  iface,
DWORD_PTR  cookie,
IVMRSurfaceAllocator9 *  allocator 
)
static

Definition at line 1440 of file vmr9.c.

1442{
1445
1446 TRACE("filter %p, cookie %#Ix, allocator %p.\n", filter, cookie, allocator);
1447
1448 EnterCriticalSection(&filter->renderer.filter.filter_cs);
1449
1450 filter->cookie = cookie;
1451
1452 if (filter->renderer.sink.pin.peer)
1453 {
1454 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1455 WARN("Attempt to set allocator while connected; returning VFW_E_WRONG_STATE.\n");
1456 return VFW_E_WRONG_STATE;
1457 }
1458
1459 if (FAILED(IVMRSurfaceAllocator9_QueryInterface(allocator, &IID_IVMRImagePresenter9, (void **)&presenter)))
1460 {
1461 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1462 return E_NOINTERFACE;
1463 }
1464
1465 if (filter->allocator)
1466 {
1467 IVMRImagePresenter9_Release(filter->presenter);
1468 IVMRSurfaceAllocator9_Release(filter->allocator);
1469 }
1470 filter->allocator = allocator;
1471 filter->presenter = presenter;
1472 IVMRSurfaceAllocator9_AddRef(allocator);
1473
1474 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1475 return S_OK;
1476}
IVMRSurfaceAllocator9 * allocator
Definition: vmr9.c:81
IVMRImagePresenter9 * presenter
Definition: vmr9.c:82
DWORD_PTR cookie
Definition: vmr9.c:101

◆ VMR9SurfaceAllocatorNotify_AllocateSurfaceHelper()

static HRESULT WINAPI VMR9SurfaceAllocatorNotify_AllocateSurfaceHelper ( IVMRSurfaceAllocatorNotify9 *  iface,
VMR9AllocationInfo *  allocinfo,
DWORD *  numbuffers,
IDirect3DSurface9 **  surface 
)
static

Definition at line 1514 of file vmr9.c.

1515{
1517 DWORD i;
1518 HRESULT hr = S_OK;
1519
1520 TRACE("filter %p, allocinfo %p, numbuffers %p, surface %p.\n", This, numbuffers, allocinfo, surface);
1521
1522 if (!allocinfo || !numbuffers || !surface)
1523 return E_POINTER;
1524
1525 TRACE("Flags %#lx, size %lux%lu, format %u (%#x), pool %u, minimum buffers %lu.\n",
1526 allocinfo->dwFlags, allocinfo->dwWidth, allocinfo->dwHeight,
1527 allocinfo->Format, allocinfo->Format, allocinfo->Pool, allocinfo->MinBuffers);
1528
1529 if ((allocinfo->dwFlags & VMR9AllocFlag_TextureSurface)
1530 && (allocinfo->dwFlags & VMR9AllocFlag_OffscreenSurface))
1531 {
1532 WARN("Invalid flags specified; returning E_INVALIDARG.\n");
1533 return E_INVALIDARG;
1534 }
1535
1536 if (!allocinfo->Format)
1537 {
1538 IDirect3DSurface9 *backbuffer;
1540
1541 IDirect3DDevice9_GetBackBuffer(This->allocator_d3d9_dev, 0, 0,
1542 D3DBACKBUFFER_TYPE_MONO, &backbuffer);
1543 IDirect3DSurface9_GetDesc(backbuffer, &desc);
1544 IDirect3DSurface9_Release(backbuffer);
1545 allocinfo->Format = desc.Format;
1546 }
1547
1548 if (!*numbuffers || *numbuffers < allocinfo->MinBuffers)
1549 {
1550 WARN("%lu surfaces requested (minimum %lu); returning E_INVALIDARG.\n",
1551 *numbuffers, allocinfo->MinBuffers);
1552 return E_INVALIDARG;
1553 }
1554
1555 if (!This->allocator_d3d9_dev)
1556 {
1557 WARN("No Direct3D device; returning VFW_E_WRONG_STATE.\n");
1558 return VFW_E_WRONG_STATE;
1559 }
1560
1561 if (allocinfo->dwFlags == VMR9AllocFlag_OffscreenSurface)
1562 {
1563 for (i = 0; i < *numbuffers; ++i)
1564 {
1565 hr = IDirect3DDevice9_CreateOffscreenPlainSurface(This->allocator_d3d9_dev, allocinfo->dwWidth, allocinfo->dwHeight,
1566 allocinfo->Format, allocinfo->Pool, &surface[i], NULL);
1567 if (FAILED(hr))
1568 break;
1569 }
1570 }
1571 else if (allocinfo->dwFlags == VMR9AllocFlag_TextureSurface)
1572 {
1573 for (i = 0; i < *numbuffers; ++i)
1574 {
1575 IDirect3DTexture9 *texture;
1576
1577 hr = IDirect3DDevice9_CreateTexture(This->allocator_d3d9_dev, allocinfo->dwWidth, allocinfo->dwHeight, 1, D3DUSAGE_DYNAMIC,
1578 allocinfo->Format, allocinfo->Pool, &texture, NULL);
1579 if (FAILED(hr))
1580 break;
1583 }
1584 }
1585 else if (allocinfo->dwFlags == VMR9AllocFlag_3DRenderTarget)
1586 {
1587 for (i = 0; i < *numbuffers; ++i)
1588 {
1589 if (FAILED(hr = IDirect3DDevice9_CreateRenderTarget(This->allocator_d3d9_dev,
1590 allocinfo->dwWidth, allocinfo->dwHeight, allocinfo->Format,
1591 D3DMULTISAMPLE_NONE, 0, FALSE, &surface[i], NULL)))
1592 break;
1593 }
1594 }
1595 else
1596 {
1597 FIXME("Unhandled flags %#lx.\n", allocinfo->dwFlags);
1598 return E_NOTIMPL;
1599 }
1600
1601 if (FAILED(hr))
1602 WARN("%lu/%lu surfaces allocated, hr %#lx.\n", i, *numbuffers, hr);
1603
1604 if (i >= allocinfo->MinBuffers)
1605 {
1606 hr = S_OK;
1607 *numbuffers = i;
1608 }
1609 else
1610 {
1611 for ( ; i > 0; --i) IDirect3DSurface9_Release(surface[i - 1]);
1612 *numbuffers = 0;
1613 }
1614 return hr;
1615}
@ D3DMULTISAMPLE_NONE
Definition: d3d8types.h:672
#define D3DUSAGE_DYNAMIC
Definition: d3d8types.h:99
#define IDirect3DTexture9_GetSurfaceLevel(p, a, b)
Definition: d3d9.h:861
#define IDirect3DDevice9_CreateTexture(p, a, b, c, d, e, f, g, h)
Definition: d3d9.h:1358
#define IDirect3DSurface9_GetDesc(p, a)
Definition: d3d9.h:462
#define IDirect3DTexture9_Release(p)
Definition: d3d9.h:842
#define IDirect3DDevice9_CreateRenderTarget(p, a, b, c, d, e, f, g, h)
Definition: d3d9.h:1363
#define IDirect3DDevice9_CreateOffscreenPlainSurface(p, a, b, c, d, e, f)
Definition: d3d9.h:1371
GLenum GLuint texture
Definition: glext.h:6295
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
D3DFORMAT Format
Definition: vmr9.idl:99
@ VMR9AllocFlag_3DRenderTarget
Definition: vmr9.idl:85

◆ VMR9SurfaceAllocatorNotify_ChangeD3DDevice()

static HRESULT WINAPI VMR9SurfaceAllocatorNotify_ChangeD3DDevice ( IVMRSurfaceAllocatorNotify9 *  iface,
IDirect3DDevice9 *  device,
HMONITOR  monitor 
)
static

Definition at line 1493 of file vmr9.c.

1495{
1497
1498 TRACE("(%p/%p)->(...).\n", iface, This);
1499
1500 if (This->allocator_d3d9_dev)
1501 IDirect3DDevice9_Release(This->allocator_d3d9_dev);
1502 This->allocator_d3d9_dev = device;
1503 IDirect3DDevice9_AddRef(This->allocator_d3d9_dev);
1504
1505 if (This->surfaces)
1506 {
1508 allocate_surfaces(This, &This->renderer.sink.pin.mt);
1509 }
1510
1511 return S_OK;
1512}
#define IDirect3DDevice9_AddRef(p)
Definition: d3d9.h:1335
static void deallocate_surfaces(struct quartz_vmr *filter)
Definition: vmr9.c:511
static HRESULT allocate_surfaces(struct quartz_vmr *filter, const AM_MEDIA_TYPE *mt)
Definition: vmr9.c:385

◆ VMR9SurfaceAllocatorNotify_NotifyEvent()

static HRESULT WINAPI VMR9SurfaceAllocatorNotify_NotifyEvent ( IVMRSurfaceAllocatorNotify9 *  iface,
LONG  code,
LONG_PTR  param1,
LONG_PTR  param2 
)
static

Definition at line 1617 of file vmr9.c.

1618{
1621 HRESULT hr;
1622
1623 TRACE("filter %p, code %#lx, param1 %#Ix, param2 %#Ix.\n", This, code, param1, param2);
1624
1625 hr = IFilterGraph_QueryInterface(This->renderer.filter.graph, &IID_IMediaEventSink, (void **)&sink);
1626 if (FAILED(hr))
1627 return hr;
1628 hr = IMediaEventSink_Notify(sink, code, param1, param2);
1629 IMediaEventSink_Release(sink);
1630 return hr;
1631}
Definition: inflate.c:139

◆ VMR9SurfaceAllocatorNotify_QueryInterface()

static HRESULT WINAPI VMR9SurfaceAllocatorNotify_QueryInterface ( IVMRSurfaceAllocatorNotify9 *  iface,
REFIID  riid,
LPVOID *  ppv 
)
static

Definition at line 1411 of file vmr9.c.

1412{
1414 return IUnknown_QueryInterface(This->renderer.filter.outer_unk, riid, ppv);
1415}

◆ VMR9SurfaceAllocatorNotify_Release()

static ULONG WINAPI VMR9SurfaceAllocatorNotify_Release ( IVMRSurfaceAllocatorNotify9 *  iface)
static

Definition at line 1427 of file vmr9.c.

1428{
1430 ULONG refcount = InterlockedDecrement(&filter->IVMRSurfaceAllocatorNotify9_refcount);
1431
1432 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
1433
1434 if (!refcount && !filter->renderer.filter.refcount)
1435 free(filter);
1436
1437 return refcount;
1438}

◆ VMR9SurfaceAllocatorNotify_SetD3DDevice()

static HRESULT WINAPI VMR9SurfaceAllocatorNotify_SetD3DDevice ( IVMRSurfaceAllocatorNotify9 *  iface,
IDirect3DDevice9 *  device,
HMONITOR  monitor 
)
static

Definition at line 1478 of file vmr9.c.

1480{
1482
1483 TRACE("filter %p, device %p, monitor %p.\n", filter, device, monitor);
1484
1485 if (filter->allocator_d3d9_dev)
1486 IDirect3DDevice9_Release(filter->allocator_d3d9_dev);
1487 filter->allocator_d3d9_dev = device;
1489
1490 return S_OK;
1491}

◆ VMR9WindowlessControl_AddRef()

static ULONG WINAPI VMR9WindowlessControl_AddRef ( IVMRWindowlessControl9 *  iface)
static

Definition at line 1192 of file vmr9.c.

1193{
1195 return IUnknown_AddRef(This->renderer.filter.outer_unk);
1196}
static struct quartz_vmr * impl_from_IVMRWindowlessControl9(IVMRWindowlessControl9 *iface)
Definition: vmr9.c:143

◆ VMR9WindowlessControl_DisplayModeChanged()

static HRESULT WINAPI VMR9WindowlessControl_DisplayModeChanged ( IVMRWindowlessControl9 *  iface)
static

Definition at line 1359 of file vmr9.c.

1360{
1362
1363 FIXME("(%p/%p)->(...) stub\n", iface, This);
1364 return E_NOTIMPL;
1365}

◆ VMR9WindowlessControl_GetAspectRatioMode()

static HRESULT WINAPI VMR9WindowlessControl_GetAspectRatioMode ( IVMRWindowlessControl9 *  iface,
DWORD *  mode 
)
static

Definition at line 1276 of file vmr9.c.

1277{
1279
1280 TRACE("filter %p, mode %p.\n", filter, mode);
1281
1282 EnterCriticalSection(&filter->renderer.filter.filter_cs);
1283 *mode = filter->aspect_mode;
1284 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1285 return S_OK;
1286}

◆ VMR9WindowlessControl_GetBorderColor()

static HRESULT WINAPI VMR9WindowlessControl_GetBorderColor ( IVMRWindowlessControl9 *  iface,
COLORREF *  color 
)
static

Definition at line 1383 of file vmr9.c.

1384{
1386
1387 FIXME("(%p/%p)->(...) stub\n", iface, This);
1388 return E_NOTIMPL;
1389}

◆ VMR9WindowlessControl_GetCurrentImage()

static HRESULT WINAPI VMR9WindowlessControl_GetCurrentImage ( IVMRWindowlessControl9 *  iface,
BYTE **  dib 
)
static

Definition at line 1367 of file vmr9.c.

1368{
1370
1371 FIXME("(%p/%p)->(...) stub\n", iface, This);
1372 return E_NOTIMPL;
1373}

◆ VMR9WindowlessControl_GetMaxIdealVideoSize()

static HRESULT WINAPI VMR9WindowlessControl_GetMaxIdealVideoSize ( IVMRWindowlessControl9 *  iface,
LONG *  width,
LONG *  height 
)
static

Definition at line 1234 of file vmr9.c.

1235{
1237
1238 FIXME("(%p/%p)->(...) stub\n", iface, This);
1239 return E_NOTIMPL;
1240}

◆ VMR9WindowlessControl_GetMinIdealVideoSize()

static HRESULT WINAPI VMR9WindowlessControl_GetMinIdealVideoSize ( IVMRWindowlessControl9 *  iface,
LONG *  width,
LONG *  height 
)
static

Definition at line 1226 of file vmr9.c.

1227{
1229
1230 FIXME("(%p/%p)->(...) stub\n", iface, This);
1231 return E_NOTIMPL;
1232}

◆ VMR9WindowlessControl_GetNativeVideoSize()

static HRESULT WINAPI VMR9WindowlessControl_GetNativeVideoSize ( IVMRWindowlessControl9 *  iface,
LONG *  width,
LONG *  height,
LONG *  aspect_width,
LONG *  aspect_height 
)
static

Definition at line 1204 of file vmr9.c.

1206{
1209
1210 TRACE("filter %p, width %p, height %p, aspect_width %p, aspect_height %p.\n",
1211 filter, width, height, aspect_width, aspect_height);
1212
1213 if (!width || !height)
1214 return E_POINTER;
1215
1216 *width = bmiheader->biWidth;
1217 *height = bmiheader->biHeight;
1218 if (aspect_width)
1219 *aspect_width = bmiheader->biWidth;
1220 if (aspect_height)
1221 *aspect_height = bmiheader->biHeight;
1222
1223 return S_OK;
1224}
static const BITMAPINFOHEADER * get_filter_bitmap_header(const struct quartz_vmr *filter)
Definition: vmr9.c:108

◆ VMR9WindowlessControl_GetVideoPosition()

static HRESULT WINAPI VMR9WindowlessControl_GetVideoPosition ( IVMRWindowlessControl9 *  iface,
RECT *  src,
RECT *  dst 
)
static

Definition at line 1261 of file vmr9.c.

1262{
1264
1265 TRACE("filter %p, src %p, dst %p.\n", filter, src, dst);
1266
1267 if (src)
1268 *src = filter->window.src;
1269
1270 if (dst)
1271 *dst = filter->window.dst;
1272
1273 return S_OK;
1274}

◆ VMR9WindowlessControl_QueryInterface()

static HRESULT WINAPI VMR9WindowlessControl_QueryInterface ( IVMRWindowlessControl9 *  iface,
REFIID  riid,
LPVOID *  ppv 
)
static

Definition at line 1186 of file vmr9.c.

1187{
1189 return IUnknown_QueryInterface(This->renderer.filter.outer_unk, riid, ppv);
1190}

◆ VMR9WindowlessControl_Release()

static ULONG WINAPI VMR9WindowlessControl_Release ( IVMRWindowlessControl9 *  iface)
static

Definition at line 1198 of file vmr9.c.

1199{
1201 return IUnknown_Release(This->renderer.filter.outer_unk);
1202}

◆ VMR9WindowlessControl_RepaintVideo()

static HRESULT WINAPI VMR9WindowlessControl_RepaintVideo ( IVMRWindowlessControl9 *  iface,
HWND  hwnd,
HDC  hdc 
)
static

Definition at line 1330 of file vmr9.c.

1331{
1333 HRESULT hr;
1334
1335 FIXME("(%p/%p)->(...) semi-stub\n", iface, This);
1336
1337 EnterCriticalSection(&This->renderer.filter.filter_cs);
1338 if (hwnd != This->clipping_window)
1339 {
1340 ERR("Not handling changing windows yet!!!\n");
1341 LeaveCriticalSection(&This->renderer.filter.filter_cs);
1342 return S_OK;
1343 }
1344
1345 if (!This->allocator_d3d9_dev)
1346 {
1347 ERR("No d3d9 device!\n");
1348 LeaveCriticalSection(&This->renderer.filter.filter_cs);
1349 return VFW_E_WRONG_STATE;
1350 }
1351
1352 /* Windowless extension */
1353 hr = IDirect3DDevice9_Present(This->allocator_d3d9_dev, NULL, NULL, NULL, NULL);
1354 LeaveCriticalSection(&This->renderer.filter.filter_cs);
1355
1356 return hr;
1357}

◆ VMR9WindowlessControl_SetAspectRatioMode()

static HRESULT WINAPI VMR9WindowlessControl_SetAspectRatioMode ( IVMRWindowlessControl9 *  iface,
DWORD  mode 
)
static

Definition at line 1288 of file vmr9.c.

1289{
1291
1292 TRACE("filter %p, mode %lu.\n", filter, mode);
1293
1294 EnterCriticalSection(&filter->renderer.filter.filter_cs);
1295 filter->aspect_mode = mode;
1296 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1297 return S_OK;
1298}

◆ VMR9WindowlessControl_SetBorderColor()

static HRESULT WINAPI VMR9WindowlessControl_SetBorderColor ( IVMRWindowlessControl9 *  iface,
COLORREF  color 
)
static

Definition at line 1375 of file vmr9.c.

1376{
1378
1379 FIXME("(%p/%p)->(...) stub\n", iface, This);
1380 return E_NOTIMPL;
1381}

◆ VMR9WindowlessControl_SetVideoClippingWindow()

static HRESULT WINAPI VMR9WindowlessControl_SetVideoClippingWindow ( IVMRWindowlessControl9 *  iface,
HWND  window 
)
static

Definition at line 1300 of file vmr9.c.

1301{
1303 HRESULT hr;
1304
1305 TRACE("filter %p, window %p.\n", filter, window);
1306
1307 if (!IsWindow(window))
1308 {
1309 WARN("Invalid window %p, returning E_INVALIDARG.\n", window);
1310 return E_INVALIDARG;
1311 }
1312
1313 EnterCriticalSection(&filter->renderer.filter.filter_cs);
1314
1315 if (filter->renderer.sink.pin.peer)
1316 {
1317 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1318 WARN("Attempt to set the clipping window while connected; returning VFW_E_WRONG_STATE.\n");
1319 return VFW_E_WRONG_STATE;
1320 }
1321
1322 filter->clipping_window = window;
1323
1324 hr = IVMRFilterConfig9_SetNumberOfStreams(&filter->IVMRFilterConfig9_iface, 4);
1325
1326 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1327 return hr;
1328}
BOOL WINAPI IsWindow(_In_opt_ HWND)

◆ VMR9WindowlessControl_SetVideoPosition()

static HRESULT WINAPI VMR9WindowlessControl_SetVideoPosition ( IVMRWindowlessControl9 *  iface,
const RECT *  src,
const RECT *  dst 
)
static

Definition at line 1242 of file vmr9.c.

1244{
1246
1247 TRACE("filter %p, src %s, dst %s.\n", filter, wine_dbgstr_rect(src), wine_dbgstr_rect(dst));
1248
1249 EnterCriticalSection(&filter->renderer.filter.filter_cs);
1250
1251 if (src)
1252 filter->window.src = *src;
1253 if (dst)
1254 filter->window.dst = *dst;
1255
1256 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1257
1258 return S_OK;
1259}

◆ vmr_connect()

static HRESULT vmr_connect ( struct strmbase_renderer *  iface,
const AM_MEDIA_TYPE *  mt 
)
static

Definition at line 487 of file vmr9.c.

488{
489 struct quartz_vmr *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
490 const BITMAPINFOHEADER *bitmap_header = get_bitmap_header(mt);
491 HWND window = filter->window.hwnd;
492 HRESULT hr;
493 RECT rect;
494
495 SetRect(&rect, 0, 0, bitmap_header->biWidth, bitmap_header->biHeight);
496 filter->window.src = rect;
497
502 GetClientRect(window, &filter->window.dst);
503
504 if (filter->mode
505 || SUCCEEDED(hr = IVMRFilterConfig9_SetRenderingMode(&filter->IVMRFilterConfig9_iface, VMR9Mode_Windowed)))
507
508 return hr;
509}
static struct quartz_vmr * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: vmr9.c:179
#define SWP_NOACTIVATE
Definition: winuser.h:1253
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
#define SWP_NOMOVE
Definition: winuser.h:1255
BOOL WINAPI AdjustWindowRectEx(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL, _In_ DWORD)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define SWP_NOZORDER
Definition: winuser.h:1258
#define GWL_STYLE
Definition: winuser.h:863
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
#define GWL_EXSTYLE
Definition: winuser.h:862
struct strmbase_filter filter
Definition: strmbase.h:260

◆ vmr_destroy()

static void vmr_destroy ( struct strmbase_renderer *  iface)
static

Definition at line 532 of file vmr9.c.

533{
534 struct quartz_vmr *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
535
537
538 /* Devil May Cry 3 releases the IVMRSurfaceAllocatorNotify9 interface from
539 * TerminateDevice(). Artificially increase the reference count so that we
540 * don't free the filter yet. */
541 InterlockedIncrement(&filter->renderer.filter.refcount);
542
543 if (filter->allocator)
544 {
545 IVMRSurfaceAllocator9_TerminateDevice(filter->allocator, filter->cookie);
546 IVMRSurfaceAllocator9_Release(filter->allocator);
547 }
548 if (filter->presenter)
549 IVMRImagePresenter9_Release(filter->presenter);
550
551 filter->num_surfaces = 0;
552 if (filter->allocator_d3d9_dev)
553 {
554 IDirect3DDevice9_Release(filter->allocator_d3d9_dev);
555 filter->allocator_d3d9_dev = NULL;
556 }
557
558 FreeLibrary(filter->hD3d9);
560 if (!filter->IVMRSurfaceAllocatorNotify9_refcount)
561 free(filter);
562}

◆ vmr_disconnect()

static void vmr_disconnect ( struct strmbase_renderer *  This)
static

Definition at line 526 of file vmr9.c.

527{
528 struct quartz_vmr *filter = impl_from_IBaseFilter(&This->filter.IBaseFilter_iface);
530}

◆ vmr_get_current_image()

static HRESULT vmr_get_current_image ( struct video_window *  iface,
LONG *  size,
LONG *  image 
)
static

Definition at line 634 of file vmr9.c.

635{
637 IDirect3DSurface9 *rt = NULL, *surface = NULL;
638 D3DLOCKED_RECT locked_rect;
640 unsigned int row_size;
642 LONG i, size_left;
643 char *dst;
644 HRESULT hr;
645
646 EnterCriticalSection(&filter->renderer.filter.stream_cs);
647 device = filter->allocator_d3d9_dev;
648
650 bih.biSizeImage = bih.biWidth * bih.biHeight * bih.biBitCount / 8;
651
652 if (!image)
653 {
654 *size = sizeof(BITMAPINFOHEADER) + bih.biSizeImage;
655 LeaveCriticalSection(&filter->renderer.filter.stream_cs);
656 return S_OK;
657 }
658
660 goto out;
661
664 goto out;
665
667 goto out;
668
669 if (FAILED(hr = IDirect3DSurface9_LockRect(surface, &locked_rect, NULL, D3DLOCK_READONLY)))
670 goto out;
671
672 size_left = *size;
673 memcpy(image, &bih, min(size_left, sizeof(BITMAPINFOHEADER)));
674 size_left -= sizeof(BITMAPINFOHEADER);
675
676 dst = (char *)image + sizeof(BITMAPINFOHEADER);
677 row_size = bih.biWidth * bih.biBitCount / 8;
678
679 for (i = 0; i < bih.biHeight && size_left > 0; ++i)
680 {
681 memcpy(dst, (char *)locked_rect.pBits + (i * locked_rect.Pitch), min(row_size, size_left));
682 dst += row_size;
683 size_left -= row_size;
684 }
685
687
688out:
689 if (surface) IDirect3DSurface9_Release(surface);
690 if (rt) IDirect3DSurface9_Release(rt);
691 LeaveCriticalSection(&filter->renderer.filter.stream_cs);
692 return hr;
693}
@ D3DPOOL_SYSTEMMEM
Definition: d3d8types.h:711
#define D3DLOCK_READONLY
Definition: d3d8types.h:69
#define IDirect3DSurface9_LockRect(p, a, b, c)
Definition: d3d9.h:463
#define IDirect3DDevice9_GetRenderTargetData(p, a, b)
Definition: d3d9.h:1367
#define IDirect3DSurface9_UnlockRect(p)
Definition: d3d9.h:464
#define IDirect3DDevice9_GetRenderTarget(p, a, b)
Definition: d3d9.h:1373
static struct quartz_vmr * impl_from_video_window(struct video_window *iface)
Definition: vmr9.c:113
GLsizeiptr size
Definition: glext.h:5919
long LONG
Definition: pedump.c:60
DWORD biSizeImage
Definition: amvideo.idl:36
Definition: image.c:84

◆ vmr_get_default_rect()

static void vmr_get_default_rect ( struct video_window *  iface,
RECT *  rect 
)
static

Definition at line 626 of file vmr9.c.

627{
629 const BITMAPINFOHEADER *bitmap_header = get_filter_bitmap_header(filter);
630
631 SetRect(rect, 0, 0, bitmap_header->biWidth, bitmap_header->biHeight);
632}

◆ vmr_init_stream()

static void vmr_init_stream ( struct strmbase_renderer *  iface)
static

Definition at line 462 of file vmr9.c.

463{
464 struct quartz_vmr *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
465
466 if (filter->window.hwnd && filter->window.AutoShow)
467 ShowWindow(filter->window.hwnd, SW_SHOW);
468}
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define SW_SHOW
Definition: winuser.h:786

◆ vmr_pin_query_interface()

static HRESULT vmr_pin_query_interface ( struct strmbase_renderer *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 597 of file vmr9.c.

598{
599 struct quartz_vmr *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
600
601 if (IsEqualGUID(iid, &IID_IAMVideoAccelerator))
602 *out = &filter->IAMVideoAccelerator_iface;
603 else if (IsEqualGUID(iid, &IID_IOverlay))
604 *out = &filter->IOverlay_iface;
605 else
606 return E_NOINTERFACE;
607
608 IUnknown_AddRef((IUnknown *)*out);
609 return S_OK;
610}

◆ vmr_query_accept()

static HRESULT vmr_query_accept ( struct strmbase_renderer *  iface,
const AM_MEDIA_TYPE *  mt 
)
static

Definition at line 345 of file vmr9.c.

346{
347 if (!IsEqualIID(&mt->majortype, &MEDIATYPE_Video) || !mt->pbFormat)
348 return S_FALSE;
349
350 if (!IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo)
351 && !IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo2))
352 return S_FALSE;
353
354 return S_OK;
355}
#define S_FALSE
Definition: winerror.h:3451

◆ vmr_query_interface()

static HRESULT vmr_query_interface ( struct strmbase_renderer *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 564 of file vmr9.c.

565{
566 struct quartz_vmr *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
567
568 if (IsEqualGUID(iid, &IID_IVideoWindow))
569 *out = &filter->window.IVideoWindow_iface;
570 else if (IsEqualGUID(iid, &IID_IBasicVideo))
571 *out = &filter->window.IBasicVideo_iface;
572 else if (IsEqualGUID(iid, &IID_IAMCertifiedOutputProtection))
573 *out = &filter->IAMCertifiedOutputProtection_iface;
574 else if (IsEqualGUID(iid, &IID_IAMFilterMiscFlags))
575 *out = &filter->IAMFilterMiscFlags_iface;
576 else if (IsEqualGUID(iid, &IID_IVMRAspectRatioControl9))
577 *out = &filter->IVMRAspectRatioControl9_iface;
578 else if (IsEqualGUID(iid, &IID_IVMRFilterConfig9))
579 *out = &filter->IVMRFilterConfig9_iface;
580 else if (IsEqualGUID(iid, &IID_IVMRMixerBitmap9))
581 *out = &filter->IVMRMixerBitmap9_iface;
582 else if (IsEqualGUID(iid, &IID_IVMRMixerControl9) && filter->stream_count)
583 *out = &filter->IVMRMixerControl9_iface;
584 else if (IsEqualGUID(iid, &IID_IVMRMonitorConfig9) && filter->mode != VMR9Mode_Renderless)
585 *out = &filter->IVMRMonitorConfig9_iface;
586 else if (IsEqualGUID(iid, &IID_IVMRSurfaceAllocatorNotify9) && filter->mode == VMR9Mode_Renderless)
587 *out = &filter->IVMRSurfaceAllocatorNotify9_iface;
588 else if (IsEqualGUID(iid, &IID_IVMRWindowlessControl9) && filter->mode == VMR9Mode_Windowless)
589 *out = &filter->IVMRWindowlessControl9_iface;
590 else
591 return E_NOINTERFACE;
592
593 IUnknown_AddRef((IUnknown *)*out);
594 return S_OK;
595}

◆ vmr_render()

static HRESULT vmr_render ( struct strmbase_renderer *  iface,
IMediaSample *  sample 
)
static

Definition at line 220 of file vmr9.c.

221{
222 struct quartz_vmr *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
223 unsigned int data_size, width, depth, src_pitch;
224 const BITMAPINFOHEADER *bitmap_header;
225 REFERENCE_TIME start_time, end_time;
226#ifdef __REACTOS__ /* '{}' initializer is C23; MSVC before 19.32 rejects it */
228#else
230#endif
231 D3DLOCKED_RECT locked_rect;
232 D3DSURFACE_DESC dst_desc;
233 BYTE *data = NULL;
234 HRESULT hr;
235 int height;
236
237 TRACE("filter %p, sample %p.\n", filter, sample);
238
239 /* It is possible that there is no device at this point */
240
241 if (!filter->allocator || !filter->presenter)
242 {
243 ERR("NO PRESENTER!!\n");
244 return S_FALSE;
245 }
246
248
249 if (SUCCEEDED(hr = IMediaSample_GetTime(sample, &start_time, &end_time)))
250 info.dwFlags |= VMR9Sample_TimeValid;
251
252 if (IMediaSample_IsDiscontinuity(sample) == S_OK)
254
255 if (IMediaSample_IsPreroll(sample) == S_OK)
256 info.dwFlags |= VMR9Sample_Preroll;
257
258 if (IMediaSample_IsSyncPoint(sample) == S_OK)
259 info.dwFlags |= VMR9Sample_SyncPoint;
260
261 if (FAILED(hr = IMediaSample_GetPointer(sample, &data)))
262 {
263 ERR("Failed to get pointer to sample data, hr %#lx.\n", hr);
264 return hr;
265 }
266 data_size = IMediaSample_GetActualDataLength(sample);
267
268 bitmap_header = get_filter_bitmap_header(filter);
269 width = bitmap_header->biWidth;
270 height = bitmap_header->biHeight;
271 depth = bitmap_header->biBitCount;
272 if (bitmap_header->biCompression == mmioFOURCC('N','V','1','2')
273 || bitmap_header->biCompression == mmioFOURCC('Y','V','1','2'))
274 src_pitch = (width + 3) & ~3;
275 else /* packed YUV (UYVY or YUY2) or RGB */
276 src_pitch = ((width * depth / 8) + 3) & ~3;
277
278 info.rtStart = start_time;
279 info.rtEnd = end_time;
280 info.szAspectRatio.cx = width;
281 info.szAspectRatio.cy = height;
282 info.lpSurf = filter->surfaces[(++filter->cur_surface) % filter->num_surfaces];
283
284 if (FAILED(hr = IDirect3DSurface9_GetDesc(info.lpSurf, &dst_desc)))
285 {
286 ERR("Failed to get rendering surface description.\n");
287 return hr;
288 }
289
290 if (width > dst_desc.Width || abs(height) > dst_desc.Height)
291 FIXME("src surface (%ux%u) larger than rendering surface (%ux%u).\n", width, height,
292 dst_desc.Width, dst_desc.Height);
293
294 if (FAILED(hr = IDirect3DSurface9_LockRect(info.lpSurf, &locked_rect, NULL, D3DLOCK_DISCARD)))
295 {
296 ERR("Failed to lock surface, hr %#lx.\n", hr);
297 return hr;
298 }
299
300 if (bitmap_header->biCompression == mmioFOURCC('N','V','1','2'))
301 {
302 BYTE *dst = locked_rect.pBits;
303 const BYTE *src = data;
304
305 copy_plane(&dst, locked_rect.Pitch, dst_desc.Height, &src, src_pitch, height);
306 copy_plane(&dst, locked_rect.Pitch, dst_desc.Height / 2, &src, src_pitch, height / 2);
307 }
308 else if (bitmap_header->biCompression == mmioFOURCC('Y','V','1','2'))
309 {
310 BYTE *dst = locked_rect.pBits;
311 const BYTE *src = data;
312
313 copy_plane(&dst, locked_rect.Pitch, dst_desc.Height, &src, src_pitch, height);
314 copy_plane(&dst, locked_rect.Pitch / 2, dst_desc.Height / 2, &src, src_pitch / 2, height / 2);
315 copy_plane(&dst, locked_rect.Pitch / 2, dst_desc.Height / 2, &src, src_pitch / 2, height / 2);
316 }
317 else if (height > 0 && bitmap_header->biCompression == BI_RGB)
318 {
319 BYTE *dst = locked_rect.pBits;
320 const BYTE *src = data;
321
322 copy_plane(&dst, locked_rect.Pitch, dst_desc.Height, &src, src_pitch, -height);
323 }
324 else if (locked_rect.Pitch != src_pitch)
325 {
326 BYTE *dst = locked_rect.pBits;
327 const BYTE *src = data;
328
329 TRACE("Source pitch %u does not match dest pitch %u; copying manually.\n",
330 src_pitch, locked_rect.Pitch);
331
332 height = abs(height);
333 copy_plane(&dst, locked_rect.Pitch, dst_desc.Height, &src, src_pitch, height);
334 }
335 else
336 {
337 memcpy(locked_rect.pBits, data, data_size);
338 }
339
341
342 return IVMRImagePresenter9_PresentImage(filter->presenter, filter->cookie, &info);
343}
#define D3DLOCK_DISCARD
Definition: d3d8types.h:72
static void copy_plane(BYTE **dstp, unsigned int dst_pitch, unsigned int dst_height, const BYTE **srcp, unsigned int src_pitch, int src_height)
Definition: vmr9.c:184
LONGLONG REFERENCE_TIME
Definition: dmusicks.h:9
#define abs(i)
Definition: fconv.c:206
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
if(dx< 0)
Definition: linetemp.h:194
#define mmioFOURCC(c0, c1, c2, c3)
Definition: mmsystem.h:38
DWORD biCompression
Definition: amvideo.idl:35
#define BI_RGB
Definition: uefivid.c:46
@ VMR9Sample_TimeValid
Definition: vmr9.idl:52
@ VMR9Sample_Preroll
Definition: vmr9.idl:50
@ VMR9Sample_Discontinuity
Definition: vmr9.idl:51
@ VMR9Sample_SyncPoint
Definition: vmr9.idl:49
@ VMR9Sample_SrcDstRectsValid
Definition: vmr9.idl:53

◆ vmr_start_stream()

static void vmr_start_stream ( struct strmbase_renderer *  iface)
static

Definition at line 470 of file vmr9.c.

471{
472 struct quartz_vmr *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
473
474 IVMRImagePresenter9_StartPresenting(filter->presenter, filter->cookie);
475}

◆ vmr_stop_stream()

static void vmr_stop_stream ( struct strmbase_renderer *  iface)
static

Definition at line 477 of file vmr9.c.

478{
479 struct quartz_vmr *This = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
480
481 TRACE("(%p)\n", This);
482
483 if (This->renderer.filter.state == State_Running)
484 IVMRImagePresenter9_StopPresenting(This->presenter, This->cookie);
485}

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( quartz  )

Variable Documentation

◆ aspect_ratio_control9_vtbl

const IVMRAspectRatioControl9Vtbl aspect_ratio_control9_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI aspect_ratio_control9_SetAspectRatioMode(IVMRAspectRatioControl9 *iface, DWORD mode)
Definition: vmr9.c:1908
static ULONG WINAPI aspect_ratio_control9_Release(IVMRAspectRatioControl9 *iface)
Definition: vmr9.c:1890
static HRESULT WINAPI aspect_ratio_control9_GetAspectRatioMode(IVMRAspectRatioControl9 *iface, DWORD *mode)
Definition: vmr9.c:1896
static ULONG WINAPI aspect_ratio_control9_AddRef(IVMRAspectRatioControl9 *iface)
Definition: vmr9.c:1884
static HRESULT WINAPI aspect_ratio_control9_QueryInterface(IVMRAspectRatioControl9 *iface, REFIID iid, void **out)
Definition: vmr9.c:1878

Definition at line 1920 of file vmr9.c.

Referenced by vmr9_create().

◆ IAMCertifiedOutputProtection_Vtbl

const IAMCertifiedOutputProtectionVtbl IAMCertifiedOutputProtection_Vtbl
static
Initial value:
=
{
}
static ULONG WINAPI AMCertifiedOutputProtection_AddRef(IAMCertifiedOutputProtection *iface)
Definition: vmr9.c:758
static HRESULT WINAPI AMCertifiedOutputProtection_KeyExchange(IAMCertifiedOutputProtection *iface, GUID *pRandom, BYTE **VarLenCertGH, DWORD *pdwLengthCertGH)
Definition: vmr9.c:770
static ULONG WINAPI AMCertifiedOutputProtection_Release(IAMCertifiedOutputProtection *iface)
Definition: vmr9.c:764
static HRESULT WINAPI AMCertifiedOutputProtection_SessionSequenceStart(IAMCertifiedOutputProtection *iface, AMCOPPSignature *pSig)
Definition: vmr9.c:780
static HRESULT WINAPI AMCertifiedOutputProtection_QueryInterface(IAMCertifiedOutputProtection *iface, REFIID riid, void **ppv)
Definition: vmr9.c:751
static HRESULT WINAPI AMCertifiedOutputProtection_ProtectionStatus(IAMCertifiedOutputProtection *iface, const AMCOPPStatusInput *pStatusInput, AMCOPPStatusOutput *pStatusOutput)
Definition: vmr9.c:798
static HRESULT WINAPI AMCertifiedOutputProtection_ProtectionCommand(IAMCertifiedOutputProtection *iface, const AMCOPPCommand *cmd)
Definition: vmr9.c:789

Definition at line 808 of file vmr9.c.

Referenced by vmr9_create().

◆ IAMFilterMiscFlags_Vtbl

const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_Vtbl
static
Initial value:
= {
}
static ULONG WINAPI AMFilterMiscFlags_Release(IAMFilterMiscFlags *iface)
Definition: vmr9.c:829
static HRESULT WINAPI AMFilterMiscFlags_QueryInterface(IAMFilterMiscFlags *iface, REFIID riid, void **ppv)
Definition: vmr9.c:819
static ULONG WINAPI AMFilterMiscFlags_GetMiscFlags(IAMFilterMiscFlags *iface)
Definition: vmr9.c:834
static ULONG WINAPI AMFilterMiscFlags_AddRef(IAMFilterMiscFlags *iface)
Definition: vmr9.c:824

Definition at line 838 of file vmr9.c.

Referenced by vmr9_create().

◆ IVideoWindow_VTable

const IVideoWindowVtbl IVideoWindow_VTable
static

Definition at line 701 of file vmr9.c.

Referenced by vmr9_create().

◆ mixer_bitmap9_vtbl

const IVMRMixerBitmap9Vtbl mixer_bitmap9_vtbl
static
Initial value:
=
{
}
static ULONG WINAPI mixer_bitmap9_AddRef(IVMRMixerBitmap9 *iface)
Definition: vmr9.c:1827
static ULONG WINAPI mixer_bitmap9_Release(IVMRMixerBitmap9 *iface)
Definition: vmr9.c:1833
static HRESULT WINAPI mixer_bitmap9_QueryInterface(IVMRMixerBitmap9 *iface, REFIID iid, void **out)
Definition: vmr9.c:1821
static HRESULT WINAPI mixer_bitmap9_UpdateAlphaBitmapParameters(IVMRMixerBitmap9 *iface, const VMR9AlphaBitmap *bitmap)
Definition: vmr9.c:1849
static HRESULT WINAPI mixer_bitmap9_GetAlphaBitmapParameters(IVMRMixerBitmap9 *iface, VMR9AlphaBitmap *bitmap)
Definition: vmr9.c:1856
static HRESULT WINAPI mixer_bitmap9_SetAlphaBitmap(IVMRMixerBitmap9 *iface, const VMR9AlphaBitmap *bitmap)
Definition: vmr9.c:1839

Definition at line 1863 of file vmr9.c.

Referenced by vmr9_create().

◆ mixer_control9_vtbl

const IVMRMixerControl9Vtbl mixer_control9_vtbl
static
Initial value:
=
{
}
static ULONG WINAPI mixer_control9_Release(IVMRMixerControl9 *iface)
Definition: vmr9.c:1662
static HRESULT WINAPI mixer_control9_QueryInterface(IVMRMixerControl9 *iface, REFIID iid, void **out)
Definition: vmr9.c:1650
static HRESULT WINAPI mixer_control9_SetZOrder(IVMRMixerControl9 *iface, DWORD stream, DWORD z)
Definition: vmr9.c:1686
static HRESULT WINAPI mixer_control9_GetZOrder(IVMRMixerControl9 *iface, DWORD stream, DWORD *z)
Definition: vmr9.c:1695
static ULONG WINAPI mixer_control9_AddRef(IVMRMixerControl9 *iface)
Definition: vmr9.c:1656
static HRESULT WINAPI mixer_control9_GetAlpha(IVMRMixerControl9 *iface, DWORD stream, float *alpha)
Definition: vmr9.c:1677
static HRESULT WINAPI mixer_control9_SetProcAmpControl(IVMRMixerControl9 *iface, DWORD stream, VMR9ProcAmpControl *settings)
Definition: vmr9.c:1766
static HRESULT WINAPI mixer_control9_GetProcAmpControlRange(IVMRMixerControl9 *iface, DWORD stream, VMR9ProcAmpControlRange *settings)
Definition: vmr9.c:1786
static HRESULT WINAPI mixer_control9_GetBackgroundClr(IVMRMixerControl9 *iface, COLORREF *color)
Definition: vmr9.c:1733
static HRESULT WINAPI mixer_control9_SetMixingPrefs(IVMRMixerControl9 *iface, DWORD flags)
Definition: vmr9.c:1742
static HRESULT WINAPI mixer_control9_SetOutputRect(IVMRMixerControl9 *iface, DWORD stream, const VMR9NormalizedRect *rect)
Definition: vmr9.c:1704
static HRESULT WINAPI mixer_control9_SetBackgroundClr(IVMRMixerControl9 *iface, COLORREF color)
Definition: vmr9.c:1724
static HRESULT WINAPI mixer_control9_GetMixingPrefs(IVMRMixerControl9 *iface, DWORD *flags)
Definition: vmr9.c:1754
static HRESULT WINAPI mixer_control9_GetProcAmpControl(IVMRMixerControl9 *iface, DWORD stream, VMR9ProcAmpControl *settings)
Definition: vmr9.c:1776
static HRESULT WINAPI mixer_control9_SetAlpha(IVMRMixerControl9 *iface, DWORD stream, float alpha)
Definition: vmr9.c:1668
static HRESULT WINAPI mixer_control9_GetOutputRect(IVMRMixerControl9 *iface, DWORD stream, VMR9NormalizedRect *rect)
Definition: vmr9.c:1714

Definition at line 1796 of file vmr9.c.

Referenced by vmr9_create().

◆ overlay_vtbl

const IOverlayVtbl overlay_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI overlay_GetColorKey(IOverlay *iface, COLORKEY *key)
Definition: vmr9.c:2103
static HRESULT WINAPI overlay_GetWindowHandle(IOverlay *iface, HWND *window)
Definition: vmr9.c:2115
static ULONG WINAPI overlay_AddRef(IOverlay *iface)
Definition: vmr9.c:2073
static HRESULT WINAPI overlay_QueryInterface(IOverlay *iface, REFIID iid, void **out)
Definition: vmr9.c:2067
static HRESULT WINAPI overlay_SetColorKey(IOverlay *iface, COLORKEY *key)
Definition: vmr9.c:2109
static HRESULT WINAPI overlay_SetPalette(IOverlay *iface, DWORD count, PALETTEENTRY *palette)
Definition: vmr9.c:2091
static HRESULT WINAPI overlay_GetVideoPosition(IOverlay *iface, RECT *source, RECT *dest)
Definition: vmr9.c:2134
static HRESULT WINAPI overlay_GetDefaultColorKey(IOverlay *iface, COLORKEY *key)
Definition: vmr9.c:2097
static HRESULT WINAPI overlay_Advise(IOverlay *iface, IOverlayNotify *sink, DWORD flags)
Definition: vmr9.c:2140
static HRESULT WINAPI overlay_Unadvise(IOverlay *iface)
Definition: vmr9.c:2146
static HRESULT WINAPI overlay_GetClipList(IOverlay *iface, RECT *source, RECT *dest, RGNDATA **region)
Definition: vmr9.c:2128
static ULONG WINAPI overlay_Release(IOverlay *iface)
Definition: vmr9.c:2079
static HRESULT WINAPI overlay_GetPalette(IOverlay *iface, DWORD *count, PALETTEENTRY **palette)
Definition: vmr9.c:2085

Definition at line 2152 of file vmr9.c.

Referenced by vmr9_create().

◆ renderer_ops

const struct strmbase_renderer_ops renderer_ops
static
Initial value:
=
{
.renderer_query_accept = vmr_query_accept,
.renderer_render = vmr_render,
.renderer_init_stream = vmr_init_stream,
.renderer_start_stream = vmr_start_stream,
.renderer_stop_stream = vmr_stop_stream,
.renderer_connect = vmr_connect,
.renderer_disconnect = vmr_disconnect,
.renderer_destroy = vmr_destroy,
.renderer_query_interface = vmr_query_interface,
.renderer_pin_query_interface = vmr_pin_query_interface,
}
static HRESULT vmr_query_accept(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)
Definition: vmr9.c:345
static void vmr_stop_stream(struct strmbase_renderer *iface)
Definition: vmr9.c:477
static HRESULT vmr_render(struct strmbase_renderer *iface, IMediaSample *sample)
Definition: vmr9.c:220
static void vmr_init_stream(struct strmbase_renderer *iface)
Definition: vmr9.c:462
static void vmr_disconnect(struct strmbase_renderer *This)
Definition: vmr9.c:526
static HRESULT vmr_query_interface(struct strmbase_renderer *iface, REFIID iid, void **out)
Definition: vmr9.c:564
static void vmr_start_stream(struct strmbase_renderer *iface)
Definition: vmr9.c:470
static HRESULT vmr_pin_query_interface(struct strmbase_renderer *iface, REFIID iid, void **out)
Definition: vmr9.c:597
static HRESULT vmr_connect(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)
Definition: vmr9.c:487
static void vmr_destroy(struct strmbase_renderer *iface)
Definition: vmr9.c:532

Definition at line 612 of file vmr9.c.

Referenced by vmr9_create().

◆ video_accelerator_vtbl

const IAMVideoAcceleratorVtbl video_accelerator_vtbl
static
Initial value:
=
{
}
static ULONG WINAPI video_accelerator_AddRef(IAMVideoAccelerator *iface)
Definition: vmr9.c:1940
static HRESULT WINAPI video_accelerator_Execute(IAMVideoAccelerator *iface, DWORD function, void *in_data, DWORD in_size, void *out_data, DWORD out_size, DWORD buffer_count, const AMVABUFFERINFO *buffers)
Definition: vmr9.c:2018
static HRESULT WINAPI video_accelerator_GetBuffer(IAMVideoAccelerator *iface, DWORD type_index, DWORD buffer_index, BOOL read_only, void **buffer, LONG *stride)
Definition: vmr9.c:2003
static HRESULT WINAPI video_accelerator_QueryRenderStatus(IAMVideoAccelerator *iface, DWORD type_index, DWORD buffer_index, DWORD flags)
Definition: vmr9.c:2028
static HRESULT WINAPI video_accelerator_GetUncompFormatsSupported(IAMVideoAccelerator *iface, const GUID *accelerator, DWORD *count, DDPIXELFORMAT *formats)
Definition: vmr9.c:1959
static HRESULT WINAPI video_accelerator_DisplayFrame(IAMVideoAccelerator *iface, DWORD index, IMediaSample *sample)
Definition: vmr9.c:2036
static HRESULT WINAPI video_accelerator_ReleaseBuffer(IAMVideoAccelerator *iface, DWORD type_index, DWORD buffer_index)
Definition: vmr9.c:2011
static HRESULT WINAPI video_accelerator_GetInternalCompBufferInfo(IAMVideoAccelerator *iface, DWORD *count, AMVACompBufferInfo *infos)
Definition: vmr9.c:1984
static HRESULT WINAPI video_accelerator_EndFrame(IAMVideoAccelerator *iface, const AMVAEndFrameInfo *info)
Definition: vmr9.c:1997
static HRESULT WINAPI video_accelerator_BeginFrame(IAMVideoAccelerator *iface, const AMVABeginFrameInfo *info)
Definition: vmr9.c:1991
static HRESULT WINAPI video_accelerator_QueryInterface(IAMVideoAccelerator *iface, REFIID iid, void **out)
Definition: vmr9.c:1934
static HRESULT WINAPI video_accelerator_GetInternalMemInfo(IAMVideoAccelerator *iface, const GUID *accelerator, const AMVAUncompDataInfo *format_info, AMVAInternalMemInfo *mem_info)
Definition: vmr9.c:1967
static HRESULT WINAPI video_accelerator_GetCompBufferInfo(IAMVideoAccelerator *iface, const GUID *accelerator, const AMVAUncompDataInfo *uncompressed_info, DWORD *compressed_info_count, AMVACompBufferInfo *compressed_infos)
Definition: vmr9.c:1975
static ULONG WINAPI video_accelerator_Release(IAMVideoAccelerator *iface)
Definition: vmr9.c:1946
static HRESULT WINAPI video_accelerator_GetVideoAcceleratorGUIDs(IAMVideoAccelerator *iface, DWORD *count, GUID *accelerators)
Definition: vmr9.c:1952

Definition at line 2043 of file vmr9.c.

Referenced by vmr9_create().

◆ VMR9_FilterConfig_Vtbl

const IVMRFilterConfig9Vtbl VMR9_FilterConfig_Vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI VMR9FilterConfig_SetImageCompositor(IVMRFilterConfig9 *iface, IVMRImageCompositor9 *compositor)
Definition: vmr9.c:1038
static HRESULT WINAPI VMR9FilterConfig_GetRenderingPrefs(IVMRFilterConfig9 *iface, DWORD *renderflags)
Definition: vmr9.c:1102
static ULONG WINAPI VMR9FilterConfig_AddRef(IVMRFilterConfig9 *iface)
Definition: vmr9.c:1026
static HRESULT WINAPI VMR9FilterConfig_SetNumberOfStreams(IVMRFilterConfig9 *iface, DWORD count)
Definition: vmr9.c:1046
static ULONG WINAPI VMR9FilterConfig_Release(IVMRFilterConfig9 *iface)
Definition: vmr9.c:1032
static HRESULT WINAPI VMR9FilterConfig_GetRenderingMode(IVMRFilterConfig9 *iface, DWORD *mode)
Definition: vmr9.c:1156
static HRESULT WINAPI VMR9FilterConfig_SetRenderingMode(IVMRFilterConfig9 *iface, DWORD mode)
Definition: vmr9.c:1110
static HRESULT WINAPI VMR9FilterConfig_QueryInterface(IVMRFilterConfig9 *iface, REFIID riid, LPVOID *ppv)
Definition: vmr9.c:1020
static HRESULT WINAPI VMR9FilterConfig_SetRenderingPrefs(IVMRFilterConfig9 *iface, DWORD flags)
Definition: vmr9.c:1093
static HRESULT WINAPI VMR9FilterConfig_GetNumberOfStreams(IVMRFilterConfig9 *iface, DWORD *count)
Definition: vmr9.c:1073

Definition at line 1172 of file vmr9.c.

Referenced by vmr9_create().

◆ VMR9_ImagePresenter

const IVMRImagePresenter9Vtbl VMR9_ImagePresenter
static
Initial value:
=
{
}
static HRESULT WINAPI VMR9_ImagePresenter_StartPresenting(IVMRImagePresenter9 *iface, DWORD_PTR cookie)
Definition: vmr9.c:2284
static HRESULT WINAPI VMR9_ImagePresenter_QueryInterface(IVMRImagePresenter9 *iface, REFIID riid, void **ppv)
Definition: vmr9.c:2219
static HRESULT WINAPI VMR9_ImagePresenter_StopPresenting(IVMRImagePresenter9 *iface, DWORD_PTR cookie)
Definition: vmr9.c:2293
static ULONG WINAPI VMR9_ImagePresenter_AddRef(IVMRImagePresenter9 *iface)
Definition: vmr9.c:2243
static ULONG WINAPI VMR9_ImagePresenter_Release(IVMRImagePresenter9 *iface)
Definition: vmr9.c:2253
static HRESULT WINAPI VMR9_ImagePresenter_PresentImage(IVMRImagePresenter9 *iface, DWORD_PTR cookie, VMR9PresentationInfo *info)
Definition: vmr9.c:2302

Definition at line 2370 of file vmr9.c.

Referenced by default_presenter_create().

◆ VMR9_MonitorConfig_Vtbl

const IVMRMonitorConfig9Vtbl VMR9_MonitorConfig_Vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI VMR9MonitorConfig_GetAvailableMonitors(IVMRMonitorConfig9 *iface, VMR9MonitorInfo *info, DWORD arraysize, DWORD *numdev)
Definition: vmr9.c:983
static HRESULT WINAPI VMR9MonitorConfig_SetDefaultMonitor(IVMRMonitorConfig9 *iface, UINT uDev)
Definition: vmr9.c:961
static HRESULT WINAPI VMR9MonitorConfig_QueryInterface(IVMRMonitorConfig9 *iface, REFIID riid, LPVOID *ppv)
Definition: vmr9.c:920
static HRESULT WINAPI VMR9MonitorConfig_SetMonitor(IVMRMonitorConfig9 *iface, UINT uDev)
Definition: vmr9.c:939
static HRESULT WINAPI VMR9MonitorConfig_GetDefaultMonitor(IVMRMonitorConfig9 *iface, UINT *uDev)
Definition: vmr9.c:970
static ULONG WINAPI VMR9MonitorConfig_Release(IVMRMonitorConfig9 *iface)
Definition: vmr9.c:933
static HRESULT WINAPI VMR9MonitorConfig_GetMonitor(IVMRMonitorConfig9 *iface, UINT *uDev)
Definition: vmr9.c:948
static ULONG WINAPI VMR9MonitorConfig_AddRef(IVMRMonitorConfig9 *iface)
Definition: vmr9.c:927

Definition at line 1008 of file vmr9.c.

Referenced by vmr9_create().

◆ VMR9_SurfaceAllocator

const IVMRSurfaceAllocator9Vtbl VMR9_SurfaceAllocator
static
Initial value:
=
{
}
static HRESULT WINAPI VMR9_SurfaceAllocator_GetSurface(IVMRSurfaceAllocator9 *iface, DWORD_PTR cookie, DWORD surfaceindex, DWORD flags, IDirect3DSurface9 **surface)
Definition: vmr9.c:2534
static ULONG WINAPI VMR9_SurfaceAllocator_Release(IVMRSurfaceAllocator9 *iface)
Definition: vmr9.c:2392
static HRESULT WINAPI VMR9_SurfaceAllocator_TerminateDevice(IVMRSurfaceAllocator9 *iface, DWORD_PTR cookie)
Definition: vmr9.c:2527
static HRESULT WINAPI VMR9_SurfaceAllocator_AdviseNotify(IVMRSurfaceAllocator9 *iface, IVMRSurfaceAllocatorNotify9 *notify)
Definition: vmr9.c:2557
static HRESULT WINAPI VMR9_SurfaceAllocator_QueryInterface(IVMRSurfaceAllocator9 *iface, REFIID iid, void **out)
Definition: vmr9.c:2380
static HRESULT WINAPI VMR9_SurfaceAllocator_InitializeDevice(IVMRSurfaceAllocator9 *iface, DWORD_PTR cookie, VMR9AllocationInfo *info, DWORD *numbuffers)
Definition: vmr9.c:2458
static ULONG WINAPI VMR9_SurfaceAllocator_AddRef(IVMRSurfaceAllocator9 *iface)
Definition: vmr9.c:2386

Definition at line 2569 of file vmr9.c.

Referenced by default_presenter_create().

◆ VMR9_SurfaceAllocatorNotify_Vtbl

const IVMRSurfaceAllocatorNotify9Vtbl VMR9_SurfaceAllocatorNotify_Vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI VMR9SurfaceAllocatorNotify_AllocateSurfaceHelper(IVMRSurfaceAllocatorNotify9 *iface, VMR9AllocationInfo *allocinfo, DWORD *numbuffers, IDirect3DSurface9 **surface)
Definition: vmr9.c:1514
static HRESULT WINAPI VMR9SurfaceAllocatorNotify_SetD3DDevice(IVMRSurfaceAllocatorNotify9 *iface, IDirect3DDevice9 *device, HMONITOR monitor)
Definition: vmr9.c:1478
static HRESULT WINAPI VMR9SurfaceAllocatorNotify_NotifyEvent(IVMRSurfaceAllocatorNotify9 *iface, LONG code, LONG_PTR param1, LONG_PTR param2)
Definition: vmr9.c:1617
static HRESULT WINAPI VMR9SurfaceAllocatorNotify_QueryInterface(IVMRSurfaceAllocatorNotify9 *iface, REFIID riid, LPVOID *ppv)
Definition: vmr9.c:1411
static HRESULT WINAPI VMR9SurfaceAllocatorNotify_AdviseSurfaceAllocator(IVMRSurfaceAllocatorNotify9 *iface, DWORD_PTR cookie, IVMRSurfaceAllocator9 *allocator)
Definition: vmr9.c:1440
static ULONG WINAPI VMR9SurfaceAllocatorNotify_AddRef(IVMRSurfaceAllocatorNotify9 *iface)
Definition: vmr9.c:1417
static HRESULT WINAPI VMR9SurfaceAllocatorNotify_ChangeD3DDevice(IVMRSurfaceAllocatorNotify9 *iface, IDirect3DDevice9 *device, HMONITOR monitor)
Definition: vmr9.c:1493
static ULONG WINAPI VMR9SurfaceAllocatorNotify_Release(IVMRSurfaceAllocatorNotify9 *iface)
Definition: vmr9.c:1427

Definition at line 1633 of file vmr9.c.

Referenced by vmr9_create().

◆ VMR9_WindowlessControl_Vtbl

const IVMRWindowlessControl9Vtbl VMR9_WindowlessControl_Vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI VMR9WindowlessControl_GetBorderColor(IVMRWindowlessControl9 *iface, COLORREF *color)
Definition: vmr9.c:1383
static HRESULT WINAPI VMR9WindowlessControl_GetMinIdealVideoSize(IVMRWindowlessControl9 *iface, LONG *width, LONG *height)
Definition: vmr9.c:1226
static HRESULT WINAPI VMR9WindowlessControl_GetVideoPosition(IVMRWindowlessControl9 *iface, RECT *src, RECT *dst)
Definition: vmr9.c:1261
static HRESULT WINAPI VMR9WindowlessControl_QueryInterface(IVMRWindowlessControl9 *iface, REFIID riid, LPVOID *ppv)
Definition: vmr9.c:1186
static ULONG WINAPI VMR9WindowlessControl_Release(IVMRWindowlessControl9 *iface)
Definition: vmr9.c:1198
static HRESULT WINAPI VMR9WindowlessControl_GetMaxIdealVideoSize(IVMRWindowlessControl9 *iface, LONG *width, LONG *height)
Definition: vmr9.c:1234
static HRESULT WINAPI VMR9WindowlessControl_RepaintVideo(IVMRWindowlessControl9 *iface, HWND hwnd, HDC hdc)
Definition: vmr9.c:1330
static HRESULT WINAPI VMR9WindowlessControl_GetNativeVideoSize(IVMRWindowlessControl9 *iface, LONG *width, LONG *height, LONG *aspect_width, LONG *aspect_height)
Definition: vmr9.c:1204
static HRESULT WINAPI VMR9WindowlessControl_SetAspectRatioMode(IVMRWindowlessControl9 *iface, DWORD mode)
Definition: vmr9.c:1288
static HRESULT WINAPI VMR9WindowlessControl_SetVideoClippingWindow(IVMRWindowlessControl9 *iface, HWND window)
Definition: vmr9.c:1300
static HRESULT WINAPI VMR9WindowlessControl_GetCurrentImage(IVMRWindowlessControl9 *iface, BYTE **dib)
Definition: vmr9.c:1367
static HRESULT WINAPI VMR9WindowlessControl_SetVideoPosition(IVMRWindowlessControl9 *iface, const RECT *src, const RECT *dst)
Definition: vmr9.c:1242
static ULONG WINAPI VMR9WindowlessControl_AddRef(IVMRWindowlessControl9 *iface)
Definition: vmr9.c:1192
static HRESULT WINAPI VMR9WindowlessControl_DisplayModeChanged(IVMRWindowlessControl9 *iface)
Definition: vmr9.c:1359
static HRESULT WINAPI VMR9WindowlessControl_GetAspectRatioMode(IVMRWindowlessControl9 *iface, DWORD *mode)
Definition: vmr9.c:1276
static HRESULT WINAPI VMR9WindowlessControl_SetBorderColor(IVMRWindowlessControl9 *iface, COLORREF color)
Definition: vmr9.c:1375

Definition at line 1391 of file vmr9.c.

Referenced by vmr9_create().

◆ window_ops

const struct video_window_ops window_ops
static
Initial value:
=
{
.get_default_rect = vmr_get_default_rect,
.get_current_image = vmr_get_current_image,
}
static HRESULT vmr_get_current_image(struct video_window *iface, LONG *size, LONG *image)
Definition: vmr9.c:634
static void vmr_get_default_rect(struct video_window *iface, RECT *rect)
Definition: vmr9.c:626

Definition at line 695 of file vmr9.c.

Referenced by vmr9_create().