Jurijs Satcs
6a9bf8592a
mpegtsmux: allow to disable SCTE NULL by setting interval to 0
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6284 >
2024-03-12 11:15:58 +00:00
Aaron Boxer
b405ff34d3
mpegtsmux: allow attaching PCR to non-PES streams
...
There is an existing PMT mapping between PCR_%s and an mpegtsmux sink
pad name, where %s equals the program number that the PCR corresponds
to. We re-purpose this functionality to also support a mapping between
PCR_%s and an arbitrary PID. If this mapping is set, then the header PCR
PID is set to this value, and PCR is attached to the stream with this
PID.
Note: the current implementation also attaches PCR to the video stream,
so this may be inefficient.
Co-authored-by: Jordan Yelloz <jordan.yelloz@collabora.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5726 >
2023-12-01 18:01:34 +00:00
Jan Alexander Steffens (heftig)
6053dd0d1b
tsmux: Fix default get_es_descrs_func
...
`tsmux_stream_default_get_es_descrs` is missing the `user_data`
parameter and shouldn't be cast to `TsMuxStreamGetESDescriptorsFunc`.
Prefer not casting at all to make sure we don't miss such an issue.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5496 >
2023-10-19 22:34:28 +00:00
Jan Alexander Steffens (heftig)
2d72008361
tsmux: Fix default new_stream_func
...
`tsmux_stream_new` is missing the `user_data` parameter and shouldn't be
cast to `TsMuxNewStreamFunc`.
Prefer not casting at all to make sure we don't miss such an issue.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5496 >
2023-10-19 22:34:28 +00:00
Jan Alexander Steffens (heftig)
5bac956b58
tsmux: Add missing include
...
We need `GstMpegtsPMTStream` here.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5496 >
2023-10-19 22:34:28 +00:00
Jan Alexander Steffens (heftig)
db88612853
tsmux: Simplify tsmux_section_write_packet
...
- Don't try to make the parameters match `GHFunc`. Use a dedicated
callback for `g_hash_table_foreach`.
- Don't try to be clever with buffer memories. We're allocating a full
packet anyway, might as well memcpy and save on a lot of complexity.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5496 >
2023-10-19 22:34:28 +00:00
Jan Alexander Steffens (heftig)
950789f61b
tsmux: tsmux_packet_out should always consume its buffer
...
Consuming the buffer only when successful is an antipattern and easily
leads to leaks.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5496 >
2023-10-19 22:34:28 +00:00
Jan Alexander Steffens (heftig)
55658ad166
tsmux: Don't memset in pad_stream when writing a PCR packet
...
tsmux_write_ts_header will write a stuffing adaptation field, so we
don't need to prefill the buffer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5496 >
2023-10-19 22:34:28 +00:00
Jan Alexander Steffens (heftig)
2dbd89b036
tsmux: Move out parameters of tsmux_write_ts_header
...
Move them to the end of the parameter list and also allow passing NULLs
to ignore the payload information, but assert that the payload length is
zero in this case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5496 >
2023-10-19 22:34:27 +00:00
Jan Alexander Steffens (heftig)
5128975a36
tsmux: Fix two more uses of gst_buffer_map
...
The buffers should be used for writing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5496 >
2023-10-19 22:34:27 +00:00
Jan Alexander Steffens (heftig)
8a7d0efd96
tsmux: Fix error handling in pad_stream
...
Don't leak the map or the buffer if we encounter an error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5490 >
2023-10-16 15:46:00 +02:00
Jan Alexander Steffens (heftig)
b1810d83bc
tsmux: Fill padding packets with stuffing bytes
...
Instead of leaving it uncleared, emitting probably old packet data but
potentially also random or sensitive application data.
Also fix the mapping mode.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5490 >
2023-10-16 15:46:00 +02:00
Aaron Boxer
a72ca72a27
mpegtsmux: add stream-number property on GstBaseTsMuxPad
...
This new property allows setting of PES stream number for AAC audio
and AVC video streams.
The stream number is subject to the following constraints:
1. it must be between 0 and 15 for video
2. it must be between 0 and 31 for audio
Currently the PES stream number is hard-coded to zero for these
stream types.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4822 >
2023-06-15 10:34:25 +00:00
Jan Alexander Steffens (heftig)
6e9d67bbc1
mpegtsmux: Use terminological ISO 639-2 language codes
...
These are preferred in most circumstances.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2649
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4795 >
2023-06-12 08:51:10 +00:00
Vivia Nikolaidou
0e62bb2ba6
basetsmux: Fix language crash when ts_pad->stream is NULL
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4785 >
2023-06-07 16:58:38 +00:00
Vivia Nikolaidou
395e0c3925
tsmux: Resend PMT whenever the language changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4711 >
2023-06-01 17:05:11 +00:00
Vivia Nikolaidou
1781b26ad2
tsmux.h: Remove TSMUX_MAX_ES_INFO_LENGTH dead code
...
Also TsMux.es_info_buf which was also not used anywhere
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4681 >
2023-05-23 14:00:11 +00:00
Vivia Nikolaidou
9e84b737cb
tsmux: Separate DVB and ATSC AC3 descriptors
...
The previous code was ATSC-specific. Separated it into gstatscmux.c and
added the DVB-specific one from ETSI EN 300 468 V1.11.1 (2010-04)
https://www.etsi.org/deliver/etsi_en/300400_300499/300468/01.11.01_60/en_300468v011101p.pdf
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4681 >
2023-05-23 14:00:11 +00:00
Vivia Nikolaidou
866d5d87c4
tsmux: Refactor AC3 descriptor to use GstByteWriter
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4681 >
2023-05-23 14:00:11 +00:00
Vivia Nikolaidou
637e263504
tsmux: Parse bitrate from tags into the stream
...
Instead of parsing a hardcoded zero and always writing the highest
limit.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4681 >
2023-05-23 14:00:11 +00:00
Vivia Nikolaidou
7a98a4214b
tsmux: Fix 0x81 descriptor for AC3 streams
...
According to ATSCA/52:2018
https://prdatsc.wpenginepowered.com/wp-content/uploads/2021/04/A52-2018.pdf
Used wireshark as ground truth for detection/parsing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4681 >
2023-05-23 14:00:11 +00:00
Sebastian Dröge
9d2ac6e90b
mpegtsmux: Allow writing arbitrary Opus channel mapping families and up to 255 channels
...
And fix writing of dual-mono special cases.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4180 >
2023-03-23 08:46:50 +00:00
Tim-Philipp Müller
85eb323b08
mpegtsmux: drop use of GSlice allocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695 >
2023-01-24 15:25:07 +00:00
Thibault Saunier
6a4425e46a
meson: Call pkgconfig.generate in the loop where we declare plugins dependencies
...
Removing some copy pasted code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2970 >
2022-09-01 21:17:35 +00:00
Sebastian Dröge
bf79a6908c
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/2438 >
2022-05-18 12:19:07 +00:00
Sebastian Dröge
52c419b799
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/2372 >
2022-05-05 17:41:58 +00:00
Matthew Waters
6f95f7263f
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/2046 >
2022-03-28 10:30:23 +00:00
Jan Alexander Steffens (heftig)
95ff949eff
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/1884 >
2022-03-08 10:57:44 +00:00
Jan Alexander Steffens (heftig)
e5dbf86a54
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/1884 >
2022-03-08 10:57:44 +00:00
Vivia Nikolaidou
7cebd5b359
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/1611 >
2022-02-25 21:29:43 +00:00
Vivia Nikolaidou
e0d5e022a1
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/1616 >
2022-02-25 17:42:52 +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
Jan Alexander Steffens (heftig)
22fb7b7b71
tsmux: Deterministically order program streams by PID
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1510 >
2022-01-24 15:37:46 +00:00
Jan Alexander Steffens (heftig)
b7ae1fa683
tsmux: Deterministically order PAT programs by number
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1510 >
2022-01-24 15:37:46 +00:00
Jan Alexander Steffens (heftig)
853178894e
tsmux: Remove program_array_index
...
It's only used for removal. Let's just scan the array.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1510 >
2022-01-24 15:37:46 +00:00
Jan Alexander Steffens (heftig)
2acaa3940a
tsmux: Replace streams GArray with GPtrArray
...
This is more appropriate.
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