Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
e26d4a6f
Commit
e26d4a6f
authored
Nov 06, 2013
by
André Hentschel
Committed by
Alexandre Julliard
Nov 06, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
quartz: Add stubbed IVMRWindowlessControl interface.
parent
d029181d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
220 additions
and
0 deletions
+220
-0
vmr9.c
dlls/quartz/vmr9.c
+220
-0
No files found.
dlls/quartz/vmr9.c
View file @
e26d4a6f
...
...
@@ -55,6 +55,7 @@ struct quartz_vmr
IAMFilterMiscFlags
IAMFilterMiscFlags_iface
;
IVMRFilterConfig
IVMRFilterConfig_iface
;
IVMRFilterConfig9
IVMRFilterConfig9_iface
;
IVMRWindowlessControl
IVMRWindowlessControl_iface
;
IVMRWindowlessControl9
IVMRWindowlessControl9_iface
;
IVMRSurfaceAllocatorNotify9
IVMRSurfaceAllocatorNotify9_iface
;
...
...
@@ -131,6 +132,11 @@ static inline struct quartz_vmr *impl_from_IVMRFilterConfig9(IVMRFilterConfig9 *
return
CONTAINING_RECORD
(
iface
,
struct
quartz_vmr
,
IVMRFilterConfig9_iface
);
}
static
inline
struct
quartz_vmr
*
impl_from_IVMRWindowlessControl
(
IVMRWindowlessControl
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
struct
quartz_vmr
,
IVMRWindowlessControl_iface
);
}
static
inline
struct
quartz_vmr
*
impl_from_IVMRWindowlessControl9
(
IVMRWindowlessControl9
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
struct
quartz_vmr
,
IVMRWindowlessControl9_iface
);
...
...
@@ -735,6 +741,8 @@ static HRESULT WINAPI VMR9Inner_QueryInterface(IUnknown * iface, REFIID riid, LP
*
ppv
=
&
This
->
IVMRFilterConfig_iface
;
else
if
(
IsEqualIID
(
riid
,
&
IID_IVMRFilterConfig9
))
*
ppv
=
&
This
->
IVMRFilterConfig9_iface
;
else
if
(
IsEqualIID
(
riid
,
&
IID_IVMRWindowlessControl
)
&&
This
->
mode
==
(
VMR9Mode
)
VMRMode_Windowless
)
*
ppv
=
&
This
->
IVMRWindowlessControl_iface
;
else
if
(
IsEqualIID
(
riid
,
&
IID_IVMRWindowlessControl9
)
&&
This
->
mode
==
VMR9Mode_Windowless
)
*
ppv
=
&
This
->
IVMRWindowlessControl9_iface
;
else
if
(
IsEqualIID
(
riid
,
&
IID_IVMRSurfaceAllocatorNotify9
)
&&
This
->
mode
==
VMR9Mode_Renderless
)
...
...
@@ -1321,6 +1329,217 @@ static const IVMRFilterConfig9Vtbl VMR9_FilterConfig_Vtbl =
VMR9FilterConfig_GetRenderingMode
};
static
HRESULT
WINAPI
VMR7WindowlessControl_QueryInterface
(
IVMRWindowlessControl
*
iface
,
REFIID
riid
,
LPVOID
*
ppv
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
return
VMR9_QueryInterface
(
&
This
->
renderer
.
filter
.
IBaseFilter_iface
,
riid
,
ppv
);
}
static
ULONG
WINAPI
VMR7WindowlessControl_AddRef
(
IVMRWindowlessControl
*
iface
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
return
VMR9_AddRef
(
&
This
->
renderer
.
filter
.
IBaseFilter_iface
);
}
static
ULONG
WINAPI
VMR7WindowlessControl_Release
(
IVMRWindowlessControl
*
iface
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
return
VMR9_Release
(
&
This
->
renderer
.
filter
.
IBaseFilter_iface
);
}
static
HRESULT
WINAPI
VMR7WindowlessControl_GetNativeVideoSize
(
IVMRWindowlessControl
*
iface
,
LONG
*
width
,
LONG
*
height
,
LONG
*
arwidth
,
LONG
*
arheight
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
TRACE
(
"(%p/%p)->(%p, %p, %p, %p)
\n
"
,
iface
,
This
,
width
,
height
,
arwidth
,
arheight
);
if
(
!
width
||
!
height
||
!
arwidth
||
!
arheight
)
{
ERR
(
"Got no pointer
\n
"
);
return
E_POINTER
;
}
*
width
=
This
->
bmiheader
.
biWidth
;
*
height
=
This
->
bmiheader
.
biHeight
;
*
arwidth
=
This
->
bmiheader
.
biWidth
;
*
arheight
=
This
->
bmiheader
.
biHeight
;
return
S_OK
;
}
static
HRESULT
WINAPI
VMR7WindowlessControl_GetMinIdealVideoSize
(
IVMRWindowlessControl
*
iface
,
LONG
*
width
,
LONG
*
height
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
FIXME
(
"(%p/%p)->(...) stub
\n
"
,
iface
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
VMR7WindowlessControl_GetMaxIdealVideoSize
(
IVMRWindowlessControl
*
iface
,
LONG
*
width
,
LONG
*
height
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
FIXME
(
"(%p/%p)->(...) stub
\n
"
,
iface
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
VMR7WindowlessControl_SetVideoPosition
(
IVMRWindowlessControl
*
iface
,
const
RECT
*
source
,
const
RECT
*
dest
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
TRACE
(
"(%p/%p)->(%p, %p)
\n
"
,
iface
,
This
,
source
,
dest
);
EnterCriticalSection
(
&
This
->
renderer
.
filter
.
csFilter
);
if
(
source
)
This
->
source_rect
=
*
source
;
if
(
dest
)
{
This
->
target_rect
=
*
dest
;
if
(
This
->
baseControlWindow
.
baseWindow
.
hWnd
)
{
FIXME
(
"Output rectangle: starting at %dx%d, up to point %dx%d
\n
"
,
dest
->
left
,
dest
->
top
,
dest
->
right
,
dest
->
bottom
);
SetWindowPos
(
This
->
baseControlWindow
.
baseWindow
.
hWnd
,
NULL
,
dest
->
left
,
dest
->
top
,
dest
->
right
-
dest
->
left
,
dest
->
bottom
-
dest
->
top
,
SWP_NOACTIVATE
|
SWP_NOCOPYBITS
|
SWP_NOOWNERZORDER
|
SWP_NOREDRAW
);
}
}
LeaveCriticalSection
(
&
This
->
renderer
.
filter
.
csFilter
);
return
S_OK
;
}
static
HRESULT
WINAPI
VMR7WindowlessControl_GetVideoPosition
(
IVMRWindowlessControl
*
iface
,
RECT
*
source
,
RECT
*
dest
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
if
(
source
)
*
source
=
This
->
source_rect
;
if
(
dest
)
*
dest
=
This
->
target_rect
;
FIXME
(
"(%p/%p)->(%p/%p) stub
\n
"
,
iface
,
This
,
source
,
dest
);
return
S_OK
;
}
static
HRESULT
WINAPI
VMR7WindowlessControl_GetAspectRatioMode
(
IVMRWindowlessControl
*
iface
,
DWORD
*
mode
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
FIXME
(
"(%p/%p)->(...) stub
\n
"
,
iface
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
VMR7WindowlessControl_SetAspectRatioMode
(
IVMRWindowlessControl
*
iface
,
DWORD
mode
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
FIXME
(
"(%p/%p)->(...) stub
\n
"
,
iface
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
VMR7WindowlessControl_SetVideoClippingWindow
(
IVMRWindowlessControl
*
iface
,
HWND
hwnd
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
FIXME
(
"(%p/%p)->(...) stub
\n
"
,
iface
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
VMR7WindowlessControl_RepaintVideo
(
IVMRWindowlessControl
*
iface
,
HWND
hwnd
,
HDC
hdc
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
FIXME
(
"(%p/%p)->(...) stub
\n
"
,
iface
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
VMR7WindowlessControl_DisplayModeChanged
(
IVMRWindowlessControl
*
iface
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
FIXME
(
"(%p/%p)->(...) stub
\n
"
,
iface
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
VMR7WindowlessControl_GetCurrentImage
(
IVMRWindowlessControl
*
iface
,
BYTE
**
dib
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
FIXME
(
"(%p/%p)->(...) stub
\n
"
,
iface
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
VMR7WindowlessControl_SetBorderColor
(
IVMRWindowlessControl
*
iface
,
COLORREF
color
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
FIXME
(
"(%p/%p)->(...) stub
\n
"
,
iface
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
VMR7WindowlessControl_GetBorderColor
(
IVMRWindowlessControl
*
iface
,
COLORREF
*
color
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
FIXME
(
"(%p/%p)->(...) stub
\n
"
,
iface
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
VMR7WindowlessControl_SetColorKey
(
IVMRWindowlessControl
*
iface
,
COLORREF
color
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
FIXME
(
"(%p/%p)->(...) stub
\n
"
,
iface
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
VMR7WindowlessControl_GetColorKey
(
IVMRWindowlessControl
*
iface
,
COLORREF
*
color
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl
(
iface
);
FIXME
(
"(%p/%p)->(...) stub
\n
"
,
iface
,
This
);
return
E_NOTIMPL
;
}
static
const
IVMRWindowlessControlVtbl
VMR7_WindowlessControl_Vtbl
=
{
VMR7WindowlessControl_QueryInterface
,
VMR7WindowlessControl_AddRef
,
VMR7WindowlessControl_Release
,
VMR7WindowlessControl_GetNativeVideoSize
,
VMR7WindowlessControl_GetMinIdealVideoSize
,
VMR7WindowlessControl_GetMaxIdealVideoSize
,
VMR7WindowlessControl_SetVideoPosition
,
VMR7WindowlessControl_GetVideoPosition
,
VMR7WindowlessControl_GetAspectRatioMode
,
VMR7WindowlessControl_SetAspectRatioMode
,
VMR7WindowlessControl_SetVideoClippingWindow
,
VMR7WindowlessControl_RepaintVideo
,
VMR7WindowlessControl_DisplayModeChanged
,
VMR7WindowlessControl_GetCurrentImage
,
VMR7WindowlessControl_SetBorderColor
,
VMR7WindowlessControl_GetBorderColor
,
VMR7WindowlessControl_SetColorKey
,
VMR7WindowlessControl_GetColorKey
};
static
HRESULT
WINAPI
VMR9WindowlessControl_QueryInterface
(
IVMRWindowlessControl9
*
iface
,
REFIID
riid
,
LPVOID
*
ppv
)
{
struct
quartz_vmr
*
This
=
impl_from_IVMRWindowlessControl9
(
iface
);
...
...
@@ -1720,6 +1939,7 @@ static HRESULT vmr_create(IUnknown *outer_unk, LPVOID *ppv, const CLSID *clsid)
pVMR
->
hWndClippingWindow
=
NULL
;
pVMR
->
IVMRFilterConfig_iface
.
lpVtbl
=
&
VMR7_FilterConfig_Vtbl
;
pVMR
->
IVMRFilterConfig9_iface
.
lpVtbl
=
&
VMR9_FilterConfig_Vtbl
;
pVMR
->
IVMRWindowlessControl_iface
.
lpVtbl
=
&
VMR7_WindowlessControl_Vtbl
;
pVMR
->
IVMRWindowlessControl9_iface
.
lpVtbl
=
&
VMR9_WindowlessControl_Vtbl
;
pVMR
->
IVMRSurfaceAllocatorNotify9_iface
.
lpVtbl
=
&
IVMRSurfaceAllocatorNotify9_Vtbl
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment