Commit graph

7520 commits

Author SHA1 Message Date
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
Mathieu Duponchelle
f65c8fff50 rtponviftimestamp: fix setting of the discontinuity flag
The D bit is meant to be set whenever there is a discontinuity
in transmission, and directly maps to the DISCONT flag.

The E bit is not meant to be set on every buffer preceding a
discontinuity, but only on the last buffer of a contiguous section
of recording. This has to be signaled through the unfortunately-named
"discont" field of the custom NtpOffset event.
2019-07-18 23:07:57 +00:00
Mathieu Duponchelle
0d5db92953 rtponvifparse: set ONVIF timestamps as buffer PTS 2019-07-18 23:07:57 +00:00
Mathieu Duponchelle
2305bf272c h26{4,5}parse: add support for forward predicted trick mode
Also stop assigning TRUE to fields with |=
2019-07-18 13:46:45 +00:00
Seungha Yang
06d85ca487 h264parse: Update caps per pixel aspect ratio change
Output caps should be updated per pixel aspect ratio change.
2019-07-16 17:53:42 +00:00
Seungha Yang
0e4efb86c8 h265parse: Expose parsed colorimetry when VUI provided it
... and also if upstream did not specify the colorimetry.
2019-07-16 17:53:42 +00:00
Seungha Yang
375acd5a79 h264parse: Expose parsed colorimetry when VUI provided it
... and also if upstream did not specify the colorimetry.
2019-07-16 17:53:42 +00:00
Martin Theriault
30f85a3189 aiff: Fix infinite loop in header parsing. 2019-07-15 16:16:05 -04:00
Sebastian Dröge
5c324cebb9 avwait: In running-time mode, select start/end running time based on the actual video timestamps
Otherwise we would start/end at exactly the given times, which might be
up to 1 frame earlier/later than the video.
2019-07-12 12:54:02 +03:00
Sebastian Dröge
3863a356cb avwait: Add some more debug output 2019-07-12 12:54:02 +03:00
Sebastian Dröge
407f311f2c avwait: Fix clipping of audio buffers at the start of recording 2019-07-12 12:54:02 +03:00
Sebastian Dröge
6ea4557271 timecodestamper: Add support for linear timecode (LTC) from an audio stream
Based on a patch by
  Georg Lippitsch <glippitsch@toolsonair.com>
  Vivia Nikolaidou <vivia@toolsonair.com>

Using libltc from https://github.com/x42/libltc
2019-07-08 16:45:12 +00:00
Sebastian Dröge
678064d603 timecodestamper: Rewrite element API and code flow
We now have a single property to select the timecode source that should
be applied, and for each timecode source the timecode is updated at
every frame. Then based on a set mode, the timecode is added to the
frame if none exists already or all existing timecodes are removed and
the timecode is added.

In addition the real-time clock is considered a proper timecode source
now instead of only allowing to initialize once in the beginning with
it, and also instead of just taking the current time we now take the
current time at the clock time of the video frame.
2019-07-08 16:45:12 +00:00
Mathieu Duponchelle
9996ae9ae0 tsmux: output smoothly increasing PTS when in CBR mode
Thanks to that, when its output is plugged into eg a udp sink, the
outgoing data can be output in a smoother way, reducing burstiness
2019-07-04 23:28:42 +00:00
Jan Schmidt
8899a471e3 h264parse lib: Remove the SPS parse_vui_params flag
The SPS parsing functions take a parse_vui_param flag
to skip VUI parsing, but there's no indication in the output
SPS struct that the VUI was skipped.

The only caller that ever passed FALSE seems to be the
important gst_h264_parser_parse_nal() function, meaning - so the
cached SPS were always silently invalid. That needs changing
anyway, meaning noone ever passes FALSE.

I don't see any use for saving a few microseconds in
order to silently produce garbage, and since this is still
unstable API, let's remove the parse_vui_param.
2019-07-05 00:17:59 +10:00
Seungha Yang
1c99c37548 tsmuxstream: Do not try return from void function
../subprojects/gst-plugins-bad/gst/mpegtsmux/tsmux/tsmuxstream.c(1082): warning C4098:
  'tsmux_stream_get_es_descrs': 'void' function returning a value
2019-07-04 19:43:42 +09:00
Seungha Yang
00b2b599d6 mpegtsmux: Remove white space 2019-07-04 19:42:48 +09:00
Jan Schmidt
bd46630b62 h265parse: Don't segfault when SPS hasn't been seen yet.
Fix a recently introduced segfault. Don't de-reference a NULL
SPS pointer when attempting to update source caps before SPS
has been seen in the stream.
2019-07-04 01:12:06 +10:00
OleksandrKvl
9a39ba6a35 irtspparse: handle multiple and incomplete frames
Interleaved frames can be fragmented between
incoming frames. Thus, we can have multiple
frames within the single input frame, as well as
incomplete frame. Now it preserves parsing
state and handle both situations.

Fixes #991
2019-07-02 13:23:27 +00:00
Seungha Yang
be25c988fd rtp: Fix incompatible type build warning
Use GstURIType instead of guint

../subprojects/gst-plugins-bad/gst/rtp/gstrtpsink.c(575):
    warning C4133: '=': incompatible types ...

../subprojects/gst-plugins-bad/gst/rtp/gstrtpsrc.c(725):
    warning C4133: '=': incompatible types ...
2019-06-26 19:56:09 +09:00
OleksandrKvl
130d096608 pcapparse: Fix handling of TCP payload length
The length of the  TCP payload is the IP plus TCP header length
subtracted from the IP datagram length specified in the IP header.
Prior to this, the size was calculated incorrectly, considering
all data after TCP header as a payload till the end of a packet.

Fixes #995
2019-06-24 15:55:38 +00:00