Commit Graph

210 Commits

Author SHA1 Message Date
Zebediah Figura a191a0c23a winegstreamer: Catch errors while waiting for pin connection.
In the event that the user is missing GStreamer plugins this may allow the
program to terminate gracefully rather than hanging in the init_gst() callback.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-02 19:16:02 +01:00
Zebediah Figura 826e2508e5 winegstreamer: Recognize the "video/x-cinepak" type.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=39809
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-23 20:13:23 +01:00
Zebediah Figura 15e3adab4c winegstreamer: Clear the "reader" and "allocator" fields if connection fails.
This fixes a regression introduced by dafe81dfcb.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-16 11:57:33 +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 5d2c3de55d winegstreamer: 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 dafe81dfcb winegstreamer: Use base sink connection methods.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-11 21:51:28 +01:00
Zebediah Figura 02cb76c40c winegstreamer: Store the sink as a strmbase_sink structure.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-11 21:51:28 +01:00
Zebediah Figura 264c539ed6 strmbase: Combine the SetMediaType() and CompleteConnect() callbacks.
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 675e061142 strmbase: Get rid of the "vtbl" argument to strmbase_source_init().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-09 23:47:45 +01:00
Zebediah Figura 5c83561b33 winegstreamer: Use BasePinImpl_QueryInterface().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-09 23:47:45 +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 60680651d7 winegstreamer: Fix the timeout passed to gst_element_get_state().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-04 09:36:15 +01:00
Zebediah Figura 90ebc7e33b winegstreamer: Use strmbase state change methods.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-03 21:27:14 +01:00
Zebediah Figura 078ac0f764 winegstreamer: Also wait for the no-more-pads signal when pausing the filter.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-03 21:27:14 +01:00
Zebediah Figura 7a0d963df3 winegstreamer: Don't hold the filter lock from the pad-added or pad-removed callbacks.
These may be called from the streaming thread, so it's not safe to do so.

Nor does it seem necessary. We expect that no streaming thread should ever
call methods on our pad or pin, and as long as we hold the filter lock and
wait for the no-more-pads signal when connecting or starting the stream, we
cannot race with application threads.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-03 21:27:14 +01:00
Zebediah Figura 4008aba453 strmbase: Use a separate critical section for the SourceSeeking structure.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-03 21:27:14 +01:00
Zebediah Figura bdc09fb8b4 winegstreamer/gsttffilter: Don't drop the streaming lock in Gstreamer_transform_ProcessEnd().
This sort of reverts 096da45036. The deadlock
mentioned there is not spelled out in detail, but likely results from the
streaming thread trying to acquire the filter lock while a main thread which
is holding the filter lock waits for the streaming thread to finish. However,
DirectShow documentation (and manual testing) suggests that the correct way
to avoid this problem is simply to never take the filter lock from the
streaming thread. Since we currently don't do this anymore, it should be safe
to reinstate this lock.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-02 10:42:13 +01:00
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 1b3d163208 winegstreamer/gsttffilter: 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 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 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 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 b3e325f36b strmbase: Move tracking of the stream start time to the renderer.
Only renderers should ever need to care about this.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-04 23:16:25 +02:00
Zebediah Figura f65cb89cbc winegstreamer: Initialize COM on the callback dispatcher thread.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47822
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-30 22:24:25 +02:00
Zebediah Figura c7a447b67a strmbase: Rename "pConnectedTo" to "peer".
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-27 13:26:52 +02:00
Zebediah Figura b0e47ab9e7 strmbase: Pass an unsigned index to pin_get_media_type().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-25 16:27:57 +02:00
Zebediah Figura f46fe6d371 strmbase: Rename pfnGetMediaType() to pin_get_media_type().
And remove the unnecessary calling convention.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-25 16:27:54 +02:00
Zebediah Figura 9f1909be89 strmbase: Rename pfnCheckMediaType() to pin_query_accept().
And remove the unnecessary calling convention.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-25 16:27:51 +02:00
Zebediah Figura 8619eb9838 strmbase: Get rid of the BasePin typedef.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-24 09:08:20 +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 bf46266099 winegstreamer: Don't set the source and target rects in amt_from_gst_caps_video().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-20 12:47:19 +02:00
Zebediah Figura 923a7808f4 winegstreamer: Set lSampleSize to 1 in amt_from_gst_caps_video().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-20 12:47:13 +02:00
Zebediah Figura 8d5c0a6631 winegstreamer: Clear bFixedSizeSamples in amt_from_gst_caps_video().
This makes no logical sense, but the native AVI splitter never sets this field.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-20 12:47:08 +02:00
Zebediah Figura 28c334b273 winegstreamer: Fix registration for the WAVE parser.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-20 12:47:04 +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 41fc456498 winegstreamer: Introduce a callback for filter-specific initialization.
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 e73c58f9e6 winegstreamer: Move more common pin initialization into create_pin().
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 68a9cbcc80 winegstreamer: Also set cbFormat when using WAVE_FORMAT_PCM.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-17 14:54:32 +02:00
Zebediah Figura 19c6b2f26e winegstreamer: Clear bTemporalCompression in amt_from_gst_caps_audio().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-17 14:54:29 +02:00
Zebediah Figura 13da4669bd winegstreamer: Set bFixedSizeSamples in amt_from_gst_caps_audio().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-17 14:54:25 +02:00
Zebediah Figura ad79189402 winegstreamer: Set lSampleSize in amt_from_gst_caps_audio().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-17 14:54:21 +02:00
Zebediah Figura c9a94b4de1 winegstreamer: Factor out amt_from_gst_caps().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-16 10:12:53 +02:00
Zebediah Figura 450d443b89 winegstreamer: Use the "format" field to determine the subtype and bit depth.
The "bits" field does not directly describe the total bit depth.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-16 10:12:53 +02:00
Zebediah Figura 9ef5825941 winegstreamer: Improve some trace messages.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-16 10:12:40 +02:00
Zebediah Figura 7782b8ea4c winegstreamer: Store the pin media type directly.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-16 10:12:38 +02:00
Zebediah Figura 993d1dd2f8 winegstreamer: Get rid of the GSTOutPin typedef.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-13 19:34:19 +02:00
Zebediah Figura 4b635019dd winegstreamer: Get rid of the GSTImpl typedef.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-13 19:34:19 +02:00
Zebediah Figura 9c92c0bf19 winegstreamer: Use BasePinImpl_QueryAccept() and BasePinImpl_EnumMediaTypes().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-13 19:34:17 +02:00
Zebediah Figura 765cb748a8 strmbase: Get rid of the BaseOutputPinFuncTable typedef.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-13 10:37:49 +02:00