Commit graph

7540 commits

Author SHA1 Message Date
Sebastian Dröge
fc463b9ebc timecodestamper: Add new auto-resync boolean property
This allows selecting whether we continue updating our last known
upstream timecode whenever a new one arrives or instead only keep the
last known one and from there on count up.
2019-10-23 16:48:26 +03:00
Sebastian Dröge
96aa9b5633 timecodestamper: Add last-known-or-zero mode
This uses the last known upstream timecode (counted up per frame), or
otherwise zero if none was known.

The normal last-known timestamp uses the internal timecode as fallback
if no upstream timecode was ever known.
2019-10-23 16:48:26 +03:00
Sebastian Dröge
b57687a772 timecodestamper: Don't initialize upstream timecode with zero if none was seen
Instead keep it unset and use the internal timecode wherever needed as
fallback.
2019-10-23 16:48:26 +03:00
Sebastian Dröge
faffeaf839 timecodestamper: Update set-tc property documentation with latest version of reality 2019-10-23 16:48:26 +03:00
Sebastian Dröge
651110de09 pnmdec: Return early on ::finish() if we have no actual data to parse
Otherwise we'd be working with a NULL buffer and cause various critical
warnings along the way.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1104
2019-10-23 11:32:56 +00:00
Tim-Philipp Müller
f218ec2794 Remove autotools build system 2019-10-14 13:54:27 +01:00
Vivia Nikolaidou
f7626c1f2a errorignore: Added convert-error signal
The convert-error signal is emitted whenever we get a GstFlowReturn
other than GST_FLOW_OK. The handler can then decide what to convert that
into - for instance, return the same GstFlowReturn to not convert it.
The default handler will act according to the ignore-error,
ignore-notlinked, ignore-notnegotiated and convert-to properties. If a
handler is connected, these properties are ignored.
2019-09-24 15:44:25 +03:00
Matthew Waters
67e4684932 build: fix werror build with newer gcc
In file included from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstbin.h:27,
                 from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gst.h:35,
                 from ../gst/rtp/gstrtpsink.h:23,
                 from ../gst/rtp/gstrtpsink.c:49:
In function ‘gst_rtp_sink_start’,
    inlined from ‘gst_rtp_sink_change_state’ at ../gst/rtp/gstrtpsink.c:509:11:
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstelement.h:422:18: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
  422 |   gchar *__txt = _gst_element_error_printf text;                        \
../gst/rtp/gstrtpsink.c:476:3: note: in expansion of macro ‘GST_ELEMENT_ERROR’
  476 |   GST_ELEMENT_ERROR (self, RESOURCE, NOT_FOUND,
      |   ^~~~~~~~~~~~~~~~~
../gst/rtp/gstrtpsink.c: In function ‘gst_rtp_sink_change_state’:
../gst/rtp/gstrtpsink.c:477:37: note: format string is defined here
  477 |       ("Could not resolve hostname '%s'", remote_addr),
      |                                     ^~

In file included from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstbin.h:27,
                 from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gst.h:35,
                 from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/rtp/gstrtpdefs.h:27,
                 from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/rtp/rtp.h:25,
                 from ../gst/rist/gstristsink.c:72:
In function ‘gst_rist_sink_setup_rtcp_socket’,
    inlined from ‘gst_rist_sink_start’ at ../gst/rist/gstristsink.c:658:10,
    inlined from ‘gst_rist_sink_change_state’ at ../gst/rist/gstristsink.c:801:13:
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstelement.h:422:18: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
  422 |   gchar *__txt = _gst_element_error_printf text;                        \
../gst/rist/gstristsink.c:595:3: note: in expansion of macro ‘GST_ELEMENT_ERROR’
  595 |   GST_ELEMENT_ERROR (sink, RESOURCE, NOT_FOUND,
      |   ^~~~~~~~~~~~~~~~~
../gst/rist/gstristsink.c: In function ‘gst_rist_sink_change_state’:
../gst/rist/gstristsink.c:596:37: note: format string is defined here
  596 |       ("Could not resolve hostname '%s'", remote_addr),
      |                                     ^~
2019-09-24 10:29:44 +10:00
Marc Leeman
f1aefb77e6 rtpmanagerbad: allow creation of elements at initialisation 2019-09-20 15:35:09 +00:00
Nicolas Dufresne
06d7a5ca3c ristsrc: Fix comment about odd/even ports
It is the RTP port that is even, and the RTCP port being +1 (hence odd).
2019-09-18 16:27:35 -04:00
VaL Doroshchuk
daa47b8dc1 GstViewfinderBin: Fix typo in videoscale's name element
If user's video sink has been changed, it is unable to fetch
videoscale element by name and link to the video sink.
2019-09-16 08:24:42 +00:00
Saunier Thibault
7a66b16d97 Import GstTranscoder 2019-08-28 13:02:13 +00:00
Olivier Crête
963dda3482 tsdemux: Make latency configurable
Allows for "low latency" mpeg-ts mode which is not standard, but somewhat common.
For this to work the sender has to put timestamps at a higher frequency than the spec requires.
2019-08-27 12:09:57 -04:00
Guillaume Desmottes
403cffeace h265parse: fix colorimetry in src caps if sink caps has no structure
We do want to include the colorimetry in the src caps if the sink caps
doesn't have any structure associated.
2019-08-27 06:06:01 +00:00
Guillaume Desmottes
e0d9722a1b h264parse: fix colorimetry in src caps if sink caps has no structure
We do want to include the colorimetry in the src caps if the sink caps
doesn't have any structure associated.
2019-08-27 06:06:01 +00:00
Aaron Boxer
40212aaf00 h265parse: add support for SEI registered user data 2019-08-26 18:14:17 -04:00
Aaron Boxer
b7558bd190 h264parse: use gstvideoparseutils to handle user data 2019-08-26 18:14:17 -04:00
Aaron Boxer
d5946fc804 mpegvideoparse: use gstvideoparseutils to handle user data 2019-08-26 18:14:17 -04:00
Aaron Boxer
22ec7fbbc2 videoparseutils: add new parser class 2019-08-26 18:14:17 -04:00
Mathieu Duponchelle
42adb02a10 docstrings: port ulinks to markdown links 2019-08-23 20:14:12 +02:00
Jan Schmidt
eaf918df03 tsdemux: Limit the maximum PES payload size
PES packets with size 0 are unbounded, and
could therefore overflow the 32-bit size
accumulator.

Add a 32MB limit, which is larger than
any PES packet should ever get. If one does,
then output a 32MB chunk and continue.
2019-08-21 18:07:02 +00:00
Matthew Waters
062ca5e55b h264parse: don't critical on VUI parameters > 2^31
A guint32 greater than 2^31 would be interpreted as negative by
gst_util_uint64_scale_int() and critical. Use the 64-bit integer version
of the function instead.
2019-08-20 18:12:56 +10:00
Aaron Boxer
a427b36f79 tsdemux: do not error if buffer size is invalid due to DISCONT
Don't signal a pipeline error when processing incomplete
j2pk PES packets that are too small. That can happen normally
during a DISCONT and shouldn't shut down the whole pipeline
2019-08-16 10:26:04 -04:00
Mathieu Duponchelle
61a7707eca atscmux: fix AC-3 stream id
According to ATSC A/52, Annex A, section 4.2:

The value of stream_id in the PES header shall be 0xBD
(indicating private_stream_1)
2019-08-13 21:36:06 +00:00
OleksandrKvl
f5a3d7b497 pcapparse: fix DISCONT flag setting
DISCONT flag should be set only for first packet.
Fixes #1047.
2019-08-13 18:54:54 +03:00
Sebastian Dröge
b0470e2c98 mxfdemux: Also allow picture essence element type 0x05 for VC-3
It's found like this in various files out there even if it does not
conform to SMPTE 2019-4.
2019-08-12 18:19:46 +00:00
Olivier Crête
f175b05c1d rist: Fix documentation 2019-08-09 17:45:51 +00:00
Olivier Crête
9b53ee76fd rist: Document stats-internal unit 2019-08-09 17:45:51 +00:00
Olivier Crête
6c7e7580fb ristsink: Only accept RTCP APP packets with subtype==0 2019-08-09 17:45:51 +00:00
Olivier Crête
324202d70b rist: Fix typo in the documentation 2019-08-09 17:45:51 +00:00
Olivier Crête
16cbd0b75e rist: Use the right parameters the signal 2019-08-09 17:45:51 +00:00
Marc Leeman
efd155c4d9 rtp: do not overrule RtpInfo when non dynamic type
When looking up the Rtp information, do not overwrite information
already found with encoding-name by static information.
2019-08-08 18:47:05 +00:00
Seungha Yang
b624c6a067 h265parse: Fix mastering display info parsing
Fix mismatched Red Y coordinate value.
2019-08-08 20:01:41 +09:00
Mathieu Duponchelle
bc4c221be3 tsdemux: always take the seek segment stop into account
Even if an accurate seek was not requested, we should still
respect the seek stop.
2019-08-07 16:39:21 +10:00
Jan Schmidt
b4a298c80e tsdemux: Use gst_segment_do_seek()
Remove some custom and incomplete seek calculation
logic in favour of gst_segment_do_seek(), and
short-circuit any actual seeking or recalculation
if the position didn't change and just send an updated
segment directly.

This removes the custom seeking logic in favour of
using standard core seek handling.
2019-08-07 16:39:21 +10:00
Jan Schmidt
b7c4785a22 mpegtsdemux: Keep the position increasing.
Don't keep the segment position jumping back and forth
based on stream DTS/PTS, only increase the position
if the new value is larger than the old.
2019-08-07 16:39:21 +10:00
Jan Schmidt
32d650491c mpegts: Re-work segment tracking
Add an output segment into the base class for sub-classes
to use for their output segment, in a place where the base
class can see it.
2019-08-07 16:39:21 +10:00
Mathieu Duponchelle
aea20f207d rtponviftimestamp: add opt-out "drop-out-of-segment" property
The default behaviour of rtponviftimestamp is to drop buffers
outside the segment. This creates obvious problems for reverse
playback.

The ONVIF specification unfortunately doesn't describe how to handle
that specific use case, but we can expose a property to let the
user disable the dropping behaviour, and forward these buffers with
a G_MAXUINT64 ONVIF timestamp.

Also modify rtponvifparse to handle such timestamps appropriately.
2019-08-06 22:49:25 +00:00
Mathieu Duponchelle
1ef3186243 rtponvifparse: parse E flag and send EOS when needed 2019-08-06 22:49:25 +00:00
Sebastian Dröge
8257159909 errorignore: Try pushing again after a caps event too
It might have reconfigured everything correctly so that pushing buffers
works again afterwards, e.g. if the previous caps event was just
rejected.
2019-08-06 16:22:27 +00:00
Sebastian Dröge
5002efbf8d timecodestamper: Require a non-0/1 framerate on the pad templates
We reject caps with other framerates as it's impossible to generate
timecodes unless we actually know a constant framerate. Reflect this
also in the pad template caps.
2019-08-06 16:22:27 +00:00
Sebastian Dröge
2386385822 avwait: Improve debug output a bit 2019-08-06 16:22:27 +00:00
Fuwei Tang
f3587c61ba h264parse: fix issue that caps "interlace-mode" can't be updated correctly
Upstream overrides the info "interlace-mode", otherwise update it with
SPS info.
2019-08-06 09:47:36 +08:00
Doug Nazar
6c552030f7 mpegdemux: Parse mpeg audio layer version and add to caps. 2019-08-05 14:32:24 +00:00
Doug Nazar
341a800954 mpegdemux: Finish setting up stream before adding pad. 2019-08-05 14:32:24 +00:00
Marc Leeman
f5e7b4bd73 mpeg4videoparse: allow sending config at IDR
Based on h264parse, also allow to send the config at every IDR.
2019-07-31 18:03:19 +00:00
Mathieu Duponchelle
73f92371b8 basetsmux: expose pcr-interval property
Instead of using a static hardcoded PCR interval, allow the user
to configure it.

Also revert back the default to a 40 ms interval, that was changed
in recent patches for no good reason.
2019-07-31 15:54:13 +02:00
Seungha Yang
5e7dbdf585 h265parse: Add support for compatible profiles of extensions
From decoder's capability point of view as defined by the h265 specification,
accept peer profile caps.
2019-07-31 00:32:40 +09:00
Sebastian Dröge
aafda1c76f timecodestamper: Validate LTC timestamps before trying to use them
There's no point in working with invalid LTC timestamps as all future
calculations will be wrong based on this, and invalid LTC timestamps can
sometimes be read via the audio input.
2019-07-25 18:27:30 +03:00
Fabrice Bellet
96004cd751 siren: fix a global buffer overflow spotted by asan
This patch just enforces boudaries for the access to the
standard_deviation array (64 floats). Such case can be
seen with a corrupted stream, where there's no hope to
obtain a valid decoded frame anyway.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1002
2019-07-22 08:00:00 +00:00