Mathieu Duponchelle
a57f4dc8d9
mpegtsmux: spring cleanup, no functional change
2019-05-19 19:40:48 +00:00
Mathieu Duponchelle
649cc2d5e8
mpegtsmux: extract an actual base class
2019-05-19 19:40:48 +00:00
Mathieu Duponchelle
4e7f94f5fa
mpegtsmux: expose the vmethods necessary for ATSC E-AC-3 handling
2019-05-19 19:40:48 +00:00
Mathieu Duponchelle
07235bbf46
mpegtsmux: Expose bitrate property
...
This allows outputting a Transport Stream with a constant bitrate,
by inserting null packets.
2019-05-19 19:40:48 +00:00
Mathieu Duponchelle
4d53a7ac09
tsmux: actually respect the PCR frequency we target
2019-05-19 19:40:48 +00:00
Mathieu Duponchelle
dc2b28d456
tsmux: Use DTS over PTS
2019-05-19 19:40:48 +00:00
Sebastian Dröge
bb135ba764
mpegtsmux: Handle zero-sized buffers correctly without going into an infinite loop
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/844
2018-12-10 14:20:14 +00:00
Mathieu Duponchelle
14b9a34f54
mpegtsmux: add custom AC-3 descriptor
...
tsdemux expects a custom descriptor (GST_MTS_DESC_AC3_AUDIO_STREAM)
to detect a stream as AC3 and not EAC3.
Note that tsdemux expects this descriptor because mpegtsmux writes
a stream with a HDMV registration descriptor.
Fixes:
gst-launch-1.0 -v audiotestsrc ! avenc_ac3 ! ac3parse ! mpegtsmux ! \
tsdemux ! ac3parse ! avdec_ac3 ! audioconvert ! autoaudiosink
https://bugzilla.gnome.org/show_bug.cgi?id=797220
2018-09-27 17:34:10 +02:00
Aaron Boxer
bbbdc2cd7e
tsmux/tsdemux: Add support for JPEG2000
...
Based on patches by Milos Seleceni.
https://bugzilla.gnome.org/show_bug.cgi?id=753323
2017-07-21 09:33:31 +03:00
Thiago Santos
1b1beded51
mpegtsmux: effectively check if there is a language
...
'language' is an array and not a pointer.
CID 1358835
2016-04-29 17:19:19 -03:00
Thiago Santos
9cc00bf2c9
mpegtsmux: write language descriptor when language is available
...
Adds a new function to mpegts lib to create a iso639 language
descriptor from a language and use it in mpegtsmux to add
a language descriptor to audio streams that have a language set.
https://bugzilla.gnome.org/show_bug.cgi?id=763647
2016-04-26 23:45:34 -03:00
Hyunjun Ko
a274299f48
mpegtsmux: set non-0 payload length in PES header if video ES packet is small enough
...
https://bugzilla.gnome.org/show_bug.cgi?id=748507
2016-01-19 19:32:27 +00:00
Hyunjun Ko
f9ef150652
mpegtsmux: reset pes_bytes_written when starting to write new PES packet
...
In case of an unbounded packet (video usually), pes_bytes_written was
no reset.
https://bugzilla.gnome.org/show_bug.cgi?id=748507
2016-01-19 19:19:38 +00:00
Tim-Philipp Müller
ab5aab60a9
mpegtsmux: add support for H.265/HEVC video
...
https://bugzilla.gnome.org/show_bug.cgi?id=744367
2016-01-19 17:08:50 +00:00
Tim-Philipp Müller
b79cfc68cb
tsmux: fix wrong log message level
...
ERROR level is debugging left-over.
2015-12-01 17:07:44 +00:00
Sebastian Dröge
e75a9edff1
tsmux: Add support for Opus
...
https://bugzilla.gnome.org/show_bug.cgi?id=757049
2015-11-03 20:35:41 +02:00
Tim-Philipp Müller
c05a9424be
mpegtsmux: add basic support for asynchronous KLV metadata streams
...
This is defined in SMPTE Rp 217. In this case the
metadata PES packets carry no timestamps of their
own and no Metadata Access Unit Wrappers are used.
2015-07-13 23:34:31 +01:00
Nicolas Dufresne
e000a6f0a4
tsmux: Add negative DTS support
...
Use the saved DTS, make it signed and pass that to the stream muxer. This
preserves the running time sign. All usage of -1 as invalid TS are now
replaced with G_MININT64. Negative values will be seen as wrap-around
point, but the delta between PTS and DTS will remain correct. Demuxers
don't care about absolute values, they only cares about deltas.
https://bugzilla.gnome.org/show_bug.cgi?id=740575
2015-06-12 17:10:29 -04:00
Luis de Bethencourt
3e38d3ae02
mpegtsmux: fall through switch statement
...
Adding a comment makes coverity happy and quells the issue.
CID #1139748
2015-03-06 14:27:48 +00:00
Edward Hervey
22dfd9aef3
mpegts: Unify API : GstMpegts / gst_mpegts_ / GST_*_MPEGTS_
...
It was previously a mix and match of both variants, introducing just too much
confusion.
The prefix are from now on:
* GstMpegts for structures and type names (and not GstMpegTs)
* gst_mpegts_ for functions (and not gst_mpeg_ts_)
* GST_MPEGTS_ for enums/flags (and not GST_MPEG_TS_)
* GST_TYPE_MPEGTS_ for types (and not GST_TYPE_MPEG_TS_)
The rationale for chosing that is:
* the namespace is shorter/direct (it's mpegts, not mpeg_ts nor mpeg-ts)
* the namespace is one word under Gst
* it's shorter (yah)
2014-06-25 14:50:05 +02:00
Jesper Larsen
6a5f1354b3
mpegtsmux: Use mpeg-ts lib for PAT/PMT sections
...
Rewrite of the PAT/PMT section handling to use the mpeg-ts library
2014-02-06 15:57:50 +01:00
Thibault Saunier
b148c22cec
mpegtsmux: Properly add subtitle descriptor for DVb subpicture subtitles
...
We were adding an empty descriptor for them and it was not possible to
actually use them on muxed streams.
2013-11-13 17:56:07 -03:00
Tim-Philipp Müller
9e1b75fda3
Fix FSF address
...
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-04 00:09:59 +00:00
Mark Nauwelaerts
beceb09acc
mpegtsmux: add support for DVB subtitle and teletext streams
...
See bug #673582 .
Conflicts:
gst/mpegtsmux/Makefile.am
2012-06-16 19:23:00 +02:00
Mark Nauwelaerts
898f6b48be
mpegtsmux: optionally use fixed-size PES header
2012-06-16 19:23:00 +02:00
Mark Nauwelaerts
f49e74aa34
mpegtsmux: only write PTS and DTS if different
2012-06-16 19:23:00 +02:00
Mark Nauwelaerts
fd92a8b65a
mpegtsmux: optionally set data_alignment flag in PES header
2012-06-16 19:23:00 +02:00
Mark Nauwelaerts
c76627ec9a
mpegtsmux: re-enable inadvertent disabled code
2012-06-16 19:22:59 +02:00
Mark Nauwelaerts
c2387d8bf6
mpegtsmux: plug leaks when freeing stream
2012-06-08 17:20:30 +02:00
Mark Nauwelaerts
4cc905409e
mpegtsmux: more header clarifications and remove some redundant fields
2012-06-06 10:32:05 +02:00
Edward Hervey
fa4f487d8f
tsmux: inline more code
...
With the previous commit, makes mpegtsmux 10 to 15% faster
2012-06-06 10:31:54 +02:00
Edward Hervey
e3a02ce49a
mpegtsmux: Don't use g_list_first ()
...
Seriously ...
2012-06-06 10:31:48 +02:00
David Schleef
02daafb9ae
mpegtsmux: use gst debug for tsmux library
2011-05-18 12:06:38 -07:00
David Schleef
94f6f34ace
mpegtsmux: Set adaptation flag when appropriate
...
Specifically, when there's stuff to go into the adaptation
header.
2011-01-02 14:52:34 -08:00
David Schleef
ea113a79aa
mpegtsmux: Set random_access_indicator for keyframes
2011-01-02 14:52:34 -08:00
Andoni Morales Alastruey
4668330bdc
mpegtsmux: Initialize PES packet before getting the header size.
...
The PES header length is calculated before setting the dynamic flags, returning
a wrong value. Small frames that should be sent in a single TS packet are
spawned to a new packet because of that error. For audio streams where a single
frame can cope in one TS packet it introduces a huge overhead.
For a 100B packet, we prepare a TS packet with a payload of(100+9)B. Then, we
write the TS header using this value in tsmux_write_ts_header, and call
tsmux_stream_get_data(). The dynamic flags where not set yet and now
tsmux_stream_pes_header_length() returns 14B instead of 9B. The payload of the
TS packet is 114B, 5B more than what was calculated. 109B are sent in a first
packet and the remaining 5B are sent in another one.
Fixes bug #628548 .
2010-09-04 15:01:30 +02:00
vanista
751555b5c3
gst/mpegtsmux/: Improve muxing of AC3/h264 streams a bit. Fixes bug #550613 .
...
Original commit message from CVS:
Patch by: vanista <vanista at gmail dot com>
* gst/mpegtsmux/mpegtsmux.c: (mpegtsmux_create_stream):
* gst/mpegtsmux/tsmux/tsmux.c: (tsmux_write_pmt):
* gst/mpegtsmux/tsmux/tsmuxstream.c: (tsmux_stream_new),
(tsmux_stream_write_pes_header), (tsmux_stream_get_es_descrs):
* gst/mpegtsmux/tsmux/tsmuxstream.h:
Improve muxing of AC3/h264 streams a bit. Fixes bug #550613 .
2009-01-05 11:28:49 +00:00
vanista
2082d618f9
gst/mpegtsmux/: Add initial support for muxing AC3/DTS/LPCM into MPEG TS.
...
Original commit message from CVS:
Patch by: vanista <vanista at gmail dot com>
* gst/mpegtsmux/mpegtsmux.c: (mpegtsmux_create_stream):
* gst/mpegtsmux/tsmux/tsmuxstream.c: (tsmux_stream_new):
Add initial support for muxing AC3/DTS/LPCM into MPEG TS.
Fixes bug #550613 .
2008-11-24 10:46:01 +00:00
Sebastian Dröge
7ac077828f
gst/mpegtsmux/mpegtsmux_aac.c: Allocate a fixed size buffer on the stack instead of using malloc().
...
Original commit message from CVS:
* gst/mpegtsmux/mpegtsmux_aac.c: (mpegtsmux_prepare_aac):
Allocate a fixed size buffer on the stack instead of using malloc().
* gst/mpegtsmux/tsmux/tsmux.c: (tsmux_new), (tsmux_free),
(tsmux_program_new), (tsmux_program_free):
* gst/mpegtsmux/tsmux/tsmuxstream.c: (tsmux_stream_new),
(tsmux_stream_free), (tsmux_stream_consume),
(tsmux_stream_add_data):
Use GSlice.
2008-09-01 17:49:59 +00:00
Sebastian Dröge
845094c32e
Add Fluendo MPEG-TS muxer and libtsmux to gst-plugins-bad. This is renamed to mpegtsmux to prevent conflicts. Also al...
...
Original commit message from CVS:
* configure.ac:
* gst/mpegtsmux/Makefile.am:
* gst/mpegtsmux/mpegtsmux.c: (mpegtsmux_base_init),
(mpegtsmux_class_init), (mpegtsmux_init), (mpegtsmux_dispose),
(gst_mpegtsmux_set_property), (gst_mpegtsmux_get_property),
(release_buffer_cb), (mpegtsmux_create_stream),
(mpegtsmux_create_streams), (mpegtsmux_choose_best_stream),
(mpegtsmux_collected), (mpegtsmux_request_new_pad),
(mpegtsmux_release_pad), (new_packet_cb),
(mpegtsdemux_prepare_srcpad), (mpegtsmux_change_state),
(plugin_init):
* gst/mpegtsmux/mpegtsmux.h:
* gst/mpegtsmux/mpegtsmux_aac.c: (mpegtsmux_prepare_aac):
* gst/mpegtsmux/mpegtsmux_aac.h:
* gst/mpegtsmux/mpegtsmux_h264.c: (mpegtsmux_prepare_h264):
* gst/mpegtsmux/mpegtsmux_h264.h:
* gst/mpegtsmux/tsmux/Makefile.am:
* gst/mpegtsmux/tsmux/crc.h:
* gst/mpegtsmux/tsmux/tsmux.c: (tsmux_new), (tsmux_set_write_func),
(tsmux_set_pat_frequency), (tsmux_get_pat_frequency), (tsmux_free),
(tsmux_program_new), (tsmux_set_pmt_frequency),
(tsmux_get_pmt_frequency), (tsmux_program_add_stream),
(tsmux_program_set_pcr_stream), (tsmux_get_new_pid),
(tsmux_create_stream), (tsmux_find_stream), (tsmux_packet_out),
(tsmux_write_adaptation_field), (tsmux_write_ts_header),
(tsmux_write_stream_packet), (tsmux_program_free),
(tsmux_write_section), (tsmux_write_section_hdr),
(tsmux_write_pat), (tsmux_write_pmt):
* gst/mpegtsmux/tsmux/tsmux.h:
* gst/mpegtsmux/tsmux/tsmuxcommon.h:
* gst/mpegtsmux/tsmux/tsmuxstream.c: (tsmux_stream_new),
(tsmux_stream_get_pid), (tsmux_stream_free),
(tsmux_stream_set_buffer_release_func), (tsmux_stream_consume),
(tsmux_stream_at_pes_start), (tsmux_stream_bytes_avail),
(tsmux_stream_bytes_in_buffer), (tsmux_stream_get_data),
(tsmux_stream_pes_header_length),
(tsmux_stream_find_pts_dts_within),
(tsmux_stream_write_pes_header), (tsmux_stream_add_data),
(tsmux_stream_get_es_descrs), (tsmux_stream_pcr_ref),
(tsmux_stream_pcr_unref), (tsmux_stream_is_pcr),
(tsmux_stream_get_pts):
* gst/mpegtsmux/tsmux/tsmuxstream.h:
Add Fluendo MPEG-TS muxer and libtsmux to gst-plugins-bad. This
is renamed to mpegtsmux to prevent conflicts. Also all relevant
informations about copyright and license are added to the top of
every file but apart from that no changes compared to the latest
SVN versions happened.
2008-09-01 16:38:40 +00:00