Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
36418d8a
Commit
36418d8a
authored
Jul 10, 2008
by
Maarten Lankhorst
Committed by
Alexandre Julliard
Jul 14, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
quartz: Fix incorrect use of mtCurrent in transform filter.
parent
8291034d
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
21 additions
and
6 deletions
+21
-6
acmwrapper.c
dlls/quartz/acmwrapper.c
+3
-1
avidec.c
dlls/quartz/avidec.c
+2
-1
pin.c
dlls/quartz/pin.c
+11
-3
transform.c
dlls/quartz/transform.c
+4
-1
transform.h
dlls/quartz/transform.h
+1
-0
No files found.
dlls/quartz/acmwrapper.c
View file @
36418d8a
...
...
@@ -248,7 +248,9 @@ static HRESULT ACMWrapper_ConnectInput(TransformFilterImpl* pTransformFilter, co
(
IsEqualIID
(
&
pmt
->
formattype
,
&
FORMAT_WaveFormatEx
)))
{
HACMSTREAM
drv
;
AM_MEDIA_TYPE
*
outpmt
=
&
((
OutputPin
*
)
This
->
tf
.
ppPins
[
1
])
->
pin
.
mtCurrent
;
AM_MEDIA_TYPE
*
outpmt
=
&
This
->
tf
.
pmt
;
FreeMediaType
(
outpmt
);
This
->
pWfIn
=
(
LPWAVEFORMATEX
)
pmt
->
pbFormat
;
/* HACK */
...
...
dlls/quartz/avidec.c
View file @
36418d8a
...
...
@@ -213,11 +213,12 @@ static HRESULT AVIDec_ConnectInput(TransformFilterImpl* pTransformFilter, const
This
->
hvid
=
ICLocate
(
pmt
->
majortype
.
Data1
,
pmt
->
subtype
.
Data1
,
bmi
,
NULL
,
ICMODE_DECOMPRESS
);
if
(
This
->
hvid
)
{
AM_MEDIA_TYPE
*
outpmt
=
&
((
OutputPin
*
)
This
->
tf
.
ppPins
[
1
])
->
pin
.
mtCurren
t
;
AM_MEDIA_TYPE
*
outpmt
=
&
This
->
tf
.
pm
t
;
const
CLSID
*
outsubtype
;
DWORD
bih_size
;
DWORD
output_depth
=
bmi
->
biBitCount
;
DWORD
result
;
FreeMediaType
(
outpmt
);
switch
(
bmi
->
biBitCount
)
{
...
...
dlls/quartz/pin.c
View file @
36418d8a
...
...
@@ -928,7 +928,7 @@ HRESULT WINAPI OutputPin_Connect(IPin * iface, IPin * pReceivePin, const AM_MEDI
/* negotiate media type */
IEnumMediaTypes
*
pEnumCandidates
;
AM_MEDIA_TYPE
*
pmtCandidate
;
/* Candidate media type */
AM_MEDIA_TYPE
*
pmtCandidate
=
NULL
;
/* Candidate media type */
if
(
SUCCEEDED
(
hr
=
IPin_EnumMediaTypes
(
iface
,
&
pEnumCandidates
)))
{
...
...
@@ -937,6 +937,9 @@ HRESULT WINAPI OutputPin_Connect(IPin * iface, IPin * pReceivePin, const AM_MEDI
/* try this filter's media types first */
while
(
S_OK
==
IEnumMediaTypes_Next
(
pEnumCandidates
,
1
,
&
pmtCandidate
,
NULL
))
{
assert
(
pmtCandidate
);
if
(
!
IsEqualGUID
(
&
FORMAT_None
,
&
pmtCandidate
->
formattype
))
assert
(
pmtCandidate
->
pbFormat
);
if
((
!
pmt
||
CompareMediaTypes
(
pmt
,
pmtCandidate
,
TRUE
)
)
&&
(
This
->
pConnectSpecific
(
iface
,
pReceivePin
,
pmtCandidate
)
==
S_OK
))
{
...
...
@@ -944,7 +947,8 @@ HRESULT WINAPI OutputPin_Connect(IPin * iface, IPin * pReceivePin, const AM_MEDI
CoTaskMemFree
(
pmtCandidate
);
break
;
}
CoTaskMemFree
(
pmtCandidate
);
DeleteMediaType
(
pmtCandidate
);
pmtCandidate
=
NULL
;
}
IEnumMediaTypes_Release
(
pEnumCandidates
);
}
...
...
@@ -956,6 +960,9 @@ HRESULT WINAPI OutputPin_Connect(IPin * iface, IPin * pReceivePin, const AM_MEDI
while
(
S_OK
==
IEnumMediaTypes_Next
(
pEnumCandidates
,
1
,
&
pmtCandidate
,
NULL
))
{
assert
(
pmtCandidate
);
if
(
!
IsEqualGUID
(
&
FORMAT_None
,
&
pmtCandidate
->
formattype
))
assert
(
pmtCandidate
->
pbFormat
);
if
((
!
pmt
||
CompareMediaTypes
(
pmt
,
pmtCandidate
,
TRUE
)
)
&&
(
This
->
pConnectSpecific
(
iface
,
pReceivePin
,
pmtCandidate
)
==
S_OK
))
{
...
...
@@ -963,7 +970,8 @@ HRESULT WINAPI OutputPin_Connect(IPin * iface, IPin * pReceivePin, const AM_MEDI
CoTaskMemFree
(
pmtCandidate
);
break
;
}
CoTaskMemFree
(
pmtCandidate
);
DeleteMediaType
(
pmtCandidate
);
pmtCandidate
=
NULL
;
}
/* while */
IEnumMediaTypes_Release
(
pEnumCandidates
);
}
/* if not found */
...
...
dlls/quartz/transform.c
View file @
36418d8a
...
...
@@ -164,6 +164,7 @@ HRESULT TransformFilter_Create(TransformFilterImpl* pTransformFilter, const CLSI
pTransformFilter
->
state
=
State_Stopped
;
pTransformFilter
->
pClock
=
NULL
;
ZeroMemory
(
&
pTransformFilter
->
filterInfo
,
sizeof
(
FILTER_INFO
));
ZeroMemory
(
&
pTransformFilter
->
pmt
,
sizeof
(
pTransformFilter
->
pmt
));
pTransformFilter
->
ppPins
=
CoTaskMemAlloc
(
2
*
sizeof
(
IPin
*
));
...
...
@@ -288,6 +289,7 @@ static ULONG WINAPI TransformFilter_Release(IBaseFilter * iface)
DeleteCriticalSection
(
&
This
->
csFilter
);
TRACE
(
"Destroying transform filter
\n
"
);
FreeMediaType
(
&
This
->
pmt
);
CoTaskMemFree
(
This
);
return
0
;
...
...
@@ -603,12 +605,13 @@ static const IPinVtbl TransformFilter_InputPin_Vtbl =
static
HRESULT
WINAPI
TransformFilter_Output_EnumMediaTypes
(
IPin
*
iface
,
IEnumMediaTypes
**
ppEnum
)
{
IPinImpl
*
This
=
(
IPinImpl
*
)
iface
;
TransformFilterImpl
*
pTransform
=
(
TransformFilterImpl
*
)
This
->
pinInfo
.
pFilter
;
ENUMMEDIADETAILS
emd
;
TRACE
(
"(%p/%p)->(%p)
\n
"
,
This
,
iface
,
ppEnum
);
emd
.
cMediaTypes
=
1
;
emd
.
pMediaTypes
=
&
This
->
mtCurren
t
;
emd
.
pMediaTypes
=
&
pTransform
->
pm
t
;
return
IEnumMediaTypesImpl_Construct
(
&
emd
,
ppEnum
);
}
...
...
dlls/quartz/transform.h
View file @
36418d8a
...
...
@@ -45,6 +45,7 @@ struct TransformFilterImpl
struct
MediaSeekingImpl
mediaSeeking
;
IPin
**
ppPins
;
AM_MEDIA_TYPE
pmt
;
const
TransformFuncsTable
*
pFuncsTable
;
};
...
...
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