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
4ae6f928
Commit
4ae6f928
authored
Mar 28, 2012
by
Aric Stewart
Committed by
Alexandre Julliard
Mar 29, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
strmbase: Implement BaseControlVideo.
parent
73efbff4
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
560 additions
and
0 deletions
+560
-0
Makefile.in
dlls/strmbase/Makefile.in
+1
-0
video.c
dlls/strmbase/video.c
+480
-0
strmbase.h
include/wine/strmbase.h
+79
-0
No files found.
dlls/strmbase/Makefile.in
View file @
4ae6f928
...
...
@@ -11,6 +11,7 @@ C_SRCS = \
qualitycontrol.c
\
seeking.c
\
transform.c
\
video.c
\
window.c
@MAKE_IMPLIB_RULES@
dlls/strmbase/video.c
0 → 100644
View file @
4ae6f928
/*
* Generic Implementation of strmbase video classes
*
* Copyright 2012 Aric Stewart, CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define COBJMACROS
#include <assert.h>
#include "dshow.h"
#include "uuids.h"
#include "vfwmsgs.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "wine/strmbase.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
strmbase
);
static
inline
BaseControlVideo
*
impl_from_IBasicVideo
(
IBasicVideo
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
BaseControlVideo
,
IBasicVideo_iface
);
}
HRESULT
WINAPI
BaseControlVideo_Init
(
BaseControlVideo
*
pControlVideo
,
const
IBasicVideoVtbl
*
lpVtbl
,
BaseFilter
*
owner
,
CRITICAL_SECTION
*
lock
,
BasePin
*
pPin
,
const
BaseControlVideoFuncTable
*
pFuncsTable
)
{
pControlVideo
->
IBasicVideo_iface
.
lpVtbl
=
lpVtbl
;
pControlVideo
->
pFilter
=
owner
;
pControlVideo
->
pInterfaceLock
=
lock
;
pControlVideo
->
pPin
=
pPin
;
pControlVideo
->
pFuncsTable
=
pFuncsTable
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_GetTypeInfoCount
(
IBasicVideo
*
iface
,
UINT
*
pctinfo
)
{
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
FIXME
(
"(%p/%p)->(%p): stub !!!
\n
"
,
This
,
iface
,
pctinfo
);
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_GetTypeInfo
(
IBasicVideo
*
iface
,
UINT
iTInfo
,
LCID
lcid
,
ITypeInfo
**
ppTInfo
)
{
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
FIXME
(
"(%p/%p)->(%d, %d, %p): stub !!!
\n
"
,
This
,
iface
,
iTInfo
,
lcid
,
ppTInfo
);
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_GetIDsOfNames
(
IBasicVideo
*
iface
,
REFIID
riid
,
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
)
{
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
FIXME
(
"(%p/%p)->(%s (%p), %p, %d, %d, %p): stub !!!
\n
"
,
This
,
iface
,
debugstr_guid
(
riid
),
riid
,
rgszNames
,
cNames
,
lcid
,
rgDispId
);
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_Invoke
(
IBasicVideo
*
iface
,
DISPID
dispIdMember
,
REFIID
riid
,
LCID
lcid
,
WORD
wFlags
,
DISPPARAMS
*
pDispParams
,
VARIANT
*
pVarResult
,
EXCEPINFO
*
pExepInfo
,
UINT
*
puArgErr
)
{
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
FIXME
(
"(%p/%p)->(%d, %s (%p), %d, %04x, %p, %p, %p, %p): stub !!!
\n
"
,
This
,
iface
,
dispIdMember
,
debugstr_guid
(
riid
),
riid
,
lcid
,
wFlags
,
pDispParams
,
pVarResult
,
pExepInfo
,
puArgErr
);
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_get_AvgTimePerFrame
(
IBasicVideo
*
iface
,
REFTIME
*
pAvgTimePerFrame
)
{
VIDEOINFOHEADER
*
vih
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
if
(
!
This
->
pPin
->
pConnectedTo
)
return
VFW_E_NOT_CONNECTED
;
TRACE
(
"(%p/%p)->(%p)
\n
"
,
This
,
iface
,
pAvgTimePerFrame
);
vih
=
This
->
pFuncsTable
->
pfnGetVideoFormat
(
This
);
*
pAvgTimePerFrame
=
vih
->
AvgTimePerFrame
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_get_BitRate
(
IBasicVideo
*
iface
,
LONG
*
pBitRate
)
{
VIDEOINFOHEADER
*
vih
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p)
\n
"
,
This
,
iface
,
pBitRate
);
if
(
!
This
->
pPin
->
pConnectedTo
)
return
VFW_E_NOT_CONNECTED
;
vih
=
This
->
pFuncsTable
->
pfnGetVideoFormat
(
This
);
*
pBitRate
=
vih
->
dwBitRate
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_get_BitErrorRate
(
IBasicVideo
*
iface
,
LONG
*
pBitErrorRate
)
{
VIDEOINFOHEADER
*
vih
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p)
\n
"
,
This
,
iface
,
pBitErrorRate
);
if
(
!
This
->
pPin
->
pConnectedTo
)
return
VFW_E_NOT_CONNECTED
;
vih
=
This
->
pFuncsTable
->
pfnGetVideoFormat
(
This
);
*
pBitErrorRate
=
vih
->
dwBitErrorRate
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_get_VideoWidth
(
IBasicVideo
*
iface
,
LONG
*
pVideoWidth
)
{
VIDEOINFOHEADER
*
vih
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p)
\n
"
,
This
,
iface
,
pVideoWidth
);
vih
=
This
->
pFuncsTable
->
pfnGetVideoFormat
(
This
);
*
pVideoWidth
=
vih
->
bmiHeader
.
biWidth
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_get_VideoHeight
(
IBasicVideo
*
iface
,
LONG
*
pVideoHeight
)
{
VIDEOINFOHEADER
*
vih
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p)
\n
"
,
This
,
iface
,
pVideoHeight
);
vih
=
This
->
pFuncsTable
->
pfnGetVideoFormat
(
This
);
*
pVideoHeight
=
vih
->
bmiHeader
.
biHeight
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_put_SourceLeft
(
IBasicVideo
*
iface
,
LONG
SourceLeft
)
{
RECT
SourceRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%d)
\n
"
,
This
,
iface
,
SourceLeft
);
This
->
pFuncsTable
->
pfnGetSourceRect
(
This
,
&
SourceRect
);
SourceRect
.
left
=
SourceLeft
;
This
->
pFuncsTable
->
pfnSetSourceRect
(
This
,
&
SourceRect
);
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_get_SourceLeft
(
IBasicVideo
*
iface
,
LONG
*
pSourceLeft
)
{
RECT
SourceRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p)
\n
"
,
This
,
iface
,
pSourceLeft
);
This
->
pFuncsTable
->
pfnGetSourceRect
(
This
,
&
SourceRect
);
*
pSourceLeft
=
SourceRect
.
left
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_put_SourceWidth
(
IBasicVideo
*
iface
,
LONG
SourceWidth
)
{
RECT
SourceRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%d)
\n
"
,
This
,
iface
,
SourceWidth
);
This
->
pFuncsTable
->
pfnGetSourceRect
(
This
,
&
SourceRect
);
SourceRect
.
right
=
SourceRect
.
left
+
SourceWidth
;
This
->
pFuncsTable
->
pfnSetSourceRect
(
This
,
&
SourceRect
);
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_get_SourceWidth
(
IBasicVideo
*
iface
,
LONG
*
pSourceWidth
)
{
RECT
SourceRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p)
\n
"
,
This
,
iface
,
pSourceWidth
);
This
->
pFuncsTable
->
pfnGetSourceRect
(
This
,
&
SourceRect
);
*
pSourceWidth
=
SourceRect
.
right
-
SourceRect
.
left
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_put_SourceTop
(
IBasicVideo
*
iface
,
LONG
SourceTop
)
{
RECT
SourceRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%d)
\n
"
,
This
,
iface
,
SourceTop
);
This
->
pFuncsTable
->
pfnGetSourceRect
(
This
,
&
SourceRect
);
SourceRect
.
top
=
SourceTop
;
This
->
pFuncsTable
->
pfnSetSourceRect
(
This
,
&
SourceRect
);
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_get_SourceTop
(
IBasicVideo
*
iface
,
LONG
*
pSourceTop
)
{
RECT
SourceRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p)
\n
"
,
This
,
iface
,
pSourceTop
);
This
->
pFuncsTable
->
pfnGetSourceRect
(
This
,
&
SourceRect
);
*
pSourceTop
=
SourceRect
.
top
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_put_SourceHeight
(
IBasicVideo
*
iface
,
LONG
SourceHeight
)
{
RECT
SourceRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%d)
\n
"
,
This
,
iface
,
SourceHeight
);
This
->
pFuncsTable
->
pfnGetSourceRect
(
This
,
&
SourceRect
);
SourceRect
.
bottom
=
SourceRect
.
top
+
SourceHeight
;
This
->
pFuncsTable
->
pfnSetSourceRect
(
This
,
&
SourceRect
);
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_get_SourceHeight
(
IBasicVideo
*
iface
,
LONG
*
pSourceHeight
)
{
RECT
SourceRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p)
\n
"
,
This
,
iface
,
pSourceHeight
);
This
->
pFuncsTable
->
pfnGetSourceRect
(
This
,
&
SourceRect
);
*
pSourceHeight
=
SourceRect
.
bottom
-
SourceRect
.
top
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_put_DestinationLeft
(
IBasicVideo
*
iface
,
LONG
DestinationLeft
)
{
RECT
DestRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%d)
\n
"
,
This
,
iface
,
DestinationLeft
);
This
->
pFuncsTable
->
pfnGetTargetRect
(
This
,
&
DestRect
);
DestRect
.
left
=
DestinationLeft
;
This
->
pFuncsTable
->
pfnSetTargetRect
(
This
,
&
DestRect
);
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_get_DestinationLeft
(
IBasicVideo
*
iface
,
LONG
*
pDestinationLeft
)
{
RECT
DestRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p)
\n
"
,
This
,
iface
,
pDestinationLeft
);
This
->
pFuncsTable
->
pfnGetTargetRect
(
This
,
&
DestRect
);
*
pDestinationLeft
=
DestRect
.
left
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_put_DestinationWidth
(
IBasicVideo
*
iface
,
LONG
DestinationWidth
)
{
RECT
DestRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%d)
\n
"
,
This
,
iface
,
DestinationWidth
);
This
->
pFuncsTable
->
pfnGetTargetRect
(
This
,
&
DestRect
);
DestRect
.
right
=
DestRect
.
left
+
DestinationWidth
;
This
->
pFuncsTable
->
pfnSetTargetRect
(
This
,
&
DestRect
);
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_get_DestinationWidth
(
IBasicVideo
*
iface
,
LONG
*
pDestinationWidth
)
{
RECT
DestRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p)
\n
"
,
This
,
iface
,
pDestinationWidth
);
This
->
pFuncsTable
->
pfnGetTargetRect
(
This
,
&
DestRect
);
*
pDestinationWidth
=
DestRect
.
right
-
DestRect
.
left
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_put_DestinationTop
(
IBasicVideo
*
iface
,
LONG
DestinationTop
)
{
RECT
DestRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%d)
\n
"
,
This
,
iface
,
DestinationTop
);
This
->
pFuncsTable
->
pfnGetTargetRect
(
This
,
&
DestRect
);
DestRect
.
top
=
DestinationTop
;
This
->
pFuncsTable
->
pfnSetTargetRect
(
This
,
&
DestRect
);
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_get_DestinationTop
(
IBasicVideo
*
iface
,
LONG
*
pDestinationTop
)
{
RECT
DestRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p)
\n
"
,
This
,
iface
,
pDestinationTop
);
This
->
pFuncsTable
->
pfnGetTargetRect
(
This
,
&
DestRect
);
*
pDestinationTop
=
DestRect
.
top
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_put_DestinationHeight
(
IBasicVideo
*
iface
,
LONG
DestinationHeight
)
{
RECT
DestRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%d)
\n
"
,
This
,
iface
,
DestinationHeight
);
This
->
pFuncsTable
->
pfnGetTargetRect
(
This
,
&
DestRect
);
DestRect
.
right
=
DestRect
.
left
+
DestinationHeight
;
This
->
pFuncsTable
->
pfnSetTargetRect
(
This
,
&
DestRect
);
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_get_DestinationHeight
(
IBasicVideo
*
iface
,
LONG
*
pDestinationHeight
)
{
RECT
DestRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p)
\n
"
,
This
,
iface
,
pDestinationHeight
);
This
->
pFuncsTable
->
pfnGetTargetRect
(
This
,
&
DestRect
);
*
pDestinationHeight
=
DestRect
.
right
-
DestRect
.
left
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_SetSourcePosition
(
IBasicVideo
*
iface
,
LONG
Left
,
LONG
Top
,
LONG
Width
,
LONG
Height
)
{
RECT
SourceRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%d, %d, %d, %d)
\n
"
,
This
,
iface
,
Left
,
Top
,
Width
,
Height
);
SourceRect
.
left
=
Left
;
SourceRect
.
top
=
Top
;
SourceRect
.
right
=
Left
+
Width
;
SourceRect
.
bottom
=
Top
+
Height
;
This
->
pFuncsTable
->
pfnSetSourceRect
(
This
,
&
SourceRect
);
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_GetSourcePosition
(
IBasicVideo
*
iface
,
LONG
*
pLeft
,
LONG
*
pTop
,
LONG
*
pWidth
,
LONG
*
pHeight
)
{
RECT
SourceRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p, %p, %p, %p)
\n
"
,
This
,
iface
,
pLeft
,
pTop
,
pWidth
,
pHeight
);
This
->
pFuncsTable
->
pfnGetSourceRect
(
This
,
&
SourceRect
);
*
pLeft
=
SourceRect
.
left
;
*
pTop
=
SourceRect
.
top
;
*
pWidth
=
SourceRect
.
right
-
SourceRect
.
left
;
*
pHeight
=
SourceRect
.
bottom
-
SourceRect
.
top
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_SetDefaultSourcePosition
(
IBasicVideo
*
iface
)
{
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->()
\n
"
,
This
,
iface
);
return
This
->
pFuncsTable
->
pfnSetDefaultSourceRect
(
This
);
}
HRESULT
WINAPI
BaseControlVideoImpl_SetDestinationPosition
(
IBasicVideo
*
iface
,
LONG
Left
,
LONG
Top
,
LONG
Width
,
LONG
Height
)
{
RECT
DestRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%d, %d, %d, %d)
\n
"
,
This
,
iface
,
Left
,
Top
,
Width
,
Height
);
DestRect
.
left
=
Left
;
DestRect
.
top
=
Top
;
DestRect
.
right
=
Left
+
Width
;
DestRect
.
bottom
=
Top
+
Height
;
This
->
pFuncsTable
->
pfnSetTargetRect
(
This
,
&
DestRect
);
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_GetDestinationPosition
(
IBasicVideo
*
iface
,
LONG
*
pLeft
,
LONG
*
pTop
,
LONG
*
pWidth
,
LONG
*
pHeight
)
{
RECT
DestRect
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p, %p, %p, %p)
\n
"
,
This
,
iface
,
pLeft
,
pTop
,
pWidth
,
pHeight
);
This
->
pFuncsTable
->
pfnGetTargetRect
(
This
,
&
DestRect
);
*
pLeft
=
DestRect
.
left
;
*
pTop
=
DestRect
.
top
;
*
pWidth
=
DestRect
.
right
-
DestRect
.
left
;
*
pHeight
=
DestRect
.
bottom
-
DestRect
.
top
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_SetDefaultDestinationPosition
(
IBasicVideo
*
iface
)
{
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->()
\n
"
,
This
,
iface
);
return
This
->
pFuncsTable
->
pfnSetDefaultTargetRect
(
This
);
}
HRESULT
WINAPI
BaseControlVideoImpl_GetVideoSize
(
IBasicVideo
*
iface
,
LONG
*
pWidth
,
LONG
*
pHeight
)
{
VIDEOINFOHEADER
*
vih
;
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%p, %p)
\n
"
,
This
,
iface
,
pWidth
,
pHeight
);
vih
=
This
->
pFuncsTable
->
pfnGetVideoFormat
(
This
);
*
pHeight
=
vih
->
bmiHeader
.
biHeight
;
*
pWidth
=
vih
->
bmiHeader
.
biWidth
;
return
S_OK
;
}
HRESULT
WINAPI
BaseControlVideoImpl_GetVideoPaletteEntries
(
IBasicVideo
*
iface
,
LONG
StartIndex
,
LONG
Entries
,
LONG
*
pRetrieved
,
LONG
*
pPalette
)
{
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
TRACE
(
"(%p/%p)->(%d, %d, %p, %p)
\n
"
,
This
,
iface
,
StartIndex
,
Entries
,
pRetrieved
,
pPalette
);
if
(
pRetrieved
)
*
pRetrieved
=
0
;
return
VFW_E_NO_PALETTE_AVAILABLE
;
}
HRESULT
WINAPI
BaseControlVideoImpl_GetCurrentImage
(
IBasicVideo
*
iface
,
LONG
*
pBufferSize
,
LONG
*
pDIBImage
)
{
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
return
This
->
pFuncsTable
->
pfnGetStaticImage
(
This
,
pBufferSize
,
pDIBImage
);
}
HRESULT
WINAPI
BaseControlVideoImpl_IsUsingDefaultSource
(
IBasicVideo
*
iface
)
{
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
return
This
->
pFuncsTable
->
pfnIsDefaultSourceRect
(
This
);
}
HRESULT
WINAPI
BaseControlVideoImpl_IsUsingDefaultDestination
(
IBasicVideo
*
iface
)
{
BaseControlVideo
*
This
=
impl_from_IBasicVideo
(
iface
);
return
This
->
pFuncsTable
->
pfnIsDefaultTargetRect
(
This
);
}
include/wine/strmbase.h
View file @
4ae6f928
...
...
@@ -495,6 +495,85 @@ HRESULT WINAPI BaseControlWindowImpl_HideCursor(IVideoWindow *iface, LONG HideCu
HRESULT
WINAPI
BaseControlWindowImpl_IsCursorHidden
(
IVideoWindow
*
iface
,
LONG
*
CursorHidden
);
#endif
#ifdef __IBasicVideo_FWD_DEFINED__
#ifdef __amvideo_h__
typedef
struct
tagBaseControlVideo
{
IBasicVideo
IBasicVideo_iface
;
BaseFilter
*
pFilter
;
CRITICAL_SECTION
*
pInterfaceLock
;
BasePin
*
pPin
;
const
struct
BaseControlVideoFuncTable
*
pFuncsTable
;
}
BaseControlVideo
;
typedef
HRESULT
(
WINAPI
*
BaseControlVideo_GetSourceRect
)(
BaseControlVideo
*
This
,
RECT
*
pSourceRect
);
typedef
HRESULT
(
WINAPI
*
BaseControlVideo_GetStaticImage
)(
BaseControlVideo
*
This
,
LONG
*
pBufferSize
,
LONG
*
pDIBImage
);
typedef
HRESULT
(
WINAPI
*
BaseControlVideo_GetTargetRect
)(
BaseControlVideo
*
This
,
RECT
*
pTargetRect
);
typedef
VIDEOINFOHEADER
*
(
WINAPI
*
BaseControlVideo_GetVideoFormat
)(
BaseControlVideo
*
This
);
typedef
HRESULT
(
WINAPI
*
BaseControlVideo_IsDefaultSourceRect
)(
BaseControlVideo
*
This
);
typedef
HRESULT
(
WINAPI
*
BaseControlVideo_IsDefaultTargetRect
)(
BaseControlVideo
*
This
);
typedef
HRESULT
(
WINAPI
*
BaseControlVideo_SetDefaultSourceRect
)(
BaseControlVideo
*
This
);
typedef
HRESULT
(
WINAPI
*
BaseControlVideo_SetDefaultTargetRect
)(
BaseControlVideo
*
This
);
typedef
HRESULT
(
WINAPI
*
BaseControlVideo_SetSourceRect
)(
BaseControlVideo
*
This
,
RECT
*
pSourceRect
);
typedef
HRESULT
(
WINAPI
*
BaseControlVideo_SetTargetRect
)(
BaseControlVideo
*
This
,
RECT
*
pTargetRect
);
typedef
struct
BaseControlVideoFuncTable
{
/* Required */
BaseControlVideo_GetSourceRect
pfnGetSourceRect
;
BaseControlVideo_GetStaticImage
pfnGetStaticImage
;
BaseControlVideo_GetTargetRect
pfnGetTargetRect
;
BaseControlVideo_GetVideoFormat
pfnGetVideoFormat
;
BaseControlVideo_IsDefaultSourceRect
pfnIsDefaultSourceRect
;
BaseControlVideo_IsDefaultTargetRect
pfnIsDefaultTargetRect
;
BaseControlVideo_SetDefaultSourceRect
pfnSetDefaultSourceRect
;
BaseControlVideo_SetDefaultTargetRect
pfnSetDefaultTargetRect
;
BaseControlVideo_SetSourceRect
pfnSetSourceRect
;
BaseControlVideo_SetTargetRect
pfnSetTargetRect
;
}
BaseControlVideoFuncTable
;
HRESULT
WINAPI
BaseControlVideo_Init
(
BaseControlVideo
*
pControlVideo
,
const
IBasicVideoVtbl
*
lpVtbl
,
BaseFilter
*
owner
,
CRITICAL_SECTION
*
lock
,
BasePin
*
pPin
,
const
BaseControlVideoFuncTable
*
pFuncsTable
);
HRESULT
WINAPI
BaseControlVideoImpl_GetTypeInfoCount
(
IBasicVideo
*
iface
,
UINT
*
pctinfo
);
HRESULT
WINAPI
BaseControlVideoImpl_GetTypeInfo
(
IBasicVideo
*
iface
,
UINT
iTInfo
,
LCID
lcid
,
ITypeInfo
**
ppTInfo
);
HRESULT
WINAPI
BaseControlVideoImpl_GetIDsOfNames
(
IBasicVideo
*
iface
,
REFIID
riid
,
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
);
HRESULT
WINAPI
BaseControlVideoImpl_Invoke
(
IBasicVideo
*
iface
,
DISPID
dispIdMember
,
REFIID
riid
,
LCID
lcid
,
WORD
wFlags
,
DISPPARAMS
*
pDispParams
,
VARIANT
*
pVarResult
,
EXCEPINFO
*
pExepInfo
,
UINT
*
puArgErr
);
HRESULT
WINAPI
BaseControlVideoImpl_get_AvgTimePerFrame
(
IBasicVideo
*
iface
,
REFTIME
*
pAvgTimePerFrame
);
HRESULT
WINAPI
BaseControlVideoImpl_get_BitRate
(
IBasicVideo
*
iface
,
LONG
*
pBitRate
);
HRESULT
WINAPI
BaseControlVideoImpl_get_BitErrorRate
(
IBasicVideo
*
iface
,
LONG
*
pBitErrorRate
);
HRESULT
WINAPI
BaseControlVideoImpl_get_VideoWidth
(
IBasicVideo
*
iface
,
LONG
*
pVideoWidth
);
HRESULT
WINAPI
BaseControlVideoImpl_get_VideoHeight
(
IBasicVideo
*
iface
,
LONG
*
pVideoHeight
);
HRESULT
WINAPI
BaseControlVideoImpl_put_SourceLeft
(
IBasicVideo
*
iface
,
LONG
SourceLeft
);
HRESULT
WINAPI
BaseControlVideoImpl_get_SourceLeft
(
IBasicVideo
*
iface
,
LONG
*
pSourceLeft
);
HRESULT
WINAPI
BaseControlVideoImpl_put_SourceWidth
(
IBasicVideo
*
iface
,
LONG
SourceWidth
);
HRESULT
WINAPI
BaseControlVideoImpl_get_SourceWidth
(
IBasicVideo
*
iface
,
LONG
*
pSourceWidth
);
HRESULT
WINAPI
BaseControlVideoImpl_put_SourceTop
(
IBasicVideo
*
iface
,
LONG
SourceTop
);
HRESULT
WINAPI
BaseControlVideoImpl_get_SourceTop
(
IBasicVideo
*
iface
,
LONG
*
pSourceTop
);
HRESULT
WINAPI
BaseControlVideoImpl_put_SourceHeight
(
IBasicVideo
*
iface
,
LONG
SourceHeight
);
HRESULT
WINAPI
BaseControlVideoImpl_get_SourceHeight
(
IBasicVideo
*
iface
,
LONG
*
pSourceHeight
);
HRESULT
WINAPI
BaseControlVideoImpl_put_DestinationLeft
(
IBasicVideo
*
iface
,
LONG
DestinationLeft
);
HRESULT
WINAPI
BaseControlVideoImpl_get_DestinationLeft
(
IBasicVideo
*
iface
,
LONG
*
pDestinationLeft
);
HRESULT
WINAPI
BaseControlVideoImpl_put_DestinationWidth
(
IBasicVideo
*
iface
,
LONG
DestinationWidth
);
HRESULT
WINAPI
BaseControlVideoImpl_get_DestinationWidth
(
IBasicVideo
*
iface
,
LONG
*
pDestinationWidth
);
HRESULT
WINAPI
BaseControlVideoImpl_put_DestinationTop
(
IBasicVideo
*
iface
,
LONG
DestinationTop
);
HRESULT
WINAPI
BaseControlVideoImpl_get_DestinationTop
(
IBasicVideo
*
iface
,
LONG
*
pDestinationTop
);
HRESULT
WINAPI
BaseControlVideoImpl_put_DestinationHeight
(
IBasicVideo
*
iface
,
LONG
DestinationHeight
);
HRESULT
WINAPI
BaseControlVideoImpl_get_DestinationHeight
(
IBasicVideo
*
iface
,
LONG
*
pDestinationHeight
);
HRESULT
WINAPI
BaseControlVideoImpl_SetSourcePosition
(
IBasicVideo
*
iface
,
LONG
Left
,
LONG
Top
,
LONG
Width
,
LONG
Height
);
HRESULT
WINAPI
BaseControlVideoImpl_GetSourcePosition
(
IBasicVideo
*
iface
,
LONG
*
pLeft
,
LONG
*
pTop
,
LONG
*
pWidth
,
LONG
*
pHeight
);
HRESULT
WINAPI
BaseControlVideoImpl_SetDefaultSourcePosition
(
IBasicVideo
*
iface
);
HRESULT
WINAPI
BaseControlVideoImpl_SetDestinationPosition
(
IBasicVideo
*
iface
,
LONG
Left
,
LONG
Top
,
LONG
Width
,
LONG
Height
);
HRESULT
WINAPI
BaseControlVideoImpl_GetDestinationPosition
(
IBasicVideo
*
iface
,
LONG
*
pLeft
,
LONG
*
pTop
,
LONG
*
pWidth
,
LONG
*
pHeight
);
HRESULT
WINAPI
BaseControlVideoImpl_SetDefaultDestinationPosition
(
IBasicVideo
*
iface
);
HRESULT
WINAPI
BaseControlVideoImpl_GetVideoSize
(
IBasicVideo
*
iface
,
LONG
*
pWidth
,
LONG
*
pHeight
);
HRESULT
WINAPI
BaseControlVideoImpl_GetVideoPaletteEntries
(
IBasicVideo
*
iface
,
LONG
StartIndex
,
LONG
Entries
,
LONG
*
pRetrieved
,
LONG
*
pPalette
);
HRESULT
WINAPI
BaseControlVideoImpl_GetCurrentImage
(
IBasicVideo
*
iface
,
LONG
*
pBufferSize
,
LONG
*
pDIBImage
);
HRESULT
WINAPI
BaseControlVideoImpl_IsUsingDefaultSource
(
IBasicVideo
*
iface
);
HRESULT
WINAPI
BaseControlVideoImpl_IsUsingDefaultDestination
(
IBasicVideo
*
iface
);
#endif
#endif
/* Dll Functions */
BOOL
WINAPI
STRMBASE_DllMain
(
HINSTANCE
hInstDLL
,
DWORD
fdwReason
,
LPVOID
lpv
);
HRESULT
WINAPI
STRMBASE_DllGetClassObject
(
REFCLSID
rclsid
,
REFIID
riid
,
LPVOID
*
ppv
);
...
...
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