Commit Graph

129 Commits

Author SHA1 Message Date
Zebediah Figura 4600383b79 strmbase: Switch to the quartz debug channel.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-19 12:16:14 +02:00
Anton Baskanov 82b86d4704 strmbase: Defer EC_COMPLETE until the renderer is running.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-27 21:12:49 +02:00
Anton Baskanov e017e33aec strmbase: Don't reset EOS on renderer paused->running state transition.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-27 21:12:45 +02:00
Zebediah Figura 60a2d66e40 strmbase: Rename the "pFuncsTable" member of struct strmbase_renderer to "ops".
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-12 12:13:55 +01:00
Zebediah Figura 4bede3b27b strmbase: Rename pfnBreakConnect to renderer_disconnect.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-12 12:13:50 +01:00
Zebediah Figura 4abf09f02e strmbase: Rename pfnDoRenderSample to renderer_render.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-12 12:13:35 +01:00
Zebediah Figura 646f2040d8 strmbase: Rename pfnCheckMediaType to renderer_query_accept.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-11 13:13:35 +01:00
Zebediah Figura 6ab9ad1096 strmbase: Move run_event handling to strmbase.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-11 13:13:35 +01:00
Zebediah Figura 914ad66c52 strmbase: Move run_event to the strmbase_renderer structure.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-11 13:13:35 +01:00
Zebediah Figura bcfa8f413b quartz: Move the current sample tracking back to strmbase.
Only the video renderer uses this, but we'd like to deduplicate the
wait-on-preroll behaviour.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-11 13:13:35 +01:00
Zebediah Figura 0d07d1ec61 strmbase: Make the "current_*" fields of struct strmbase_renderer into local variables.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-10 11:07:45 +01:00
Zebediah Figura d99912aa65 strmbase: Record jitter before waiting for presentation time.
Otherwise we will consistently report that samples are late. In practice this
can end up causing GStreamer to drop many video samples, which is one of the
apparent causes of bug 50733.

At the same time, don't record jitter *before* signalling preroll, as in that
case stream_start will not yet be valid, and we'll end up recording something
near the current tick count, and in this way also incorrectly report that
samples are late.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-10 11:07:40 +01:00
Zebediah Figura 1564d65868 strmbase: Inline the strmbase_qc structure into struct strmbase_renderer.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-10 11:07:38 +01:00
Zebediah Figura b9393d08e1 strmbase: Do not pretend to drop samples.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-10 11:07:35 +01:00
Zebediah Figura c7d65913da strmbase: Remove the unused "avg_render", "start", and "stop" fields from struct strmbase_renderer.
This corresponds to part of GStreamer commit dc0ed9a5ebadbc5b0e9baac215b6b1714cf23b22.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-09 12:00:00 +01:00
Zebediah Figura 92aacce542 strmbase: Remove the unused "dropped" field from struct strmbase_qc.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-09 11:59:57 +01:00
Zebediah Figura 09081737ef strmbase: Remove the unused "rendered" field from struct strmbase_qc.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-09 11:59:54 +01:00
Zebediah Figura 4d400a71fa strmbase: Remove the unused "qos_handled" field from struct strmbase_qc.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-09 11:59:52 +01:00
Zebediah Figura 4f72fbef11 strmbase: Merge qualitycontrol.c into renderer.c.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-09 11:59:48 +01:00
Zebediah Figura 480ece6a15 strmbase: Acquire the streaming lock in sink_EndOfStream().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-20 11:11:22 +01:00
Zebediah Figura 32d339829e strmbase: Acquire the streaming lock in MemInputPin_Receive().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-20 11:11:20 +01:00
Zebediah Figura e468aab053 strmbase: Move strmbase_renderer.csRenderLock into the strmbase_filter structure.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-19 08:52:34 +01:00
Zebediah Figura 6f05c69210 strmbase: Don't drop csRenderLock in BaseRenderer_Receive().
We don't grab stream_cs to change any variables checked here, except to reset
flush_event, and that cannot result in a deadlock.

The only possible deadlocks here are:

(1) between this function and EndOfStream(), which is correct, as the two
    should presumably be serialized;

(2) between this function and EndFlush(); however, in that case we expect
    BeginFlush() first, which will unblock the streaming thread.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 10:13:38 +01:00
Zebediah Figura d3ef27f756 quartz/vmr9: Signal state change completion only after PresentImage() has been called.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-21 15:16:17 +02:00
Zebediah Figura 8803a81b33 strmbase: Wait for presentation time after rendering the first sample.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-21 15:16:14 +02:00
Zebediah Figura e4ebf09f4f strmbase: Get rid of BaseRendererImpl_Receive().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-21 15:16:12 +02:00
Zebediah Figura af50b499cb strmbase: Remove some no longer used callbacks.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-20 20:17:20 +02:00
Zebediah Figura a9fbbda429 strmbase: Store the quality control object directly in strmbase_renderer.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 23:17:07 +02:00
Zebediah Figura 461a928f14 strmbase: Set the IQualityControl vtbl in QualityControlImpl_Create().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 23:17:05 +02:00
Zebediah Figura 38f5f36462 strmbase: Make the pin_get_media_type() callback optional.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-22 08:29:00 +02:00
Zebediah Figura 0777941eaf strmbase: Return void from strmbase_renderer_init().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-30 12:09:09 +02:00
Zebediah Figura 191ae9f3ff strmbase: Use strmbase_passthrough directly in strmbase_renderer.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-13 09:42:36 +01:00
Zebediah Figura fb45f9a806 strmbase/renderer: Return S_FALSE when pausing the stream if approprate.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-20 16:23:09 +01:00
Zebediah Figura fa72a28c51 strmbase: Get rid of current sample tracking.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-11 08:56:37 +01:00
Zebediah Figura 4a9893d4fc strmbase: Rename the "pClock" member of struct strmbase_filter to "clock".
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-31 10:20:04 +01:00
Zebediah Figura 6f71e2c48d strmbase: Store the filter name and graph directly in the strmbase_filter structure.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-31 10:19:52 +01:00
Zebediah Figura a6aea1cecd strmbase: Get rid of the "vtbl" parameter to strmbase_sink_init().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-13 09:57:00 +01:00
Zebediah Figura a43d81733c strmbase/renderer: Use base sink streaming methods.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-13 09:57:00 +01:00
Zebediah Figura 7f57286d73 strmbase/renderer: Use base sink connection methods.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-10 20:59:19 +01:00
Zebediah Figura d14d19661a strmbase: Add callbacks for sink (dis)connection.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-10 20:59:19 +01:00
Zebediah Figura f595d9bdff strmbase: Pass an AM_MEDIA_TYPE pointer to CompleteConnect().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-10 20:59:19 +01:00
Zebediah Figura 18f561a783 strmbase: Get rid of the "vtbl" parameter to strmbase_filter_init().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-05 23:36:16 +01:00
Zebediah Figura a4131ca625 strmbase: Swap the lock order in IPin::EndFlush().
This more closely resembles the threading model prescribed by the DirectX SDK
documentation. In particular, the page "Flushing Data" recommends that
IPin::BeginFlush() do the following steps in order:

1. take the filter lock
2. signal the streaming thread to complete
3. take the streaming lock, if necessary

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-29 08:23:45 +01:00
Zebediah Figura 4be014239c strmbase: Don't hold the streaming lock in IPin::BeginFlush().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-28 08:34:03 +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 0011be7fdd strmbase: Get rid of BaseRendererImpl_BeginFlush().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-28 08:33:52 +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 6773179a94 strmbase: Move tracking of EOS state to the base renderer.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-27 09:47:23 +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