Commit Graph

1468 Commits

Author SHA1 Message Date
Zebediah Figura 3a7f54947e strmbase/transform: Hold the streaming lock for the entirety of Receive().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-02 10:42:10 +01:00
Zebediah Figura 63a6b308e9 quartz/dsoundrender: Delegate IReferenceClock to the system clock.
For several reasons.

Firstly, the reference clock should still function when the filter is not
running.

Secondly, IDirectSoundBuffer::GetPositions() in practice returns very coarse
positions, both on Windows and on Wine. On my hardware, the resolution is
about 10ms, which, while suitable for the DirectSound renderer and probably
also any video renderers, is nevertheless actually coarser than
GetTickCount().

Thirdly, testing supports that the native DirectSound renderer returns a
timestamp from IReferenceClock::GetTime() that is more accurate than
IDirectSoundBuffer::GetPositions(). In fact, after dumping a large number of
different clock sources, I came to the conclusion that it is probably using
timeGetTime() as a source. On Wine that's identical to GetTickCount(), so we
may as well just delegate directly to the system clock.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-29 08:23:32 +01:00
Zebediah Figura 3f2b813da6 quartz/dsoundrender: Move DSoundRender_create() to avoid forward declarations.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-29 08:23:16 +01:00
Zebediah Figura d21dbf960b quartz/systemclock: Support COM aggregation.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-29 08:23:10 +01:00
Zebediah Figura 4d221c3108 strmbase: Get rid of BaseRendererImpl_EndOfStream().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-28 08:33:59 +01:00
Zebediah Figura dc8bd4598c strmbase: Get rid of BaseRendererImpl_EndFlush().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-28 08:33:56 +01:00
Zebediah Figura 09b39646b0 quartz/dsoundrender: Avoid taking the filter lock in IPin::EndOfStream().
IPin::EndOfStream() is called from a streaming thread. The streaming thread
should never take the filter lock.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-28 08:33:44 +01:00
Zebediah Figura b2b33c2623 quartz/avidec: Don't drop the "csReceive" mutex while calling IMemInputPin::Receive().
There's no reason to do this, and there may never have been.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-26 22:49:03 +01:00
Zebediah Figura 0509eb2904 quartz/avidec: Call IMemInputPin::Receive() directly.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-26 22:49:03 +01:00
Zebediah Figura 66eb752fe5 quartz/acmwrapper: Don't drop the "csReceive" mutex while calling IMemInputPin::Receive().
There's no reason to do this, and there may never have been.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-25 20:47:43 +01:00
Zebediah Figura 5cfdf95022 quartz/acmwrapper: Call IMemInputPin::Receive() directly.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-25 20:47:43 +01:00
Zebediah Figura bd83b11a23 strmbase: Return a strmbase_pin pointer from the filter_get_pin() callback.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-25 20:47:43 +01:00
Zebediah Figura 190fb605c3 quartz/tests: Fix some tests on w7u.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-22 23:02:07 +01:00
Zebediah Figura 239a6392a7 quartz/tests: Relax some more timings.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-22 23:01:59 +01:00
Zebediah Figura b909b2c5cf quartz/tests: Fix an invalid free.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-22 18:03:04 +01:00
Zebediah Figura 19826fd6b7 quartz/vmr9: Wait in Receive() while paused.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-22 09:03:49 +01:00
Zebediah Figura 6014c0a997 quartz/videorenderer: Wait in Receive() while paused.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-22 09:03:46 +01:00
Zebediah Figura b78dcbf269 quartz/videorenderer: Remove some dead code.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-22 09:03:42 +01:00
Zebediah Figura 0af834681c quartz/videorenderer: Get rid of filter state checks in VideoRenderer_DoRenderSample().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-22 09:03:36 +01:00
Zebediah Figura 608acdc83a quartz/videorenderer: Make VideoRenderer_SendSampleData() infallible.
We already rejected any other format types when connecting.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-22 09:03:29 +01:00
Zebediah Figura 866c4e2fde quartz/tests: Add some tests for flushing on the VMR9.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-21 09:34:03 +01:00
Zebediah Figura 2f5665aff6 quartz/tests: Add some tests for VMR9 filter state.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-21 09:34:00 +01:00
Zebediah Figura 21aa7a106f quartz/tests: Add some tests for VMR9 allocator negotiation.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-21 09:33:56 +01:00
Zebediah Figura 4f3dd5b3c5 quartz/tests: Add some tests for flushing on the VMR7.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-21 09:33:52 +01:00
Zebediah Figura 6bac591990 quartz/tests: Add some tests for VMR7 filter state.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-21 09:33:48 +01:00
Zebediah Figura 448fc5328d quartz/tests: Add some tests for allocator negotiation on the VMR7.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-21 09:33:42 +01:00
Zebediah Figura bcb05ad29b quartz/videorenderer: Avoid calling IPin::ConnectionMediaType() on our own pin.
Avoids leaking the format block.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-19 09:23:24 +01:00
Zebediah Figura 03f0479c34 strmbase: Rename the "mtCurrent" field of struct strmbase_pin to "mt".
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-19 09:23:09 +01:00
Zebediah Figura 70d2ba7482 strmbase: Get rid of the unused "cs" parameter to strmbase_video_init().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-18 19:12:14 +01:00
Zebediah Figura cda738d61d quartz/tests: Relax some more timeouts.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-31 17:44:34 +01:00
Zebediah Figura 0f8dbcdf80 strmbase: Get rid of the BaseRendererFuncTable typedef.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:13:30 +01:00
Zebediah Figura 487ea5df22 strmbase: Get rid of the BaseRenderer typedef.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:13:25 +01:00
Zebediah Figura 48aa8326f9 strmbase: Get rid of the "vtbl" parameter to strmbase_renderer_init().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-23 10:25:57 +02:00
Zebediah Figura 601142bda6 quartz/videorenderer: Use the renderer_init_stream() callback.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-23 10:25:54 +02:00
Zebediah Figura eca7b245f0 quartz/videorenderer: Get rid of hEvent.
This event was at various times used for several different purposes. The only
current use is apparently to prevent stale samples from being rendered after
IPin::EndFlush() completes, but in practice there's actually no foolproof way
to prevent this race in the video renderer. On the other hand, as long as the
filter driving the graph can ensure this, there's no need to do so.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-23 10:25:49 +02:00
Zebediah Figura 524783dfeb quartz/filtergraph: Clarify stream time tracking.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-22 23:04:27 +02:00
Zebediah Figura 13dbe644ce quartz/filtergraph: Pause the graph even if AM_SEEKING_NoFlush is used.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-22 23:04:27 +02:00
Zebediah Figura facbd0585c quartz/filtergraph: Set the current position in IMediaFilter::Stop().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-22 23:04:26 +02:00
Zebediah Figura 539fa6922b quartz/filtergraph: Store the current position and return it in IMediaSeeking::GetCurrentPosition().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-22 23:04:26 +02:00
Zebediah Figura 1c0985013e quartz/filtergraph: Iterate filters directly in IMediaSeeking::SetPositions().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-22 23:04:26 +02:00
Zebediah Figura 0705b0f182 quartz/filtergraph: Correctly handle AM_SEEKING_ReturnTime in IMediaSeeking::SetPositions().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-21 17:11:43 +02:00
Zebediah Figura c1f2e8476d quartz/filtergraph: Remove the no longer used "stop_position" field from IFilterGraphImpl.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-21 17:11:43 +02:00
Zebediah Figura a0043c1c5c quartz/filtergraph: Correctly implement IMediaSeeking::GetStopPosition().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-21 17:11:43 +02:00
Zebediah Figura 88c41a3999 quartz/tests: Add more tests for seeking.
Partly to further prove incorrect the patches currently in Staging.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-21 17:11:43 +02:00
Zebediah Figura 445d2d9617 quartz/tests: Add more tests for stream start time.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-21 17:11:43 +02:00
Zebediah Figura 3f7fdcfd63 strmbase: Get rid of the unused "lock" parameter to BaseControlWindow_Init().
We don't use a lock, and while it's true we probably should be, we already
have access to one.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-18 18:05:53 +02:00
Zebediah Figura 229a8dfbcd quartz/videorenderer: Get rid of CreateRenderingSubsystem().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-18 18:05:50 +02:00
Zebediah Figura ebf82cd686 quartz/tests: Relax system clock timing tests a bit.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-18 18:05:46 +02:00
Zebediah Figura 9cef48941e quartz/videorenderer: Get the window DC in VideoRenderer_SendSampleData().
Partly because we cannot depend on the filter being destroyed on the same
thread as it was allocated from.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-17 10:49:53 +02:00
Zebediah Figura a17f2ecb69 strmbase: Get rid of BaseWindowImpl_OnSize().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-17 10:49:37 +02:00