Commit graph

84 commits

Author SHA1 Message Date
Mikhail Fludkov d5ad50bd61 rtp: Implement ULPFEC (RFC 5109)
We expose a set of new elements:

* ULPFEC encoder / decoder
* A storage element, which should be placed before jitterbuffers,
  and is used to store packets in order to attempt reconstruction
  after the jitterbuffer has sent PacketLost events
* RED encoder / decoder (RFC 2198), these are necessary to
  use FEC in webrtc, as browsers will propose and expect ulpfec
  packets to be wrapped in red packets

With contributions from:

Mathieu Duponchelle <mathieu@centricular.com>
Sebastian Dröge <sebastian@centricular.com>

https://bugzilla.gnome.org/show_bug.cgi?id=792696
2018-02-21 14:15:22 +01:00
Tim Allen db07fc7e85 rtp: add L8 audio support 2017-12-24 13:19:56 +01:00
Tim-Philipp Müller 4a28e649c3 rtp: cache meta tag quarks and add more utility functions for metas
Every g_quark_from_static_string() is a hash table lookup serialised
on the global quark lock in GLib. Let's just look up the two quarks
we need once and cache them locally for future use. While we're at it,
add new utility functions for the two most commonly used tags
(audio + video). Make first argument a gpointer so we don't have to
cast and make the code ugly. These are used for logging purposes
only anyway.
2017-05-24 13:32:10 +01:00
Tim-Philipp Müller fb0bc126c9 rtp: opus: move Opus RTP payloader/depayloader from -bad to -good
https://bugzilla.gnome.org/show_bug.cgi?id=756282
2016-02-25 22:45:16 +00:00
Stian Selnes 5faa9c11a6 rtpvp9pay: rtpvp9depay: Initial implementation of draft 01
Quick and dirty implementation of an RTP payloader and depayloader
for VP9. In particalur it assumes no spatial or temporal layering,
non-flexible mode, and some other bits and pieces.

https://bugzilla.gnome.org/show_bug.cgi?id=754773
2016-02-16 15:54:06 +02:00
Tim-Philipp Müller 9d0f127703 rtp: h265: hook up move RTP H.265 payloader/depayloader to build
https://bugzilla.gnome.org/show_bug.cgi?id=761606
2016-02-16 00:25:50 +00:00
Tim-Philipp Müller 740f10bae9 rtp: add SMPTE 336M KLV metadata depayloader
http://tools.ietf.org/html/rfc6597
2015-07-07 20:11:27 +01:00
Tim-Philipp Müller 7db7da1acb rtp: add SMPTE 336M KLV metadata payloader
http://tools.ietf.org/html/rfc6597
2015-07-07 20:11:23 +01:00
Stian Selnes ef8d630a59 rtp: add H.261 RTP payloader and depayloader
Implementation according to RFC 4587.

Payloader create fragments on MB boundaries in order to match MTU size
the best it can. Some decoders/depayloaders in the wild are very strict
about receiving a continuous bit-stream (e.g. no no-op bits between
frames), so the payloader will shift the compressed bit-stream of a
frame to align with the last significant bit of the previous frame.

Depayloader does not try to be fancy in case of packet loss. It simply
drops all packets for a frame if there is a loss, keeping it simple.

https://bugzilla.gnome.org/show_bug.cgi?id=751886
2015-07-03 11:48:41 +01:00
Tim-Philipp Müller f3fec86bc9 Revert "rtp: add h265 RTP payloader + depayloader"
This reverts commit d06ba9051f.

This breaks the build, as it depends on parser API in -bad.
2014-10-15 17:48:46 +01:00
Jurgen Slowack d06ba9051f rtp: add h265 RTP payloader + depayloader 2014-10-15 17:34:50 +02:00
Sebastian Dröge d87f6cf483 rtpstreamdepay: Add RFC4571 RTP stream depayloading element
https://bugzilla.gnome.org/show_bug.cgi?id=719829
2013-12-04 21:58:29 +01:00
Sebastian Dröge c5284dc047 rtpstreampay: Add RFC4571 RTP stream payloading element
https://bugzilla.gnome.org/show_bug.cgi?id=719829
2013-12-04 21:58:29 +01:00
David Holroyd a956a6ceb2 rtp: add L24 pay and depayloader
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=707734
2013-09-09 15:13:46 +02:00
Wim Taymans 9d7519f66e rtp: register tag image types
The rtpgstdepay needs the type to be available in order to deserialize the
event.
2013-04-12 16:18:42 +01:00
Arun Raghavan 87bdad4bfc rtp: Add an rtpsbcdepay element
Pretty straightforward - takes SBC encapsulated in RTP, depayloads, and
pushes out SBC buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=690582
2013-03-28 17:22:33 +00:00
Tim-Philipp Müller 39ef892938 rtp: import rtpsbcpay from bluez and port to 1.0
Compiles, but not tested yet (sbc elements still need to be ported).

https://bugzilla.gnome.org/show_bug.cgi?id=690582
2013-01-10 12:43:50 +00:00
Tim-Philipp Müller 230cf41cc9 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-04 00:07:18 +00:00
Tim-Philipp Müller 321acd14dc rtp: move VP8 payloader and depayloader from -bad
Spec is still in draft state, but should hopefully not
change much now. Besides, we announce things as VP8-DRAFT-IETF-01
in our caps, so even if things change in incompatible ways it
should not break anything.

https://bugzilla.gnome.org/show_bug.cgi?id=687263
2012-11-01 20:53:48 +00:00
Sebastian Dröge aa2cd462da gst: Update for GST_PLUGIN_DEFINE() API changes 2012-04-05 17:36:38 +02:00
Wim Taymans b0fbb1725f rtp: fix for API changes in the base classes 2011-06-13 13:25:49 +02:00
Wim Taymans 7c9b91d2d8 gstpay/depay: add generic gstreamer payloader
Add the beginnings of a generic GStreamer buffers payloader.
2010-12-23 18:39:52 +01:00
Wim Taymans 6db12cb003 rtpac3pay: add AC3 payloader 2010-12-21 22:34:49 +01:00
Wim Taymans 78e4a260b4 rtp: add G722 pay and depayloader 2010-09-30 18:34:36 +02:00
Mark Nauwelaerts 815e06ba55 rtp: add mpa-robust depayloader
Fixes #589997.
2010-06-11 11:45:48 +02:00
Wim Taymans 754007b344 qcelpdepay: add first version of a QCELP depayloader 2010-04-29 18:07:10 +02:00
Wim Taymans b32ddfc174 rtpg723depay: add G723 depayloader 2010-01-05 19:03:06 +01:00
Tiago Katcipis 908a9ee63b rtp: add G723 payloader
Fixes #597823
2009-12-17 17:27:42 +01:00
Wim Taymans 8c3b03de26 rtp: add BroadcomVoice depayloader 2009-11-18 10:50:43 +01:00
Wim Taymans 02476fb5a3 rtp: add BroadcomVoice payloader 2009-11-18 10:50:43 +01:00
Edward Hervey d39c057e42 rtp: New QDM2 rtp depayloader.
Reverse-engineered by comparing:
* A rtp hinted file provided by DarwinStreamingServer
* The output procued by DSS for that same file

Also used various streaming sources available on the internet to fine-tune
the code.

The header/codec_data extraction methods are from FFMpeg (LGPL).
2009-08-03 21:26:30 +02:00
Wim Taymans ace2a84447 celtdepay: add CELT depayloader 2009-06-05 18:57:30 +02:00
Wim Taymans ec554a7f02 rtpceltpay: add CELT RTP payloader 2009-06-05 18:57:30 +02:00
Wim Taymans a9e496d92f rtj2kdepay: add basic JPEG 2000 depayloader 2009-05-08 11:35:02 +02:00
Wim Taymans a4dfd61a77 rtpj2kpay: add a simple JPEG 2000 payloader 2009-05-08 10:38:42 +02:00
Olivier Crête e4b8c514cc Move siren rtp pay/depay from gst-plugins-farsight 2009-03-04 13:24:34 -05:00
Wim Taymans 5c9ebea381 gst/rtp/: Add a jpeg depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpjpegdepay.c: (gst_rtp_jpeg_depay_base_init),
(gst_rtp_jpeg_depay_class_init), (gst_rtp_jpeg_depay_init),
(gst_rtp_jpeg_depay_finalize), (MakeTables), (MakeQuantHeader),
(MakeHuffmanHeader), (MakeDRIHeader), (MakeHeaders),
(gst_rtp_jpeg_depay_setcaps), (gst_rtp_jpeg_depay_process),
(gst_rtp_jpeg_depay_change_state),
(gst_rtp_jpeg_depay_plugin_init):
* gst/rtp/gstrtpjpegdepay.h:
Add a jpeg depayloader.
* gst/rtp/gstrtpjpegpay.c:
Set the default properties on the payloader to better defaults.
2008-11-14 18:41:29 +00:00
Bjorn Ostby d8e74cabdc gst/rtp/: Add JPEG payloader. Fixes #560756.
Original commit message from CVS:
Patch by: Bjorn Ostby <bjornos at axis dot com>
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpjpegpay.c: (gst_rtp_jpeg_pay_base_init),
(gst_rtp_jpeg_pay_class_init), (gst_rtp_jpeg_pay_init),
(gst_rtp_jpeg_pay_setcaps), (gst_rtp_jpeg_pay_header_size),
(gst_rtp_jpeg_pay_read_quant_table),
(gst_rtp_jpeg_pay_scan_marker), (gst_rtp_jpeg_pay_handle_buffer),
(gst_rtp_jpeg_pay_set_property), (gst_rtp_jpeg_pay_get_property),
(gst_rtp_jpeg_pay_plugin_init):
* gst/rtp/gstrtpjpegpay.h:
Add JPEG payloader. Fixes #560756.
2008-11-14 11:41:55 +00:00
Wim Taymans c77bfaacb4 gst/rtp/: Added MP4A-LATM payloader to match the depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4apay.c: (gst_rtp_mp4a_pay_get_type),
(gst_rtp_mp4a_pay_base_init), (gst_rtp_mp4a_pay_class_init),
(gst_rtp_mp4a_pay_init), (gst_rtp_mp4a_pay_finalize),
(gst_rtp_mp4a_pay_parse_audio_config), (gst_rtp_mp4a_pay_new_caps),
(gst_rtp_mp4a_pay_setcaps), (gst_rtp_mp4a_pay_handle_buffer),
(gst_rtp_mp4a_pay_change_state), (gst_rtp_mp4a_pay_plugin_init):
* gst/rtp/gstrtpmp4apay.h:
Added MP4A-LATM payloader to match the depayloader.
2008-09-26 13:55:48 +00:00
Wim Taymans 8f0079c7e2 gst/rtp/: Add MP1S depayloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp1sdepay.c: (gst_rtp_mp1s_depay_base_init),
(gst_rtp_mp1s_depay_class_init), (gst_rtp_mp1s_depay_init),
(gst_rtp_mp1s_depay_setcaps), (gst_rtp_mp1s_depay_process),
(gst_rtp_mp1s_depay_set_property),
(gst_rtp_mp1s_depay_get_property),
(gst_rtp_mp1s_depay_change_state),
(gst_rtp_mp1s_depay_plugin_init):
* gst/rtp/gstrtpmp1sdepay.h:
Add MP1S depayloader.
* gst/rtsp/URLS:
Some more sample rtsp streams.
2008-08-05 13:54:18 +00:00
Wim Taymans 41e206534c gst/rtp/: Add raw video pay and depayloaders, see RFC4175.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpvrawdepay.c: (gst_rtp_vraw_depay_base_init),
(gst_rtp_vraw_depay_class_init), (gst_rtp_vraw_depay_init),
(gst_rtp_vraw_depay_setcaps), (gst_rtp_vraw_depay_process),
(gst_rtp_vraw_depay_change_state),
(gst_rtp_vraw_depay_plugin_init):
* gst/rtp/gstrtpvrawdepay.h:
* gst/rtp/gstrtpvrawpay.c: (gst_rtp_vraw_pay_get_type),
(gst_rtp_vraw_pay_base_init), (gst_rtp_vraw_pay_class_init),
(gst_rtp_vraw_pay_init), (gst_rtp_vraw_pay_finalize),
(gst_rtp_vraw_pay_setcaps), (gst_rtp_vraw_pay_handle_buffer),
(gst_rtp_vraw_pay_plugin_init):
* gst/rtp/gstrtpvrawpay.h:
Add raw video pay and depayloaders, see RFC4175.
2008-07-01 13:28:02 +00:00
mersad e3141bbb49 gst/rtp/: Added G726 pay/depayloaders. Fixes #538891.
Original commit message from CVS:
Patch by: mersad <mersad at axis dot com>
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpg726depay.c: (gst_rtp_g726_depay_base_init),
(gst_rtp_g726_depay_class_init), (gst_rtp_g726_depay_init),
(gst_rtp_g726_depay_setcaps), (gst_rtp_g726_depay_process),
(gst_rtp_g726_depay_plugin_init):
* gst/rtp/gstrtpg726depay.h:
* gst/rtp/gstrtpg726pay.c: (gst_rtp_g726_pay_base_init),
(gst_rtp_g726_pay_class_init), (gst_rtp_g726_pay_init),
(gst_rtp_g726_pay_setcaps), (gst_rtp_g726_pay_plugin_init):
* gst/rtp/gstrtpg726pay.h:
Added G726 pay/depayloaders. Fixes #538891.
2008-06-18 10:12:57 +00:00
Olivier Crete d6f37dadb5 gst/rtp/: Added G729 pay and depayloaders. Fixes #532409.
Original commit message from CVS:
Based on patch by: Olivier Crete <tester at tester dot ca>
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpg729depay.c: (gst_rtp_g729_depay_base_init),
(gst_rtp_g729_depay_class_init), (gst_rtp_g729_depay_init),
(gst_rtp_g729_depay_setcaps), (gst_rtp_g729_depay_process),
(gst_rtp_g729_depay_plugin_init):
* gst/rtp/gstrtpg729depay.h:
* gst/rtp/gstrtpg729pay.c: (gst_rtpg729pay_base_init),
(gst_rtpg729pay_class_init), (gst_rtpg729pay_init),
(gst_rtpg729pay_setcaps), (gst_rtp_g729_pay_plugin_init):
* gst/rtp/gstrtpg729pay.h:
Added G729 pay and depayloaders. Fixes #532409.
2008-05-13 08:35:55 +00:00
Olivier Crete 894206be3d gst/rtp/: Add DV pay and depayloaders. Fixes #532423.
Original commit message from CVS:
Based on patch by: Olivier Crete <tester at tester dot ca>
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpdvdepay.c: (gst_rtp_dv_depay_base_init),
(gst_rtp_dv_depay_class_init), (gst_rtp_dv_depay_init),
(parse_encode), (gst_rtp_dv_depay_setcaps),
(calculate_difblock_location), (gst_rtp_dv_depay_process),
(gst_rtp_dv_depay_reset), (gst_rtp_dv_depay_change_state),
(gst_rtp_dv_depay_plugin_init):
* gst/rtp/gstrtpdvdepay.h:
* gst/rtp/gstrtpdvpay.c: (gst_dv_pay_mode_get_type),
(gst_rtp_dv_pay_base_init), (gst_rtp_dv_pay_class_init),
(gst_rtp_dv_pay_init), (gst_dv_pay_set_property),
(gst_dv_pay_get_property), (gst_rtp_dv_pay_setcaps),
(gst_dv_pay_negotiate), (include_dif),
(gst_rtp_dv_pay_handle_buffer), (gst_rtp_dv_pay_plugin_init):
* gst/rtp/gstrtpdvpay.h:
Add DV pay and depayloaders. Fixes #532423.
2008-05-12 18:27:24 +00:00
Thijs Vermeir b03d3e0b87 gst/rtp/: Add MPEG2 video payloader
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c:
* gst/rtp/gstrtpmpvpay.c:
* gst/rtp/gstrtpmpvpay.h:
Add MPEG2 video payloader
2008-01-25 10:53:17 +00:00
Wim Taymans 7d92376d3b gst/rtp/: Added an H263 depayloader. Fixes #369392.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtph263depay.c: (gst_rtp_h263_depay_base_init),
(gst_rtp_h263_depay_class_init), (gst_rtp_h263_depay_init),
(gst_rtp_h263_depay_finalize), (gst_rtp_h263_depay_setcaps),
(gst_rtp_h263_depay_process), (gst_rtp_h263_depay_set_property),
(gst_rtp_h263_depay_get_property),
(gst_rtp_h263_depay_change_state),
(gst_rtp_h263_depay_plugin_init):
* gst/rtp/gstrtph263depay.h:
Added an H263 depayloader. Fixes #369392.
* gst/rtp/gstrtph263pdepay.c: (gst_rtp_h263p_depay_setcaps),
(gst_rtp_h263p_depay_process):
* gst/rtp/gstrtph263ppay.c: (gst_fragmentation_mode_get_type),
(gst_rtp_h263p_pay_class_init), (gst_rtp_h263p_pay_flush):
Make the H263+ pay/depayloader support H263-1998 and H263-2000
payloads.
Also alow plain H263 on the h263p payloaders. Fixes #465040.
2007-08-20 16:52:03 +00:00
Laurent Glayal d94a696bcd gst/rtp/: Added H264 payloader. Fixes #423782.
Original commit message from CVS:
Patch by: Laurent Glayal <spglegle at yahoo dot fr>
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtph264pay.c: (gst_rtp_h264_pay_base_init),
(gst_rtp_h264_pay_class_init), (gst_rtp_h264_pay_init),
(gst_rtp_h264_pay_finalize), (gst_rtp_h264_pay_setcaps),
(gst_rtp_h264_pay_handle_buffer), (gst_rtp_h264_pay_set_property),
(gst_rtp_h264_pay_get_property), (gst_rtp_h264_pay_change_state),
(gst_rtp_h264_pay_plugin_init):
* gst/rtp/gstrtph264pay.h:
Added H264 payloader. Fixes #423782.
* gst/rtp/gstrtph264depay.c: (gst_rtp_h264_depay_class_init),
(gst_rtp_h264_depay_setcaps), (gst_rtp_h264_depay_process):
Small fixes.
2007-03-29 08:08:49 +00:00
Stefan Kost c0cdcae569 gst/rtp/: Added MP4A-LATM depayloader. Fixes #417792.
Original commit message from CVS:
Based on patch by: Stefan Kost  <ensonic@users.sf.net>
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp4adepay.c: (gst_rtp_mp4a_depay_base_init),
(gst_rtp_mp4a_depay_class_init), (gst_rtp_mp4a_depay_init),
(gst_rtp_mp4a_depay_finalize), (gst_rtp_mp4a_depay_setcaps),
(gst_rtp_mp4a_depay_process), (gst_rtp_mp4a_depay_set_property),
(gst_rtp_mp4a_depay_get_property),
(gst_rtp_mp4a_depay_change_state),
(gst_rtp_mp4a_depay_plugin_init):
* gst/rtp/gstrtpmp4adepay.h:
Added MP4A-LATM depayloader. Fixes #417792.
* gst/rtp/gstrtpmp4vdepay.c: (gst_rtp_mp4v_depay_setcaps),
(gst_rtp_mp4v_depay_process):
Fixup depayloader, setting codec_data, using more efficient adaptor and
rtpbuffer handling.
* gst/rtsp/URLS:
Add url to test above.
2007-03-28 18:40:12 +00:00
Wim Taymans bd4b1f680c gst/rtp/: Added simple mpeg transport stream payloader.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpmp2tpay.c: (gst_rtp_mp2t_pay_base_init),
(gst_rtp_mp2t_pay_class_init), (gst_rtp_mp2t_pay_init),
(gst_rtp_mp2t_pay_setcaps), (gst_rtp_mp2t_pay_handle_buffer),
(gst_rtp_mp2t_pay_plugin_init):
* gst/rtp/gstrtpmp2tpay.h:
Added simple mpeg transport stream payloader.
2007-02-18 13:24:26 +00:00
Wim Taymans 85420195b2 gst/rtp/: Port and enable raw audio payloader/depayloader. Needs a bit more work on the payloader side.
Original commit message from CVS:
* gst/rtp/Makefile.am:
* gst/rtp/gstrtp.c: (plugin_init):
* gst/rtp/gstrtpL16depay.c: (gst_rtp_L16_depay_base_init),
(gst_rtp_L16_depay_class_init), (gst_rtp_L16_depay_init),
(gst_rtp_L16_depay_parse_int), (gst_rtp_L16_depay_setcaps),
(gst_rtp_L16_depay_process), (gst_rtp_L16_depay_set_property),
(gst_rtp_L16_depay_get_property), (gst_rtp_L16_depay_change_state),
(gst_rtp_L16_depay_plugin_init):
* gst/rtp/gstrtpL16depay.h:
* gst/rtp/gstrtpL16pay.c: (gst_rtp_L16_pay_get_type),
(gst_rtp_L16_pay_base_init), (gst_rtp_L16_pay_class_init),
(gst_rtp_L16_pay_init), (gst_rtp_L16_pay_finalize),
(gst_rtp_L16_pay_setcaps), (gst_rtp_L16_pay_handle_buffer),
(gst_rtp_L16_pay_plugin_init):
* gst/rtp/gstrtpL16pay.h:
Port and enable raw audio payloader/depayloader. Needs a bit more work
on the payloader side.
2007-01-24 18:20:14 +00:00