Commit graph

7413 commits

Author SHA1 Message Date
Mathieu Duponchelle
dc2b28d456 tsmux: Use DTS over PTS 2019-05-19 19:40:48 +00:00
Olivier Crête
beba12e97b rist: Fix typo 2019-05-17 17:15:13 -04:00
Thibault Saunier
e19700c458 docs: Add gstrist to the documentation 2019-05-16 09:16:34 -04:00
Thibault Saunier
8917c62f93 docs: Make sure frei0r plugins properties default are stable
frei0r returns 'random' values as default and it makes the cache
often change for no good reason
2019-05-14 10:47:19 -04:00
Thibault Saunier
47a49f3381 docs: Build documentation with hotdoc 2019-05-13 17:00:00 -04:00
Thibault Saunier
7fe3f36ac8 Minor documentation fixes 2019-05-13 11:36:27 -04:00
Seungha Yang
a24367132b h265parse: Parse mastering display info and content light level from SEI
... and set to caps if necessary.

Note 1) the mastering display info and content light level SEI meessages
are persistent in the corresponding codec video sequence (i.e., GOP).
So any bitstream containing those SEI messages
(and also all pictures are intended to be HDR rendered) should be ensured that
each first slice of codec video sequence follows those SEI messages.

Note 2) The codec video sequence is a group an [IRAP + NoRaslOutputFlag == 1]
and following AUs which are not [IRAP + NoRaslOutputFlag == 1]
The NoRaslOutputFlag is equal to 1 for each IDR AU, BLA AU and some CRA AU.
For a CRA AU to have NoRaslOutputFlag equal to 1, following condition should required.
* When the CRA AU is the first AU in the bitstream in decoding order
* or the CRA AU is the first AU that follows an end of sequence NAL in decoding order
* or the HandleCraAsBlaFlag equal to 1.

Due to the limited context in parse element, in this commint, CRA AU will not considered as
having the NoRaslOutputFlag equal to 1. Therefore, in the worst case,
mastering-display-info and content-light-level could be cleared one GOP after
when stream was chagned from HDR to SDR.
2019-05-03 19:44:15 +00:00
Nicolas Dufresne
f0d04b39dd rist: Add a plugin implenting RIST TR-06-1 Simple Profile
RIST TR-06-1 is a specification for video streaming made by the VSF
group. It is using a subset of RTP specification to which some
modification has been made to improve RTX behaviour and avoid any need
for signaling. The plugin implement ristrtxsend / ristrtxreceive element
which are the RIST specific equivalent of rtprtxsend/rtprtxreceive and
ristsink / ristsrc which implement rist transmitter and receiver. The
RIST protocol is meant to be used in unidirectional way. Typically, MPEG
TS over RTP is used.

Currently we support unicast and multicast streaming according to the
specification. This patch does not include any bonding support yet. The
ristsrc element introduce rist:// URI handling in parallel to it's
property configuration interface.
2019-05-02 19:28:25 +00:00
Xavier Claessens
63562d0b0a h264parse: Fix typo when setting multiview mode and flags 2019-05-02 12:06:36 +00:00
Tim-Philipp Müller
76f1ed15fb h264parse: extract CEA-708 closed captions
Expose SEI data in the H.264 bitstream parser API and
extract closed captions and other things that are not
specified in the H.264 spec itself in the videoparser.

Based on patch by: Mathieu Duponchelle <mathieu@centricular.com>

https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/940
2019-04-08 19:21:34 +01:00
Mathieu Duponchelle
f11ce297f4 rtponviftimestamp: prioritize PTS over DTS for NTP timestamp
NTP timestamps are supposed to match the expected presentation
time, prefering the DTS to compute them was incorrect.

<https://www.onvif.org/specs/stream/ONVIF-Streaming-Spec.pdf>

Section 6.3.1: NTP Timestamps
2019-04-05 00:28:48 +00:00
Mathieu Duponchelle
62b240eb4e rtponviftimestamp: buffer without PTS or DTS is not an error.
For example, when plugged after rtpgstpay, serialized events will
have neither.
2019-04-05 00:28:48 +00:00
Mathieu Duponchelle
9c3816830c rtponviftimestamp: implement support for the T flag
https://www.onvif.org/specs/stream/ONVIF-Streaming-Spec.pdf

6.3 RTP header extension
2019-04-05 00:28:48 +00:00
Mathieu Duponchelle
0e89f2a6d9 h264parse, h265parse: take unit_field_based_flag into account ..
when computing timecode metas. Depending on the value of that flag,
n_frames is to be interpreted as a number of fields or a number of
frames. As GstVideoTimeCodeMeta always deals with frames, we want
to scale that number when needed.
2019-04-02 15:18:03 +02:00
Mathieu Duponchelle
55bb8966e1 h265parse: forward time codes
This transforms time code SEIs into GstVideoTimeCodeMeta
2019-04-01 10:02:33 +00:00
Mathieu Duponchelle
7c425cf339 h264parse: forward time codes
This transforms time codes from the timing SEI into
GstVideoTimeCodeMeta
2019-04-01 10:02:33 +00:00
Aaron Boxer
adfd8aa696 mpegvideoparse: add debug code for closed captions
This debug code will help determine why certain instances of closed
captions that are present in the Picture User Data are not actually
processed by the pipeline
2019-03-27 13:22:47 -04:00
Haihua Hu
5498252750 h265parse: ignore VUI parse fail when parse SPS
VUI is an optional for SPS parse, some HEVC file has incorrect VUI
parameters but still can be decoded
2019-03-26 02:06:03 +00:00
Thibault Saunier
ebb0527e75 mxfdemux: Avoid possible NULL caps 'dereferencing' 2019-03-21 00:40:53 +00:00
Tim-Philipp Müller
b541b58937 netsim: don't use G_INLINE_FUNC
It's deprecated. Just use 'inline'.
2019-03-18 15:12:37 +00:00
Mathieu Duponchelle
91c76b0851 mpegtsmux: restore stream creation order
In 7c767f3fcd , stream creation was
refactored to occur before potential program creation. This created
issues with pipelines such as:

gst-launch-1.0 videotestsrc ! video/x-raw, format=I420, width=640, height=640, framerate=25/1 ! \
x264enc ! hlssink2 target-duration=1

eg.: gst_buffer_copy_into: assertion 'bufsize >= offset + size' failed

As this reordering was actually not needed for the purpose of allowing
to specify a PCR stream, this reverts the reordering part of the
initial commit.
2019-02-27 19:00:36 +01:00
Vivia Nikolaidou
ce0be4d1ac audiobuffersplit: Added max-silence-time property 2019-02-21 15:16:37 +00:00
Mathieu Duponchelle
7c767f3fcd mpegtsmux: allow specifying the PID of the PCR stream
The structure passed through the prog-map can now contain a
PCR_<prog_id>=sink_<PID> key-value pair.
2019-02-20 16:22:33 +01:00
Jan Schmidt
b7f95d64f8 tsdemux: Skew correction should use the upstream DTS
The MPEG-TS packetiser should use the upstream DTS for
skew correction when running in that mode, as the DTS
carries the upstream arrival time. The PTS (if it's
set at all) is less useful, and can be invalid.
2019-02-13 22:15:53 +11:00
Nirbheek Chauhan
fffb2aa12f misc: Fix warnings on Cerbero MinGW
gstladspa.c:360:5: error: zero-length ms_printf format string [-Werror=format-zero-length]

vad_private.c:108:3: error: this decimal constant is unsigned only in ISO C90 [-Werror]

gstdecklinkvideosink.cpp:478:32: error: comparison between 'BMDTimecodeFormat {aka enum _BMDTimecodeFormat}' and 'enum GstDecklinkTimecodeFormat' [-Werror=enum-compare]

win/DeckLinkAPI_i.c:72:8: error: extra tokens at end of #endif directive [-Werror]

win/DeckLinkAPIDispatch.cpp:35:10: error: unused variable 'res' [-Werror=unused-variable]

gstwasapiutil.c:733:3: error: format '%x' expects argument of type 'unsigned int', but argument 8 has type 'DWORD' [-Werror=format]
gstwasapiutil.c:733:3: error: format '%x' expects argument of type 'unsigned int', but argument 9 has type 'guint64' [-Werror=format]

kshelpers.c:446:3: error: missing braces around initializer [-Werror=missing-braces]
kshelpers.c:446:3: error: (near initialization for 'known_property_sets[0].guid.Data4') [-Werror=missing-braces]
2019-02-06 00:10:28 +05:30
Thibault Saunier
3324ad377d testbin: Do not take FlowCombiner into account when flushing
The way FlowCombiner combines the FLUSH doesn't work in the case
we have several "sinkpads" since any flush return FLUSH. But in the
case we have a seek where on one branch flush is done, we should
just say OK otherwise we might return FLUSHING to a src that has already
been seeked and is ready to process new buffers
2019-01-31 01:20:13 +00:00
Thibault Saunier
a00e917811 testbin: Forward seek to all sources 2019-01-31 01:20:13 +00:00
Nicola Murino
e5278757c3 mpegpsmux: add stream-format and alignment to H.264 caps 2019-01-24 22:51:39 +01:00
Nicola Murino
60501f128c mpegdemux: add support for H.265 2019-01-24 09:35:06 +00:00
Nicola Murino
bbfd3154fb mpegdemux: add stream format to H.264 caps 2019-01-24 09:35:06 +00:00
Sebastian Dröge
a3a67c3c30 removesilence: Add $(LIBM) to libraries
/usr/bin/ld: .libs/libgstremovesilence_la-vad_private.o: in function `vad_set_threshold':
./gst/removesilence/vad_private.c:108: undefined reference to `pow'
/usr/bin/ld: .libs/libgstremovesilence_la-vad_private.o: in function `vad_get_threshold_as_db':
./gst/removesilence/vad_private.c:114: undefined reference to `log10'
2019-01-17 17:14:31 +02:00
Tim-Philipp Müller
e42efbccb1 Remove compositor plugin which was moved to -base
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/138
2018-12-27 15:31:58 +01:00
Tim-Philipp Müller
b9e15fddb1 Remove GstVideoAggregator, moved into libgstvideo in -base
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/137
2018-12-26 19:06:33 +01:00
Tim-Philipp Müller
63e961ff7a stereo: remove plugin which has been merged into audiofx in -good
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/457
2018-12-25 13:06:40 +01:00
Sebastian Dröge
3891bf2695 timecodestamper: Don't use deprecated API 2018-12-20 10:13:45 +02:00
Tim-Philipp Müller
9313470358 meson: install freeverb preset file 2018-12-17 09:12:53 +00:00
Nicola Murino
c16bc1c5a1 removesilence: add libm to meson.build 2018-12-14 19:55:32 +01:00
Nicola Murino
824e079273 removesilence: reset filter on start and on segment events 2018-12-14 18:43:49 +01:00
Nicola Murino
f7880c0272 removesilence: improve documentation 2018-12-14 18:43:49 +01:00
Nicola Murino
8978f55886 removesilence: add threshold property
silence thresold was hardcoded to -60 dB, now it is configurable
using this new property

Closes #63
2018-12-14 18:43:49 +01:00
Nicola Murino
e549566969 removesilence: add properties to detect silence only after minimum silence time/buffers
Closes #63
2018-12-14 18:43:49 +01:00
Nicola Murino
ef3da2787a removesilence: add silent property to control bus message notifications
Closes #63
2018-12-14 18:43:49 +01:00
Nicola Murino
fa7da2fb16 removesilence: post bus messages when silence is detected/finished
Closes #63
2018-12-14 18:43:49 +01:00
Nicola Murino
50a84f8d7b removesilence: add squash property
allows to output buffers without timestamp gap when silence is removed

Closes #63
2018-12-14 18:43:49 +01:00
Seungha Yang
8766a45ee4 h26{4,5}parse: Don't confuse nal of codec_data with frame
vps/sps/pps in codec_data shouldn't be considered as inband data.
Otherwise, h26{4,5}parse never insert them to nal when transform
(packetized to byte-stream) use case
2018-12-13 10:32:30 +00:00
Tim-Philipp Müller
1b0e150d88 mpegvideoparse: extract CEA-708 closed captions 2018-12-11 13:56:06 +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
Guillaume Desmottes
5efe9944e0 h265parse: process SEI recovery point
Similar change as the on I did in h264parse. We want to process SEI
recovery point as keyframe so muxers will mark them as seek points and
decoders will be able to start decoding from them rather than waiting
for an IDR.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/790
2018-12-02 02:07:39 +00:00
Guillaume Desmottes
99bd3f716c h265parse: parse SEI messages
Don't do anything with them yet. I just copied the parsing and
processing logic from h264parse.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/790
2018-12-02 02:07:39 +00:00
Guillaume Desmottes
5ac4a6e003 h264parse: mark SEI Recovery Point as keyframes
The spec states that "recovery point SEI message assists a decoder in
determining when the decoding process will produce acceptable
pictures for display after the decoder initiates random access or after the
encoder indicates a broken link in the coded video sequence."

Mark those as keyframes so muxers will mark them as seek points and
decoders will be able to start decoding from them rather than waiting
for an IDR.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/790
2018-12-02 02:07:39 +00:00