45 if (
IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo))
128static void copy_plane(
BYTE **dstp,
unsigned int dst_pitch,
unsigned int dst_height,
129 const BYTE **srcp,
unsigned int src_pitch,
int src_height)
131 size_t copy_size =
min(src_pitch, dst_pitch);
138 TRACE(
"Inverting image.\n");
140 src_height = -src_height;
141 src += src_height * src_pitch;
143 for (
i = 0;
i < src_height; ++
i)
152 for (
i = 0;
i < src_height; ++
i)
160 *srcp += src_pitch * src_height;
161 *dstp += dst_pitch * dst_height;
167 unsigned int data_size,
width,
depth, src_pitch;
180 ERR(
"No presenter.\n");
189 if (IMediaSample_IsDiscontinuity(
sample) ==
S_OK)
200 ERR(
"Failed to get pointer to sample data, hr %#lx.\n",
hr);
203 data_size = IMediaSample_GetActualDataLength(
sample);
204 TRACE(
"Sample size %u.\n", data_size);
212 src_pitch = (
width + 3) & ~3;
217 info.rtStart = start_time;
218 info.rtEnd = end_time;
223 hr = IVMRSurfaceAllocator_PrepareSurface(
filter->allocator,
filter->cookie,
info.lpSurf, 0);
225 ERR(
"PrepareSurface() returned %#lx.\n",
hr);
227 surface_desc.
dwSize =
sizeof(surface_desc);
231 ERR(
"Failed to lock surface, hr %#lx.\n",
hr);
237 FIXME(
"src surface (%ux%u) larger than rendering surface (%lux%lu).\n",
width,
height,
265 else if (surface_desc.
lPitch != src_pitch)
270 TRACE(
"Source pitch %u does not match dest pitch %lu; copying manually.\n",
271 src_pitch, surface_desc.
lPitch);
281 IDirectDrawSurface7_Unlock(
info.lpSurf,
NULL);
283 return IVMRImagePresenter_PresentImage(
filter->presenter,
filter->cookie, &
info);
288 if (!
IsEqualIID(&mt->majortype, &MEDIATYPE_Video) || !mt->pbFormat)
291 if (!
IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo)
292 && !
IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo2))
304 if (
FAILED(
hr = IVMRSurfaceAllocator_AllocateSurface(
filter->allocator,
307 WARN(
"Failed to allocate surface, hr %#lx.\n",
hr);
313 IVMRSurfaceAllocator_QueryInterface(
filter->allocator, &IID_IVMRWindowlessControl, (
void **)&
control);
314 IVMRWindowlessControl_SetVideoClippingWindow(
control,
316 IVMRWindowlessControl_Release(
control);
322 filter->surface_index = 0;
329 if (
FAILED(
hr = IDirectDrawSurface7_GetAttachedSurface(prev, &caps, &
filter->surfaces[
i])))
331 ERR(
"Failed to get surface %lu, hr %#lx.\n",
i,
hr);
333 IDirectDrawSurface7_Release(
filter->surfaces[
i]);
334 IVMRSurfaceAllocator_FreeSurface(
filter->allocator,
filter->cookie);
349 TRACE(
"Initializing in mode %u, our window %p, clipping window %p.\n",
356 info.lpHdr = &bitmap_header;
378 IVMRImagePresenter_StartPresenting(
filter->presenter,
filter->cookie);
386 IVMRImagePresenter_StopPresenting(
filter->presenter,
filter->cookie);
418 IDirectDrawSurface7_Release(
filter->surfaces[
i]);
421 IVMRSurfaceAllocator_FreeSurface(
filter->allocator,
filter->cookie);
422 filter->surface_count = 0;
441 if (
filter->surface_count)
442 IVMRSurfaceAllocator_FreeSurface(
filter->allocator,
filter->cookie);
443 IVMRSurfaceAllocator_Release(
filter->allocator);
446 IVMRImagePresenter_Release(
filter->presenter);
448 filter->surface_count = 0;
459 *
out = &
filter->window.IVideoWindow_iface;
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;
471 *
out = &
filter->IVMRSurfaceAllocatorNotify_iface;
473 *
out = &
filter->IVMRWindowlessControl_iface;
486 *
out = &
filter->IAMVideoAccelerator_iface;
585 return IUnknown_QueryInterface(
filter->renderer.
filter.outer_unk, iid,
out);
592 return IUnknown_AddRef(
filter->renderer.
filter.outer_unk);
599 return IUnknown_Release(
filter->renderer.
filter.outer_unk);
605 FIXME(
"iface %p, random %p, certificate %p, size %p, stub!\n", iface,
random, certificate,
size);
619 FIXME(
"iface %p, cmd %p, stub!\n", iface,
cmd);
626 FIXME(
"iface %p, input %p, output %p, stub!\n", iface,
input, output);
645 return IUnknown_QueryInterface(
filter->renderer.
filter.outer_unk, iid,
out);
652 return IUnknown_AddRef(
filter->renderer.
filter.outer_unk);
659 return IUnknown_Release(
filter->renderer.
filter.outer_unk);
679 return IUnknown_QueryInterface(
filter->renderer.
filter.outer_unk, iid,
out);
686 return IUnknown_AddRef(
filter->renderer.
filter.outer_unk);
693 return IUnknown_Release(
filter->renderer.
filter.outer_unk);
699 FIXME(
"iface %p, compositor %p, stub!\n", iface, compositor);
707 FIXME(
"iface %p, count %lu, stub!\n", iface,
count);
711 WARN(
"Application requested zero streams; returning E_INVALIDARG.\n");
720 WARN(
"Stream count is already set; returning VFW_E_WRONG_STATE.\n");
732 FIXME(
"iface %p, count %p, stub!\n", iface,
count);
738 FIXME(
"iface %p, flags %#lx, stub!\n", iface,
flags);
744 FIXME(
"iface %p, flags %p, stub!\n", iface,
flags);
770 ERR(
"Failed to create default presenter, hr %#lx.\n",
hr);
858 info->guid.pGUID = &
info->guid.GUID;
859 info->guid.GUID.Data4[7] =
args->count;
865 info->hMon = monitor;
871 info->szDescription[0] = 0;
882 info->hMon = monitor;
888 info->szDescription[0] = 0;
889 info->dwVendorId = 0;
890 info->dwDeviceId = 0;
891 info->dwSubSysId = 0;
892 info->dwRevision = 0;
906 return IUnknown_QueryInterface(
filter->renderer.
filter.outer_unk, iid,
out);
913 return IUnknown_AddRef(
filter->renderer.
filter.outer_unk);
920 return IUnknown_Release(
filter->renderer.
filter.outer_unk);
925 FIXME(
"iface %p, guid %p, stub!\n", iface,
guid);
935 FIXME(
"iface %p, guid %p, stub!\n", iface,
guid);
946 FIXME(
"iface %p, guid %p, stub!\n", iface,
guid);
956 FIXME(
"iface %p, guid %p, stub!\n", iface,
guid);
1005 return IUnknown_QueryInterface(
filter->renderer.
filter.outer_unk, iid,
out);
1012 return IUnknown_AddRef(
filter->renderer.
filter.outer_unk);
1019 return IUnknown_Release(
filter->renderer.
filter.outer_unk);
1028 TRACE(
"filter %p, width %p, height %p, aspect_width %p, aspect_height %p.\n",
1037 *aspect_width = bitmap_header->
biWidth;
1039 *aspect_height = bitmap_header->
biHeight;
1095 FIXME(
"iface %p, mode %p, stub!\n", iface,
mode);
1101 FIXME(
"iface %p, mode %#lx, stub!\n", iface,
mode);
1114 WARN(
"Invalid window %p, returning E_INVALIDARG.\n",
window);
1120 if (
filter->renderer.sink.pin.peer)
1123 WARN(
"Attempt to set the clipping window while connected; returning VFW_E_WRONG_STATE.\n");
1129 hr = IVMRFilterConfig_SetNumberOfStreams(&
filter->IVMRFilterConfig_iface, 4);
1138 FIXME(
"iface %p, window %p, dc %p, stub!\n", iface,
window,
dc);
1144 FIXME(
"iface %p, stub!\n", iface);
1150 FIXME(
"iface %p, image %p, stub!\n", iface,
image);
1156 FIXME(
"iface %p, color %#08lx, stub!\n", iface,
color);
1162 FIXME(
"iface %p, color %p, stub!\n", iface,
color);
1168 FIXME(
"iface %p, color %#08lx, stub!\n", iface,
color);
1174 FIXME(
"iface %p, color %p, stub!\n", iface,
color);
1205 return IUnknown_QueryInterface(
filter->renderer.
filter.outer_unk, iid,
out);
1212 return IUnknown_AddRef(
filter->renderer.
filter.outer_unk);
1219 return IUnknown_Release(
filter->renderer.
filter.outer_unk);
1234 if (
filter->renderer.sink.pin.peer)
1237 WARN(
"Attempt to set allocator while connected; returning VFW_E_WRONG_STATE.\n");
1249 IVMRImagePresenter_Release(
filter->presenter);
1250 IVMRSurfaceAllocator_Release(
filter->allocator);
1263 FIXME(
"iface %p, device %p, monitor %p, stub!\n", iface,
device, monitor);
1270 FIXME(
"iface %p, device %p, monitor %p, stub!\n", iface,
device, monitor);
1276 FIXME(
"iface %p, stub!\n", iface);
1283 FIXME(
"iface %p, code %#lx, param1 %#Ix, param2 %#Ix, stub!\n", iface,
code, param1, param2);
1290 FIXME(
"iface %p, color %#08lx, stub!\n", iface,
color);
1316 return IPin_QueryInterface(&
filter->renderer.sink.pin.IPin_iface, iid,
out);
1323 return IPin_AddRef(&
filter->renderer.sink.pin.IPin_iface);
1330 return IPin_Release(&
filter->renderer.sink.pin.IPin_iface);
1336 FIXME(
"iface %p, count %p, accelerators %p, stub!\n", iface,
count, accelerators);
1343 FIXME(
"iface %p, accelerator %s, count %p, formats %p, stub!\n",
1351 FIXME(
"iface %p, accelerator %s, format_info %p, mem_info %p, stub!\n",
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);
1368 FIXME(
"iface %p, count %p, infos %p, stub!\n", iface,
count, infos);
1374 FIXME(
"iface %p, info %p, stub!\n", iface,
info);
1380 FIXME(
"iface %p, info %p, stub!\n", iface,
info);
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);
1395 FIXME(
"iface %p, type_index %lu, buffer_index %lu, stub!\n", iface, type_index, buffer_index);
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",
1412 FIXME(
"iface %p, type_index %lu, buffer_index %lu, flags %#lx, stub!\n",
1413 iface, type_index, buffer_index,
flags);
1452 return IPin_QueryInterface(&
filter->renderer.sink.pin.IPin_iface, iid,
out);
1459 return IPin_AddRef(&
filter->renderer.sink.pin.IPin_iface);
1466 return IPin_Release(&
filter->renderer.sink.pin.IPin_iface);
1483 FIXME(
"iface %p, key %p, stub!\n", iface,
key);
1489 FIXME(
"iface %p, key %p, stub!\n", iface,
key);
1495 FIXME(
"iface %p, key %p, stub!\n", iface,
key);
1505 if (!
filter->window.hwnd)
1526 FIXME(
"iface %p, sink %p, flags %#lx, stub!\n", iface,
sink,
flags);
1532 FIXME(
"iface %p, stub!\n", iface);
1558 if (!(
object =
calloc(1,
sizeof(*
object))))
1586 TRACE(
"Created VMR %p.\n",
object);
1587 *
out = &
object->renderer.filter.IUnknown_inner;
static const char * wine_dbgstr_rect(const RECT *prc)
@ AM_FILTER_MISC_FLAGS_IS_RENDERER
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static const struct pixel_format_desc formats[]
static struct vmr7 * impl_from_IAMVideoAccelerator(IAMVideoAccelerator *iface)
static HRESULT WINAPI windowless_control_GetBorderColor(IVMRWindowlessControl *iface, COLORREF *color)
static ULONG WINAPI monitor_config_Release(IVMRMonitorConfig *iface)
static ULONG WINAPI video_accelerator_AddRef(IAMVideoAccelerator *iface)
static HRESULT WINAPI filter_config_SetRenderingMode(IVMRFilterConfig *iface, DWORD mode)
static ULONG WINAPI certified_output_protection_Release(IAMCertifiedOutputProtection *iface)
static HRESULT allocate_surfaces(struct vmr7 *filter, const AM_MEDIA_TYPE *mt)
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 overlay_GetColorKey(IOverlay *iface, COLORKEY *key)
static HRESULT WINAPI video_accelerator_GetBuffer(IAMVideoAccelerator *iface, DWORD type_index, DWORD buffer_index, BOOL read_only, void **buffer, LONG *stride)
static HRESULT WINAPI monitor_config_SetDefaultMonitor(IVMRMonitorConfig *iface, const VMRGUID *guid)
static HRESULT vmr_query_accept(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)
static HRESULT WINAPI filter_config_SetImageCompositor(IVMRFilterConfig *iface, IVMRImageCompositor *compositor)
static const BITMAPINFOHEADER * get_bitmap_header(const AM_MEDIA_TYPE *mt)
static HRESULT WINAPI surface_allocator_notify_AdviseSurfaceAllocator(IVMRSurfaceAllocatorNotify *iface, DWORD_PTR cookie, IVMRSurfaceAllocator *allocator)
static HRESULT WINAPI video_accelerator_QueryRenderStatus(IAMVideoAccelerator *iface, DWORD type_index, DWORD buffer_index, DWORD flags)
static HRESULT WINAPI surface_allocator_notify_SetDDrawDevice(IVMRSurfaceAllocatorNotify *iface, IDirectDraw7 *device, HMONITOR monitor)
static void vmr_stop_stream(struct strmbase_renderer *iface)
static HRESULT WINAPI windowless_control_GetMaxIdealVideoSize(IVMRWindowlessControl *iface, LONG *width, LONG *height)
static HRESULT vmr_render(struct strmbase_renderer *iface, IMediaSample *sample)
static const IAMVideoAcceleratorVtbl video_accelerator_vtbl
static void vmr_init_stream(struct strmbase_renderer *iface)
static ULONG WINAPI filter_config_Release(IVMRFilterConfig *iface)
static HRESULT WINAPI video_accelerator_GetUncompFormatsSupported(IAMVideoAccelerator *iface, const GUID *accelerator, DWORD *count, DDPIXELFORMAT *formats)
static HRESULT WINAPI filter_config_GetNumberOfStreams(IVMRFilterConfig *iface, DWORD *count)
static HRESULT WINAPI windowless_control_SetVideoClippingWindow(IVMRWindowlessControl *iface, HWND window)
static ULONG WINAPI windowless_control_AddRef(IVMRWindowlessControl *iface)
static HRESULT WINAPI windowless_control_RepaintVideo(IVMRWindowlessControl *iface, HWND window, HDC dc)
static HRESULT WINAPI filter_config_SetNumberOfStreams(IVMRFilterConfig *iface, DWORD count)
static ULONG WINAPI misc_flags_Release(IAMFilterMiscFlags *iface)
static HRESULT WINAPI monitor_config_GetAvailableMonitors(IVMRMonitorConfig *iface, VMRMONITORINFO *info, DWORD capacity, DWORD *count)
static ULONG WINAPI monitor_config_AddRef(IVMRMonitorConfig *iface)
static const struct video_window_ops window_ops
static struct vmr7 * impl_from_IBaseFilter(IBaseFilter *iface)
static HRESULT WINAPI surface_allocator_notify_RestoreDDrawSurfaces(IVMRSurfaceAllocatorNotify *iface)
static HRESULT WINAPI filter_config_QueryInterface(IVMRFilterConfig *iface, REFIID iid, void **out)
static struct vmr7 * impl_from_IVMRMonitorConfig(IVMRMonitorConfig *iface)
static const struct strmbase_renderer_ops renderer_ops
static ULONG WINAPI misc_flags_AddRef(IAMFilterMiscFlags *iface)
static const IAMFilterMiscFlagsVtbl misc_flags_vtbl
static const IAMCertifiedOutputProtectionVtbl certified_output_protection_vtbl
static HRESULT WINAPI video_accelerator_DisplayFrame(IAMVideoAccelerator *iface, DWORD index, IMediaSample *sample)
static HRESULT WINAPI overlay_GetWindowHandle(IOverlay *iface, HWND *window)
static HRESULT WINAPI certified_output_protection_KeyExchange(IAMCertifiedOutputProtection *iface, GUID *random, BYTE **certificate, DWORD *size)
static struct vmr7 * impl_from_IVMRSurfaceAllocatorNotify(IVMRSurfaceAllocatorNotify *iface)
static HRESULT WINAPI surface_allocator_notify_ChangeDDrawDevice(IVMRSurfaceAllocatorNotify *iface, IDirectDraw7 *device, HMONITOR monitor)
static HRESULT WINAPI filter_config_SetRenderingPrefs(IVMRFilterConfig *iface, DWORD flags)
static HRESULT WINAPI windowless_control_SetVideoPosition(IVMRWindowlessControl *iface, const RECT *source, const RECT *dest)
static HRESULT vmr_query_interface(struct strmbase_renderer *iface, REFIID iid, void **out)
static HRESULT WINAPI windowless_control_SetBorderColor(IVMRWindowlessControl *iface, COLORREF color)
static HRESULT WINAPI certified_output_protection_ProtectionCommand(IAMCertifiedOutputProtection *iface, const AMCOPPCommand *cmd)
static HRESULT WINAPI surface_allocator_notify_SetBorderColor(IVMRSurfaceAllocatorNotify *iface, COLORREF color)
static HRESULT WINAPI windowless_control_GetMinIdealVideoSize(IVMRWindowlessControl *iface, LONG *width, LONG *height)
static void vmr_start_stream(struct strmbase_renderer *iface)
static HRESULT WINAPI windowless_control_SetAspectRatioMode(IVMRWindowlessControl *iface, DWORD mode)
static const IVMRMonitorConfigVtbl monitor_config_vtbl
static const IOverlayVtbl overlay_vtbl
static void vmr_disconnect(struct strmbase_renderer *iface)
static ULONG WINAPI overlay_AddRef(IOverlay *iface)
static HRESULT WINAPI overlay_QueryInterface(IOverlay *iface, REFIID iid, void **out)
static HRESULT WINAPI surface_allocator_notify_NotifyEvent(IVMRSurfaceAllocatorNotify *iface, LONG code, LONG_PTR param1, LONG_PTR param2)
static HRESULT vmr_pin_query_interface(struct strmbase_renderer *iface, REFIID iid, void **out)
static HRESULT WINAPI certified_output_protection_ProtectionStatus(IAMCertifiedOutputProtection *iface, const AMCOPPStatusInput *input, AMCOPPStatusOutput *output)
static HRESULT WINAPI video_accelerator_ReleaseBuffer(IAMVideoAccelerator *iface, DWORD type_index, DWORD buffer_index)
static ULONG WINAPI surface_allocator_notify_Release(IVMRSurfaceAllocatorNotify *iface)
static const IVMRWindowlessControlVtbl windowless_control_vtbl
static struct vmr7 * impl_from_IAMFilterMiscFlags(IAMFilterMiscFlags *iface)
static ULONG WINAPI windowless_control_Release(IVMRWindowlessControl *iface)
static ULONG WINAPI certified_output_protection_AddRef(IAMCertifiedOutputProtection *iface)
static HRESULT WINAPI video_accelerator_GetInternalCompBufferInfo(IAMVideoAccelerator *iface, DWORD *count, AMVACompBufferInfo *infos)
static HRESULT WINAPI windowless_control_SetColorKey(IVMRWindowlessControl *iface, COLORREF color)
static ULONG WINAPI surface_allocator_notify_AddRef(IVMRSurfaceAllocatorNotify *iface)
static HRESULT WINAPI windowless_control_QueryInterface(IVMRWindowlessControl *iface, REFIID iid, void **out)
static HRESULT WINAPI filter_config_GetRenderingPrefs(IVMRFilterConfig *iface, DWORD *flags)
HRESULT vmr7_create(IUnknown *outer, IUnknown **out)
static HRESULT WINAPI certified_output_protection_SessionSequenceStart(IAMCertifiedOutputProtection *iface, AMCOPPSignature *signature)
static const IVideoWindowVtbl IVideoWindow_VTable
static HRESULT vmr_connect(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)
static HRESULT WINAPI overlay_SetColorKey(IOverlay *iface, COLORKEY *key)
static HRESULT WINAPI monitor_config_GetDefaultMonitor(IVMRMonitorConfig *iface, VMRGUID *guid)
static HRESULT WINAPI overlay_SetPalette(IOverlay *iface, DWORD count, PALETTEENTRY *palette)
static HRESULT WINAPI windowless_control_GetNativeVideoSize(IVMRWindowlessControl *iface, LONG *width, LONG *height, LONG *aspect_width, LONG *aspect_height)
static void vmr_destroy(struct strmbase_renderer *iface)
static HRESULT WINAPI windowless_control_GetAspectRatioMode(IVMRWindowlessControl *iface, DWORD *mode)
static const IVMRSurfaceAllocatorNotifyVtbl surface_allocator_notify_vtbl
static HRESULT WINAPI overlay_GetVideoPosition(IOverlay *iface, RECT *source, RECT *dest)
static HRESULT WINAPI windowless_control_GetVideoPosition(IVMRWindowlessControl *iface, RECT *source, RECT *dest)
static HRESULT WINAPI monitor_config_SetMonitor(IVMRMonitorConfig *iface, const VMRGUID *guid)
static struct vmr7 * impl_from_IVMRWindowlessControl(IVMRWindowlessControl *iface)
static const IVMRFilterConfigVtbl filter_config_vtbl
static HRESULT WINAPI surface_allocator_notify_QueryInterface(IVMRSurfaceAllocatorNotify *iface, REFIID iid, void **out)
static HRESULT WINAPI video_accelerator_EndFrame(IAMVideoAccelerator *iface, const AMVAEndFrameInfo *info)
static struct vmr7 * impl_from_IVMRFilterConfig(IVMRFilterConfig *iface)
static HRESULT WINAPI windowless_control_DisplayModeChanged(IVMRWindowlessControl *iface)
static HRESULT initialize_device(struct vmr7 *filter, VMRALLOCATIONINFO *info, DWORD count)
static HRESULT WINAPI windowless_control_GetCurrentImage(IVMRWindowlessControl *iface, BYTE **image)
static HRESULT WINAPI video_accelerator_BeginFrame(IAMVideoAccelerator *iface, const AMVABeginFrameInfo *info)
static ULONG WINAPI misc_flags_GetMiscFlags(IAMFilterMiscFlags *iface)
static HRESULT WINAPI video_accelerator_QueryInterface(IAMVideoAccelerator *iface, REFIID iid, void **out)
static HRESULT WINAPI video_accelerator_GetInternalMemInfo(IAMVideoAccelerator *iface, const GUID *accelerator, const AMVAUncompDataInfo *format_info, AMVAInternalMemInfo *mem_info)
static HRESULT WINAPI overlay_GetDefaultColorKey(IOverlay *iface, COLORKEY *key)
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 WINAPI monitor_config_QueryInterface(IVMRMonitorConfig *iface, REFIID iid, void **out)
static HRESULT WINAPI overlay_Advise(IOverlay *iface, IOverlayNotify *sink, DWORD flags)
static HRESULT WINAPI overlay_Unadvise(IOverlay *iface)
static struct vmr7 * impl_from_IOverlay(IOverlay *iface)
static HRESULT vmr_get_current_image(struct video_window *iface, LONG *size, LONG *image)
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 overlay_GetClipList(IOverlay *iface, RECT *source, RECT *dest, RGNDATA **region)
static void vmr_get_default_rect(struct video_window *iface, RECT *rect)
static HRESULT WINAPI misc_flags_QueryInterface(IAMFilterMiscFlags *iface, REFIID iid, void **out)
static ULONG WINAPI video_accelerator_Release(IAMVideoAccelerator *iface)
static HRESULT WINAPI certified_output_protection_QueryInterface(IAMCertifiedOutputProtection *iface, REFIID iid, void **out)
static HRESULT WINAPI windowless_control_GetColorKey(IVMRWindowlessControl *iface, COLORREF *color)
static HRESULT WINAPI video_accelerator_GetVideoAcceleratorGUIDs(IAMVideoAccelerator *iface, DWORD *count, GUID *accelerators)
static HRESULT WINAPI monitor_config_GetMonitor(IVMRMonitorConfig *iface, VMRGUID *guid)
static struct vmr7 * impl_from_IAMCertifiedOutputProtection(IAMCertifiedOutputProtection *iface)
static ULONG WINAPI overlay_Release(IOverlay *iface)
static HRESULT WINAPI overlay_GetPalette(IOverlay *iface, DWORD *count, PALETTEENTRY **palette)
static void deallocate_surfaces(struct vmr7 *filter)
static BOOL CALLBACK get_available_monitors_proc(HMONITOR monitor, HDC dc, RECT *rect, LPARAM ctx)
static const BITMAPINFOHEADER * get_filter_bitmap_header(const struct vmr7 *filter)
static HRESULT WINAPI filter_config_GetRenderingMode(IVMRFilterConfig *iface, DWORD *mode)
static struct vmr7 * impl_from_video_window(struct video_window *iface)
static ULONG WINAPI filter_config_AddRef(IVMRFilterConfig *iface)
GLint GLint GLsizei GLsizei GLsizei depth
GLuint GLuint GLsizei count
GLint GLint GLsizei GLsizei height
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei width
GLsizei GLenum GLboolean sink
GLenum GLenum GLenum input
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
#define memcpy(s1, s2, n)
#define mmioFOURCC(c0, c1, c2, c3)
static IHTMLWindow2 * window
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK ULONG PVOID ULONG PVOID ULONG out_size
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK ULONG PVOID ULONG in_size
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
DWORD IDirectDrawSurface7
BOOL WINAPI IsWindow(_In_opt_ HWND)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
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)
BOOL WINAPI AdjustWindowRectEx(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL, _In_ DWORD)
BOOL WINAPI EnumDisplayMonitors(_In_opt_ HDC, _In_opt_ LPCRECT, _In_ MONITORENUMPROC, _In_ LPARAM)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI GetMonitorInfoW(_In_ HMONITOR, _Inout_ LPMONITORINFO)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
ULONG WINAPI BaseControlWindowImpl_AddRef(IVideoWindow *iface)
ULONG WINAPI BaseControlWindowImpl_Release(IVideoWindow *iface)
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)
HRESULT WINAPI BaseControlWindowImpl_HideCursor(IVideoWindow *iface, LONG HideCursor)
HRESULT WINAPI BaseControlWindowImpl_put_Visible(IVideoWindow *iface, LONG Visible)
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfo(IVideoWindow *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
HRESULT WINAPI BaseControlWindowImpl_get_FullScreenMode(IVideoWindow *iface, LONG *FullScreenMode)
HRESULT WINAPI BaseControlWindowImpl_put_WindowState(IVideoWindow *iface, LONG WindowState)
HRESULT WINAPI BaseControlWindowImpl_get_Top(IVideoWindow *iface, LONG *pTop)
HRESULT WINAPI BaseControlWindowImpl_put_Height(IVideoWindow *iface, LONG Height)
HRESULT WINAPI BaseControlWindowImpl_get_Height(IVideoWindow *iface, LONG *pHeight)
HRESULT video_window_create_window(struct video_window *window)
HRESULT WINAPI BaseControlWindowImpl_get_Width(IVideoWindow *iface, LONG *pWidth)
HRESULT WINAPI BaseControlWindowImpl_put_AutoShow(IVideoWindow *iface, LONG AutoShow)
HRESULT WINAPI BaseControlWindowImpl_Invoke(IVideoWindow *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExepInfo, UINT *puArgErr)
HRESULT WINAPI BaseControlWindowImpl_QueryInterface(IVideoWindow *iface, REFIID iid, void **out)
HRESULT WINAPI BaseControlWindowImpl_get_Caption(IVideoWindow *iface, BSTR *strCaption)
HRESULT WINAPI BaseControlWindowImpl_put_Top(IVideoWindow *iface, LONG Top)
HRESULT WINAPI BaseControlWindowImpl_put_Owner(IVideoWindow *iface, OAHWND Owner)
HRESULT WINAPI BaseControlWindowImpl_get_WindowStyle(IVideoWindow *iface, LONG *WindowStyle)
HRESULT WINAPI BaseControlWindowImpl_GetWindowPosition(IVideoWindow *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight)
HRESULT WINAPI BaseControlWindowImpl_get_WindowState(IVideoWindow *iface, LONG *WindowState)
HRESULT WINAPI BaseControlWindowImpl_GetMinIdealImageSize(IVideoWindow *iface, LONG *pWidth, LONG *pHeight)
HRESULT WINAPI BaseControlWindowImpl_put_Width(IVideoWindow *iface, LONG Width)
HRESULT WINAPI BaseControlWindowImpl_get_Left(IVideoWindow *iface, LONG *pLeft)
HRESULT WINAPI BaseControlWindowImpl_GetIDsOfNames(IVideoWindow *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
HRESULT WINAPI BaseControlWindowImpl_GetMaxIdealImageSize(IVideoWindow *iface, LONG *pWidth, LONG *pHeight)
HRESULT WINAPI BaseControlWindowImpl_get_WindowStyleEx(IVideoWindow *iface, LONG *WindowStyleEx)
HRESULT WINAPI BaseControlWindowImpl_put_Left(IVideoWindow *iface, LONG Left)
HRESULT WINAPI BaseControlWindowImpl_SetWindowPosition(IVideoWindow *iface, LONG Left, LONG Top, LONG Width, LONG Height)
HRESULT WINAPI BaseControlWindowImpl_put_FullScreenMode(IVideoWindow *iface, LONG FullScreenMode)
HRESULT WINAPI BaseControlWindowImpl_put_BorderColor(IVideoWindow *iface, LONG Color)
HRESULT WINAPI BaseControlWindowImpl_get_Visible(IVideoWindow *iface, LONG *pVisible)
HRESULT WINAPI BaseControlWindowImpl_get_BackgroundPalette(IVideoWindow *iface, LONG *pBackgroundPalette)
HRESULT WINAPI BaseControlWindowImpl_get_MessageDrain(IVideoWindow *iface, OAHWND *Drain)
HRESULT WINAPI BaseControlWindowImpl_put_MessageDrain(IVideoWindow *iface, OAHWND Drain)
HRESULT WINAPI BaseControlWindowImpl_SetWindowForeground(IVideoWindow *iface, LONG Focus)
void video_window_cleanup(struct video_window *window)
HRESULT WINAPI BaseControlWindowImpl_get_AutoShow(IVideoWindow *iface, LONG *AutoShow)
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfoCount(IVideoWindow *iface, UINT *pctinfo)
HRESULT WINAPI BaseControlWindowImpl_put_WindowStyle(IVideoWindow *iface, LONG WindowStyle)
HRESULT WINAPI BaseControlWindowImpl_get_Owner(IVideoWindow *iface, OAHWND *Owner)
HRESULT WINAPI BaseControlWindowImpl_GetRestorePosition(IVideoWindow *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight)
HRESULT WINAPI BaseControlWindowImpl_NotifyOwnerMessage(IVideoWindow *iface, OAHWND hwnd, LONG uMsg, LONG_PTR wParam, LONG_PTR lParam)
HRESULT vmr7_presenter_create(IUnknown *outer, IUnknown **out)
HRESULT WINAPI BaseControlWindowImpl_put_BackgroundPalette(IVideoWindow *iface, LONG BackgroundPalette)
HRESULT WINAPI BaseControlWindowImpl_IsCursorHidden(IVideoWindow *iface, LONG *CursorHidden)
HRESULT WINAPI BaseControlWindowImpl_get_BorderColor(IVideoWindow *iface, LONG *Color)
HRESULT WINAPI BaseControlWindowImpl_put_Caption(IVideoWindow *iface, BSTR strCaption)
HRESULT WINAPI BaseControlWindowImpl_put_WindowStyleEx(IVideoWindow *iface, LONG WindowStyleEx)
#define DDLOCK_DISCARDCONTENTS
void strmbase_renderer_init(struct strmbase_renderer *filter, IUnknown *outer, const CLSID *clsid, const WCHAR *sink_name, const struct strmbase_renderer_ops *ops)
void strmbase_renderer_cleanup(struct strmbase_renderer *filter)
struct strmbase_filter filter
struct video_window window
IVMRMonitorConfig IVMRMonitorConfig_iface
IAMCertifiedOutputProtection IAMCertifiedOutputProtection_iface
VMR9AspectRatioMode aspect_mode
IVMRWindowlessControl IVMRWindowlessControl_iface
IVMRSurfaceAllocator * allocator
IVMRFilterConfig IVMRFilterConfig_iface
IAMVideoAccelerator IAMVideoAccelerator_iface
IVMRSurfaceAllocatorNotify IVMRSurfaceAllocatorNotify_iface
IDirectDrawSurface7 ** surfaces
struct strmbase_renderer renderer
IAMFilterMiscFlags IAMFilterMiscFlags_iface
IVMRImagePresenter * presenter
#define CONTAINING_RECORD(address, type, field)
#define VFW_E_WRONG_STATE
@ VMR9Sample_Discontinuity
@ VMR9Sample_SrcDstRectsValid
enum _VMR9AspectRatioMode VMR9AspectRatioMode
@ MixerPref9_NoDecimation
@ MixerPref9_RenderTargetRGB
@ MixerPref9_BiLinearFiltering
@ MixerPref9_ARAdjustXorY
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
size_t const buffer_count