Commit Graph

263 Commits

Author SHA1 Message Date
Zebediah Figura 1a72836c37 winegstreamer: deinterlace belongs to the "good" set, not the "base" set.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-07 13:07:21 +02:00
Zebediah Figura eadcba7925 winegstreamer: Append a deinterlace element to the video post-processing chain.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=30366
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-02 18:01:21 +02:00
Zebediah Figura 7be64a8d3e winegstreamer: Don't store DirectShow caps.
Primarily so that we can connect using video caps that can't be translated into
DirectShow caps. They will later be converted into translatable caps once the
DirectShow source pin is connected.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47642
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-30 09:12:55 +02:00
Zebediah Figura fd25ba65e0 winegstreamer: Avoid performing color matrix conversions in videoconvert.
This reduces the time videoconvert takes to process I420 -> YV12 from 15 ms to 0.8 ms on my system.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-23 10:11:42 +02:00
Zebediah Figura 930dc23c7c winegstreamer: Prefer YUV formats to RGB ones.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-23 10:11:39 +02:00
Zebediah Figura d085e5ba72 winegstreamer: Clear the "colorimetry" and "chroma-site" fields in amt_to_gst_caps_video().
These fields don't prevent us from connecting, but they may force videoconvert
to do an expensive conversion where not necessary.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-19 10:39:00 +02:00
Akihiro Sagawa bd28efb4c7 winegstreamer: Also wait for EOS events when retrieving duration.
The mpegaudioparse element will not send a duration-changed message if no
Xing or VBRI headers are present.

Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-14 19:35:20 +02:00
Zebediah Figura 613446d018 winegstreamer: Try to convert the duration from bytes if the pad doesn't support querying time directly.
This can help mpegaudioparse report a usable duration, and presumably also
other elements built from baseparse.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-11 10:50:28 +02:00
Zebediah Figura 9cc742d258 winegstreamer: Calculate duration independently per pin.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-11 10:50:28 +02:00
Zebediah Figura 1e079a0ca4 winegstreamer: Don't query our own source pad to convert duration.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-11 10:50:28 +02:00
Anton Baskanov a18bc50f2f winegstreamer: Commit allocator before pausing the stream.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-09 12:09:44 +02:00
Akihiro Sagawa 49c33c920e winegstreamer: Unref the GstCaps object in init_new_decoded_pad().
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-12 23:07:44 +02:00
Zebediah Figura 1a4e9a84c2 winegstreamer: Remove some no longer necessary callbacks.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-27 12:02:08 +02:00
Zebediah Figura 5d0e10b77c winegstreamer: Delay-load mfplat.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-16 22:10:03 +02:00
Zebediah Figura ecac569df2 winegstreamer: Remove some unused imports.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-16 22:10:03 +02:00
Zebediah Figura ac531be92e winegstreamer: Check the format GUID, size, and pointer in amt_to_gst_caps().
Some application filters enumerate types without a format block.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-06 21:21:41 +02:00
Zebediah Figura b9b2a04fe7 winegstreamer: Set the bit depth for UYVY video.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-27 12:18:49 +01:00
Zebediah Figura bdf8f6753d winegstreamer: Flip only RGB video.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-27 12:18:46 +01:00
Zebediah Figura 5814d19373 winegstreamer: Also clear the pixel-aspect-ratio field in amt_to_gst_caps_video().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-26 21:19:32 +01:00
Rémi Bernon b3a33f065d winegstreamer: Check the callback list before waiting.
Some callbacks may be pushed during pipeline initialization and before
the dispatch thread is actually started and waiting for them, which
sometimes causes some hangs.

This fixes Fallout 3 and Panzer Corps -and possibly others- intro videos
hanging forever.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-26 21:18:08 +01:00
Derek Lesho 3ddf3a720f winegstreamer: Move broad callback handling code to gst_cbs.
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-03-20 22:37:58 +01:00
Derek Lesho 168ec2c82a winegstreamer: Make callback parameter names more generic.
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-03-20 22:37:56 +01:00
Zebediah Figura 5ca1d28e8d winegstreamer: Clamp both timestamp and timestamp + diff to 0.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-17 09:44:06 +01:00
Zebediah Figura 38c50751fe winegstreamer: Also use GST_QOS_TYPE_OVERFLOW for samples that arrive on time.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-17 09:44:03 +01:00
Zebediah Figura 8575484f21 winegstreamer: Use the image size provided by GStreamer.
If the stride is not equal to the width, this calculation will be invalid.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-16 21:42:47 +01:00
Zebediah Figura 1bb868e9c1 winegstreamer: Use amt_from_gst_video_info() in gstdecoder_source_get_media_type().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-16 21:42:43 +01:00
Zebediah Figura 3178f1d0af winegstreamer: Use accessor macros for GstVideoInfo fields.
As the documentation prescribes.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-16 21:42:39 +01:00
Zebediah Figura 57492f55fd winegstreamer: Allocate media type format blocks with CoTaskMemAlloc().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-16 21:42:35 +01:00
Zebediah Figura d61504f16b winegstreamer: Read into an existing buffer if requested.
oggdemux needs this.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-11 15:55:38 +01: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 fe6220dba7 winegstreamer: Use nAvgBytesPerSec to determine buffer size only for raw audio formats.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-28 11:27:16 +01:00
Zebediah Figura 2620d649c3 winegstreamer: Defer a seek to pause time if necessary.
This fixes background music in Tomb Raider II.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-28 11:27:13 +01:00
Zebediah Figura 7987e84229 winegstreamer: Don't fail seeking methods if we couldn't query duration.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48315
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-28 11:27:10 +01:00
Zebediah Figura 18bdaaaa26 winegstreamer: Don't query or set GStreamer duration if the filter is stopped.
This check is not equivalent to the existence of "their_src" for the
MPEG-1 splitter, since that always exposes a source audio pin.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-28 11:27:05 +01:00
Zebediah Figura 540f2983a9 winegstreamer: Decommit the source allocator when cleaning up the stream.
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 6745afd81d winegstreamer: Negotiate allocators per source pin.
In particular, pass the correct buffer size for the format we have chosen.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48570
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-16 20:49:19 +01:00
Zebediah Figura c90a36e38c winegstreamer: Read samples synchronously in push_data().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-16 20:49:16 +01:00
Zebediah Figura c366415360 strmbase: Merge enumpins.c into filter.c.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-29 09:45:56 +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 1052d5cfb1 winegstreamer: Allow converting to 16-bit 2-channel PCM within the splitter filter.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-28 14:25:34 +01:00
Zebediah Figura 11b30ffc07 winegstreamer: Append an audioconvert element to raw audio streams.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-28 14:25:31 +01:00
Zebediah Figura aa7017510d winegstreamer: Correctly represent non-32-bit float types.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-28 14:25:27 +01:00
Zebediah Figura ec0d6323d0 winegstreamer: Report MEDIASUBTYPE_IEEE_FLOAT for float types.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-28 14:25:23 +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 f5a1e2bd87 winegstreamer: Support converting color spaces within the splitter filter.
The idea being firstly that it's more efficient to handle this all within one
GStreamer pipeline, especially since we may need to be converting color
spaces anyway (for videoflip), and secondly that this renders obsolete the
color space converter transform filters in gsttffilter.c.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-27 14:39:14 +01:00
Zebediah Figura 847d8970fe winegstreamer: Split the implementation of source_get_media_type().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-27 14:39:11 +01:00
Zebediah Figura 87e02cb5fc winegstreamer: Implement IPin::QueryAccept() for the MPEG splitter source.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-27 14:39:09 +01:00
Zebediah Figura 0401213770 winegstreamer: Implement IPin::QueryAccept() for the AVI splitter source.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-27 14:39:06 +01:00
Zebediah Figura 71967608a3 winegstreamer: Implement IPin::QueryAccept() for the WAVE parser source.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-24 17:23:01 +01:00