Commit graph

17 commits

Author SHA1 Message Date
Edward Hervey 24c0dc9602 parsebin: Ensure non-time subtitle streams get "parsed"
Since https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6153 ,
subtitle "decoders" (i.e. which decode to raw text) are no longer auto-plugged
by parsebin.

But if a given format does not have a parser at all, we would end up outputting
non-time/non-parsed outputs.

In order to mitigate the issue, until such parsers are available, we check if
the subtitle stream is in TIME format or not (i.e. whether it comes from a
parser or demuxer). If not, we attempt to plug in a subtitle "decoder".

Fixes #3463

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6592>
2024-04-10 09:40:54 +02:00
Edward Hervey 479c0c5bb4 parsebin: Use pbutils utils to identify more stream types
Handles all cases provided they are identified in the pbutils descriptions
list.

Fixes #1081

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6153>
2024-02-22 14:39:54 +00:00
Philippe Normand 2834973d55 parsebin: Fix stream type for encrypted streams
Without this patch the stream type for encrypted streams would be 'unknown'.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6138>
2024-02-19 09:50:03 +00:00
Philippe Normand f0e1b4f415 parsebin: Fix a potential stream collection leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5607>
2023-11-06 13:07:54 +00:00
Edward Hervey 095356b67e parsebin: Improve elementary stream handling
The goal of parsebin is to figure out which elements to link together in order
to provide elementary streams given any random input.

The problem is that deciding whether a given stream should still have more
elements plugged in or not was dependent on ... the presence of compatible
decoders (sic).

Instead of that, if we can't plug anymore elements on a given stream *and* it is
detected as being an elementary stream, expose it.

Fixes #2118

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4231>
2023-03-21 07:26:37 +00:00
Tim-Philipp Müller 165fdac5c6 playback: drop use of GSlice
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>
2023-01-24 15:25:06 +00:00
Edward Hervey 4c1d01ff57 playback: New playback elements are no longer experimental
The API is not expected to change and it has been used extensively since 1.18.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3761>
2023-01-21 12:28:21 +00:00
Edward Hervey 1774d5c87a parsebin: Don't leak parsepad list on shutdown
Free it as it is down in other cases

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>
2022-11-21 19:02:44 +00:00
Edward Hervey fa4a70d7fe parsebin: avoid bogus processing
If a parsebin pad is already exposed, don't try to rename it or cause extra
processing which isn't needed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784>
2022-11-16 14:01:46 +00:00
Edward Hervey 93d8b3f660 parsebin: Fix leak
Release the reference on the collection which was given to us when extracting it
from the event/message.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3319>
2022-11-04 17:59:21 +00:00
Edward Hervey f7e75a0208 parsebin: Avoid crash with unknown streams
With the new addition of handling unknown sream types we *could* end up with a
chain which doesn't have a current_pad (it's an intermediary one)

Fixes #1287

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2822>
2022-08-01 22:52:42 +00:00
Edward Hervey 17aa70b888 parsebin: Don't modify inexistant GstStream
When handling exposing un-handled streams, we can only replace the GstStream for
those we are creating ourselves (i.e. the fallback collection).

Fixes assertions when the demuxer creates those streams

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2353>
2022-05-04 07:26:39 +00:00
Edward Hervey 0125d7525a parsebin: Expose streams of unknown type
This actually respects the existing `expose-all-streams` property by exposing
them and having them present in the stream collection (as streams of type
unknown).

Fixes #1179

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2309>
2022-04-27 16:24:55 +00:00
Xavier Claessens b99ecc78ca Replace gst-i18n-*.h with gi18n-lib.h
GLib guarantees libintl is always present, using proxy-libintl as
last resort. There is no need to mock gettex API any more.

This fix static build on Windows because G_INTL_STATIC_COMPILATION must
be defined before including libintl.h, and glib does it for us as part
as including glib.h.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2028>
2022-04-19 18:01:06 +00:00
Edward Hervey 9b94798d0b parsebin: Implement ACCEPT_CAPS handling
The default query handler would go through typefind, which by default accepts
any CAPS. But once configured, parsebin can't reconfigure itself, it should
therefore pass through the ACCEPT_CAPS query to the first element after
typefind (if any).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1900>
2022-03-11 15:02:02 +01:00
Guillaume Desmottes 1d833eba60 parsebin: fix critical when sorting pads
If the pad does not have a current caps, get_pad() returns the query
caps which can be ANY. In such case the caps does not have any structure
resulting in a critical warning when calling gst_caps_get_structure().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1254>
2021-10-26 16:25:32 +00:00
Thibault Saunier 2fd28195ca Move files from gst-plugins-base into the "subprojects/gst-plugins-base/" subdir 2021-09-24 16:13:26 -03:00
Renamed from gst/playback/gstparsebin.c (Browse further)