Commit Graph

151 Commits

Author SHA1 Message Date
Nikolay Sivov 9c12ca85e5 mf/session: Initial implementation of playback rate change.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-15 22:59:53 +01:00
Nikolay Sivov 72afc3f27d mf/session: Use nameless union for command structure.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-15 22:59:53 +01:00
Rémi Bernon 899ae42b20 mf: Handle MESourceSeeked and MEStreamSeeked state change events.
If a session is paused then started again, or if a start position is
provided we wait forever for the source to send a MESourceStarted event,
when it sends a MESourceSeeked instead.

This causes a deadlock in Bright Memory: Infinite as the game then waits
for the Start command to complete, while the session is stuck in the
SESSION_STATE_STARTING_SOURCES state.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-14 21:20:42 +01:00
Eric Pouech ef825f49da mf: Build without -DWINE_NO_LONG_TYPES.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-09 18:37:33 +01:00
Eric Pouech 8b17e3e821 mf: Use correct integral types.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-03 10:50:31 +01:00
Nikolay Sivov 84f0f11568 mf: Move standard quality manager stub to a separate file.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 21:53:55 +01:00
Nikolay Sivov d1662e4beb mf/session: Expose rate control interfaces.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-09 11:16:39 +01:00
Nikolay Sivov f2bb763c9c mf/session: Get rid of some interface pointers casts.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 10:49:26 +01:00
Nikolay Sivov d8bbbfd589 mf/session: Implement IsRateSupported().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 10:49:26 +01:00
Andrew Eikum 43993feb2c mf/session: Forward MR_STREAM_VOLUME_SERVICE requests to SAR node.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-28 17:51:53 +02:00
Nikolay Sivov b3e321dfd5 mf/session: Fail start requests when no topology was set.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-21 17:44:34 +02:00
Nikolay Sivov 10ba5a90fc mf/session: Add a helper to send events while completing commands.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-21 17:44:34 +02:00
Nikolay Sivov 64e1e4d62d mf/session: Use better failure code for rendering node service requests.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-19 12:23:13 +02:00
Nikolay Sivov 8b6f276290 mf/session: Forward MR_POLICY_VOLUME_SERVICE service requests to the SAR node.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-19 12:23:11 +02:00
Nikolay Sivov 396df44c7b mf/session: Fix typo in a trace message.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-23 20:44:58 +02:00
Nikolay Sivov 7dba45f6ec mf/session: Treat only started/paused/stopped as valid states for start command.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-23 15:14:43 +02:00
Nikolay Sivov 5eec2141dc mf/session: Complete start command when called from invalid state.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-23 15:14:43 +02:00
Rémi Bernon d78e5d999c mf/session: Complete session_start command even if already started.
Seek is not implemented but not completing the command makes pending or
later queued commands to not be executed.

This partially fixes Guilty Gear Strive being stuck on character
selection screen.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-23 15:14:43 +02:00
Nikolay Sivov 04a26628d1 mf/session: Fix pause command handling from invalid states.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-23 15:14:43 +02:00
Nikolay Sivov cba7616d1a mf/session: Send failed event when clearing topologies from closed state.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-23 15:14:43 +02:00
Nikolay Sivov bab4f2939e mf: Use CRT allocation functions.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-17 20:01:37 +02:00
Nikolay Sivov 09bb5d949f mf/session: Reset topology status back to READY when stopped.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-15 20:42:25 +02:00
Nikolay Sivov f0ebd66189 mf/session: Reset per-node end of stream flags when stopped.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-15 20:42:25 +02:00
Giovanni Mascellani 6a68e345f8 mf/session: Reset END_OF_PRESENTATION flags when stopped.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-15 20:42:25 +02:00
Nikolay Sivov 0b774df387 mf: Move presentation clock implementation to a separate file.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-15 20:42:25 +02:00
Giovanni Mascellani bcd2b99d95 mf/session: Fix computing fastest and slowest presentation rates.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-08 22:28:44 +02:00
Nikolay Sivov 20a1eb3b25 mf/session: Do not drop pending commands when clearing current presentation.
Calling Start() short after SetTopology() has a good chance of getting lost,
because clearing logic will drop all pending commands. This is easy to reproduce
with IMFPMediaPlayer, which works reliably on Windows.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-28 21:53:07 +02:00
Nikolay Sivov 662095c6b3 mf/session: Forward more events to the application.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-12 19:34:35 +02:00
Nikolay Sivov 6ff7575ae8 mf/session: Forward MEReconnect* events to the application.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-12 19:34:33 +02:00
Nikolay Sivov a2728cdece mf/session: Handle shutdown state on GetService().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-12 19:34:31 +02:00
Derek Lesho 706fd3dcce mf/session: Prefer transform-provided sample path.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-01 18:34:06 +02:00
Nikolay Sivov 4634fd4ccb mf/session: Handle MF_TOPONODE_DISABLE_PREROLL on sink nodes.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-29 09:26:28 +02:00
Nikolay Sivov ec5bd49bf8 mf/session: Consider audio block alignment when creating output buffers for transforms.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-19 11:06:35 +01:00
Nikolay Sivov 10f9a88de0 mf: Add missing const for vtable structures.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-02 21:09:37 +01:00
Nikolay Sivov 08088da4db mf: Implement NotifyTopology() for the standard quality manager.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-01 17:10:17 +01:00
Nikolay Sivov 144dcc1a26 mf: Subscribe standard quality manager to clock state change events.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-01 17:10:14 +01:00
Nikolay Sivov a30d43c60b mf: Add shutdown state for the standard quality manager.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-01 17:10:09 +01:00
Nikolay Sivov 9446458f75 mf/session: Add a stub for IMFTopologyNodeAttributeEditor.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-29 13:47:16 +01:00
Nikolay Sivov c55dbcdb9a mf: Add a helper to get associated topology node object.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-15 16:14:39 +01:00
Nikolay Sivov 9177e80de8 mf/session: Propagate allocator initialization failure code (Coverity).
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-26 23:25:24 +01:00
Nikolay Sivov 98f5112c1a mf/session: Fix comment for the stop helper.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-23 21:05:05 +01:00
Nikolay Sivov 01563ba91a mf/session: Shutdown current topology when clearing presentation.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-20 19:01:05 +01:00
Nikolay Sivov 39cac934ef mf/session: Keep a reference to the original activation object when binding sink nodes.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-20 19:01:05 +01:00
Nikolay Sivov b3461c4864 mf/session: Shutdown and release presentation clock on session shutdown.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-20 19:01:05 +01:00
Derek Lesho 86e6c0bc28 mf/session: Call session_command_complete after NotifyTopology command.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-16 22:24:45 +01:00
Nikolay Sivov e272e1a1c3 mf/session: Implement support for sinks that provide sample allocators.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-12 13:58:27 +01:00
Nikolay Sivov 9008b2c9b7 mf/session: Query and initialize sample allocators for capable output nodes.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-12 13:58:25 +01:00
Nikolay Sivov 3b230b58c8 mf/session: Forward MEQualityNotify event to the quality manager.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-11 21:14:58 +01:00
Nikolay Sivov fa0beb858e mf/session: Notify quality manager on input/output processing.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-11 21:14:58 +01:00
Nikolay Sivov fd22009339 mf/session: Notify quality manager when setting new topology.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-11 21:14:58 +01:00