ReactOS 0.4.17-dev-934-g091855f
vmr7.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 vmr7.c:

Go to the source code of this file.

Classes

struct  vmr7
 
struct  get_available_monitors_args
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (quartz)
 
static const BITMAPINFOHEADER * get_bitmap_header (const AM_MEDIA_TYPE *mt)
 
static const BITMAPINFOHEADER * get_filter_bitmap_header (const struct vmr7 *filter)
 
static struct vmr7 * impl_from_video_window (struct video_window *iface)
 
static struct vmr7 * impl_from_IAMCertifiedOutputProtection (IAMCertifiedOutputProtection *iface)
 
static struct vmr7 * impl_from_IAMFilterMiscFlags (IAMFilterMiscFlags *iface)
 
static struct vmr7 * impl_from_IVMRFilterConfig (IVMRFilterConfig *iface)
 
static struct vmr7 * impl_from_IVMRMonitorConfig (IVMRMonitorConfig *iface)
 
static struct vmr7 * impl_from_IVMRSurfaceAllocatorNotify (IVMRSurfaceAllocatorNotify *iface)
 
static struct vmr7 * impl_from_IVMRWindowlessControl (IVMRWindowlessControl *iface)
 
static struct vmr7 * 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 vmr7 *filter, VMRALLOCATIONINFO *info, DWORD count)
 
static HRESULT allocate_surfaces (struct vmr7 *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 vmr7 *filter)
 
static void vmr_disconnect (struct strmbase_renderer *iface)
 
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 certified_output_protection_QueryInterface (IAMCertifiedOutputProtection *iface, REFIID iid, void **out)
 
static ULONG WINAPI certified_output_protection_AddRef (IAMCertifiedOutputProtection *iface)
 
static ULONG WINAPI certified_output_protection_Release (IAMCertifiedOutputProtection *iface)
 
static HRESULT WINAPI certified_output_protection_KeyExchange (IAMCertifiedOutputProtection *iface, GUID *random, BYTE **certificate, DWORD *size)
 
static HRESULT WINAPI certified_output_protection_SessionSequenceStart (IAMCertifiedOutputProtection *iface, AMCOPPSignature *signature)
 
static HRESULT WINAPI certified_output_protection_ProtectionCommand (IAMCertifiedOutputProtection *iface, const AMCOPPCommand *cmd)
 
static HRESULT WINAPI certified_output_protection_ProtectionStatus (IAMCertifiedOutputProtection *iface, const AMCOPPStatusInput *input, AMCOPPStatusOutput *output)
 
static HRESULT WINAPI misc_flags_QueryInterface (IAMFilterMiscFlags *iface, REFIID iid, void **out)
 
static ULONG WINAPI misc_flags_AddRef (IAMFilterMiscFlags *iface)
 
static ULONG WINAPI misc_flags_Release (IAMFilterMiscFlags *iface)
 
static ULONG WINAPI misc_flags_GetMiscFlags (IAMFilterMiscFlags *iface)
 
static HRESULT WINAPI filter_config_QueryInterface (IVMRFilterConfig *iface, REFIID iid, void **out)
 
static ULONG WINAPI filter_config_AddRef (IVMRFilterConfig *iface)
 
static ULONG WINAPI filter_config_Release (IVMRFilterConfig *iface)
 
static HRESULT WINAPI filter_config_SetImageCompositor (IVMRFilterConfig *iface, IVMRImageCompositor *compositor)
 
static HRESULT WINAPI filter_config_SetNumberOfStreams (IVMRFilterConfig *iface, DWORD count)
 
static HRESULT WINAPI filter_config_GetNumberOfStreams (IVMRFilterConfig *iface, DWORD *count)
 
static HRESULT WINAPI filter_config_SetRenderingPrefs (IVMRFilterConfig *iface, DWORD flags)
 
static HRESULT WINAPI filter_config_GetRenderingPrefs (IVMRFilterConfig *iface, DWORD *flags)
 
static HRESULT WINAPI filter_config_SetRenderingMode (IVMRFilterConfig *iface, DWORD mode)
 
static HRESULT WINAPI filter_config_GetRenderingMode (IVMRFilterConfig *iface, DWORD *mode)
 
static BOOL CALLBACK get_available_monitors_proc (HMONITOR monitor, HDC dc, RECT *rect, LPARAM ctx)
 
static HRESULT WINAPI monitor_config_QueryInterface (IVMRMonitorConfig *iface, REFIID iid, void **out)
 
static ULONG WINAPI monitor_config_AddRef (IVMRMonitorConfig *iface)
 
static ULONG WINAPI monitor_config_Release (IVMRMonitorConfig *iface)
 
static HRESULT WINAPI monitor_config_SetMonitor (IVMRMonitorConfig *iface, const VMRGUID *guid)
 
static HRESULT WINAPI monitor_config_GetMonitor (IVMRMonitorConfig *iface, VMRGUID *guid)
 
static HRESULT WINAPI monitor_config_SetDefaultMonitor (IVMRMonitorConfig *iface, const VMRGUID *guid)
 
static HRESULT WINAPI monitor_config_GetDefaultMonitor (IVMRMonitorConfig *iface, VMRGUID *guid)
 
static HRESULT WINAPI monitor_config_GetAvailableMonitors (IVMRMonitorConfig *iface, VMRMONITORINFO *info, DWORD capacity, DWORD *count)
 
static HRESULT WINAPI windowless_control_QueryInterface (IVMRWindowlessControl *iface, REFIID iid, void **out)
 
static ULONG WINAPI windowless_control_AddRef (IVMRWindowlessControl *iface)
 
static ULONG WINAPI windowless_control_Release (IVMRWindowlessControl *iface)
 
static HRESULT WINAPI windowless_control_GetNativeVideoSize (IVMRWindowlessControl *iface, LONG *width, LONG *height, LONG *aspect_width, LONG *aspect_height)
 
static HRESULT WINAPI windowless_control_GetMinIdealVideoSize (IVMRWindowlessControl *iface, LONG *width, LONG *height)
 
static HRESULT WINAPI windowless_control_GetMaxIdealVideoSize (IVMRWindowlessControl *iface, LONG *width, LONG *height)
 
static HRESULT WINAPI windowless_control_SetVideoPosition (IVMRWindowlessControl *iface, const RECT *source, const RECT *dest)
 
static HRESULT WINAPI windowless_control_GetVideoPosition (IVMRWindowlessControl *iface, RECT *source, RECT *dest)
 
static HRESULT WINAPI windowless_control_GetAspectRatioMode (IVMRWindowlessControl *iface, DWORD *mode)
 
static HRESULT WINAPI windowless_control_SetAspectRatioMode (IVMRWindowlessControl *iface, DWORD mode)
 
static HRESULT WINAPI windowless_control_SetVideoClippingWindow (IVMRWindowlessControl *iface, HWND window)
 
static HRESULT WINAPI windowless_control_RepaintVideo (IVMRWindowlessControl *iface, HWND window, HDC dc)
 
static HRESULT WINAPI windowless_control_DisplayModeChanged (IVMRWindowlessControl *iface)
 
static HRESULT WINAPI windowless_control_GetCurrentImage (IVMRWindowlessControl *iface, BYTE **image)
 
static HRESULT WINAPI windowless_control_SetBorderColor (IVMRWindowlessControl *iface, COLORREF color)
 
static HRESULT WINAPI windowless_control_GetBorderColor (IVMRWindowlessControl *iface, COLORREF *color)
 
static HRESULT WINAPI windowless_control_SetColorKey (IVMRWindowlessControl *iface, COLORREF color)
 
static HRESULT WINAPI windowless_control_GetColorKey (IVMRWindowlessControl *iface, COLORREF *color)
 
static HRESULT WINAPI surface_allocator_notify_QueryInterface (IVMRSurfaceAllocatorNotify *iface, REFIID iid, void **out)
 
static ULONG WINAPI surface_allocator_notify_AddRef (IVMRSurfaceAllocatorNotify *iface)
 
static ULONG WINAPI surface_allocator_notify_Release (IVMRSurfaceAllocatorNotify *iface)
 
static HRESULT WINAPI surface_allocator_notify_AdviseSurfaceAllocator (IVMRSurfaceAllocatorNotify *iface, DWORD_PTR cookie, IVMRSurfaceAllocator *allocator)
 
static HRESULT WINAPI surface_allocator_notify_SetDDrawDevice (IVMRSurfaceAllocatorNotify *iface, IDirectDraw7 *device, HMONITOR monitor)
 
static HRESULT WINAPI surface_allocator_notify_ChangeDDrawDevice (IVMRSurfaceAllocatorNotify *iface, IDirectDraw7 *device, HMONITOR monitor)
 
static HRESULT WINAPI surface_allocator_notify_RestoreDDrawSurfaces (IVMRSurfaceAllocatorNotify *iface)
 
static HRESULT WINAPI surface_allocator_notify_NotifyEvent (IVMRSurfaceAllocatorNotify *iface, LONG code, LONG_PTR param1, LONG_PTR param2)
 
static HRESULT WINAPI surface_allocator_notify_SetBorderColor (IVMRSurfaceAllocatorNotify *iface, COLORREF color)
 
static struct vmr7 * 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 vmr7 * 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 vmr7_create (IUnknown *outer, IUnknown **out)
 

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 certified_output_protection_vtbl
 
static const IAMFilterMiscFlagsVtbl misc_flags_vtbl
 
static const IVMRFilterConfigVtbl filter_config_vtbl
 
static const IVMRMonitorConfigVtbl monitor_config_vtbl
 
static const IVMRWindowlessControlVtbl windowless_control_vtbl
 
static const IVMRSurfaceAllocatorNotifyVtbl surface_allocator_notify_vtbl
 
static const IAMVideoAcceleratorVtbl video_accelerator_vtbl
 
static const IOverlayVtbl overlay_vtbl
 

Function Documentation

◆ allocate_surfaces()

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

Definition at line 342 of file vmr7.c.

343{
344 BITMAPINFOHEADER bitmap_header = *get_bitmap_header(mt);
346 HRESULT hr = E_FAIL;
347 DWORD count = 1;
348
349 TRACE("Initializing in mode %u, our window %p, clipping window %p.\n",
350 filter->mode, filter->window.hwnd, filter->clipping_window);
351
352 if (filter->mode == VMRMode_Windowless && !filter->clipping_window)
353 return S_OK;
354
356 info.lpHdr = &bitmap_header;
357 info.dwMinBuffers = info.dwMaxBuffers = count;
358 info.szAspectRatio.cx = info.szNativeSize.cx = bitmap_header.biWidth;
359 info.szAspectRatio.cy = info.szNativeSize.cy = bitmap_header.biHeight;
360
362 free(filter->surfaces);
363 return hr;
364}
#define E_FAIL
Definition: ddrawi.h:102
#define free
Definition: debug_ros.c:5
HRESULT hr
Definition: delayimp.cpp:582
static const BITMAPINFOHEADER * get_bitmap_header(const AM_MEDIA_TYPE *mt)
Definition: vmr7.c:43
static HRESULT initialize_device(struct vmr7 *filter, VMRALLOCATIONINFO *info, DWORD count)
Definition: vmr7.c:298
@ AMAP_ALLOW_SYSMEM
Definition: vmrender.idl:53
@ AMAP_DIRECTED_FLIP
Definition: vmrender.idl:55
@ VMRMode_Windowless
Definition: vmrender.idl:106
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei count
Definition: gl.h:1545
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
#define TRACE(s)
Definition: solgame.cpp:4
Definition: filter.c:165

Referenced by vmr_connect().

◆ certified_output_protection_AddRef()

static ULONG WINAPI certified_output_protection_AddRef ( IAMCertifiedOutputProtection *  iface)
static

Definition at line 588 of file vmr7.c.

589{
591
592 return IUnknown_AddRef(filter->renderer.filter.outer_unk);
593}
static struct vmr7 * impl_from_IAMCertifiedOutputProtection(IAMCertifiedOutputProtection *iface)
Definition: vmr7.c:93
IBaseFilter * filter
Definition: filtergraph.c:75
Definition: vmr7.c:52

◆ certified_output_protection_KeyExchange()

static HRESULT WINAPI certified_output_protection_KeyExchange ( IAMCertifiedOutputProtection *  iface,
GUID *  random,
BYTE **  certificate,
DWORD *  size 
)
static

Definition at line 602 of file vmr7.c.

604{
605 FIXME("iface %p, random %p, certificate %p, size %p, stub!\n", iface, random, certificate, size);
606 return VFW_E_NO_COPP_HW;
607}
#define FIXME(fmt,...)
Definition: precomp.h:53
GLsizeiptr size
Definition: glext.h:5919
#define random
Definition: rosdhcp.h:94
#define VFW_E_NO_COPP_HW
Definition: vfwmsgs.h:160

◆ certified_output_protection_ProtectionCommand()

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

Definition at line 616 of file vmr7.c.

618{
619 FIXME("iface %p, cmd %p, stub!\n", iface, cmd);
620 return VFW_E_NO_COPP_HW;
621}
Definition: ftp_var.h:139

◆ certified_output_protection_ProtectionStatus()

static HRESULT WINAPI certified_output_protection_ProtectionStatus ( IAMCertifiedOutputProtection *  iface,
const AMCOPPStatusInput *  input,
AMCOPPStatusOutput *  output 
)
static

Definition at line 623 of file vmr7.c.

625{
626 FIXME("iface %p, input %p, output %p, stub!\n", iface, input, output);
627 return VFW_E_NO_COPP_HW;
628}
GLenum GLenum GLenum input
Definition: glext.h:9031

◆ certified_output_protection_QueryInterface()

static HRESULT WINAPI certified_output_protection_QueryInterface ( IAMCertifiedOutputProtection *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 580 of file vmr7.c.

582{
584
585 return IUnknown_QueryInterface(filter->renderer.filter.outer_unk, iid, out);
586}
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

◆ certified_output_protection_Release()

static ULONG WINAPI certified_output_protection_Release ( IAMCertifiedOutputProtection *  iface)
static

Definition at line 595 of file vmr7.c.

596{
598
599 return IUnknown_Release(filter->renderer.filter.outer_unk);
600}

◆ certified_output_protection_SessionSequenceStart()

static HRESULT WINAPI certified_output_protection_SessionSequenceStart ( IAMCertifiedOutputProtection *  iface,
AMCOPPSignature *  signature 
)
static

Definition at line 609 of file vmr7.c.

611{
612 FIXME("iface %p, signature %p, stub!\n", iface, signature);
613 return VFW_E_NO_COPP_HW;
614}

◆ 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 128 of file vmr7.c.

130{
131 size_t copy_size = min(src_pitch, dst_pitch);
132 const BYTE *src = *srcp;
133 BYTE *dst = *dstp;
134 unsigned int i;
135
136 if (src_height < 0)
137 {
138 TRACE("Inverting image.\n");
139
140 src_height = -src_height;
141 src += src_height * src_pitch;
142
143 for (i = 0; i < src_height; ++i)
144 {
145 src -= src_pitch;
146 memcpy(dst, src, copy_size);
147 dst += dst_pitch;
148 }
149 }
150 else
151 {
152 for (i = 0; i < src_height; ++i)
153 {
154 memcpy(dst, src, copy_size);
155 dst += dst_pitch;
156 src += src_pitch;
157 }
158 }
159
160 *srcp += src_pitch * src_height;
161 *dstp += dst_pitch * dst_height;
162}
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
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 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().

◆ deallocate_surfaces()

static void deallocate_surfaces ( struct vmr7 *  filter)
static

Definition at line 413 of file vmr7.c.

414{
415 if (filter->mode && filter->allocator && filter->presenter)
416 {
417 for (DWORD i = 0; i < filter->surface_count; ++i)
418 IDirectDrawSurface7_Release(filter->surfaces[i]);
419 free(filter->surfaces);
420
421 IVMRSurfaceAllocator_FreeSurface(filter->allocator, filter->cookie);
422 filter->surface_count = 0;
423 }
424}

Referenced by vmr_disconnect().

◆ filter_config_AddRef()

static ULONG WINAPI filter_config_AddRef ( IVMRFilterConfig *  iface)
static

Definition at line 682 of file vmr7.c.

683{
684 struct vmr7 *filter = impl_from_IVMRFilterConfig(iface);
685
686 return IUnknown_AddRef(filter->renderer.filter.outer_unk);
687}
static struct vmr7 * impl_from_IVMRFilterConfig(IVMRFilterConfig *iface)
Definition: vmr7.c:103

◆ filter_config_GetNumberOfStreams()

static HRESULT WINAPI filter_config_GetNumberOfStreams ( IVMRFilterConfig *  iface,
DWORD *  count 
)
static

Definition at line 730 of file vmr7.c.

731{
732 FIXME("iface %p, count %p, stub!\n", iface, count);
733 return E_NOTIMPL;
734}
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ filter_config_GetRenderingMode()

static HRESULT WINAPI filter_config_GetRenderingMode ( IVMRFilterConfig *  iface,
DWORD *  mode 
)
static

Definition at line 796 of file vmr7.c.

797{
798 struct vmr7 *filter = impl_from_IVMRFilterConfig(iface);
799
800 TRACE("filter %p, mode %p.\n", filter, mode);
801
802 if (!mode)
803 return E_POINTER;
804
805 if (filter->mode)
806 *mode = filter->mode;
807 else
809
810 return S_OK;
811}
@ VMRMode_Windowed
Definition: vmrender.idl:105
GLenum mode
Definition: glext.h:6217
#define E_POINTER
Definition: winerror.h:3480

◆ filter_config_GetRenderingPrefs()

static HRESULT WINAPI filter_config_GetRenderingPrefs ( IVMRFilterConfig *  iface,
DWORD *  flags 
)
static

Definition at line 742 of file vmr7.c.

743{
744 FIXME("iface %p, flags %p, stub!\n", iface, flags);
745 return E_NOTIMPL;
746}
GLbitfield flags
Definition: glext.h:7161

◆ filter_config_QueryInterface()

static HRESULT WINAPI filter_config_QueryInterface ( IVMRFilterConfig *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 675 of file vmr7.c.

676{
677 struct vmr7 *filter = impl_from_IVMRFilterConfig(iface);
678
679 return IUnknown_QueryInterface(filter->renderer.filter.outer_unk, iid, out);
680}

◆ filter_config_Release()

static ULONG WINAPI filter_config_Release ( IVMRFilterConfig *  iface)
static

Definition at line 689 of file vmr7.c.

690{
691 struct vmr7 *filter = impl_from_IVMRFilterConfig(iface);
692
693 return IUnknown_Release(filter->renderer.filter.outer_unk);
694}

◆ filter_config_SetImageCompositor()

static HRESULT WINAPI filter_config_SetImageCompositor ( IVMRFilterConfig *  iface,
IVMRImageCompositor *  compositor 
)
static

Definition at line 696 of file vmr7.c.

698{
699 FIXME("iface %p, compositor %p, stub!\n", iface, compositor);
700 return E_NOTIMPL;
701}

◆ filter_config_SetNumberOfStreams()

static HRESULT WINAPI filter_config_SetNumberOfStreams ( IVMRFilterConfig *  iface,
DWORD  count 
)
static

Definition at line 703 of file vmr7.c.

704{
705 struct vmr7 *filter = impl_from_IVMRFilterConfig(iface);
706
707 FIXME("iface %p, count %lu, stub!\n", iface, count);
708
709 if (!count)
710 {
711 WARN("Application requested zero streams; returning E_INVALIDARG.\n");
712 return E_INVALIDARG;
713 }
714
715 EnterCriticalSection(&filter->renderer.filter.filter_cs);
716
717 if (filter->stream_count)
718 {
719 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
720 WARN("Stream count is already set; returning VFW_E_WRONG_STATE.\n");
721 return VFW_E_WRONG_STATE;
722 }
723
724 filter->stream_count = count;
725
726 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
727 return S_OK;
728}
#define WARN(fmt,...)
Definition: precomp.h:61
#define E_INVALIDARG
Definition: ddrawi.h:101
#define VFW_E_WRONG_STATE
Definition: vfwmsgs.h:78
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

◆ filter_config_SetRenderingMode()

static HRESULT WINAPI filter_config_SetRenderingMode ( IVMRFilterConfig *  iface,
DWORD  mode 
)
static

Definition at line 748 of file vmr7.c.

749{
750 struct vmr7 *filter = impl_from_IVMRFilterConfig(iface);
752 HRESULT hr = S_OK;
753
754 TRACE("filter %p, mode %lu.\n", filter, mode);
755
756 EnterCriticalSection(&filter->renderer.filter.filter_cs);
757
758 if (filter->mode)
759 {
760 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
761 return VFW_E_WRONG_STATE;
762 }
763
764 switch (mode)
765 {
766 case VMRMode_Windowed:
769 {
770 ERR("Failed to create default presenter, hr %#lx.\n", hr);
771 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
772 return hr;
773 }
774 IUnknown_QueryInterface(default_presenter, &IID_IVMRSurfaceAllocator, (void **)&filter->allocator);
775 IUnknown_QueryInterface(default_presenter, &IID_IVMRImagePresenter, (void **)&filter->presenter);
776 IUnknown_Release(default_presenter);
777 break;
778
780 break;
781
782 default:
783 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
784 return E_INVALIDARG;
785 }
786
787 if (mode != VMRMode_Windowed)
789
790 filter->mode = mode;
791
792 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
793 return hr;
794}
#define ERR(fmt,...)
Definition: precomp.h:57
#define NULL
Definition: types.h:112
@ VMRMode_Renderless
Definition: vmrender.idl:107
void video_window_cleanup(struct video_window *window)
Definition: window.c:1288
HRESULT vmr7_presenter_create(IUnknown *outer, IUnknown **out)

◆ filter_config_SetRenderingPrefs()

static HRESULT WINAPI filter_config_SetRenderingPrefs ( IVMRFilterConfig *  iface,
DWORD  flags 
)
static

Definition at line 736 of file vmr7.c.

737{
738 FIXME("iface %p, flags %#lx, stub!\n", iface, flags);
739 return E_NOTIMPL;
740}

◆ get_available_monitors_proc()

static BOOL CALLBACK get_available_monitors_proc ( HMONITOR  monitor,
HDC  dc,
RECT *  rect,
LPARAM  ctx 
)
static

Definition at line 835 of file vmr7.c.

836{
839
840 if (args->info7 || args->info9)
841 {
842
843 if (!args->capacity)
844 return FALSE;
845
846 mi.cbSize = sizeof(mi);
847 if (!GetMonitorInfoW(monitor, (MONITORINFO*)&mi))
848 return TRUE;
849
850 /* fill VMRMONITORINFO struct */
851 if (args->info7)
852 {
853 VMRMONITORINFO *info = args->info7++;
854 memset(info, 0, sizeof(*info));
855
856 if (args->count > 0)
857 {
858 info->guid.pGUID = &info->guid.GUID;
859 info->guid.GUID.Data4[7] = args->count;
860 }
861 else
862 info->guid.pGUID = NULL;
863
864 info->rcMonitor = mi.rcMonitor;
865 info->hMon = monitor;
866 info->dwFlags = mi.dwFlags;
867
868 lstrcpynW(info->szDevice, mi.szDevice, ARRAY_SIZE(info->szDevice));
869
870 /* FIXME: how to get these values? */
871 info->szDescription[0] = 0;
872 }
873
874 /* fill VMR9MonitorInfo struct */
875 if (args->info9)
876 {
877 VMR9MonitorInfo *info = args->info9++;
878 memset(info, 0, sizeof(*info));
879
880 info->uDevID = 0; /* FIXME */
881 info->rcMonitor = mi.rcMonitor;
882 info->hMon = monitor;
883 info->dwFlags = mi.dwFlags;
884
885 lstrcpynW(info->szDevice, mi.szDevice, ARRAY_SIZE(info->szDevice));
886
887 /* FIXME: how to get these values? */
888 info->szDescription[0] = 0;
889 info->dwVendorId = 0;
890 info->dwDeviceId = 0;
891 info->dwSubSysId = 0;
892 info->dwRevision = 0;
893 }
894
895 args->capacity--;
896 }
897
898 args->count++;
899 return TRUE;
900}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define lstrcpynW
Definition: compat.h:738
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 monitor_config_GetAvailableMonitors().

◆ get_bitmap_header()

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

Definition at line 43 of file vmr7.c.

44{
45 if (IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo))
46 return &((VIDEOINFOHEADER *)mt->pbFormat)->bmiHeader;
47 else
48 return &((VIDEOINFOHEADER2 *)mt->pbFormat)->bmiHeader;
49}
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147

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

◆ get_filter_bitmap_header()

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

Definition at line 83 of file vmr7.c.

84{
85 return get_bitmap_header(&filter->renderer.sink.pin.mt);
86}

Referenced by vmr_get_default_rect(), vmr_render(), and windowless_control_GetNativeVideoSize().

◆ impl_from_IAMCertifiedOutputProtection()

static struct vmr7 * impl_from_IAMCertifiedOutputProtection ( IAMCertifiedOutputProtection *  iface)
static

Definition at line 93 of file vmr7.c.

94{
95 return CONTAINING_RECORD(iface, struct vmr7, IAMCertifiedOutputProtection_iface);
96}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by certified_output_protection_AddRef(), certified_output_protection_QueryInterface(), and certified_output_protection_Release().

◆ impl_from_IAMFilterMiscFlags()

static struct vmr7 * impl_from_IAMFilterMiscFlags ( IAMFilterMiscFlags *  iface)
static

Definition at line 98 of file vmr7.c.

99{
100 return CONTAINING_RECORD(iface, struct vmr7, IAMFilterMiscFlags_iface);
101}

Referenced by misc_flags_AddRef(), misc_flags_QueryInterface(), and misc_flags_Release().

◆ impl_from_IAMVideoAccelerator()

static struct vmr7 * impl_from_IAMVideoAccelerator ( IAMVideoAccelerator *  iface)
static

Definition at line 1307 of file vmr7.c.

1308{
1309 return CONTAINING_RECORD(iface, struct vmr7, IAMVideoAccelerator_iface);
1310}

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

◆ impl_from_IBaseFilter()

static struct vmr7 * impl_from_IBaseFilter ( IBaseFilter *  iface)
static

Definition at line 123 of file vmr7.c.

124{
125 return CONTAINING_RECORD(iface, struct vmr7, renderer.filter.IBaseFilter_iface);
126}

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 vmr7 * impl_from_IOverlay ( IOverlay *  iface)
static

Definition at line 1443 of file vmr7.c.

1444{
1445 return CONTAINING_RECORD(iface, struct vmr7, IOverlay_iface);
1446}

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

◆ impl_from_IVMRFilterConfig()

static struct vmr7 * impl_from_IVMRFilterConfig ( IVMRFilterConfig *  iface)
static

◆ impl_from_IVMRMonitorConfig()

static struct vmr7 * impl_from_IVMRMonitorConfig ( IVMRMonitorConfig *  iface)
static

Definition at line 108 of file vmr7.c.

109{
110 return CONTAINING_RECORD(iface, struct vmr7, IVMRMonitorConfig_iface);
111}

Referenced by monitor_config_AddRef(), monitor_config_GetAvailableMonitors(), monitor_config_QueryInterface(), and monitor_config_Release().

◆ impl_from_IVMRSurfaceAllocatorNotify()

static struct vmr7 * impl_from_IVMRSurfaceAllocatorNotify ( IVMRSurfaceAllocatorNotify *  iface)
static

Definition at line 113 of file vmr7.c.

114{
115 return CONTAINING_RECORD(iface, struct vmr7, IVMRSurfaceAllocatorNotify_iface);
116}

Referenced by surface_allocator_notify_AddRef(), surface_allocator_notify_AdviseSurfaceAllocator(), surface_allocator_notify_QueryInterface(), and surface_allocator_notify_Release().

◆ impl_from_IVMRWindowlessControl()

◆ impl_from_video_window()

static struct vmr7 * impl_from_video_window ( struct video_window *  iface)
static

Definition at line 88 of file vmr7.c.

89{
90 return CONTAINING_RECORD(iface, struct vmr7, window);
91}
static IHTMLWindow2 * window
Definition: events.c:77

Referenced by vmr_get_default_rect().

◆ initialize_device()

static HRESULT initialize_device ( struct vmr7 *  filter,
VMRALLOCATIONINFO *  info,
DWORD  count 
)
static

Definition at line 298 of file vmr7.c.

299{
300 IDirectDrawSurface7 *frontbuffer, *prev;
302 HRESULT hr;
303
304 if (FAILED(hr = IVMRSurfaceAllocator_AllocateSurface(filter->allocator,
305 filter->cookie, info, &count, &frontbuffer)))
306 {
307 WARN("Failed to allocate surface, hr %#lx.\n", hr);
308 return hr;
309 }
310
311 if (filter->mode != VMRMode_Renderless)
312 {
313 IVMRSurfaceAllocator_QueryInterface(filter->allocator, &IID_IVMRWindowlessControl, (void **)&control);
314 IVMRWindowlessControl_SetVideoClippingWindow(control,
315 filter->mode == VMRMode_Windowed ? filter->window.hwnd : filter->clipping_window);
316 IVMRWindowlessControl_Release(control);
317 }
318
319 if (!(filter->surfaces = calloc(count, sizeof(IDirectDrawSurface7 *))))
320 return E_OUTOFMEMORY;
321 filter->surface_count = count;
322 filter->surface_index = 0;
323
324 prev = frontbuffer;
325 for (DWORD i = 0; i < count; ++i)
326 {
327 DDSCAPS2 caps = {.dwCaps = DDSCAPS_FLIP};
328
329 if (FAILED(hr = IDirectDrawSurface7_GetAttachedSurface(prev, &caps, &filter->surfaces[i])))
330 {
331 ERR("Failed to get surface %lu, hr %#lx.\n", i, hr);
332 while (i--)
333 IDirectDrawSurface7_Release(filter->surfaces[i]);
334 IVMRSurfaceAllocator_FreeSurface(filter->allocator, filter->cookie);
335 return hr;
336 }
337 }
338
339 return hr;
340}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
DWORD IDirectDrawSurface7
Definition: vmrender.idl:20
#define calloc
Definition: rosglue.h:14
#define DDSCAPS_FLIP
Definition: ddraw.h:255
DWORD dwCaps
Definition: ddraw.h:734
Definition: dialog.c:52

Referenced by allocate_surfaces().

◆ misc_flags_AddRef()

static ULONG WINAPI misc_flags_AddRef ( IAMFilterMiscFlags *  iface)
static

Definition at line 648 of file vmr7.c.

649{
651
652 return IUnknown_AddRef(filter->renderer.filter.outer_unk);
653}
static struct vmr7 * impl_from_IAMFilterMiscFlags(IAMFilterMiscFlags *iface)
Definition: vmr7.c:98

◆ misc_flags_GetMiscFlags()

static ULONG WINAPI misc_flags_GetMiscFlags ( IAMFilterMiscFlags *  iface)
static

Definition at line 662 of file vmr7.c.

663{
665}
@ AM_FILTER_MISC_FLAGS_IS_RENDERER
Definition: axextend.idl:1244

◆ misc_flags_QueryInterface()

static HRESULT WINAPI misc_flags_QueryInterface ( IAMFilterMiscFlags *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 641 of file vmr7.c.

642{
644
645 return IUnknown_QueryInterface(filter->renderer.filter.outer_unk, iid, out);
646}

◆ misc_flags_Release()

static ULONG WINAPI misc_flags_Release ( IAMFilterMiscFlags *  iface)
static

Definition at line 655 of file vmr7.c.

656{
658
659 return IUnknown_Release(filter->renderer.filter.outer_unk);
660}

◆ monitor_config_AddRef()

static ULONG WINAPI monitor_config_AddRef ( IVMRMonitorConfig *  iface)
static

Definition at line 909 of file vmr7.c.

910{
911 struct vmr7 *filter = impl_from_IVMRMonitorConfig(iface);
912
913 return IUnknown_AddRef(filter->renderer.filter.outer_unk);
914}
static struct vmr7 * impl_from_IVMRMonitorConfig(IVMRMonitorConfig *iface)
Definition: vmr7.c:108

◆ monitor_config_GetAvailableMonitors()

static HRESULT WINAPI monitor_config_GetAvailableMonitors ( IVMRMonitorConfig *  iface,
VMRMONITORINFO *  info,
DWORD  capacity,
DWORD *  count 
)
static

Definition at line 965 of file vmr7.c.

967{
968 struct vmr7 *filter = impl_from_IVMRMonitorConfig(iface);
970
971 TRACE("filter %p, info %p, capacity %lu, count %p.\n", filter, info, capacity, count);
972
973 if (!count)
974 return E_POINTER;
975
976 if (info && !capacity)
977 return E_INVALIDARG;
978
979 args.info7 = info;
980 args.info9 = NULL;
981 args.capacity = capacity;
982 args.count = 0;
984
985 *count = args.count;
986 return S_OK;
987}
static BOOL CALLBACK get_available_monitors_proc(HMONITOR monitor, HDC dc, RECT *rect, LPARAM ctx)
Definition: vmr7.c:835
LONG_PTR LPARAM
Definition: minwindef.h:175
BOOL WINAPI EnumDisplayMonitors(_In_opt_ HDC, _In_opt_ LPCRECT, _In_ MONITORENUMPROC, _In_ LPARAM)

◆ monitor_config_GetDefaultMonitor()

static HRESULT WINAPI monitor_config_GetDefaultMonitor ( IVMRMonitorConfig *  iface,
VMRGUID *  guid 
)
static

Definition at line 954 of file vmr7.c.

955{
956 FIXME("iface %p, guid %p, stub!\n", iface, guid);
957
958 if (!guid)
959 return E_POINTER;
960
961 guid->pGUID = NULL; /* default DirectDraw device */
962 return S_OK;
963}
GUID guid
Definition: version.c:147

◆ monitor_config_GetMonitor()

static HRESULT WINAPI monitor_config_GetMonitor ( IVMRMonitorConfig *  iface,
VMRGUID *  guid 
)
static

Definition at line 933 of file vmr7.c.

934{
935 FIXME("iface %p, guid %p, stub!\n", iface, guid);
936
937 if (!guid)
938 return E_POINTER;
939
940 guid->pGUID = NULL; /* default DirectDraw device */
941 return S_OK;
942}

◆ monitor_config_QueryInterface()

static HRESULT WINAPI monitor_config_QueryInterface ( IVMRMonitorConfig *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 902 of file vmr7.c.

903{
904 struct vmr7 *filter = impl_from_IVMRMonitorConfig(iface);
905
906 return IUnknown_QueryInterface(filter->renderer.filter.outer_unk, iid, out);
907}

◆ monitor_config_Release()

static ULONG WINAPI monitor_config_Release ( IVMRMonitorConfig *  iface)
static

Definition at line 916 of file vmr7.c.

917{
918 struct vmr7 *filter = impl_from_IVMRMonitorConfig(iface);
919
920 return IUnknown_Release(filter->renderer.filter.outer_unk);
921}

◆ monitor_config_SetDefaultMonitor()

static HRESULT WINAPI monitor_config_SetDefaultMonitor ( IVMRMonitorConfig *  iface,
const VMRGUID *  guid 
)
static

Definition at line 944 of file vmr7.c.

945{
946 FIXME("iface %p, guid %p, stub!\n", iface, guid);
947
948 if (!guid)
949 return E_POINTER;
950
951 return S_OK;
952}

◆ monitor_config_SetMonitor()

static HRESULT WINAPI monitor_config_SetMonitor ( IVMRMonitorConfig *  iface,
const VMRGUID *  guid 
)
static

Definition at line 923 of file vmr7.c.

924{
925 FIXME("iface %p, guid %p, stub!\n", iface, guid);
926
927 if (!guid)
928 return E_POINTER;
929
930 return S_OK;
931}

◆ overlay_AddRef()

static ULONG WINAPI overlay_AddRef ( IOverlay *  iface)
static

Definition at line 1455 of file vmr7.c.

1456{
1457 struct vmr7 *filter = impl_from_IOverlay(iface);
1458
1459 return IPin_AddRef(&filter->renderer.sink.pin.IPin_iface);
1460}
static struct vmr7 * impl_from_IOverlay(IOverlay *iface)
Definition: vmr7.c:1443

◆ overlay_Advise()

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

Definition at line 1524 of file vmr7.c.

1525{
1526 FIXME("iface %p, sink %p, flags %#lx, stub!\n", iface, sink, flags);
1527 return E_NOTIMPL;
1528}
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 1512 of file vmr7.c.

1513{
1514 FIXME("iface %p, source %p, dest %p, region %p, stub!\n", iface, source, dest, region);
1515 return E_NOTIMPL;
1516}
static char * dest
Definition: rtl.c:149

◆ overlay_GetColorKey()

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

Definition at line 1487 of file vmr7.c.

1488{
1489 FIXME("iface %p, key %p, stub!\n", iface, key);
1490 return E_NOTIMPL;
1491}
Definition: copy.c:22

◆ overlay_GetDefaultColorKey()

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

Definition at line 1481 of file vmr7.c.

1482{
1483 FIXME("iface %p, key %p, stub!\n", iface, key);
1484 return E_NOTIMPL;
1485}

◆ overlay_GetPalette()

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

Definition at line 1469 of file vmr7.c.

1470{
1471 FIXME("iface %p, count %p, palette %p, stub!\n", iface, count, palette);
1472 return E_NOTIMPL;
1473}
static HPALETTE palette
Definition: clipboard.c:1457

◆ overlay_GetVideoPosition()

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

Definition at line 1518 of file vmr7.c.

1519{
1520 FIXME("iface %p, source %p, dest %p, stub!\n", iface, source, dest);
1521 return E_NOTIMPL;
1522}

◆ overlay_GetWindowHandle()

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

Definition at line 1499 of file vmr7.c.

1500{
1501 struct vmr7 *filter = impl_from_IOverlay(iface);
1502
1503 TRACE("filter %p, window %p.\n", filter, window);
1504
1505 if (!filter->window.hwnd)
1506 return VFW_E_WRONG_STATE;
1507
1508 *window = filter->window.hwnd;
1509 return S_OK;
1510}

◆ overlay_QueryInterface()

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

Definition at line 1448 of file vmr7.c.

1449{
1450 struct vmr7 *filter = impl_from_IOverlay(iface);
1451
1452 return IPin_QueryInterface(&filter->renderer.sink.pin.IPin_iface, iid, out);
1453}

◆ overlay_Release()

static ULONG WINAPI overlay_Release ( IOverlay *  iface)
static

Definition at line 1462 of file vmr7.c.

1463{
1464 struct vmr7 *filter = impl_from_IOverlay(iface);
1465
1466 return IPin_Release(&filter->renderer.sink.pin.IPin_iface);
1467}

◆ overlay_SetColorKey()

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

Definition at line 1493 of file vmr7.c.

1494{
1495 FIXME("iface %p, key %p, stub!\n", iface, key);
1496 return E_NOTIMPL;
1497}

◆ overlay_SetPalette()

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

Definition at line 1475 of file vmr7.c.

1476{
1477 FIXME("iface %p, count %lu, palette %p, stub!\n", iface, count, palette);
1478 return E_NOTIMPL;
1479}

◆ overlay_Unadvise()

static HRESULT WINAPI overlay_Unadvise ( IOverlay *  iface)
static

Definition at line 1530 of file vmr7.c.

1531{
1532 FIXME("iface %p, stub!\n", iface);
1533 return E_NOTIMPL;
1534}

◆ surface_allocator_notify_AddRef()

static ULONG WINAPI surface_allocator_notify_AddRef ( IVMRSurfaceAllocatorNotify *  iface)
static

Definition at line 1208 of file vmr7.c.

1209{
1211
1212 return IUnknown_AddRef(filter->renderer.filter.outer_unk);
1213}
static struct vmr7 * impl_from_IVMRSurfaceAllocatorNotify(IVMRSurfaceAllocatorNotify *iface)
Definition: vmr7.c:113

◆ surface_allocator_notify_AdviseSurfaceAllocator()

static HRESULT WINAPI surface_allocator_notify_AdviseSurfaceAllocator ( IVMRSurfaceAllocatorNotify *  iface,
DWORD_PTR  cookie,
IVMRSurfaceAllocator *  allocator 
)
static

Definition at line 1222 of file vmr7.c.

1224{
1227
1228 TRACE("filter %p, cookie %#Ix, allocator %p.\n", filter, cookie, allocator);
1229
1230 EnterCriticalSection(&filter->renderer.filter.filter_cs);
1231
1232 filter->cookie = cookie;
1233
1234 if (filter->renderer.sink.pin.peer)
1235 {
1236 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1237 WARN("Attempt to set allocator while connected; returning VFW_E_WRONG_STATE.\n");
1238 return VFW_E_WRONG_STATE;
1239 }
1240
1241 if (FAILED(IVMRSurfaceAllocator_QueryInterface(allocator, &IID_IVMRImagePresenter, (void **)&presenter)))
1242 {
1243 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1244 return E_NOINTERFACE;
1245 }
1246
1247 if (filter->allocator)
1248 {
1249 IVMRImagePresenter_Release(filter->presenter);
1250 IVMRSurfaceAllocator_Release(filter->allocator);
1251 }
1252 filter->allocator = allocator;
1253 filter->presenter = presenter;
1254 IVMRSurfaceAllocator_AddRef(allocator);
1255
1256 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1257 return S_OK;
1258}
Definition: cookie.c:34
IVMRSurfaceAllocator * allocator
Definition: vmr7.c:71
DWORD_PTR cookie
Definition: vmr7.c:76
IVMRImagePresenter * presenter
Definition: vmr7.c:72
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ surface_allocator_notify_ChangeDDrawDevice()

static HRESULT WINAPI surface_allocator_notify_ChangeDDrawDevice ( IVMRSurfaceAllocatorNotify *  iface,
IDirectDraw7 *  device,
HMONITOR  monitor 
)
static

Definition at line 1267 of file vmr7.c.

1269{
1270 FIXME("iface %p, device %p, monitor %p, stub!\n", iface, device, monitor);
1271 return E_NOTIMPL;
1272}
Definition: devices.h:37

◆ surface_allocator_notify_NotifyEvent()

static HRESULT WINAPI surface_allocator_notify_NotifyEvent ( IVMRSurfaceAllocatorNotify *  iface,
LONG  code,
LONG_PTR  param1,
LONG_PTR  param2 
)
static

Definition at line 1280 of file vmr7.c.

1282{
1283 FIXME("iface %p, code %#lx, param1 %#Ix, param2 %#Ix, stub!\n", iface, code, param1, param2);
1284 return E_NOTIMPL;
1285}
Definition: inflate.c:139

◆ surface_allocator_notify_QueryInterface()

static HRESULT WINAPI surface_allocator_notify_QueryInterface ( IVMRSurfaceAllocatorNotify *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 1200 of file vmr7.c.

1202{
1204
1205 return IUnknown_QueryInterface(filter->renderer.filter.outer_unk, iid, out);
1206}

◆ surface_allocator_notify_Release()

static ULONG WINAPI surface_allocator_notify_Release ( IVMRSurfaceAllocatorNotify *  iface)
static

Definition at line 1215 of file vmr7.c.

1216{
1218
1219 return IUnknown_Release(filter->renderer.filter.outer_unk);
1220}

◆ surface_allocator_notify_RestoreDDrawSurfaces()

static HRESULT WINAPI surface_allocator_notify_RestoreDDrawSurfaces ( IVMRSurfaceAllocatorNotify *  iface)
static

Definition at line 1274 of file vmr7.c.

1275{
1276 FIXME("iface %p, stub!\n", iface);
1277 return E_NOTIMPL;
1278}

◆ surface_allocator_notify_SetBorderColor()

static HRESULT WINAPI surface_allocator_notify_SetBorderColor ( IVMRSurfaceAllocatorNotify *  iface,
COLORREF  color 
)
static

Definition at line 1287 of file vmr7.c.

1289{
1290 FIXME("iface %p, color %#08lx, stub!\n", iface, color);
1291 return E_NOTIMPL;
1292}
GLuint color
Definition: glext.h:6243

◆ surface_allocator_notify_SetDDrawDevice()

static HRESULT WINAPI surface_allocator_notify_SetDDrawDevice ( IVMRSurfaceAllocatorNotify *  iface,
IDirectDraw7 *  device,
HMONITOR  monitor 
)
static

Definition at line 1260 of file vmr7.c.

1262{
1263 FIXME("iface %p, device %p, monitor %p, stub!\n", iface, device, monitor);
1264 return E_NOTIMPL;
1265}

◆ video_accelerator_AddRef()

static ULONG WINAPI video_accelerator_AddRef ( IAMVideoAccelerator *  iface)
static

Definition at line 1319 of file vmr7.c.

1320{
1321 struct vmr7 *filter = impl_from_IAMVideoAccelerator(iface);
1322
1323 return IPin_AddRef(&filter->renderer.sink.pin.IPin_iface);
1324}
static struct vmr7 * impl_from_IAMVideoAccelerator(IAMVideoAccelerator *iface)
Definition: vmr7.c:1307

◆ video_accelerator_BeginFrame()

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

Definition at line 1372 of file vmr7.c.

1373{
1374 FIXME("iface %p, info %p, stub!\n", iface, info);
1375 return E_NOTIMPL;
1376}

◆ video_accelerator_DisplayFrame()

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

Definition at line 1417 of file vmr7.c.

1419{
1420 FIXME("iface %p, index %lu, sample %p, stub!\n", iface, index, sample);
1421 return E_NOTIMPL;
1422}
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 1378 of file vmr7.c.

1379{
1380 FIXME("iface %p, info %p, stub!\n", iface, info);
1381 return E_NOTIMPL;
1382}

◆ 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 1399 of file vmr7.c.

1402{
1403 FIXME("iface %p, function %#lx, in_data %p, in_size %lu,"
1404 " out_data %p, out_size %lu, buffer_count %lu, buffers %p, stub!\n",
1405 iface, function, in_data, in_size, out_data, out_size, buffer_count, buffers);
1406 return E_NOTIMPL;
1407}
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 1384 of file vmr7.c.

1386{
1387 FIXME("iface %p, type_index %lu, buffer_index %lu, read_only %d, buffer %p, stride %p, stub!\n",
1388 iface, type_index, buffer_index, read_only, buffer, stride);
1389 return E_NOTIMPL;
1390}
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 1356 of file vmr7.c.

1359{
1360 FIXME("iface %p, accelerator %s, uncompressed_info %p, compressed_info_count %p, compressed_infos %p, stub!\n",
1361 iface, debugstr_guid(accelerator), uncompressed_info, compressed_info_count, compressed_infos);
1362 return E_NOTIMPL;
1363}
#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 1365 of file vmr7.c.

1367{
1368 FIXME("iface %p, count %p, infos %p, stub!\n", iface, count, infos);
1369 return E_NOTIMPL;
1370}

◆ 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 1348 of file vmr7.c.

1350{
1351 FIXME("iface %p, accelerator %s, format_info %p, mem_info %p, stub!\n",
1352 iface, debugstr_guid(accelerator), format_info, mem_info);
1353 return E_NOTIMPL;
1354}
format_info

◆ video_accelerator_GetUncompFormatsSupported()

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

Definition at line 1340 of file vmr7.c.

1342{
1343 FIXME("iface %p, accelerator %s, count %p, formats %p, stub!\n",
1344 iface, debugstr_guid(accelerator), count, formats);
1345 return E_NOTIMPL;
1346}
static const struct pixel_format_desc formats[]
Definition: util.c:31

◆ video_accelerator_GetVideoAcceleratorGUIDs()

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

Definition at line 1333 of file vmr7.c.

1335{
1336 FIXME("iface %p, count %p, accelerators %p, stub!\n", iface, count, accelerators);
1337 return E_NOTIMPL;
1338}

◆ video_accelerator_QueryInterface()

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

Definition at line 1312 of file vmr7.c.

1313{
1314 struct vmr7 *filter = impl_from_IAMVideoAccelerator(iface);
1315
1316 return IPin_QueryInterface(&filter->renderer.sink.pin.IPin_iface, iid, out);
1317}

◆ video_accelerator_QueryRenderStatus()

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

Definition at line 1409 of file vmr7.c.

1411{
1412 FIXME("iface %p, type_index %lu, buffer_index %lu, flags %#lx, stub!\n",
1413 iface, type_index, buffer_index, flags);
1414 return E_NOTIMPL;
1415}

◆ video_accelerator_Release()

static ULONG WINAPI video_accelerator_Release ( IAMVideoAccelerator *  iface)
static

Definition at line 1326 of file vmr7.c.

1327{
1328 struct vmr7 *filter = impl_from_IAMVideoAccelerator(iface);
1329
1330 return IPin_Release(&filter->renderer.sink.pin.IPin_iface);
1331}

◆ video_accelerator_ReleaseBuffer()

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

Definition at line 1392 of file vmr7.c.

1394{
1395 FIXME("iface %p, type_index %lu, buffer_index %lu, stub!\n", iface, type_index, buffer_index);
1396 return E_NOTIMPL;
1397}

◆ vmr7_create()

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

Definition at line 1553 of file vmr7.c.

1554{
1555 struct vmr7 *object;
1556 HRESULT hr;
1557
1558 if (!(object = calloc(1, sizeof(*object))))
1559 return E_OUTOFMEMORY;
1560
1561 strmbase_renderer_init(&object->renderer, outer, &CLSID_VideoMixingRenderer, L"VMR Input0", &renderer_ops);
1562 object->IAMCertifiedOutputProtection_iface.lpVtbl = &certified_output_protection_vtbl;
1563 object->IAMFilterMiscFlags_iface.lpVtbl = &misc_flags_vtbl;
1564 object->IVMRFilterConfig_iface.lpVtbl = &filter_config_vtbl;
1565 object->IVMRMonitorConfig_iface.lpVtbl = &monitor_config_vtbl;
1566 object->IVMRSurfaceAllocatorNotify_iface.lpVtbl = &surface_allocator_notify_vtbl;
1567 object->IVMRWindowlessControl_iface.lpVtbl = &windowless_control_vtbl;
1568
1569 object->IAMVideoAccelerator_iface.lpVtbl = &video_accelerator_vtbl;
1570 object->IOverlay_iface.lpVtbl = &overlay_vtbl;
1571
1573 &object->renderer.filter, &object->renderer.sink.pin, &window_ops);
1574
1575 if (FAILED(hr = video_window_create_window(&object->window)))
1576 {
1577 video_window_cleanup(&object->window);
1579 free(object);
1580 return hr;
1581 }
1582
1583 object->mixing_prefs = MixerPref9_NoDecimation | MixerPref9_ARAdjustXorY
1585
1586 TRACE("Created VMR %p.\n", object);
1587 *out = &object->renderer.filter.IUnknown_inner;
1588 return S_OK;
1589}
static const IAMVideoAcceleratorVtbl video_accelerator_vtbl
Definition: vmr7.c:1424
static const struct video_window_ops window_ops
Definition: vmr7.c:524
static const struct strmbase_renderer_ops renderer_ops
Definition: vmr7.c:496
static const IAMFilterMiscFlagsVtbl misc_flags_vtbl
Definition: vmr7.c:667
static const IAMCertifiedOutputProtectionVtbl certified_output_protection_vtbl
Definition: vmr7.c:630
static const IVMRMonitorConfigVtbl monitor_config_vtbl
Definition: vmr7.c:989
static const IOverlayVtbl overlay_vtbl
Definition: vmr7.c:1536
static const IVMRWindowlessControlVtbl windowless_control_vtbl
Definition: vmr7.c:1178
static const IVideoWindowVtbl IVideoWindow_VTable
Definition: vmr7.c:530
static const IVMRSurfaceAllocatorNotifyVtbl surface_allocator_notify_vtbl
Definition: vmr7.c:1294
static const IVMRFilterConfigVtbl filter_config_vtbl
Definition: vmr7.c:813
#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 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

Referenced by video_renderer_default_create().

◆ vmr_connect()

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

Definition at line 389 of file vmr7.c.

390{
391 struct vmr7 *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
392 const BITMAPINFOHEADER *bitmap_header = get_bitmap_header(mt);
393 HWND window = filter->window.hwnd;
394 HRESULT hr;
395 RECT rect;
396
397 SetRect(&rect, 0, 0, bitmap_header->biWidth, bitmap_header->biHeight);
398 filter->window.src = rect;
399
404 GetClientRect(window, &filter->window.dst);
405
406 if (filter->mode
407 || SUCCEEDED(hr = IVMRFilterConfig_SetRenderingMode(&filter->IVMRFilterConfig_iface, VMRMode_Windowed)))
409
410 return hr;
411}
RECT rect
Definition: combotst.c:67
static HRESULT allocate_surfaces(struct vmr7 *filter, const AM_MEDIA_TYPE *mt)
Definition: vmr7.c:342
static struct vmr7 * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: vmr7.c:123
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#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
Definition: dcommon.idl:28
long bottom
Definition: dcommon.idl:29
long right
Definition: dcommon.idl:29
long left
Definition: dcommon.idl:29
long top
Definition: dcommon.idl:29
struct strmbase_filter filter
Definition: strmbase.h:260

◆ vmr_destroy()

static void vmr_destroy ( struct strmbase_renderer *  iface)
static

Definition at line 433 of file vmr7.c.

434{
435 struct vmr7 *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
436
438
439 if (filter->allocator)
440 {
441 if (filter->surface_count)
442 IVMRSurfaceAllocator_FreeSurface(filter->allocator, filter->cookie);
443 IVMRSurfaceAllocator_Release(filter->allocator);
444 }
445 if (filter->presenter)
446 IVMRImagePresenter_Release(filter->presenter);
447
448 filter->surface_count = 0;
449
451 free(filter);
452}

◆ vmr_disconnect()

static void vmr_disconnect ( struct strmbase_renderer *  iface)
static

Definition at line 426 of file vmr7.c.

427{
428 struct vmr7 *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
429
431}
static void deallocate_surfaces(struct vmr7 *filter)
Definition: vmr7.c:413

◆ vmr_get_current_image()

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

Definition at line 518 of file vmr7.c.

519{
520 FIXME("stub!\n");
521 return E_NOTIMPL;
522}

◆ vmr_get_default_rect()

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

Definition at line 510 of file vmr7.c.

511{
512 struct vmr7 *filter = impl_from_video_window(iface);
513 const BITMAPINFOHEADER *bitmap_header = get_filter_bitmap_header(filter);
514
515 SetRect(rect, 0, 0, bitmap_header->biWidth, bitmap_header->biHeight);
516}
static const BITMAPINFOHEADER * get_filter_bitmap_header(const struct vmr7 *filter)
Definition: vmr7.c:83
static struct vmr7 * impl_from_video_window(struct video_window *iface)
Definition: vmr7.c:88

◆ vmr_init_stream()

static void vmr_init_stream ( struct strmbase_renderer *  iface)
static

Definition at line 366 of file vmr7.c.

367{
368 struct vmr7 *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
369
370 if (filter->window.hwnd && filter->window.AutoShow)
371 ShowWindow(filter->window.hwnd, SW_SHOW);
372}
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 481 of file vmr7.c.

482{
483 struct vmr7 *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
484
485 if (IsEqualGUID(iid, &IID_IAMVideoAccelerator))
486 *out = &filter->IAMVideoAccelerator_iface;
487 else if (IsEqualGUID(iid, &IID_IOverlay))
488 *out = &filter->IOverlay_iface;
489 else
490 return E_NOINTERFACE;
491
492 IUnknown_AddRef((IUnknown *)*out);
493 return S_OK;
494}

◆ vmr_query_accept()

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

Definition at line 286 of file vmr7.c.

287{
288 if (!IsEqualIID(&mt->majortype, &MEDIATYPE_Video) || !mt->pbFormat)
289 return S_FALSE;
290
291 if (!IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo)
292 && !IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo2))
293 return S_FALSE;
294
295 return S_OK;
296}
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#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 454 of file vmr7.c.

455{
456 struct vmr7 *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
457
458 if (IsEqualGUID(iid, &IID_IVideoWindow))
459 *out = &filter->window.IVideoWindow_iface;
460 else if (IsEqualGUID(iid, &IID_IBasicVideo))
461 *out = &filter->window.IBasicVideo_iface;
462 else if (IsEqualGUID(iid, &IID_IAMCertifiedOutputProtection))
463 *out = &filter->IAMCertifiedOutputProtection_iface;
464 else if (IsEqualGUID(iid, &IID_IAMFilterMiscFlags))
465 *out = &filter->IAMFilterMiscFlags_iface;
466 else if (IsEqualGUID(iid, &IID_IVMRFilterConfig))
467 *out = &filter->IVMRFilterConfig_iface;
468 else if (IsEqualGUID(iid, &IID_IVMRMonitorConfig))
469 *out = &filter->IVMRMonitorConfig_iface;
470 else if (IsEqualGUID(iid, &IID_IVMRSurfaceAllocatorNotify) && filter->mode == VMRMode_Renderless)
471 *out = &filter->IVMRSurfaceAllocatorNotify_iface;
472 else if (IsEqualGUID(iid, &IID_IVMRWindowlessControl) && filter->mode == VMRMode_Windowless)
473 *out = &filter->IVMRWindowlessControl_iface;
474 else
475 return E_NOINTERFACE;
476
477 IUnknown_AddRef((IUnknown *)*out);
478 return S_OK;
479}

◆ vmr_render()

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

Definition at line 164 of file vmr7.c.

165{
166 struct vmr7 *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
167 unsigned int data_size, width, depth, src_pitch;
168 const BITMAPINFOHEADER *bitmap_header;
169 REFERENCE_TIME start_time, end_time;
171 DDSURFACEDESC2 surface_desc;
172 BYTE *data = NULL;
173 HRESULT hr;
174 int height;
175
176 TRACE("filter %p, sample %p.\n", filter, sample);
177
178 if (!filter->allocator || !filter->presenter)
179 {
180 ERR("No presenter.\n");
181 return S_FALSE;
182 }
183
185
186 if (SUCCEEDED(hr = IMediaSample_GetTime(sample, &start_time, &end_time)))
187 info.dwFlags |= VMR9Sample_TimeValid;
188
189 if (IMediaSample_IsDiscontinuity(sample) == S_OK)
191
192 if (IMediaSample_IsPreroll(sample) == S_OK)
193 info.dwFlags |= VMR9Sample_Preroll;
194
195 if (IMediaSample_IsSyncPoint(sample) == S_OK)
196 info.dwFlags |= VMR9Sample_SyncPoint;
197
198 if (FAILED(hr = IMediaSample_GetPointer(sample, &data)))
199 {
200 ERR("Failed to get pointer to sample data, hr %#lx.\n", hr);
201 return hr;
202 }
203 data_size = IMediaSample_GetActualDataLength(sample);
204 TRACE("Sample size %u.\n", data_size);
205
206 bitmap_header = get_filter_bitmap_header(filter);
207 width = bitmap_header->biWidth;
208 height = bitmap_header->biHeight;
209 depth = bitmap_header->biBitCount;
210 if (bitmap_header->biCompression == mmioFOURCC('N','V','1','2')
211 || bitmap_header->biCompression == mmioFOURCC('Y','V','1','2'))
212 src_pitch = (width + 3) & ~3;
213 else /* packed YUV (UYVY or YUY2) or RGB */
214 src_pitch = ((width * depth / 8) + 3) & ~3;
215
216 info.dwFlags = VMRSample_TimeValid;
217 info.rtStart = start_time;
218 info.rtEnd = end_time;
219 info.szAspectRatio.cx = width;
220 info.szAspectRatio.cy = height;
221 info.lpSurf = filter->surfaces[(--filter->surface_index) % filter->surface_count];
222
223 hr = IVMRSurfaceAllocator_PrepareSurface(filter->allocator, filter->cookie, info.lpSurf, 0);
224 if (hr != S_OK)
225 ERR("PrepareSurface() returned %#lx.\n", hr);
226
227 surface_desc.dwSize = sizeof(surface_desc);
228 if (FAILED(hr = IDirectDrawSurface7_Lock(info.lpSurf, NULL,
229 &surface_desc, DDLOCK_DISCARDCONTENTS | DDLOCK_WAIT, NULL)))
230 {
231 ERR("Failed to lock surface, hr %#lx.\n", hr);
232 return hr;
233 }
234
235 if (width > surface_desc.dwWidth || abs(height) > surface_desc.dwHeight)
236 {
237 FIXME("src surface (%ux%u) larger than rendering surface (%lux%lu).\n", width, height,
238 surface_desc.dwWidth, surface_desc.dwHeight);
239 }
240
241 if (bitmap_header->biCompression == mmioFOURCC('N','V','1','2'))
242 {
243 BYTE *dst = surface_desc.lpSurface;
244 const BYTE *src = data;
245
246 copy_plane(&dst, surface_desc.lPitch, surface_desc.dwHeight, &src, src_pitch, height);
247 copy_plane(&dst, surface_desc.lPitch, surface_desc.dwHeight / 2, &src, src_pitch, height / 2);
248 }
249 else if (bitmap_header->biCompression == mmioFOURCC('Y','V','1','2'))
250 {
251 BYTE *dst = surface_desc.lpSurface;
252 const BYTE *src = data;
253
254 copy_plane(&dst, surface_desc.lPitch, surface_desc.dwHeight, &src, src_pitch, height);
255 copy_plane(&dst, surface_desc.lPitch / 2, surface_desc.dwHeight / 2, &src, src_pitch / 2, height / 2);
256 copy_plane(&dst, surface_desc.lPitch / 2, surface_desc.dwHeight / 2, &src, src_pitch / 2, height / 2);
257 }
258 else if (height > 0 && bitmap_header->biCompression == BI_RGB)
259 {
260 BYTE *dst = surface_desc.lpSurface;
261 const BYTE *src = data;
262
263 copy_plane(&dst, surface_desc.lPitch, surface_desc.dwHeight, &src, src_pitch, -height);
264 }
265 else if (surface_desc.lPitch != src_pitch)
266 {
267 BYTE *dst = surface_desc.lpSurface;
268 const BYTE *src = data;
269
270 TRACE("Source pitch %u does not match dest pitch %lu; copying manually.\n",
271 src_pitch, surface_desc.lPitch);
272
273 height = abs(height);
274 copy_plane(&dst, surface_desc.lPitch, surface_desc.dwHeight, &src, src_pitch, height);
275 }
276 else
277 {
278 memcpy(surface_desc.lpSurface, data, data_size);
279 }
280
281 IDirectDrawSurface7_Unlock(info.lpSurf, NULL);
282
283 return IVMRImagePresenter_PresentImage(filter->presenter, filter->cookie, &info);
284}
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: vmr7.c:128
LONGLONG REFERENCE_TIME
Definition: dmusicks.h:9
@ VMRSample_TimeValid
Definition: vmrender.idl:45
#define abs(i)
Definition: fconv.c:206
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLint GLint GLsizei width
Definition: gl.h:1546
#define mmioFOURCC(c0, c1, c2, c3)
Definition: mmsystem.h:38
#define DDLOCK_DISCARDCONTENTS
Definition: ddraw.h:630
#define DDLOCK_WAIT
Definition: ddraw.h:624
DWORD biCompression
Definition: amvideo.idl:35
DWORD dwWidth
Definition: ddraw.h:1157
DWORD dwHeight
Definition: ddraw.h:1156
LPVOID lpSurface
Definition: ddraw.h:1176
DWORD dwSize
Definition: ddraw.h:1154
#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 374 of file vmr7.c.

375{
376 struct vmr7 *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
377
378 IVMRImagePresenter_StartPresenting(filter->presenter, filter->cookie);
379}

◆ vmr_stop_stream()

static void vmr_stop_stream ( struct strmbase_renderer *  iface)
static

Definition at line 381 of file vmr7.c.

382{
383 struct vmr7 *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface);
384
385 if (filter->renderer.filter.state == State_Running)
386 IVMRImagePresenter_StopPresenting(filter->presenter, filter->cookie);
387}

◆ windowless_control_AddRef()

static ULONG WINAPI windowless_control_AddRef ( IVMRWindowlessControl *  iface)
static

Definition at line 1008 of file vmr7.c.

1009{
1011
1012 return IUnknown_AddRef(filter->renderer.filter.outer_unk);
1013}
static struct vmr7 * impl_from_IVMRWindowlessControl(IVMRWindowlessControl *iface)
Definition: vmr7.c:118

◆ windowless_control_DisplayModeChanged()

static HRESULT WINAPI windowless_control_DisplayModeChanged ( IVMRWindowlessControl *  iface)
static

Definition at line 1142 of file vmr7.c.

1143{
1144 FIXME("iface %p, stub!\n", iface);
1145 return E_NOTIMPL;
1146}

◆ windowless_control_GetAspectRatioMode()

static HRESULT WINAPI windowless_control_GetAspectRatioMode ( IVMRWindowlessControl *  iface,
DWORD *  mode 
)
static

Definition at line 1093 of file vmr7.c.

1094{
1095 FIXME("iface %p, mode %p, stub!\n", iface, mode);
1096 return E_NOTIMPL;
1097}

◆ windowless_control_GetBorderColor()

static HRESULT WINAPI windowless_control_GetBorderColor ( IVMRWindowlessControl *  iface,
COLORREF *  color 
)
static

Definition at line 1160 of file vmr7.c.

1161{
1162 FIXME("iface %p, color %p, stub!\n", iface, color);
1163 return E_NOTIMPL;
1164}

◆ windowless_control_GetColorKey()

static HRESULT WINAPI windowless_control_GetColorKey ( IVMRWindowlessControl *  iface,
COLORREF *  color 
)
static

Definition at line 1172 of file vmr7.c.

1173{
1174 FIXME("iface %p, color %p, stub!\n", iface, color);
1175 return E_NOTIMPL;
1176}

◆ windowless_control_GetCurrentImage()

static HRESULT WINAPI windowless_control_GetCurrentImage ( IVMRWindowlessControl *  iface,
BYTE **  image 
)
static

Definition at line 1148 of file vmr7.c.

1149{
1150 FIXME("iface %p, image %p, stub!\n", iface, image);
1151 return E_NOTIMPL;
1152}
Definition: image.c:84

◆ windowless_control_GetMaxIdealVideoSize()

static HRESULT WINAPI windowless_control_GetMaxIdealVideoSize ( IVMRWindowlessControl *  iface,
LONG *  width,
LONG *  height 
)
static

Definition at line 1051 of file vmr7.c.

1053{
1054 FIXME("iface %p, width %p, height %p, stub!\n", iface, width, height);
1055 return E_NOTIMPL;
1056}

◆ windowless_control_GetMinIdealVideoSize()

static HRESULT WINAPI windowless_control_GetMinIdealVideoSize ( IVMRWindowlessControl *  iface,
LONG *  width,
LONG *  height 
)
static

Definition at line 1044 of file vmr7.c.

1046{
1047 FIXME("iface %p, width %p, height %p, stub!\n", iface, width, height);
1048 return E_NOTIMPL;
1049}

◆ windowless_control_GetNativeVideoSize()

static HRESULT WINAPI windowless_control_GetNativeVideoSize ( IVMRWindowlessControl *  iface,
LONG *  width,
LONG *  height,
LONG *  aspect_width,
LONG *  aspect_height 
)
static

Definition at line 1022 of file vmr7.c.

1024{
1026 const BITMAPINFOHEADER *bitmap_header = get_filter_bitmap_header(filter);
1027
1028 TRACE("filter %p, width %p, height %p, aspect_width %p, aspect_height %p.\n",
1029 filter, width, height, aspect_width, aspect_height);
1030
1031 if (!width || !height)
1032 return E_POINTER;
1033
1034 *width = bitmap_header->biWidth;
1035 *height = bitmap_header->biHeight;
1036 if (aspect_width)
1037 *aspect_width = bitmap_header->biWidth;
1038 if (aspect_height)
1039 *aspect_height = bitmap_header->biHeight;
1040
1041 return S_OK;
1042}

◆ windowless_control_GetVideoPosition()

static HRESULT WINAPI windowless_control_GetVideoPosition ( IVMRWindowlessControl *  iface,
RECT *  source,
RECT *  dest 
)
static

Definition at line 1077 of file vmr7.c.

1079{
1081
1082 TRACE("filter %p, source %p, dest %p.\n", filter, source, dest);
1083
1084 if (source)
1085 *source = filter->window.src;
1086
1087 if (dest)
1088 *dest = filter->window.dst;
1089
1090 return S_OK;
1091}

◆ windowless_control_QueryInterface()

static HRESULT WINAPI windowless_control_QueryInterface ( IVMRWindowlessControl *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 1001 of file vmr7.c.

1002{
1004
1005 return IUnknown_QueryInterface(filter->renderer.filter.outer_unk, iid, out);
1006}

◆ windowless_control_Release()

static ULONG WINAPI windowless_control_Release ( IVMRWindowlessControl *  iface)
static

Definition at line 1015 of file vmr7.c.

1016{
1018
1019 return IUnknown_Release(filter->renderer.filter.outer_unk);
1020}

◆ windowless_control_RepaintVideo()

static HRESULT WINAPI windowless_control_RepaintVideo ( IVMRWindowlessControl *  iface,
HWND  window,
HDC  dc 
)
static

Definition at line 1135 of file vmr7.c.

1137{
1138 FIXME("iface %p, window %p, dc %p, stub!\n", iface, window, dc);
1139 return E_NOTIMPL;
1140}
HDC dc
Definition: cylfrac.c:34

◆ windowless_control_SetAspectRatioMode()

static HRESULT WINAPI windowless_control_SetAspectRatioMode ( IVMRWindowlessControl *  iface,
DWORD  mode 
)
static

Definition at line 1099 of file vmr7.c.

1100{
1101 FIXME("iface %p, mode %#lx, stub!\n", iface, mode);
1102 return E_NOTIMPL;
1103}

◆ windowless_control_SetBorderColor()

static HRESULT WINAPI windowless_control_SetBorderColor ( IVMRWindowlessControl *  iface,
COLORREF  color 
)
static

Definition at line 1154 of file vmr7.c.

1155{
1156 FIXME("iface %p, color %#08lx, stub!\n", iface, color);
1157 return E_NOTIMPL;
1158}

◆ windowless_control_SetColorKey()

static HRESULT WINAPI windowless_control_SetColorKey ( IVMRWindowlessControl *  iface,
COLORREF  color 
)
static

Definition at line 1166 of file vmr7.c.

1167{
1168 FIXME("iface %p, color %#08lx, stub!\n", iface, color);
1169 return E_NOTIMPL;
1170}

◆ windowless_control_SetVideoClippingWindow()

static HRESULT WINAPI windowless_control_SetVideoClippingWindow ( IVMRWindowlessControl *  iface,
HWND  window 
)
static

Definition at line 1105 of file vmr7.c.

1106{
1108 HRESULT hr;
1109
1110 TRACE("filter %p, window %p.\n", filter, window);
1111
1112 if (!IsWindow(window))
1113 {
1114 WARN("Invalid window %p, returning E_INVALIDARG.\n", window);
1115 return E_INVALIDARG;
1116 }
1117
1118 EnterCriticalSection(&filter->renderer.filter.filter_cs);
1119
1120 if (filter->renderer.sink.pin.peer)
1121 {
1122 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1123 WARN("Attempt to set the clipping window while connected; returning VFW_E_WRONG_STATE.\n");
1124 return VFW_E_WRONG_STATE;
1125 }
1126
1127 filter->clipping_window = window;
1128
1129 hr = IVMRFilterConfig_SetNumberOfStreams(&filter->IVMRFilterConfig_iface, 4);
1130
1131 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1132 return hr;
1133}
BOOL WINAPI IsWindow(_In_opt_ HWND)

◆ windowless_control_SetVideoPosition()

static HRESULT WINAPI windowless_control_SetVideoPosition ( IVMRWindowlessControl *  iface,
const RECT *  source,
const RECT *  dest 
)
static

Definition at line 1058 of file vmr7.c.

1060{
1062
1063 TRACE("filter %p, source %s, dest %s.\n", filter, wine_dbgstr_rect(source), wine_dbgstr_rect(dest));
1064
1065 EnterCriticalSection(&filter->renderer.filter.filter_cs);
1066
1067 if (source)
1068 filter->window.src = *source;
1069 if (dest)
1070 filter->window.dst = *dest;
1071
1072 LeaveCriticalSection(&filter->renderer.filter.filter_cs);
1073
1074 return S_OK;
1075}
static const char * wine_dbgstr_rect(const RECT *prc)
Definition: atltest.h:160

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( quartz  )

Variable Documentation

◆ certified_output_protection_vtbl

const IAMCertifiedOutputProtectionVtbl certified_output_protection_vtbl
static
Initial value:
=
{
}
static ULONG WINAPI certified_output_protection_Release(IAMCertifiedOutputProtection *iface)
Definition: vmr7.c:595
static HRESULT WINAPI certified_output_protection_KeyExchange(IAMCertifiedOutputProtection *iface, GUID *random, BYTE **certificate, DWORD *size)
Definition: vmr7.c:602
static HRESULT WINAPI certified_output_protection_ProtectionCommand(IAMCertifiedOutputProtection *iface, const AMCOPPCommand *cmd)
Definition: vmr7.c:616
static HRESULT WINAPI certified_output_protection_ProtectionStatus(IAMCertifiedOutputProtection *iface, const AMCOPPStatusInput *input, AMCOPPStatusOutput *output)
Definition: vmr7.c:623
static ULONG WINAPI certified_output_protection_AddRef(IAMCertifiedOutputProtection *iface)
Definition: vmr7.c:588
static HRESULT WINAPI certified_output_protection_SessionSequenceStart(IAMCertifiedOutputProtection *iface, AMCOPPSignature *signature)
Definition: vmr7.c:609
static HRESULT WINAPI certified_output_protection_QueryInterface(IAMCertifiedOutputProtection *iface, REFIID iid, void **out)
Definition: vmr7.c:580

Definition at line 630 of file vmr7.c.

Referenced by vmr7_create().

◆ filter_config_vtbl

const IVMRFilterConfigVtbl filter_config_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI filter_config_SetRenderingMode(IVMRFilterConfig *iface, DWORD mode)
Definition: vmr7.c:748
static HRESULT WINAPI filter_config_SetImageCompositor(IVMRFilterConfig *iface, IVMRImageCompositor *compositor)
Definition: vmr7.c:696
static ULONG WINAPI filter_config_Release(IVMRFilterConfig *iface)
Definition: vmr7.c:689
static HRESULT WINAPI filter_config_GetNumberOfStreams(IVMRFilterConfig *iface, DWORD *count)
Definition: vmr7.c:730
static HRESULT WINAPI filter_config_SetNumberOfStreams(IVMRFilterConfig *iface, DWORD count)
Definition: vmr7.c:703
static HRESULT WINAPI filter_config_QueryInterface(IVMRFilterConfig *iface, REFIID iid, void **out)
Definition: vmr7.c:675
static HRESULT WINAPI filter_config_SetRenderingPrefs(IVMRFilterConfig *iface, DWORD flags)
Definition: vmr7.c:736
static HRESULT WINAPI filter_config_GetRenderingPrefs(IVMRFilterConfig *iface, DWORD *flags)
Definition: vmr7.c:742
static HRESULT WINAPI filter_config_GetRenderingMode(IVMRFilterConfig *iface, DWORD *mode)
Definition: vmr7.c:796
static ULONG WINAPI filter_config_AddRef(IVMRFilterConfig *iface)
Definition: vmr7.c:682

Definition at line 813 of file vmr7.c.

Referenced by vmr7_create().

◆ IVideoWindow_VTable

const IVideoWindowVtbl IVideoWindow_VTable
static

Definition at line 530 of file vmr7.c.

Referenced by vmr7_create().

◆ misc_flags_vtbl

const IAMFilterMiscFlagsVtbl misc_flags_vtbl
static
Initial value:
=
{
}
static ULONG WINAPI misc_flags_Release(IAMFilterMiscFlags *iface)
Definition: vmr7.c:655
static ULONG WINAPI misc_flags_AddRef(IAMFilterMiscFlags *iface)
Definition: vmr7.c:648
static ULONG WINAPI misc_flags_GetMiscFlags(IAMFilterMiscFlags *iface)
Definition: vmr7.c:662
static HRESULT WINAPI misc_flags_QueryInterface(IAMFilterMiscFlags *iface, REFIID iid, void **out)
Definition: vmr7.c:641

Definition at line 667 of file vmr7.c.

Referenced by vmr7_create().

◆ monitor_config_vtbl

const IVMRMonitorConfigVtbl monitor_config_vtbl
static
Initial value:
=
{
}
static ULONG WINAPI monitor_config_Release(IVMRMonitorConfig *iface)
Definition: vmr7.c:916
static HRESULT WINAPI monitor_config_SetDefaultMonitor(IVMRMonitorConfig *iface, const VMRGUID *guid)
Definition: vmr7.c:944
static HRESULT WINAPI monitor_config_GetAvailableMonitors(IVMRMonitorConfig *iface, VMRMONITORINFO *info, DWORD capacity, DWORD *count)
Definition: vmr7.c:965
static ULONG WINAPI monitor_config_AddRef(IVMRMonitorConfig *iface)
Definition: vmr7.c:909
static HRESULT WINAPI monitor_config_GetDefaultMonitor(IVMRMonitorConfig *iface, VMRGUID *guid)
Definition: vmr7.c:954
static HRESULT WINAPI monitor_config_SetMonitor(IVMRMonitorConfig *iface, const VMRGUID *guid)
Definition: vmr7.c:923
static HRESULT WINAPI monitor_config_QueryInterface(IVMRMonitorConfig *iface, REFIID iid, void **out)
Definition: vmr7.c:902
static HRESULT WINAPI monitor_config_GetMonitor(IVMRMonitorConfig *iface, VMRGUID *guid)
Definition: vmr7.c:933

Definition at line 989 of file vmr7.c.

Referenced by vmr7_create().

◆ overlay_vtbl

const IOverlayVtbl overlay_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI overlay_GetColorKey(IOverlay *iface, COLORKEY *key)
Definition: vmr7.c:1487
static HRESULT WINAPI overlay_GetWindowHandle(IOverlay *iface, HWND *window)
Definition: vmr7.c:1499
static ULONG WINAPI overlay_AddRef(IOverlay *iface)
Definition: vmr7.c:1455
static HRESULT WINAPI overlay_QueryInterface(IOverlay *iface, REFIID iid, void **out)
Definition: vmr7.c:1448
static HRESULT WINAPI overlay_SetColorKey(IOverlay *iface, COLORKEY *key)
Definition: vmr7.c:1493
static HRESULT WINAPI overlay_SetPalette(IOverlay *iface, DWORD count, PALETTEENTRY *palette)
Definition: vmr7.c:1475
static HRESULT WINAPI overlay_GetVideoPosition(IOverlay *iface, RECT *source, RECT *dest)
Definition: vmr7.c:1518
static HRESULT WINAPI overlay_GetDefaultColorKey(IOverlay *iface, COLORKEY *key)
Definition: vmr7.c:1481
static HRESULT WINAPI overlay_Advise(IOverlay *iface, IOverlayNotify *sink, DWORD flags)
Definition: vmr7.c:1524
static HRESULT WINAPI overlay_Unadvise(IOverlay *iface)
Definition: vmr7.c:1530
static HRESULT WINAPI overlay_GetClipList(IOverlay *iface, RECT *source, RECT *dest, RGNDATA **region)
Definition: vmr7.c:1512
static ULONG WINAPI overlay_Release(IOverlay *iface)
Definition: vmr7.c:1462
static HRESULT WINAPI overlay_GetPalette(IOverlay *iface, DWORD *count, PALETTEENTRY **palette)
Definition: vmr7.c:1469

Definition at line 1536 of file vmr7.c.

Referenced by vmr7_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: vmr7.c:286
static void vmr_stop_stream(struct strmbase_renderer *iface)
Definition: vmr7.c:381
static HRESULT vmr_render(struct strmbase_renderer *iface, IMediaSample *sample)
Definition: vmr7.c:164
static void vmr_init_stream(struct strmbase_renderer *iface)
Definition: vmr7.c:366
static HRESULT vmr_query_interface(struct strmbase_renderer *iface, REFIID iid, void **out)
Definition: vmr7.c:454
static void vmr_start_stream(struct strmbase_renderer *iface)
Definition: vmr7.c:374
static void vmr_disconnect(struct strmbase_renderer *iface)
Definition: vmr7.c:426
static HRESULT vmr_pin_query_interface(struct strmbase_renderer *iface, REFIID iid, void **out)
Definition: vmr7.c:481
static HRESULT vmr_connect(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)
Definition: vmr7.c:389
static void vmr_destroy(struct strmbase_renderer *iface)
Definition: vmr7.c:433

Definition at line 496 of file vmr7.c.

Referenced by vmr7_create().

◆ surface_allocator_notify_vtbl

const IVMRSurfaceAllocatorNotifyVtbl surface_allocator_notify_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI surface_allocator_notify_AdviseSurfaceAllocator(IVMRSurfaceAllocatorNotify *iface, DWORD_PTR cookie, IVMRSurfaceAllocator *allocator)
Definition: vmr7.c:1222
static HRESULT WINAPI surface_allocator_notify_SetDDrawDevice(IVMRSurfaceAllocatorNotify *iface, IDirectDraw7 *device, HMONITOR monitor)
Definition: vmr7.c:1260
static HRESULT WINAPI surface_allocator_notify_RestoreDDrawSurfaces(IVMRSurfaceAllocatorNotify *iface)
Definition: vmr7.c:1274
static HRESULT WINAPI surface_allocator_notify_ChangeDDrawDevice(IVMRSurfaceAllocatorNotify *iface, IDirectDraw7 *device, HMONITOR monitor)
Definition: vmr7.c:1267
static HRESULT WINAPI surface_allocator_notify_SetBorderColor(IVMRSurfaceAllocatorNotify *iface, COLORREF color)
Definition: vmr7.c:1287
static HRESULT WINAPI surface_allocator_notify_NotifyEvent(IVMRSurfaceAllocatorNotify *iface, LONG code, LONG_PTR param1, LONG_PTR param2)
Definition: vmr7.c:1280
static ULONG WINAPI surface_allocator_notify_Release(IVMRSurfaceAllocatorNotify *iface)
Definition: vmr7.c:1215
static ULONG WINAPI surface_allocator_notify_AddRef(IVMRSurfaceAllocatorNotify *iface)
Definition: vmr7.c:1208
static HRESULT WINAPI surface_allocator_notify_QueryInterface(IVMRSurfaceAllocatorNotify *iface, REFIID iid, void **out)
Definition: vmr7.c:1200

Definition at line 1294 of file vmr7.c.

Referenced by vmr7_create().

◆ video_accelerator_vtbl

const IAMVideoAcceleratorVtbl video_accelerator_vtbl
static
Initial value:
=
{
}
static ULONG WINAPI video_accelerator_AddRef(IAMVideoAccelerator *iface)
Definition: vmr7.c:1319
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: vmr7.c:1399
static HRESULT WINAPI video_accelerator_GetBuffer(IAMVideoAccelerator *iface, DWORD type_index, DWORD buffer_index, BOOL read_only, void **buffer, LONG *stride)
Definition: vmr7.c:1384
static HRESULT WINAPI video_accelerator_QueryRenderStatus(IAMVideoAccelerator *iface, DWORD type_index, DWORD buffer_index, DWORD flags)
Definition: vmr7.c:1409
static HRESULT WINAPI video_accelerator_GetUncompFormatsSupported(IAMVideoAccelerator *iface, const GUID *accelerator, DWORD *count, DDPIXELFORMAT *formats)
Definition: vmr7.c:1340
static HRESULT WINAPI video_accelerator_DisplayFrame(IAMVideoAccelerator *iface, DWORD index, IMediaSample *sample)
Definition: vmr7.c:1417
static HRESULT WINAPI video_accelerator_ReleaseBuffer(IAMVideoAccelerator *iface, DWORD type_index, DWORD buffer_index)
Definition: vmr7.c:1392
static HRESULT WINAPI video_accelerator_GetInternalCompBufferInfo(IAMVideoAccelerator *iface, DWORD *count, AMVACompBufferInfo *infos)
Definition: vmr7.c:1365
static HRESULT WINAPI video_accelerator_EndFrame(IAMVideoAccelerator *iface, const AMVAEndFrameInfo *info)
Definition: vmr7.c:1378
static HRESULT WINAPI video_accelerator_BeginFrame(IAMVideoAccelerator *iface, const AMVABeginFrameInfo *info)
Definition: vmr7.c:1372
static HRESULT WINAPI video_accelerator_QueryInterface(IAMVideoAccelerator *iface, REFIID iid, void **out)
Definition: vmr7.c:1312
static HRESULT WINAPI video_accelerator_GetInternalMemInfo(IAMVideoAccelerator *iface, const GUID *accelerator, const AMVAUncompDataInfo *format_info, AMVAInternalMemInfo *mem_info)
Definition: vmr7.c:1348
static HRESULT WINAPI video_accelerator_GetCompBufferInfo(IAMVideoAccelerator *iface, const GUID *accelerator, const AMVAUncompDataInfo *uncompressed_info, DWORD *compressed_info_count, AMVACompBufferInfo *compressed_infos)
Definition: vmr7.c:1356
static ULONG WINAPI video_accelerator_Release(IAMVideoAccelerator *iface)
Definition: vmr7.c:1326
static HRESULT WINAPI video_accelerator_GetVideoAcceleratorGUIDs(IAMVideoAccelerator *iface, DWORD *count, GUID *accelerators)
Definition: vmr7.c:1333

Definition at line 1424 of file vmr7.c.

Referenced by vmr7_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: vmr7.c:518
static void vmr_get_default_rect(struct video_window *iface, RECT *rect)
Definition: vmr7.c:510

Definition at line 524 of file vmr7.c.

Referenced by vmr7_create().

◆ windowless_control_vtbl

const IVMRWindowlessControlVtbl windowless_control_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI windowless_control_GetBorderColor(IVMRWindowlessControl *iface, COLORREF *color)
Definition: vmr7.c:1160
static HRESULT WINAPI windowless_control_GetMaxIdealVideoSize(IVMRWindowlessControl *iface, LONG *width, LONG *height)
Definition: vmr7.c:1051
static HRESULT WINAPI windowless_control_SetVideoClippingWindow(IVMRWindowlessControl *iface, HWND window)
Definition: vmr7.c:1105
static ULONG WINAPI windowless_control_AddRef(IVMRWindowlessControl *iface)
Definition: vmr7.c:1008
static HRESULT WINAPI windowless_control_RepaintVideo(IVMRWindowlessControl *iface, HWND window, HDC dc)
Definition: vmr7.c:1135
static HRESULT WINAPI windowless_control_SetVideoPosition(IVMRWindowlessControl *iface, const RECT *source, const RECT *dest)
Definition: vmr7.c:1058
static HRESULT WINAPI windowless_control_SetBorderColor(IVMRWindowlessControl *iface, COLORREF color)
Definition: vmr7.c:1154
static HRESULT WINAPI windowless_control_GetMinIdealVideoSize(IVMRWindowlessControl *iface, LONG *width, LONG *height)
Definition: vmr7.c:1044
static HRESULT WINAPI windowless_control_SetAspectRatioMode(IVMRWindowlessControl *iface, DWORD mode)
Definition: vmr7.c:1099
static ULONG WINAPI windowless_control_Release(IVMRWindowlessControl *iface)
Definition: vmr7.c:1015
static HRESULT WINAPI windowless_control_SetColorKey(IVMRWindowlessControl *iface, COLORREF color)
Definition: vmr7.c:1166
static HRESULT WINAPI windowless_control_QueryInterface(IVMRWindowlessControl *iface, REFIID iid, void **out)
Definition: vmr7.c:1001
static HRESULT WINAPI windowless_control_GetNativeVideoSize(IVMRWindowlessControl *iface, LONG *width, LONG *height, LONG *aspect_width, LONG *aspect_height)
Definition: vmr7.c:1022
static HRESULT WINAPI windowless_control_GetAspectRatioMode(IVMRWindowlessControl *iface, DWORD *mode)
Definition: vmr7.c:1093
static HRESULT WINAPI windowless_control_GetVideoPosition(IVMRWindowlessControl *iface, RECT *source, RECT *dest)
Definition: vmr7.c:1077
static HRESULT WINAPI windowless_control_DisplayModeChanged(IVMRWindowlessControl *iface)
Definition: vmr7.c:1142
static HRESULT WINAPI windowless_control_GetCurrentImage(IVMRWindowlessControl *iface, BYTE **image)
Definition: vmr7.c:1148
static HRESULT WINAPI windowless_control_GetColorKey(IVMRWindowlessControl *iface, COLORREF *color)
Definition: vmr7.c:1172

Definition at line 1178 of file vmr7.c.

Referenced by vmr7_create().