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
50cd67d0
Commit
50cd67d0
authored
Sep 05, 2022
by
Nikolay Sivov
Committed by
Alexandre Julliard
Sep 05, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
evr/filter: Notify mixer and presenter on state changes.
Signed-off-by:
Nikolay Sivov
<
nsivov@codeweavers.com
>
parent
57d1bad1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
35 additions
and
0 deletions
+35
-0
evr.c
dlls/evr/evr.c
+35
-0
No files found.
dlls/evr/evr.c
View file @
50cd67d0
...
...
@@ -312,6 +312,38 @@ static HRESULT evr_query_accept(struct strmbase_renderer *iface, const AM_MEDIA_
return
hr
;
}
/* FIXME: errors should be propagated from init/start/stop handlers. */
static
void
evr_init_stream
(
struct
strmbase_renderer
*
iface
)
{
struct
evr
*
filter
=
impl_from_strmbase_renderer
(
iface
);
if
(
!
filter
->
mixer
)
return
;
if
(
SUCCEEDED
(
IMFTransform_ProcessMessage
(
filter
->
mixer
,
MFT_MESSAGE_NOTIFY_BEGIN_STREAMING
,
0
)))
IMFVideoPresenter_ProcessMessage
(
filter
->
presenter
,
MFVP_MESSAGE_BEGINSTREAMING
,
0
);
}
static
void
evr_start_stream
(
struct
strmbase_renderer
*
iface
)
{
struct
evr
*
filter
=
impl_from_strmbase_renderer
(
iface
);
if
(
filter
->
mixer
)
IMFTransform_ProcessMessage
(
filter
->
mixer
,
MFT_MESSAGE_NOTIFY_START_OF_STREAM
,
0
);
}
static
void
evr_stop_stream
(
struct
strmbase_renderer
*
iface
)
{
struct
evr
*
filter
=
impl_from_strmbase_renderer
(
iface
);
if
(
!
filter
->
mixer
)
return
;
if
(
SUCCEEDED
(
IMFTransform_ProcessMessage
(
filter
->
mixer
,
MFT_MESSAGE_NOTIFY_END_OF_STREAM
,
0
)))
{
if
(
SUCCEEDED
(
IMFVideoPresenter_ProcessMessage
(
filter
->
presenter
,
MFVP_MESSAGE_ENDSTREAMING
,
0
)))
IMFTransform_ProcessMessage
(
filter
->
mixer
,
MFT_MESSAGE_NOTIFY_END_STREAMING
,
0
);
}
}
static
const
struct
strmbase_renderer_ops
renderer_ops
=
{
.
renderer_query_accept
=
evr_query_accept
,
...
...
@@ -320,6 +352,9 @@ static const struct strmbase_renderer_ops renderer_ops =
.
renderer_connect
=
evr_connect
,
.
renderer_disconnect
=
evr_disconnect
,
.
renderer_destroy
=
evr_destroy
,
.
renderer_init_stream
=
evr_init_stream
,
.
renderer_start_stream
=
evr_start_stream
,
.
renderer_stop_stream
=
evr_stop_stream
,
};
static
struct
evr
*
impl_from_IEVRFilterConfig
(
IEVRFilterConfig
*
iface
)
...
...
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