Commit Graph

44 Commits

Author SHA1 Message Date
Zebediah Figura e848a00d26 winegstreamer: Map the output sample buffer in the Unix library.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-17 11:11:06 +01:00
Zebediah Figura ccc6c98075 winegstreamer: Move seeking to the Unix library.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-17 11:10:52 +01:00
Zebediah Figura 8547ee3513 winegstreamer: Move QoS notification to the Unix library.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 08:52:34 +01:00
Zebediah Figura 7a5224beb6 winegstreamer: Move wg_parser flushing to the Unix library.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 08:52:32 +01:00
Zebediah Figura aa695e2125 winegstreamer: Move get_stream_event() to the Unix library.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 08:52:29 +01:00
Zebediah Figura 563ccc4df5 winegstreamer: Set the stream's current format and connected state through Unix library functions.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 08:52:26 +01:00
Zebediah Figura 442c9d43c8 winegstreamer: Retrieve the preferred format through a Unix library function.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 08:52:20 +01:00
Zebediah Figura f98722fe3b winegstreamer: Retrieve wg_parser streams through Unix library functions.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-15 10:55:12 +01:00
Zebediah Figura 507ba18d08 winegstreamer: Move wg_parser sink disconnection code to the Unix library.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-15 10:55:05 +01:00
Zebediah Figura 6c67a0a6be winegstreamer: Move GST_Connect() to the Unix library.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-15 10:54:58 +01:00
Zebediah Figura 9147fefbb2 winegstreamer: Move wg_parser_destroy() to the Unix library.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-12 14:51:59 +01:00
Zebediah Figura dbd927f4ad winegstreamer: Move wg_parser object creation to a new Unix library.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-12 14:51:55 +01:00
Zebediah Figura fb096d54a8 winegstreamer: Introduce an intermediate media format structure.
The fundamental idea here is to provide a type which can be used in the unixlib
interface. Obviously GstCaps can't be used from PE, and while AM_MEDIA_TYPE can
in theory be used from the Unix library, allocation of the format block makes
things a little tricky. Moreover, we'd ideally like to use the same backend for
DirectShow and Media Foundation, and while it wouldn't be a problem currently,
in general AM_MEDIA_TYPE is not quite expressive enough to translate from
GstCaps to IMFMediaType, and the latter can't be used from the Unix library.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-09 11:13:13 +01:00
Zebediah Figura 2546ad8115 winegstreamer: Store the segment parameters in the parser_event structure.
Instead of the segment event.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-22 11:12:20 +01:00
Zebediah Figura 9c138562fe winegstreamer: Manage our own streaming thread.
This is a rather large and complex change. It comprises several parts:

(1) Instead of directly sending EOS, segment, and sample events to the
    downstream DirectShow sink, first queue them in a local buffer (i.e.
    "pin->event").

(2) Spawn a separate thread per source pin (i.e. "stream_thread") which consumes
    said events and sends them downstream.

(3) When flushing or stopping, explicitly wait for this thread to pause or stop
    (respectively).

There are a few reasons for this:

(1) It reduces the number of Unix -> PE callbacks we need to make, easing PE
    conversion. This is not a great advantage *a priori*, and may not be worth a
    similar dedicated "handler" thread for most modules, but winegstreamer is
    different—we were already marshalling these calls onto another thread, and
    now that marshalling can go away (almost).

(2) Because GStreamer can only do pad negotiation (and hence autoplugging) while
    running (in contrast to DirectShow, which can do it while stopped), we
    currently have to renegotiate every time the pipeline is started. Most
    applications don't start the graph more than once, but even that requires
    two negotiations, and startup time is demonstrably too high. It would be
    nice to keep the graph in PAUSED state all of the time, but this is
    difficult to do without more fine-grained control over the streaming thread.
    [In particular, we cannot reliably wait for all samples to be delivered
    except by stopping the GStreamer pipeline.]

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-20 11:20:57 +01:00
Zebediah Figura b554086282 winegstreamer: Unify the decodebin parser definitions under the name "decodebin_parser".
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-18 22:46:36 +01:00
Derek Lesho 508b124f80 winegstreamer: Register the audio conversion transform.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-03 20:18:39 +01:00
Derek Lesho 35c0da85ef winegstreamer: Introduce audio conversion transform.
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-03 20:18:39 +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 12f1afbffe winegstreamer: Implement IMFMediaSource::Start.
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
Zebediah Figura 63cf882e39 winegstreamer: DirectShow and GStreamer proportions are inverted with respect to each other.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-22 22:02:03 +02:00
Derek Lesho 4228016b0c winegstreamer: Implement IMFMediaStream::GetStreamDescriptor.
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-09-29 12:02:17 +02:00
Derek Lesho a6be76bb9c winegstreamer: Add stub bytestream handler.
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-09-07 21:07:00 +02:00
Zebediah Figura 74dc0c5df9 winegstreamer: Reimplement COM registration and vending locally.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-09 12:10:52 +01:00
Zebediah Figura d263c4a366 winegstreamer: Get rid of the mp3 decoder.
In the unlikely event that we are hotplugging not from an IAsyncReader, we
already have the ACM wrapper and l3codeca.acm available to do the same thing.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-29 09:45:32 +01:00
Zebediah Figura 943b6564f5 winegstreamer: Get rid of the AudioConvert filter.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-28 14:25:38 +01:00
Zebediah Figura 841502993f winegstreamer: Get rid of the YUV-to-(A)RGB converters.
This is handled by the splitter filter now.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-27 14:39:20 +01:00
Zebediah Figura 6c8cb0abac winegstreamer: Use strmbase_dump_media_type() where appropriate.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-07 10:00:58 +02:00
Zebediah Figura 40a4c782b7 winegstreamer: Reimplement the MPEG splitter on top of the mpegaudioparse plugin.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-23 10:10:04 +02:00
Zebediah Figura 5de712b5d8 winegstreamer: Reimplement the AVI splitter on top of the avidemux plugin.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-20 12:47:22 +02:00
Zebediah Figura 939638b055 winegstreamer: Reimplement the WAVE parser ontop of the wavparse plugin.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-19 12:56:59 +02:00
Zebediah Figura 06d72b61ce winegstreamer: Use strmbase_source_init().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-05 08:30:50 +02:00
Nikolay Sivov 787ed80858 winegstreamer: Add stub Video Processor MFT.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-05 17:37:44 +02:00
Nikolay Sivov f5908390a7 winegstreamer: Use init-once API to initialize library.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-26 13:47:00 +01:00
Andrew Eikum 008e4d3e86 winegstreamer: Add YUV to ARGB32 transformation filter.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-14 14:39:55 +09:00
Andrew Eikum e8311270ab winegstreamer: Update to use gstreamer-1.0.
Based on initial work by Rafał Mużyło.

Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-15 15:32:49 +09:00
Andrew Eikum 56b6523842 winegstreamer: Always run gstreamer callbacks on a Wine thread.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-14 21:27:20 +09:00
André Hentschel b5ba054ce8 Assorted header comment cleanup. 2012-01-04 19:35:13 +01:00
Aric Stewart 0e55930eff winegstreamer: Add gstreamer audio convert transform filter. 2010-10-29 15:22:12 +02:00
Aric Stewart 5e79508fe9 winegstreamer: Add gstreamer mp3 transform filter. 2010-10-29 15:16:57 +02:00
Aric Stewart 82a232d154 winegstreamer: Add gstreamer YUV->RGB transform filter. 2010-10-28 12:38:13 +02:00
Aric Stewart a2916f3a0b winegstreamer: Add gstreamer splitter filter. 2010-10-27 18:19:06 +02:00
Aric Stewart 48f3adc06b winegstreamer: Add glib threading overrides. 2010-10-26 18:11:36 +02:00
Aric Stewart 2914d65579 winegstreamer: Add wine GStreamer parser filter framework. 2010-10-22 15:49:19 +02:00