Commit graph

92 commits

Author SHA1 Message Date
Jacek Caban e3af07501a mfmediaengine: Avoid implicit casts in IMFAttributes_GetUINT32 calls. 2024-01-31 12:04:32 +01:00
Yuxuan Shui e8943a6463 mfmediaengine: Don't send event notify when engine is shutdown.
I've also tried saving a cancel cookie from `BeginCreateObject*` and using it to cancel the
operation in engine shutdown. However there are 2 problems:

  1. Callback might still get called after `CancelObjectCreation`. Microsoft's
     [own documentation](https://learn.microsoft.com/en-us/windows/win32/api/mfidl/nf-mfidl-imfsourceresolver-cancelobjectcreation)
     says as much:
       > Because these methods are asynchronous, however, they might be completed before the
       > operation can be canceled. Therefore, your callback might still be invoked after you
       > call this method.
  2. Our implementations of `BeginCreateObject*` are not cancellable. They call either
     `MFPutWorkItem` or `IMFByteStream_BeginRead`, neight of which provides cancellation.
     (and our `CancelObjectCreation` doesn't actually work. AsyncResult objects aren't added to
     `handler->results` list until they are completed, which means any attempts to cancel an
     yet-to-be-completed object creation will always fail with `MF_E_UNEXPECTED`)
2023-10-27 11:33:41 -05:00
Nikolay Sivov 7773139261 mfmediaengine: Mask some source flags returned from GetResourceCharacteristics().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-10-19 22:43:57 +02:00
Nikolay Sivov 48e110e0fd mfmediaengine: Use extension object in CanPlayType(). 2023-10-16 11:15:08 +02:00
Nikolay Sivov b5d4394913 mfmediaengine: Keep engine extension pointer. 2023-10-16 11:15:08 +02:00
Zhiyi Zhang 5daa21f961 mfmediaengine: Implement media_engine_GetSeekable(). 2023-08-14 13:30:23 +02:00
Zhiyi Zhang a2eec34678 mfmediaengine: Use a mftime_to_seconds() helper to convert time. 2023-08-08 21:11:31 +09:00
Bernhard Kölbl 13106b2b38 mfmediaengine: Implement RemoveAllEffects().
Signed-off-by: Bernhard Kölbl <bkoelbl@codeweavers.com>
2023-08-08 21:11:30 +09:00
Francois Gouget 37885b04f9 mfmediaengine: Add the trailing linefeed to a WARN() message.
Also add a trailing period for consistency with this module's other
messages.
2023-07-27 13:12:06 +09:00
Bernhard Kölbl 91a84cff95 mfmediaengine: Add support for inserting audio effects. 2023-07-17 09:40:01 +02:00
Bernhard Kölbl de1dd6cbf7 mfmediaengine: Add support for inserting video effects. 2023-07-06 20:54:29 +02:00
Nikolay Sivov a79d27c04a mfmediaengine: Implement GetNumberOfStreams().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-18 09:14:32 -05:00
Shaun Ren 5ef7a45bc9 mfmediaengine: Pause the session in media_engine_Pause. 2022-12-21 18:24:38 +01:00
Shaun Ren adbc4b666d mfmediaengine: Change media_engine_Shutdown FIXME to TRACE. 2022-12-21 18:24:38 +01:00
Bernhard Kölbl 12c28aa22f mfmediaengine: Pass volume changes to media session. 2022-11-29 21:33:58 +01:00
Rémi Bernon 2f5d06af1d mfmediaengine: Remove vertical flipping of video frames. 2022-10-14 18:03:38 +02:00
Nikolay Sivov 7608e775ab mfmediaengine: Implement GetStreamAttribute().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-18 09:31:42 +01:00
Nikolay Sivov 2086698e7d mfmediaengine: Implement GetPresentationAttribute().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-18 09:31:40 +01:00
Nikolay Sivov 40c9923982 mfmediaengine: Handle realtime mode flag.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-18 09:31:37 +01:00
Nikolay Sivov 1d1eebf38a mfmediaengine: Implement GetResourceCharacteristics().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-18 09:31:34 +01:00
Nikolay Sivov 9a7d166e6b mfmediaengine: Shutdown media source when clearing current presentation.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-18 09:31:31 +01:00
Eric Pouech bbfb164e0a mfmediaengine: Build without -DWINE_NO_LONG_TYPES.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-11 10:57:17 +01:00
Nikolay Sivov 0b98026e2d mfmediaengine: Use resolver functionality for content type resolution.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-10 10:44:10 +01:00
Eric Pouech 223d2945b5 mfmediaengine: Use correct integral type.
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-02 13:47:27 +01:00
Nikolay Sivov 9b17bd1754 mfmediaengine: Improve AddRange() behavior for intersecting ranges.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:21 +01:00
Nikolay Sivov 4c61027967 mfmediaengine: Handle shutdown state in a few stubs.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:21 +01:00
Nikolay Sivov a4890ac799 mfmediaengine: Handle shutdown state in GetBuffered().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:21 +01:00
Nikolay Sivov 318aa0f387 mfmediaengine: Handle shutdown state in Pause().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:21 +01:00
Nikolay Sivov 0f4f7ca937 mfmediaengine: Handle shutdown state in Play().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:21 +01:00
Nikolay Sivov 86c0afc797 mfmediaengine: Handle shutdown state in GetCurrentSource().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:20 +01:00
Nikolay Sivov 6938f9b903 mfmediaengine: Implement audio renderer configuration methods.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 17:58:33 +01:00
Nikolay Sivov 9bf8fdaa8e mfmediaengine: Implement SetSourceFromByteStream().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 17:58:31 +01:00
Giovanni Mascellani 598325385b mfmediaengine: Add a IMFMediaEngineEx stub.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-21 13:15:08 +01:00
Nikolay Sivov ef11c41d41 mfmediaengine: Add IMFGetService stub.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-20 18:15:40 +01:00
Giovanni Mascellani 792546f612 mfmediaengine: Fix a memory leak.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 10:39:42 +01:00
Nikolay Sivov aeabe991ff mfmediaengine: Handle B8G8R8X8 format for d3d11 texture output.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-22 21:12:34 +02:00
Nikolay Sivov bf824dbb92 mfmediaengine: Handle Play() when called before topology is set.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-22 21:12:31 +02:00
Nikolay Sivov f56c12c847 mfmediaengine: Update network state when loading the media source.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-20 21:51:16 +02:00
Nikolay Sivov 04547b424d mfmediaengine: Handle shutdown state in SetSource().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-20 21:51:13 +02:00
Nikolay Sivov 86cbfafe92 mfmediaengine: Enable source type enumeration.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-02 20:16:07 +02:00
Nikolay Sivov c7339d6281 mfmediaengine: Add missing initialization of vertex buffer components (Coverity).
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-31 17:53:54 +02:00
Nikolay Sivov 2d52578387 mfmediaengine: Initial implementation of TransferVideoFrame() for ID3D11Texture2D destination.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-17 18:49:10 +02:00
Nikolay Sivov d6eb5947e1 mfmediaengine: Explicitly store output video format.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-17 18:49:09 +02:00
Nikolay Sivov b20c478bfd mfmediaengine: Keep device manager reference.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-17 18:49:09 +02:00
Nikolay Sivov c7023042e1 mfmediaengine: Keep latest video frame buffer.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-17 18:49:09 +02:00
Alexandre Julliard bd6b53740c winecrt0: Add a default implementation for DllCanUnloadNow().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-30 22:59:50 +02:00
Nikolay Sivov e3f3e2d3b9 mfmediaengine: Use CRT function for heap allocations.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-08 12:14:31 +02:00
Alexandre Julliard 0ace8475f9 mfmediaengine: Use --prefer-native instead of DLL_WINE_PREATTACH.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-23 10:06:25 +01:00
Nikolay Sivov 0ec86a165a mfmediaengine: Fix vtable variables types.
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 21ae610d14 mfmediaengine: Use consistent format for traces.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-29 13:47:14 +01:00