Commit Graph

115 Commits

Author SHA1 Message Date
Nikolay Sivov 129e5660e3 mfreadwrite/reader: Add missing allocation check (Coverity).
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-12 19:35:21 +02:00
Nikolay Sivov 437bc14ac3 mfreadwrite: Use CRT functions 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
Giovanni Mascellani c35adbac8f mfreadwrite/tests: Fix testing of a source with one stream.
Even when a lower stream count was requested, most of the implementation
still used ARRAY_SIZE(source->streams) as actual count, so the
implemented behaviour was not the desired one. Also, it implied
undefined behaviour.

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-04-06 22:46:12 +02:00
Nikolay Sivov b50b65ab93 mfreadwrite/reader: Improve decoder output samples handling.
Equivalent of 706fd3dcce, but for the reader.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-02 21:13:43 +02:00
Nikolay Sivov 657a76ce23 mfreadwrite/reader: Use shared multi-threaded queue internally.
Using dedicated queue prevents potential lockups with event queue,
specifically when waiting on event queue for seek to finish blocks
events delivery.

The issue was diagnosed by Giovanni.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-26 16:48:30 +01:00
Giovanni Mascellani 06366bd16b mfreadwrite: Simplify iteration through streams.
This also fixes a bug happening when the reader has only one stream,
in which case the iteration body was not even executed once.

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-03-26 16:48:30 +01:00
Nikolay Sivov 016fe6af18 mfreadwrite/reader: Enable DXGI device manager path.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-23 20:58:34 +01:00
Nikolay Sivov 482f977b34 mfreadwrite/reader: Use current stream type to set up sample allocator.
It's normal to have incomplete type description for SetCurrentMediaType(),
with just major/subtype attributes. Allocator will need at least frame size.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-23 20:58:32 +01:00
Jacek Caban ee587da9e5 include: Use nameless unions in dxva2api.idl helpers.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50836
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 21:48:41 +01:00
Jacek Caban b39b9eea39 include: Don't default to WINE_NO_NAMELESS_EXTENSION for Wine build.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 21:48:38 +01:00
Giovanni Mascellani 1a7be75656 mfreadwrite: Unset seeking flag also on SourceStarted and SourceStopped.
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-03-22 20:38:45 +01:00
Nikolay Sivov ca143521ed mfreadwrite/reader: Consider audio block alignment when creating output buffers for the decoder.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 18:52:57 +01:00
Alexandre Julliard 768ff9ab12 mfreadwrite: Use --prefer_native instead of DLL_WINE_PREATTACH.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-02 10:54:47 +01:00
Nikolay Sivov a67d7c1533 mfreadwrite/reader: Add support for reading to SA-allocated samples.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-19 22:54:09 +01:00
Nikolay Sivov a0a6fad695 mfreadwrite/reader: Subscribe to allocator's release notifications.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-17 21:42:18 +01:00
Nikolay Sivov beb9c6578a mfreadwrite/reader: Create sample allocator for video streams.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-10 20:04:59 +01:00
Nikolay Sivov cf4fe13a41 mfreadwrite/reader: Keep a reference to configuration attributes.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-10 20:04:51 +01:00
Nikolay Sivov e89a41a963 mfreadwrite: Fix vtable variables types.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-01 17:10:31 +01:00
Nikolay Sivov 8999dd2ba0 mfreadwrite/reader: Implement GetServiceForStream() for stream objects.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-24 20:20:35 +01:00
Nikolay Sivov 1fceb12139 mfreadwrite/reader: Alternate between selected streams for MF_SOURCE_READER_ANY_STREAM requests.
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 28dcc19dfd mfreadwrite/tests: And some more tests for ReadSample() and failing requests.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-02 16:01:23 +01:00
Derek Lesho 03eaa2cc93 winegstreamer: Implement IMFMediaStream::RequestSample.
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-10-30 22:14:11 +01:00
Derek Lesho 9d7f98ee7f mfreadwrite: Abort ReadSample when unable to request any samples.
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-10-30 22:14:11 +01:00
Derek Lesho e2893c3452 winegstreamer: Implement IMFMediaSource::CreatePresentationDescriptor.
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-10-28 20:36:32 +01:00
Nikolay Sivov 82584160d4 mfreadwrite/tests: Add return value test (Coverity).
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-30 15:51:02 +02:00
Derek Lesho 2fb948e0ea mfreadwrite/reader: Add recognition of ftypemp42 mp4 header.
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-05-18 15:08:05 +02:00
Nikolay Sivov 855c9bd648 mfreadwrite/reader: Consider end-of-stream state when picking stream for MF_SOURCE_READER_ANY_STREAM requests.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-15 17:33:41 +02:00
Derek Lesho a2794b5eae mfreadwrite: Clear STREAM_FLAG_SAMPLE_REQUESTED flag on MEEndOfStream event.
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-04-17 21:05:38 +02:00
Nikolay Sivov f540d1615f mfreadwrite: Add support for seeking in Source Reader.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-06 21:21:42 +02:00
Nikolay Sivov 978d497d95 mfreadwrite: Implement MF_SOURCE_READER_ANY_STREAM for synchronous case.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-06 21:21:42 +02:00
Nikolay Sivov ee7b317293 mfreadwrite: Block recurring flush calls in async mode when flush is pending.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-03 20:16:35 +02:00
Nikolay Sivov 42edc14e04 mfreadwrite: Move source shutdown mode to reader flags.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-03 20:16:33 +02:00
Nikolay Sivov eb927dbb31 mfreadwrite: Handle async reads when flush is in progress.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-03 20:16:30 +02:00
Nikolay Sivov e81d2cf5bc mfreadwrite: Use default queue so submit flush commands.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-03 20:16:21 +02:00
Nikolay Sivov 10c6120910 mfreadwrite: Add stream index validation for Flush().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-03 20:16:00 +02:00
Derek Lesho 8e1761adc0 mfreadwrite: Fix flushing on MF_SOURCE_READER_ALL_STREAMS.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-01 22:19:40 +02:00
Nikolay Sivov 7186b2c4ab mfreadwrite: Pack stream selection state as flags.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-31 17:27:34 +02:00
Nikolay Sivov ce38c5c897 mfreadwrite: Implement MF_SOURCE_READER_ANY_STREAM for async mode.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-31 17:27:31 +02:00
Nikolay Sivov 4e72ea0f4a mfreadwrite: Use single reader lock for all streams.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-31 17:27:26 +02:00
Nikolay Sivov c362ce20ef mfreadwrite: Do not call async reader callback if source failed to start up.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-30 23:10:06 +02:00
Nikolay Sivov 120505ed6b mfreadwrite: Move Sink Writer stubs to separate file.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-26 21:19:15 +01:00
Nikolay Sivov 88299b0edc mfreadwrite: Forward some source events to async reader callback.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-26 21:19:11 +01:00
Nikolay Sivov 3ac77317b8 mfreadwrite: Autodetect ftyp(isom) as .mp4.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-25 15:25:41 +01:00
Nikolay Sivov 954ed23648 mfreadwrite: Implement reader flushing.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-25 15:25:39 +01:00
Nikolay Sivov 7998801440 mfreadwrite: Implement async reader mode.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-25 15:25:37 +01:00
Nikolay Sivov 767744513e mfreadwrite: Request one sample at a time from the stream.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-25 15:25:35 +01:00
Nikolay Sivov 63e0b3a71a mfreadwrite: Handle MEStreamTick event in source reader.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-25 15:25:32 +01:00
Nikolay Sivov 66de5a8ee8 mfreadwrite: Make pending response reader structure more generic.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-25 15:25:30 +01:00
Derek Lesho 915e1c782e mfreadwrite: Pass source samples through decoder as they arrive.
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-03-24 19:43:36 +01:00
Derek Lesho ecf70b83e2 mfreadwrite: Configure stream decoder on SetCurrentMediaType() if necessary.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-20 19:32:58 +01:00