Commit graph

18 commits

Author SHA1 Message Date
Sebastian Dröge
1ce128bc67 tsmux: Make sure to set srcpad caps under all conditions before outputting the first buffer
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1218

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2446>
2022-05-18 15:35:02 +01:00
Sebastian Dröge
e7d5733178 mpegtsmux: Disable aggregator's default negotiation
mpegtsmux can't negotiate caps with upstream/downstream and always outputs
specific caps based on the input streams. This will always happen before
it produces the first buffers.

By having the default aggregator negotiation enabled the same caps
would be pushed twice in the beginning, and again every time a
reconfigure event is received.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2381>
2022-05-06 01:19:40 +01:00
Matthew Waters
85077bcfa7 mpegts: don't shadow res variable
Fixes unused-but-set warning:

../gst/mpegtsmux/gstbasetsmux.c:2115:43: error: variable 'res' set but not used [-Werror,-Wunused-but-set-variable]
      gboolean all_headers, done = FALSE, res = FALSE;
                                          ^

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2068>
2022-03-30 00:52:53 +01:00
Jan Alexander Steffens (heftig)
49af4733db mpegtsmux: Start last_ts with GST_CLOCK_TIME_NONE
And use the output segment position for the outgoing timestamp while it
is. This is needed to delay the calculation of `output_ts_offset` until
we actually have a usable timestamp, as tsmux will output a few initial
packets while `last_ts` is still unset.

Without this, the calculation would use the initial `0` value, which did
not have the intended effect of making VBR mode behave like CBR mode,
but always calculated an offset equal to the selected start time.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1895>
2022-03-08 16:03:21 +00:00
Jan Alexander Steffens (heftig)
1a024521c0 mpegtsmux: Use GST_CLOCK_STIME_NONE for output_ts_offset
It's a GstClockTimeDiff, thus GST_CLOCK_TIME_NONE isn't appropriate.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1895>
2022-03-08 16:03:21 +00:00
Vivia Nikolaidou
e025703d31 tsmux: Skip empty buffers
They can be created e.g. by aggregator when there is a gap. Such buffers
should not be muxed at all.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1801>
2022-02-27 00:39:27 +00:00
Vivia Nikolaidou
28c63c1931 tsmux: Lock mux->tsmux, the programs hash table, and pad streams
They contain implementations that are not thread-safe (e.g. GList, GHashTable).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1800>
2022-02-26 23:34:32 +00:00
Jan Alexander Steffens (heftig)
2f7ec968f4 tsmux: Allow specifying PMT order via the prog-map
Look for an entry `PMT_<PID>` in the `prog-map`, which specifies the
relative index of the stream in the PMT.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1510>
2022-01-24 15:37:46 +00:00
Tim-Philipp Müller
ea8dc0c737 Couple more g_memdup() -> g_memdup2() fixes
Fixes deprecation warnings with newer GLib versions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1279>
2021-10-30 10:37:37 +01:00
Jan Alexander Steffens (heftig)
320bc6362b mpegtsmux: Avoid crash when best pad gets flushed
The 'best' pad might receive a flush event between us picking it and us
popping the buffer. In this case, the buffer will be missing.

Similar to https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/711

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1042>
2021-10-19 01:46:19 +00:00
Vivia Nikolaidou
95eb8672a6 basetsmux: Support for caps changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/981>
2021-10-18 15:37:41 +00:00
Jan Alexander Steffens (heftig)
a8ebf72627 basetsmux: Clean up gst_base_ts_mux_create_stream
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/981>
2021-10-18 15:37:40 +00:00
Seungha Yang
90e5e0efea mpegtsmux: basetsmux: Don't try to return value from void function
gstbasetsmux.c(1508): warning C4098: 'free_splice': 'void' function returning a value

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1018>
2021-10-04 13:37:09 +00:00
Mathieu Duponchelle
555a5ea9dd basetsmux: use private copy of g_ptr_array_copy
This function is only present since glib 2.62

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/913>
2021-09-25 01:29:38 +00:00
Mathieu Duponchelle
c2eeb639b0 basetsmux: fix SCTE pts_adjustment with offsets
When there are elements between the demuxer and the muxer that
introduce an offset to the running time, or when offsets are
set on pads by the application, this shift must be taken into
account when calculating the final pts_adjustement.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/913>
2021-09-25 01:29:38 +00:00
Mathieu Duponchelle
c3a161f287 basetsmux: rework SCTE section handling to handle passthrough
mpegtsmux can receive SCTE sections from two origins: events
created by the application, and events forwarded downstream by
mpegtsdemux, containing sections that may not have been fully
parsed, and additional data to help tsmux translate times to
the correct domain, both for requesting keyframes and calculating
an accurate pts_adjustment.

The complete approach is documented further in a comment above
the relevant function.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/913>
2021-09-25 01:29:38 +00:00
Mathieu Duponchelle
be4d0fff23 basetsmux: extend SCTE 35 support
Makes it possible to support passing SCTE 35 cue points from
demuxer to muxer, while preserving correct timing.

This will also improve ex nihilo cue points injection, as splice
times and durations are now interpreted as running time values,
and may trigger key unit requests.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/913>
2021-09-25 01:29:37 +00:00
Thibault Saunier
019971a3c7 Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
Renamed from gst/mpegtsmux/gstbasetsmux.c (Browse further)