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
1f136a57
Commit
1f136a57
authored
Apr 23, 2008
by
Maarten Lankhorst
Committed by
Alexandre Julliard
Apr 28, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
quartz: Add a vtable argument to Parser_Create that individual filters can override.
parent
471d68c1
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
128 additions
and
81 deletions
+128
-81
avisplit.c
dlls/quartz/avisplit.c
+20
-1
mpegsplit.c
dlls/quartz/mpegsplit.c
+20
-1
parser.c
dlls/quartz/parser.c
+45
-74
parser.h
dlls/quartz/parser.h
+23
-4
waveparser.c
dlls/quartz/waveparser.c
+20
-1
No files found.
dlls/quartz/avisplit.c
View file @
1f136a57
...
...
@@ -1042,6 +1042,25 @@ static HRESULT AVISplitter_Disconnect(LPVOID iface)
return
S_OK
;
}
static
const
IBaseFilterVtbl
AVISplitter_Vtbl
=
{
Parser_QueryInterface
,
Parser_AddRef
,
Parser_Release
,
Parser_GetClassID
,
Parser_Stop
,
Parser_Pause
,
Parser_Run
,
Parser_GetState
,
Parser_SetSyncSource
,
Parser_GetSyncSource
,
Parser_EnumPins
,
Parser_FindPin
,
Parser_QueryFilterInfo
,
Parser_JoinFilterGraph
,
Parser_QueryVendorInfo
};
HRESULT
AVISplitter_create
(
IUnknown
*
pUnkOuter
,
LPVOID
*
ppv
)
{
HRESULT
hr
;
...
...
@@ -1061,7 +1080,7 @@ HRESULT AVISplitter_create(IUnknown * pUnkOuter, LPVOID * ppv)
This
->
streams
=
NULL
;
This
->
oldindex
=
NULL
;
hr
=
Parser_Create
(
&
(
This
->
Parser
),
&
CLSID_AviSplitter
,
AVISplitter_Sample
,
AVISplitter_QueryAccept
,
AVISplitter_InputPin_PreConnect
,
AVISplitter_Cleanup
,
AVISplitter_Disconnect
,
NULL
,
NULL
,
NULL
,
NULL
);
hr
=
Parser_Create
(
&
(
This
->
Parser
),
&
AVISplitter_Vtbl
,
&
CLSID_AviSplitter
,
AVISplitter_Sample
,
AVISplitter_QueryAccept
,
AVISplitter_InputPin_PreConnect
,
AVISplitter_Cleanup
,
AVISplitter_Disconnect
,
NULL
,
NULL
,
NULL
,
NULL
);
if
(
FAILED
(
hr
))
return
hr
;
...
...
dlls/quartz/mpegsplit.c
View file @
1f136a57
...
...
@@ -786,6 +786,25 @@ static HRESULT MPEGSplitter_first_request(LPVOID iface)
return
hr
;
}
static
const
IBaseFilterVtbl
MPEGSplitter_Vtbl
=
{
Parser_QueryInterface
,
Parser_AddRef
,
Parser_Release
,
Parser_GetClassID
,
Parser_Stop
,
Parser_Pause
,
Parser_Run
,
Parser_GetState
,
Parser_SetSyncSource
,
Parser_GetSyncSource
,
Parser_EnumPins
,
Parser_FindPin
,
Parser_QueryFilterInfo
,
Parser_JoinFilterGraph
,
Parser_QueryVendorInfo
};
HRESULT
MPEGSplitter_create
(
IUnknown
*
pUnkOuter
,
LPVOID
*
ppv
)
{
MPEGSplitterImpl
*
This
;
...
...
@@ -811,7 +830,7 @@ HRESULT MPEGSplitter_create(IUnknown * pUnkOuter, LPVOID * ppv)
}
This
->
seek_entries
=
64
;
hr
=
Parser_Create
(
&
(
This
->
Parser
),
&
CLSID_MPEG1Splitter
,
MPEGSplitter_process_sample
,
MPEGSplitter_query_accept
,
MPEGSplitter_pre_connect
,
MPEGSplitter_cleanup
,
MPEGSplitter_disconnect
,
MPEGSplitter_first_request
,
NULL
,
MPEGSplitter_seek
,
NULL
);
hr
=
Parser_Create
(
&
(
This
->
Parser
),
&
MPEGSplitter_Vtbl
,
&
CLSID_MPEG1Splitter
,
MPEGSplitter_process_sample
,
MPEGSplitter_query_accept
,
MPEGSplitter_pre_connect
,
MPEGSplitter_cleanup
,
MPEGSplitter_disconnect
,
MPEGSplitter_first_request
,
NULL
,
MPEGSplitter_seek
,
NULL
);
if
(
FAILED
(
hr
))
{
CoTaskMemFree
(
This
);
...
...
dlls/quartz/parser.c
View file @
1f136a57
...
...
@@ -37,7 +37,6 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
quartz
);
static
const
WCHAR
wcsInputPinName
[]
=
{
'i'
,
'n'
,
'p'
,
'u'
,
't'
,
' '
,
'p'
,
'i'
,
'n'
,
0
};
static
const
IBaseFilterVtbl
Parser_Vtbl
;
static
const
IMediaSeekingVtbl
Parser_Seeking_Vtbl
;
static
const
IPinVtbl
Parser_OutputPin_Vtbl
;
static
const
IPinVtbl
Parser_InputPin_Vtbl
;
...
...
@@ -53,21 +52,19 @@ static inline ParserImpl *impl_from_IMediaSeeking( IMediaSeeking *iface )
}
HRESULT
Parser_Create
(
ParserImpl
*
pParser
,
const
CLSID
*
pClsid
,
PFN_PROCESS_SAMPLE
fnProcessSample
,
PFN_QUERY_ACCEPT
fnQueryAccept
,
PFN_PRE_CONNECT
fnPreConnect
,
PFN_CLEANUP
fnCleanup
,
PFN_DISCONNECT
fnDisconnect
,
REQUESTPROC
fnRequest
,
CHANGEPROC
stop
,
CHANGEPROC
current
,
CHANGEPROC
rate
)
HRESULT
Parser_Create
(
ParserImpl
*
pParser
,
const
IBaseFilterVtbl
*
Parser_Vtbl
,
const
CLSID
*
pClsid
,
PFN_PROCESS_SAMPLE
fnProcessSample
,
PFN_QUERY_ACCEPT
fnQueryAccept
,
PFN_PRE_CONNECT
fnPreConnect
,
PFN_CLEANUP
fnCleanup
,
PFN_DISCONNECT
fnDisconnect
,
REQUESTPROC
fnRequest
,
CHANGEPROC
stop
,
CHANGEPROC
current
,
CHANGEPROC
rate
)
{
HRESULT
hr
;
PIN_INFO
piInput
;
/* pTransformFilter is already allocated */
pParser
->
clsid
=
*
pClsid
;
pParser
->
lpVtbl
=
&
Parser_Vtbl
;
pParser
->
lpVtbl
=
Parser_Vtbl
;
pParser
->
refCount
=
1
;
InitializeCriticalSection
(
&
pParser
->
csFilter
);
pParser
->
csFilter
.
DebugInfo
->
Spare
[
0
]
=
(
DWORD_PTR
)(
__FILE__
": ParserImpl.csFilter"
);
pParser
->
state
=
State_Stopped
;
pParser
->
pClock
=
NULL
;
pParser
->
fnCleanup
=
fnCleanup
;
pParser
->
fnDisconnect
=
fnDisconnect
;
ZeroMemory
(
&
pParser
->
filterInfo
,
sizeof
(
FILTER_INFO
));
...
...
@@ -109,7 +106,7 @@ HRESULT Parser_Create(ParserImpl* pParser, const CLSID* pClsid, PFN_PROCESS_SAMP
return
hr
;
}
static
HRESULT
WINAPI
Parser_QueryInterface
(
IBaseFilter
*
iface
,
REFIID
riid
,
LPVOID
*
ppv
)
HRESULT
WINAPI
Parser_QueryInterface
(
IBaseFilter
*
iface
,
REFIID
riid
,
LPVOID
*
ppv
)
{
ParserImpl
*
This
=
(
ParserImpl
*
)
iface
;
TRACE
(
"(%s, %p)
\n
"
,
qzdebugstr_guid
(
riid
),
ppv
);
...
...
@@ -139,7 +136,7 @@ static HRESULT WINAPI Parser_QueryInterface(IBaseFilter * iface, REFIID riid, LP
return
E_NOINTERFACE
;
}
static
ULONG
WINAPI
Parser_AddRef
(
IBaseFilter
*
iface
)
ULONG
WINAPI
Parser_AddRef
(
IBaseFilter
*
iface
)
{
ParserImpl
*
This
=
(
ParserImpl
*
)
iface
;
ULONG
refCount
=
InterlockedIncrement
(
&
This
->
refCount
);
...
...
@@ -149,55 +146,48 @@ static ULONG WINAPI Parser_AddRef(IBaseFilter * iface)
return
refCount
;
}
static
ULONG
WINAPI
Parser_Release
(
IBaseFilter
*
iface
)
void
Parser_Destroy
(
ParserImpl
*
This
)
{
ParserImpl
*
This
=
(
ParserImpl
*
)
iface
;
ULONG
refCount
=
InterlockedDecrement
(
&
This
->
refCount
);
IPin
*
connected
=
NULL
;
TRACE
(
"(%p)->() Release from %d
\n
"
,
This
,
refCount
+
1
);
if
(
!
refCount
)
if
(
This
->
pClock
)
IReferenceClock_Release
(
This
->
pClock
);
/* Don't need to clean up output pins, freeing input pin will do that */
IPin_ConnectedTo
((
IPin
*
)
This
->
pInputPin
,
&
connected
);
if
(
connected
)
{
ULONG
i
;
IPin_Disconnect
(
connected
);
IPin_Release
(
connected
);
IPin_Disconnect
((
IPin
*
)
This
->
pInputPin
);
}
IPin_Release
((
IPin
*
)
This
->
pInputPin
);
CoTaskMemFree
(
This
->
ppPins
);
This
->
lpVtbl
=
NULL
;
if
(
This
->
fnCleanup
)
This
->
fnCleanup
(
This
);
This
->
csFilter
.
DebugInfo
->
Spare
[
0
]
=
0
;
DeleteCriticalSection
(
&
This
->
csFilter
);
if
(
This
->
pClock
)
IReferenceClock_Release
(
This
->
pClock
);
for
(
i
=
0
;
i
<
This
->
cStreams
+
1
;
i
++
)
{
IPin
*
pConnectedTo
;
TRACE
(
"Destroying parser
\n
"
);
CoTaskMemFree
(
This
);
}
if
(
SUCCEEDED
(
IPin_ConnectedTo
(
This
->
ppPins
[
i
],
&
pConnectedTo
)))
{
IPin_Disconnect
(
pConnectedTo
);
IPin_Release
(
pConnectedTo
);
}
IPin_Disconnect
(
This
->
ppPins
[
i
]);
ULONG
WINAPI
Parser_Release
(
IBaseFilter
*
iface
)
{
ParserImpl
*
This
=
(
ParserImpl
*
)
iface
;
ULONG
refCount
=
InterlockedDecrement
(
&
This
->
refCount
);
IPin_Release
(
This
->
ppPins
[
i
]);
}
CoTaskMemFree
(
This
->
ppPins
);
This
->
lpVtbl
=
NULL
;
TRACE
(
"(%p)->() Release from %d
\n
"
,
This
,
refCount
+
1
);
This
->
csFilter
.
DebugInfo
->
Spare
[
0
]
=
0
;
DeleteCriticalSection
(
&
This
->
csFilter
);
TRACE
(
"Destroying parser
\n
"
);
CoTaskMemFree
(
This
);
return
0
;
}
else
return
refCount
;
if
(
!
refCount
)
Parser_Destroy
(
This
);
return
refCount
;
}
/** IPersist methods **/
static
HRESULT
WINAPI
Parser_GetClassID
(
IBaseFilter
*
iface
,
CLSID
*
pClsid
)
HRESULT
WINAPI
Parser_GetClassID
(
IBaseFilter
*
iface
,
CLSID
*
pClsid
)
{
ParserImpl
*
This
=
(
ParserImpl
*
)
iface
;
...
...
@@ -210,7 +200,7 @@ static HRESULT WINAPI Parser_GetClassID(IBaseFilter * iface, CLSID * pClsid)
/** IMediaFilter methods **/
static
HRESULT
WINAPI
Parser_Stop
(
IBaseFilter
*
iface
)
HRESULT
WINAPI
Parser_Stop
(
IBaseFilter
*
iface
)
{
HRESULT
hr
;
ParserImpl
*
This
=
(
ParserImpl
*
)
iface
;
...
...
@@ -236,7 +226,7 @@ static HRESULT WINAPI Parser_Stop(IBaseFilter * iface)
return
hr
;
}
static
HRESULT
WINAPI
Parser_Pause
(
IBaseFilter
*
iface
)
HRESULT
WINAPI
Parser_Pause
(
IBaseFilter
*
iface
)
{
HRESULT
hr
=
S_OK
;
ParserImpl
*
This
=
(
ParserImpl
*
)
iface
;
...
...
@@ -271,7 +261,7 @@ static HRESULT WINAPI Parser_Pause(IBaseFilter * iface)
return
hr
;
}
static
HRESULT
WINAPI
Parser_Run
(
IBaseFilter
*
iface
,
REFERENCE_TIME
tStart
)
HRESULT
WINAPI
Parser_Run
(
IBaseFilter
*
iface
,
REFERENCE_TIME
tStart
)
{
HRESULT
hr
=
S_OK
;
ParserImpl
*
This
=
(
ParserImpl
*
)
iface
;
...
...
@@ -324,7 +314,7 @@ static HRESULT WINAPI Parser_Run(IBaseFilter * iface, REFERENCE_TIME tStart)
return
hr
;
}
static
HRESULT
WINAPI
Parser_GetState
(
IBaseFilter
*
iface
,
DWORD
dwMilliSecsTimeout
,
FILTER_STATE
*
pState
)
HRESULT
WINAPI
Parser_GetState
(
IBaseFilter
*
iface
,
DWORD
dwMilliSecsTimeout
,
FILTER_STATE
*
pState
)
{
ParserImpl
*
This
=
(
ParserImpl
*
)
iface
;
PullPin
*
pin
=
(
PullPin
*
)
This
->
ppPins
[
0
];
...
...
@@ -346,7 +336,7 @@ static HRESULT WINAPI Parser_GetState(IBaseFilter * iface, DWORD dwMilliSecsTime
return
hr
;
}
static
HRESULT
WINAPI
Parser_SetSyncSource
(
IBaseFilter
*
iface
,
IReferenceClock
*
pClock
)
HRESULT
WINAPI
Parser_SetSyncSource
(
IBaseFilter
*
iface
,
IReferenceClock
*
pClock
)
{
ParserImpl
*
This
=
(
ParserImpl
*
)
iface
;
PullPin
*
pin
=
(
PullPin
*
)
This
->
ppPins
[
0
];
...
...
@@ -368,7 +358,7 @@ static HRESULT WINAPI Parser_SetSyncSource(IBaseFilter * iface, IReferenceClock
return
S_OK
;
}
static
HRESULT
WINAPI
Parser_GetSyncSource
(
IBaseFilter
*
iface
,
IReferenceClock
**
ppClock
)
HRESULT
WINAPI
Parser_GetSyncSource
(
IBaseFilter
*
iface
,
IReferenceClock
**
ppClock
)
{
ParserImpl
*
This
=
(
ParserImpl
*
)
iface
;
...
...
@@ -387,7 +377,7 @@ static HRESULT WINAPI Parser_GetSyncSource(IBaseFilter * iface, IReferenceClock
/** IBaseFilter implementation **/
static
HRESULT
WINAPI
Parser_EnumPins
(
IBaseFilter
*
iface
,
IEnumPins
**
ppEnum
)
HRESULT
WINAPI
Parser_EnumPins
(
IBaseFilter
*
iface
,
IEnumPins
**
ppEnum
)
{
ENUMPINDETAILS
epd
;
ParserImpl
*
This
=
(
ParserImpl
*
)
iface
;
...
...
@@ -399,7 +389,7 @@ static HRESULT WINAPI Parser_EnumPins(IBaseFilter * iface, IEnumPins **ppEnum)
return
IEnumPinsImpl_Construct
(
&
epd
,
ppEnum
);
}
static
HRESULT
WINAPI
Parser_FindPin
(
IBaseFilter
*
iface
,
LPCWSTR
Id
,
IPin
**
ppPin
)
HRESULT
WINAPI
Parser_FindPin
(
IBaseFilter
*
iface
,
LPCWSTR
Id
,
IPin
**
ppPin
)
{
FIXME
(
"(%p)->(%s,%p)
\n
"
,
iface
,
debugstr_w
(
Id
),
ppPin
);
...
...
@@ -408,7 +398,7 @@ static HRESULT WINAPI Parser_FindPin(IBaseFilter * iface, LPCWSTR Id, IPin **ppP
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
Parser_QueryFilterInfo
(
IBaseFilter
*
iface
,
FILTER_INFO
*
pInfo
)
HRESULT
WINAPI
Parser_QueryFilterInfo
(
IBaseFilter
*
iface
,
FILTER_INFO
*
pInfo
)
{
ParserImpl
*
This
=
(
ParserImpl
*
)
iface
;
...
...
@@ -423,7 +413,7 @@ static HRESULT WINAPI Parser_QueryFilterInfo(IBaseFilter * iface, FILTER_INFO *p
return
S_OK
;
}
static
HRESULT
WINAPI
Parser_JoinFilterGraph
(
IBaseFilter
*
iface
,
IFilterGraph
*
pGraph
,
LPCWSTR
pName
)
HRESULT
WINAPI
Parser_JoinFilterGraph
(
IBaseFilter
*
iface
,
IFilterGraph
*
pGraph
,
LPCWSTR
pName
)
{
HRESULT
hr
=
S_OK
;
ParserImpl
*
This
=
(
ParserImpl
*
)
iface
;
...
...
@@ -443,31 +433,12 @@ static HRESULT WINAPI Parser_JoinFilterGraph(IBaseFilter * iface, IFilterGraph *
return
hr
;
}
static
HRESULT
WINAPI
Parser_QueryVendorInfo
(
IBaseFilter
*
iface
,
LPWSTR
*
pVendorInfo
)
HRESULT
WINAPI
Parser_QueryVendorInfo
(
IBaseFilter
*
iface
,
LPWSTR
*
pVendorInfo
)
{
TRACE
(
"(%p)
\n
"
,
pVendorInfo
);
return
E_NOTIMPL
;
}
static
const
IBaseFilterVtbl
Parser_Vtbl
=
{
Parser_QueryInterface
,
Parser_AddRef
,
Parser_Release
,
Parser_GetClassID
,
Parser_Stop
,
Parser_Pause
,
Parser_Run
,
Parser_GetState
,
Parser_SetSyncSource
,
Parser_GetSyncSource
,
Parser_EnumPins
,
Parser_FindPin
,
Parser_QueryFilterInfo
,
Parser_JoinFilterGraph
,
Parser_QueryVendorInfo
};
HRESULT
Parser_AddPin
(
ParserImpl
*
This
,
const
PIN_INFO
*
piOutput
,
ALLOCATOR_PROPERTIES
*
props
,
const
AM_MEDIA_TYPE
*
amt
)
{
IPin
**
ppOldPins
;
...
...
dlls/quartz/parser.h
View file @
1f136a57
...
...
@@ -28,7 +28,7 @@ typedef HRESULT (*PFN_DISCONNECT) (LPVOID iface);
struct
ParserImpl
{
const
IBaseFilterVtbl
*
lpVtbl
;
const
IBaseFilterVtbl
*
lpVtbl
;
LONG
refCount
;
CRITICAL_SECTION
csFilter
;
...
...
@@ -54,7 +54,26 @@ typedef struct Parser_OutputPin
DWORD
dwSamplesProcessed
;
}
Parser_OutputPin
;
HRESULT
Parser_AddPin
(
ParserImpl
*
This
,
const
PIN_INFO
*
piOutput
,
ALLOCATOR_PROPERTIES
*
props
,
const
AM_MEDIA_TYPE
*
amt
);
extern
HRESULT
Parser_AddPin
(
ParserImpl
*
This
,
const
PIN_INFO
*
piOutput
,
ALLOCATOR_PROPERTIES
*
props
,
const
AM_MEDIA_TYPE
*
amt
);
HRESULT
Parser_Create
(
ParserImpl
*
,
const
CLSID
*
,
PFN_PROCESS_SAMPLE
,
PFN_QUERY_ACCEPT
,
PFN_PRE_CONNECT
,
PFN_CLEANUP
,
PFN_DISCONNECT
,
REQUESTPROC
,
CHANGEPROC
stop
,
CHANGEPROC
current
,
CHANGEPROC
rate
);
extern
HRESULT
Parser_Create
(
ParserImpl
*
,
const
IBaseFilterVtbl
*
,
const
CLSID
*
,
PFN_PROCESS_SAMPLE
,
PFN_QUERY_ACCEPT
,
PFN_PRE_CONNECT
,
PFN_CLEANUP
,
PFN_DISCONNECT
,
REQUESTPROC
,
CHANGEPROC
stop
,
CHANGEPROC
current
,
CHANGEPROC
rate
);
/* Override the _Release function and call this when releasing */
extern
void
Parser_Destroy
(
ParserImpl
*
This
);
extern
HRESULT
WINAPI
Parser_QueryInterface
(
IBaseFilter
*
iface
,
REFIID
riid
,
LPVOID
*
ppv
);
extern
ULONG
WINAPI
Parser_AddRef
(
IBaseFilter
*
iface
);
extern
ULONG
WINAPI
Parser_Release
(
IBaseFilter
*
iface
);
extern
HRESULT
WINAPI
Parser_GetClassID
(
IBaseFilter
*
iface
,
CLSID
*
pClsid
);
extern
HRESULT
WINAPI
Parser_Stop
(
IBaseFilter
*
iface
);
extern
HRESULT
WINAPI
Parser_Pause
(
IBaseFilter
*
iface
);
extern
HRESULT
WINAPI
Parser_Run
(
IBaseFilter
*
iface
,
REFERENCE_TIME
tStart
);
extern
HRESULT
WINAPI
Parser_GetState
(
IBaseFilter
*
iface
,
DWORD
dwMilliSecsTimeout
,
FILTER_STATE
*
pState
);
extern
HRESULT
WINAPI
Parser_SetSyncSource
(
IBaseFilter
*
iface
,
IReferenceClock
*
pClock
);
extern
HRESULT
WINAPI
Parser_GetSyncSource
(
IBaseFilter
*
iface
,
IReferenceClock
**
ppClock
);
extern
HRESULT
WINAPI
Parser_EnumPins
(
IBaseFilter
*
iface
,
IEnumPins
**
ppEnum
);
extern
HRESULT
WINAPI
Parser_FindPin
(
IBaseFilter
*
iface
,
LPCWSTR
Id
,
IPin
**
ppPin
);
extern
HRESULT
WINAPI
Parser_QueryFilterInfo
(
IBaseFilter
*
iface
,
FILTER_INFO
*
pInfo
);
extern
HRESULT
WINAPI
Parser_JoinFilterGraph
(
IBaseFilter
*
iface
,
IFilterGraph
*
pGraph
,
LPCWSTR
pName
);
extern
HRESULT
WINAPI
Parser_QueryVendorInfo
(
IBaseFilter
*
iface
,
LPWSTR
*
pVendorInfo
);
dlls/quartz/waveparser.c
View file @
1f136a57
...
...
@@ -423,6 +423,25 @@ static HRESULT WAVEParser_disconnect(LPVOID iface)
return
S_OK
;
}
static
const
IBaseFilterVtbl
WAVEParser_Vtbl
=
{
Parser_QueryInterface
,
Parser_AddRef
,
Parser_Release
,
Parser_GetClassID
,
Parser_Stop
,
Parser_Pause
,
Parser_Run
,
Parser_GetState
,
Parser_SetSyncSource
,
Parser_GetSyncSource
,
Parser_EnumPins
,
Parser_FindPin
,
Parser_QueryFilterInfo
,
Parser_JoinFilterGraph
,
Parser_QueryVendorInfo
};
HRESULT
WAVEParser_create
(
IUnknown
*
pUnkOuter
,
LPVOID
*
ppv
)
{
HRESULT
hr
;
...
...
@@ -440,7 +459,7 @@ HRESULT WAVEParser_create(IUnknown * pUnkOuter, LPVOID * ppv)
This
->
pCurrentSample
=
NULL
;
hr
=
Parser_Create
(
&
(
This
->
Parser
),
&
CLSID_WAVEParser
,
WAVEParser_Sample
,
WAVEParser_QueryAccept
,
WAVEParser_InputPin_PreConnect
,
WAVEParser_Cleanup
,
WAVEParser_disconnect
,
WAVEParser_first_request
,
NULL
,
WAVEParserImpl_seek
,
NULL
);
hr
=
Parser_Create
(
&
(
This
->
Parser
),
&
WAVEParser_Vtbl
,
&
CLSID_WAVEParser
,
WAVEParser_Sample
,
WAVEParser_QueryAccept
,
WAVEParser_InputPin_PreConnect
,
WAVEParser_Cleanup
,
WAVEParser_disconnect
,
WAVEParser_first_request
,
NULL
,
WAVEParserImpl_seek
,
NULL
);
if
(
FAILED
(
hr
))
return
hr
;
...
...
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