Sweden-Number/dlls/winegstreamer
Zebediah Figura 5144b27661 winegstreamer: Remove support for flushing the wg_parser object.
Aside from EOS logic, which is now handled entirely on the client side,
wg_parser_stream_get_event() now only waits for data processing—that is,
demuxing, decoding, and format conversion. While unblocking waits in
wg_parser_stream_get_event() does allow that function to return immediately, a
subsequent seek request in GStreamer will still have to wait for that data
processing to complete and for the stream thread to return to the demuxer's main
loop. In essence, wg_parser_begin_flush() is only moving costs around.

In theory we could force the GStreamer pipeline to complete faster by actually
flushing it. In practice this isn't really true. Individual elements do check
whether they are flushing before processing, but even elements which take a
relatively long time (i.e. multiple milliseconds) to process data don't
periodically check whether they are flushing while doing so. Although there is
arguably a benefit to skipping some elements by flushing the GStreamer pipeline,
it does not seem worth the added code complexity in Wine.

The real point of flushing in DirectShow or GStreamer is to unblock long or
unbounded waits in sink elements (i.e. waits for PTS, or waits for running state
while rendering preroll frames). None of these waits apply here. Waits for
actual sample processing complete in bounded time, and should ideally take less
than the sample DTS to complete (or we are already in trouble).

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-24 08:49:38 +01:00
..
Makefile.in winegstreamer: Introduce new wg_transform struct. 2022-02-17 09:07:07 +01:00
audioconvert.c winegstreamer: Build without -DWINE_NO_LONG_TYPES. 2022-02-04 09:48:31 +01:00
gst_guids.h
gst_private.h winegstreamer: Remove support for flushing the wg_parser object. 2022-02-24 08:49:38 +01:00
main.c winegstreamer: Remove support for flushing the wg_parser object. 2022-02-24 08:49:38 +01:00
media_source.c winegstreamer: Remove support for flushing the wg_parser object. 2022-02-24 08:49:38 +01:00
mfplat.c winegstreamer: Introduce new WG_MAJOR_TYPE_WMA major type. 2022-02-17 09:07:07 +01:00
quartz_parser.c winegstreamer: Remove support for flushing the wg_parser object. 2022-02-24 08:49:38 +01:00
rsrc.rc
unix_private.h winegstreamer: Append audioconvert and audioresample elements. 2022-02-22 20:04:42 +01:00
unixlib.h winegstreamer: Remove support for flushing the wg_parser object. 2022-02-24 08:49:38 +01:00
wg_format.c winegstreamer: Remove \n at the end of GST log messages. 2022-02-22 20:04:31 +01:00
wg_parser.c winegstreamer: Remove support for flushing the wg_parser object. 2022-02-24 08:49:38 +01:00
wg_transform.c winegstreamer: Lookup and instantiate a WMA decoder element. 2022-02-22 20:04:45 +01:00
winegstreamer.rgs
winegstreamer.spec
winegstreamer_classes.idl winegstreamer: Stub implement WMA decoder DMO / MF transform. 2022-02-03 10:22:27 +01:00
wm_asyncreader.c winegstreamer: Release stream_cs on error in stream_thread(). 2022-02-08 10:47:03 +01:00
wm_reader.c winegstreamer: Remove support for flushing the wg_parser object. 2022-02-24 08:49:38 +01:00
wm_syncreader.c winegstreamer: Handle EnableDiscreteOutput and SpeakerConfig settings in WMSyncReader_SetOutputSetting(). 2022-02-08 20:24:14 +01:00
wma_decoder.c winegstreamer: Create static pads on wg_transform struct. 2022-02-17 09:07:07 +01:00