Skip to content
  • Marc Leeman's avatar
    rtpmanagerbad: add RTP streaming elements · 3ef73760
    Marc Leeman authored and Nicolas Dufresne's avatar Nicolas Dufresne committed
    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.
    3ef73760