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
f500b1dc
Commit
f500b1dc
authored
Jun 06, 2019
by
Zebediah Figura
Committed by
Alexandre Julliard
Jun 06, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
strmbase: Support aggregation in the base transform filter.
Signed-off-by:
Zebediah Figura
<
z.figura12@gmail.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
0d0f1e0f
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
22 additions
and
43 deletions
+22
-43
acmwrapper.c
dlls/quartz/acmwrapper.c
+4
-9
avidec.c
dlls/quartz/avidec.c
+4
-9
acmwrapper.c
dlls/quartz/tests/acmwrapper.c
+1
-2
avidec.c
dlls/quartz/tests/avidec.c
+1
-2
transform.c
dlls/strmbase/transform.c
+4
-4
gsttffilter.c
dlls/winegstreamer/gsttffilter.c
+4
-5
qtvdecoder.c
dlls/wineqtdecoder/qtvdecoder.c
+3
-11
strmbase.h
include/wine/strmbase.h
+1
-1
No files found.
dlls/quartz/acmwrapper.c
View file @
f500b1dc
...
...
@@ -375,25 +375,20 @@ static const TransformFilterFuncTable ACMWrapper_FuncsTable = {
NULL
};
HRESULT
ACMWrapper_create
(
IUnknown
*
pUnkOuter
,
LPVOID
*
ppv
)
HRESULT
ACMWrapper_create
(
IUnknown
*
outer
,
void
**
out
)
{
HRESULT
hr
;
ACMWrapperImpl
*
This
;
TRACE
(
"(%p, %p)
\n
"
,
pUnkOuter
,
ppv
)
;
*
out
=
NULL
;
*
ppv
=
NULL
;
if
(
pUnkOuter
)
return
CLASS_E_NOAGGREGATION
;
hr
=
strmbase_transform_create
(
sizeof
(
ACMWrapperImpl
),
&
CLSID_ACMWrapper
,
hr
=
strmbase_transform_create
(
sizeof
(
ACMWrapperImpl
),
outer
,
&
CLSID_ACMWrapper
,
&
ACMWrapper_FuncsTable
,
(
IBaseFilter
**
)
&
This
);
if
(
FAILED
(
hr
))
return
hr
;
*
ppv
=
&
This
->
tf
.
filter
.
IBaseFilter_iface
;
*
out
=
&
This
->
tf
.
filter
.
IUnknown_inner
;
This
->
lasttime_real
=
This
->
lasttime_sent
=
-
1
;
return
hr
;
...
...
dlls/quartz/avidec.c
View file @
f500b1dc
...
...
@@ -390,19 +390,14 @@ static const TransformFilterFuncTable AVIDec_FuncsTable = {
AVIDec_NotifyDrop
};
HRESULT
AVIDec_create
(
IUnknown
*
pUnkOuter
,
LPVOID
*
ppv
)
HRESULT
AVIDec_create
(
IUnknown
*
outer
,
void
**
out
)
{
HRESULT
hr
;
AVIDecImpl
*
This
;
TRACE
(
"(%p, %p)
\n
"
,
pUnkOuter
,
ppv
)
;
*
out
=
NULL
;
*
ppv
=
NULL
;
if
(
pUnkOuter
)
return
CLASS_E_NOAGGREGATION
;
hr
=
strmbase_transform_create
(
sizeof
(
AVIDecImpl
),
&
CLSID_AVIDec
,
hr
=
strmbase_transform_create
(
sizeof
(
AVIDecImpl
),
outer
,
&
CLSID_AVIDec
,
&
AVIDec_FuncsTable
,
(
IBaseFilter
**
)
&
This
);
if
(
FAILED
(
hr
))
...
...
@@ -412,7 +407,7 @@ HRESULT AVIDec_create(IUnknown * pUnkOuter, LPVOID * ppv)
This
->
pBihIn
=
NULL
;
This
->
pBihOut
=
NULL
;
*
ppv
=
&
This
->
tf
.
filter
.
IBaseFilter_iface
;
*
out
=
&
This
->
tf
.
filter
.
IUnknown_inner
;
return
hr
;
}
dlls/quartz/tests/acmwrapper.c
View file @
f500b1dc
...
...
@@ -158,8 +158,7 @@ static void test_aggregation(void)
hr
=
CoCreateInstance
(
&
CLSID_ACMWrapper
,
&
test_outer
,
CLSCTX_INPROC_SERVER
,
&
IID_IUnknown
,
(
void
**
)
&
unk
);
todo_wine
ok
(
hr
==
S_OK
,
"Got hr %#x.
\n
"
,
hr
);
if
(
FAILED
(
hr
))
return
;
ok
(
hr
==
S_OK
,
"Got hr %#x.
\n
"
,
hr
);
ok
(
outer_ref
==
1
,
"Got unexpected refcount %d.
\n
"
,
outer_ref
);
ok
(
unk
!=
&
test_outer
,
"Returned IUnknown should not be outer IUnknown.
\n
"
);
ref
=
get_refcount
(
unk
);
...
...
dlls/quartz/tests/avidec.c
View file @
f500b1dc
...
...
@@ -183,8 +183,7 @@ static void test_aggregation(void)
hr
=
CoCreateInstance
(
&
CLSID_AVIDec
,
&
test_outer
,
CLSCTX_INPROC_SERVER
,
&
IID_IUnknown
,
(
void
**
)
&
unk
);
todo_wine
ok
(
hr
==
S_OK
,
"Got hr %#x.
\n
"
,
hr
);
if
(
FAILED
(
hr
))
return
;
ok
(
hr
==
S_OK
,
"Got hr %#x.
\n
"
,
hr
);
ok
(
outer_ref
==
1
,
"Got unexpected refcount %d.
\n
"
,
outer_ref
);
ok
(
unk
!=
&
test_outer
,
"Returned IUnknown should not be outer IUnknown.
\n
"
);
ref
=
get_refcount
(
unk
);
...
...
dlls/strmbase/transform.c
View file @
f500b1dc
...
...
@@ -281,14 +281,14 @@ static const IBaseFilterVtbl transform_vtbl =
BaseFilterImpl_QueryVendorInfo
};
static
HRESULT
strmbase_transform_init
(
const
CLSID
*
clsid
,
static
HRESULT
strmbase_transform_init
(
IUnknown
*
outer
,
const
CLSID
*
clsid
,
const
TransformFilterFuncTable
*
func_table
,
TransformFilter
*
filter
)
{
HRESULT
hr
;
PIN_INFO
piInput
;
PIN_INFO
piOutput
;
strmbase_filter_init
(
&
filter
->
filter
,
&
transform_vtbl
,
NULL
,
clsid
,
strmbase_filter_init
(
&
filter
->
filter
,
&
transform_vtbl
,
outer
,
clsid
,
(
DWORD_PTR
)(
__FILE__
": TransformFilter.csFilter"
),
&
tfBaseFuncTable
);
InitializeCriticalSection
(
&
filter
->
csReceive
);
...
...
@@ -349,7 +349,7 @@ static HRESULT strmbase_transform_init(const CLSID *clsid,
return
hr
;
}
HRESULT
strmbase_transform_create
(
LONG
filter_size
,
const
CLSID
*
pClsid
,
HRESULT
strmbase_transform_create
(
LONG
filter_size
,
IUnknown
*
outer
,
const
CLSID
*
pClsid
,
const
TransformFilterFuncTable
*
pFuncsTable
,
IBaseFilter
**
ppTransformFilter
)
{
TransformFilter
*
pTf
;
...
...
@@ -365,7 +365,7 @@ HRESULT strmbase_transform_create(LONG filter_size, const CLSID *pClsid,
ZeroMemory
(
pTf
,
filter_size
);
if
(
SUCCEEDED
(
strmbase_transform_init
(
pClsid
,
pFuncsTable
,
pTf
)))
if
(
SUCCEEDED
(
strmbase_transform_init
(
outer
,
pClsid
,
pFuncsTable
,
pTf
)))
{
*
ppTransformFilter
=
&
pTf
->
filter
.
IBaseFilter_iface
;
return
S_OK
;
...
...
dlls/winegstreamer/gsttffilter.c
View file @
f500b1dc
...
...
@@ -489,17 +489,16 @@ static HRESULT WINAPI Gstreamer_transform_QOS(TransformFilter *iface, IBaseFilte
return
TransformFilterImpl_Notify
(
iface
,
sender
,
qm
);
}
static
HRESULT
Gstreamer_transform_create
(
IUnknown
*
punkouter
,
const
CLSID
*
clsid
,
const
char
*
name
,
const
TransformFilterFuncTable
*
vtbl
,
void
**
obj
)
static
HRESULT
Gstreamer_transform_create
(
IUnknown
*
outer
,
const
CLSID
*
clsid
,
const
char
*
name
,
const
TransformFilterFuncTable
*
vtbl
,
void
**
obj
)
{
GstTfImpl
*
This
;
TRACE
(
"%p, %p, %p, %p, %p
\n
"
,
punkouter
,
clsid
,
name
,
vtbl
,
obj
);
if
(
FAILED
(
strmbase_transform_create
(
sizeof
(
GstTfImpl
),
clsid
,
vtbl
,
(
IBaseFilter
**
)
&
This
)))
if
(
FAILED
(
strmbase_transform_create
(
sizeof
(
GstTfImpl
),
outer
,
clsid
,
vtbl
,
(
IBaseFilter
**
)
&
This
)))
return
E_OUTOFMEMORY
;
This
->
gstreamer_name
=
name
;
*
obj
=
This
;
*
obj
=
&
This
->
tf
.
filter
.
IUnknown_inner
;
TRACE
(
"returning %p
\n
"
,
This
);
...
...
dlls/wineqtdecoder/qtvdecoder.c
View file @
f500b1dc
...
...
@@ -518,22 +518,14 @@ static const TransformFilterFuncTable QTVDecoder_FuncsTable = {
NULL
};
IUnknown
*
CALLBACK
QTVDecoder_create
(
IUnknown
*
pUnkO
uter
,
HRESULT
*
phr
)
IUnknown
*
CALLBACK
QTVDecoder_create
(
IUnknown
*
o
uter
,
HRESULT
*
phr
)
{
HRESULT
hr
;
QTVDecoderImpl
*
This
;
TRACE
(
"(%p, %p)
\n
"
,
pUnkOuter
,
phr
);
*
phr
=
S_OK
;
if
(
pUnkOuter
)
{
*
phr
=
CLASS_E_NOAGGREGATION
;
return
NULL
;
}
hr
=
strmbase_transform_create
(
sizeof
(
QTVDecoderImpl
),
&
CLSID_QTVDecoder
,
hr
=
strmbase_transform_create
(
sizeof
(
QTVDecoderImpl
),
outer
,
&
CLSID_QTVDecoder
,
&
QTVDecoder_FuncsTable
,
(
IBaseFilter
**
)
&
This
);
if
(
FAILED
(
hr
))
...
...
@@ -543,5 +535,5 @@ IUnknown * CALLBACK QTVDecoder_create(IUnknown * pUnkOuter, HRESULT* phr)
}
*
phr
=
hr
;
return
(
IUnknown
*
)
This
;
return
&
This
->
tf
.
filter
.
IUnknown_inner
;
}
include/wine/strmbase.h
View file @
f500b1dc
...
...
@@ -249,7 +249,7 @@ typedef struct TransformFilterFuncTable {
HRESULT
WINAPI
TransformFilterImpl_Notify
(
TransformFilter
*
iface
,
IBaseFilter
*
sender
,
Quality
qm
);
HRESULT
strmbase_transform_create
(
LONG
filter_size
,
const
CLSID
*
clsid
,
HRESULT
strmbase_transform_create
(
LONG
filter_size
,
IUnknown
*
outer
,
const
CLSID
*
clsid
,
const
TransformFilterFuncTable
*
func_table
,
IBaseFilter
**
filter
);
/* Source Seeking */
...
...
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