Commit graph

7584 commits

Author SHA1 Message Date
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
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
Sebastian Dröge
934d0fcdd3 avwait: Make sure to never unref an input buffer we already unreffed before 2019-06-24 14:20:54 +03:00
Sebastian Dröge
cf35802c52 avwait: Add support for setting an end running time
It was possible to set a start running time and start/end timecode
before, but not an end running time.
2019-06-24 14:20:54 +03:00
Sebastian Dröge
074df2f4bc avwait: Correctly stop recording and signal recording stop on EOS
If recording is set to FALSE after the last audio or video buffer and
before the EOS event then recording stop is never signalled.

Similarly, we should signal recording stop once both audio and video are
EOS, regardless of the recording property, as there's nothing to be
recorded anymore.
2019-06-24 07:56:04 +00:00
Sebastian Dröge
324e55a3cd mpegvideoparse: Pass through interlace-mode field from upstream if available
We generally always prefer the information from upstream for other
metadata (pixel-aspect-ration, etc.) and should also do so here.

Other parsers (h264parse) already do the same.
2019-06-19 12:49:01 +00:00
Nicola Murino
59d8e56e95 h265parse: update parser state and header flag when using fallback sps
When sps parsing fails we use a fallback sps from the caps, since we
have got an sps we need to update parser state and header as in the case the
sps was successfully parsed
2019-06-15 20:02:10 -04:00
Nicola Murino
c22b52ef4d h264parse: update parser state and header flag when using fallback sps
When sps parsing fails we use a fallback sps from the caps, since we
have got an sps we need to update parser state and header as in the case the
sps was successfully parsed

Closes #503
2019-06-15 20:02:10 -04:00
Thibault Saunier
475628c20e h264parse: Post a WARNING when data is broken 2019-06-15 23:13:43 +00:00
Seungha Yang
4f6ac87f67 h265parse: Add more string representations of extension profiles 2019-06-13 23:05:09 -04:00
Dong Il Park
392f86ae35 h265parse: Update framerate when we found vps_timing_info
The timing_info was described at vps or vui parameter.
So we can update the framerate field of GstCaps when we could
parse vps_timing_info parameters.
2019-06-14 02:15:46 +00:00
Seungha Yang
6843b663b6 h265parse: Don't miss constraint indicator flags in codec data
Set more unhandled flags to general_constraint_indicator_flags field.
The field is required for building "Codecs" parameter as defined
ISO/IEC 14496-15 Annex E. The resulting "Codecs" string might be used
in various places (e.g., HLS/DASH manifest, browser, player, etc)
2019-06-11 21:15:49 +09:00
Marc Leeman
492603d723 rtpmanagerbad: fix the plugin registration
After compilation, the compiled library needs to be added to the list
of plugin libraries.
.
Also, fix for static builds
2019-06-07 14:12:25 +00:00
Tim-Philipp Müller
efa5c02636 rtp: fix autotools build some more 2019-06-05 17:00:51 +01:00
Sebastian Dröge
7117ba0a53 avwait: Allow start and end timecode to be set back to NULL
And check everywhere if they're NULL before accessing them.
2019-06-05 11:47:36 +03:00
Nicolas Dufresne
2667081654 make: rtp: Remove spurious header file
This header file no longer exist.
2019-06-03 20:29:18 -04:00
Marc Leeman
3ef737605a rtpmanagerbad: add RTP streaming elements
This is a re-implementation of the RTP elements that are submitted in
2013 to handle RTP streams. The elements handle a correct connection
for the bi-directional use of the RTCP sockets.

https://bugzilla.gnome.org/show_bug.cgi?id=703111

The rtpsink and rtpsrc elements add an URI interface so that streams
can be decoded with decodebin using the rtp:// interface.

The code can be used as follows

```
gst-launch-1.0 videotestsrc ! x264enc ! rtph264pay config-interval=3 ! rtpsink uri=rtp://239.1.1.1:1234

gst-launch-1.0 videotestsrc ! x264enc ! rtph264pay config-interval=1 ! rtpsink uri=rtp://239.1.2.3:5000
gst-launch-1.0 rtpsrc uri=rtp://239.1.2.3:5000?encoding-name=H264 ! rtph264depay ! avdec_h264 ! videoconvert ! xvimagesink

gst-launch-1.0 videotestsrc ! avenc_mpeg4 ! rtpmp4vpay config-interval=1 ! rtpsink uri=rtp://239.1.2.3:5000
gst-launch-1.0 rtpsrc uri=rtp://239.1.2.3:5000?encoding-name=MP4V-ES ! rtpmp4vdepay ! avdec_mpeg4 ! videoconvert ! xvimagesink
```

rtpmanagerbad: add pkg-config
rtpmanagerbad: Rtp should be uppercase
rtpmanagerbad: add G_OS_WIN32 for shielding unix headers
rtpmanagerbad: remove Since from documentation
rtpmanagerbad: rename lib name from nrtp to rtpmanagerbad
rtpmanagerbad: sync meson.build with other modules
rtpmanagerbad: add Makefile.am
rtpmanagerbad: use GstElement to count pads
rtpmanagerbad: use gst_bin_set_suppressed_flags
rtpmanagerbad: check element creation
rtpmanagerbad: post message when trying to access missing rtpbin
rtpmanagerbad: return FALSE with g_return tests
rtpmanagerbad: use gsocket multicast check
rtpmanagerbad: use gst_caps_new_empty_simple iso gst_caps_from_string
rtpmanagerbad: sync with gstrtppayloads.h
rtpmanagerbad: correct media type X-GST
rtpmanagerbad: test if a compatible pad was found
rtpmanagerbad: remove evil copy of GstRTPPayloadInfo
rtpmanagerbad: add gio_dep to meson
rtpmanagerbad: revert to old glib boilerplate

GStreamer 1.16 does not yet support the newer GLib templates, so revert.

rtpmanagerbad: return GST_STATE_CHANGE_NO_PREROLL for live sources

for live sources, NO_PREROLL should be returned for PLAYING->PAUSED and
READY->PAUSED transitions.

rtpmanagerbad: use GstElement pad counting
rtpmanagerbad: just use template name to request pad
rtpmanagerbad: remove commented code
rtpmanagerbad: use funnel to send multiple streams on one socket
rtpmanagerbad: avoid beaches

beaches should only be used during the summer, so rewrite the code to
return explicitly and avoid beaches during the winter.

rtpmanagerbad: add copyright to test code
rtpmanagerbad: g_free is NULL safe
rtpmanagerbad: do not trace rtpbin
rtpmanagerbad: return NULL explitly
rtpmanagerbad: warn when data port is not even

According to RFC 3550, RTP data should be sent on even ports, while RTCP
is sent on the following odd port.

rtpmanagerbad: document port allocation in rtpsink/src
rtpmanagerbad: improve uri description
rtpmanagerbad: add comment re-use socket
rtpmanagerbad: rename gst_object_set_properties_from_uri_query
rtpmanagerbad: loan prop/val setter from rist
rtpmanagerbad: rtpsrc: fix unitialised pointer
rtpmanagerbad: fix silly typo
rtpmanagerbad: test for empty key/value
rtpmanagerbad: rtpsrc: deprecate ssrc collision to INFO
rtpmanagerbad: sync debug with rist
rtpmanagerbad: small strings allocated on stack
rtpmanagerbad: correct rename
rtpmanagerbad: add locking on prop setters/getters

Locking is added because the URI allows to access the properties too.

rtpmanagerbad: allow for RTCP through NAT
rtpmanagerbad: move gio to header file
rtpmanagerbad: free small strings too
rtpmanagerbad: ttl_mc for ttl on dynudpsink
rtpmanagerbad: add comments on the URI registered
rtpmanagerbad: correct macro after file rename
rtpmanagerbad: code style
rtpmanagerbad: handle wrong URIs in setter
rtpmanagerbad: nit URI notation correction

In an URI, the first key/value pair should not have an ampersand, the
parser did not die though.
2019-06-03 20:08:23 +00:00
Vivia Nikolaidou
50075616f2 avwait: Don't print warnings for every buffer passed 2019-05-31 18:47:03 +03:00
Tim-Philipp Müller
7853700b50 meson: add more plugins to plugins list
Makes sure their path gets added to the uninstalled environment
and makes sure they get included in the docs.
2019-05-30 20:41:57 +02:00
Mathieu Duponchelle
f5495700fb basetsmux: don't reset pad on flush_stop
This was mistakenly added when porting to aggregator, this
restores the old behaviour, by only resetting them when the
muxer itself is reset
2019-05-30 17:20:49 +02:00
Mathieu Duponchelle
1e72aa6e85 basetsmux: fix send_event by chaining up 2019-05-30 17:20:12 +02:00
Mathieu Duponchelle
02ded087a4 mpegtsmux: add SECTION comment
We include an example for injecting sections in the transport
stream in the documentation
2019-05-30 13:53:05 +00:00
Mathieu Duponchelle
76c3d98962 basetsmux: preserve user-specified sections across resets
As sections can be provided by the user through send_event
when the element state is NULL, their lifetime is expected
to match that of the muxer, and they must be preserved when
the state changes
2019-05-30 13:53:05 +00:00
Mathieu Duponchelle
fdfd4600c1 atscmux: send empty RRT / MGT / STT tables
These are mandated by A/65, their absence gets flagged by
stream analyzers. Users can of course provide filled up
versions through the send_event API.
2019-05-30 13:53:05 +00:00
Mathieu Duponchelle
5d41740ff6 tsmux: maintain packet counters in a global array
We can have multiple TsMuxPacketInfo objects for the same PID
with user-provided sections, for example ATSC requires multiple
tables with the same PID.
2019-05-30 13:53:05 +00:00
Mathieu Duponchelle
da6afdec9c doc: remove xml from comments 2019-05-29 22:58:08 +02:00
Mathieu Duponchelle
102b1346e7 doc: fix element section documentations
Element sections were not rendered anymore after the hotdoc
port, fixing this revealed a few incorrect links.
2019-05-25 16:58:13 +02:00
Sebastian Dröge
1c712ca555 avwait: Protect properties and some other code with the mutex
These variables are all accessed from multiple threads.

Also fix some minor leaks in error code paths.
2019-05-24 10:41:35 +00:00
Sebastian Dröge
d55dda6252 avwait: Insert some empty lines to give the code some space to breath 2019-05-24 10:41:35 +00:00
Sebastian Dröge
c8876a37ba avwait: Allow setting start timecode after end timecode and the other way around
This might be necessary temporarily for changing the previous settings.
Make it an actual error if the settings are like this while processing a
buffer.
2019-05-24 10:41:35 +00:00
Sebastian Dröge
ab9d42cc7f proxy: Forward queries/events sent directly to the element correctly 2019-05-22 07:48:33 +00:00
Sebastian Dröge
70b08bdbfa proxy: Set SOURCE flag on the source and SINK flag on the sink
So that they are properly recognized as such.
2019-05-22 07:48:33 +00:00
Haihao Xiang
7820109b88 ivfparse: Check the data size against IVF_FRAME_HEADER_SIZE
It is parsing frame data and so should check the data size against the
frame header size instead of the file header size. If don't, it is
possible to drop the last frame because IVF_FILE_HEADER_SIZE is greater
than IVF_FRAME_HEADER_SIZE
2019-05-22 12:37:29 +08:00
Nicolas Dufresne
98acb3260d rist: Add combined bonding-method support
This patchs add support for configuring the bonding method used. There is
two method specified

 - redundant: All the RTP packets are replicated
 - combined: RTP packet are evenly distributed over each links

Additionally, an application can set the "dispatcher" property in order
to implement custom dispatching method. Whenever the "dispatcher"
property is set, "bonding-method" property will be ignored.
2019-05-21 18:49:17 +00:00
Nicolas Dufresne
9a443c04bc ristsrc: Implement per session stats
As we can now have multiple sessions, stats need to be implemented per
session. This follow RTPSession model with sources. The stats are now:

    dropped: 0
    received: 0
    recovered: 0
    permanently-lost: 0
    duplicates: 0
    retransmission-requests-sent: 0
    rtx-roundtrip-time: 0
    session-stats:
        session-id=0
            rtp-from=""
            rtcp-from=""
            dropped=0
            received=0
        session-id=1
            rtp-from=""
            rtcp-from=""
            dropped=0
            received=0
        . . .

session-stats is a GValueArray as there is no better alternatives.
2019-05-21 18:49:17 +00:00
Nicolas Dufresne
0c26aaa614 ristsrc: Cleanup unused include 2019-05-21 18:49:17 +00:00
Nicolas Dufresne
73edff67c7 ristsink: Implement per session stats
As we can now have multiple sessions, stats need to be implemented per
session. This follow RTPSession model with sources. The stats are now:

  sent-original-packets: 0
  sent-retransmitted-packets: 0
       session-stats:
            session-id=0
              sent-original-packets=0
              sent-retransmitted-packets=0
              round-trip-time=0
            session-id=1
              sent-original-packets=0
              sent-retransmitted-packets=0
              round-trip-time=0
            . . .

session-stats is a GValueArray as there is no better alternatives.
2019-05-21 18:49:17 +00:00
Nicolas Dufresne
4bba95ead2 ristsrc: rtxbin may be null in finalize 2019-05-21 18:49:17 +00:00