Add a new property "do-aggregate"* to the H.264 RTP payloader which
enables STAP-A aggregation as per [RFC-6184][1]. With aggregation enabled,
packets are bundled instead of sent immediately, up until the MTU size.
Bundles also end at access unit boundaries or when packets have to be
fragmented.
*: The property-name is kept generic since it might apply more widely,
e.g. STAP-B or MTAP.
[1]: https://tools.ietf.org/html/rfc6184#section-5.7
Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/434
This way we can use -1 as special value, which is nicer than MAXUINT.
This is backwards compatible even with the GValue API, as shown by
a unit test.
https://bugzilla.gnome.org/show_bug.cgi?id=757892
Similarly to what we did with the DELTA_UNIT flag, this patch
propagates the DISCONT flag to the first RTP packet being used to transfer a
DISCONT buffer.
https://bugzilla.gnome.org/show_bug.cgi?id=730563
Downstream elements may be interested knowing if a RTP packet is the start
of a key frame (to implement a RTP extension as defined in the
ONVIF Streaming Spec for example).
We do this by checking the GST_BUFFER_FLAG_DELTA_UNIT flag we receive from
upstream and propagate it to the *first* RTP packet outputted to transfer this
buffer.
https://bugzilla.gnome.org/show_bug.cgi?id=730563
The profile-level-id represents restrictions on what can be sent, it does not
describe the stream. So it should be reflected in the sink caps of the
payloader, not the src caps.
https://bugzilla.gnome.org/show_bug.cgi?id=607353
Add a new spspps-interval property to instruct the payloader to insert
SPS and PPS at periodic intervals in the stream.
Rework the SPS/PPS handling so that bytestream and AVC sample code both use the
same code paths to handle sprop-parameter-sets. This also allows to have the AVC
code to insert SPS/PPS like the bytestream code.
Fixes#604913
Original commit message from CVS:
* gst/rtp/gstrtph264depay.c: (gst_rtp_h264_depay_class_init),
(gst_rtp_h264_depay_init), (gst_rtp_h264_depay_set_property),
(gst_rtp_h264_depay_get_property), (gst_rtp_h264_depay_setcaps),
(gst_rtp_h264_depay_process):
* gst/rtp/gstrtph264depay.h:
Add experimental support for outputting quicktime-like AVC output in
addition to the existing bytestream output.
* gst/rtp/gstrtph264pay.c: (gst_h264_scan_mode_get_type),
(gst_rtp_h264_pay_class_init), (gst_rtp_h264_pay_init),
(gst_rtp_h264_pay_setcaps), (gst_rtp_h264_pay_payload_nal),
(gst_rtp_h264_pay_handle_buffer), (gst_rtp_h264_pay_set_property),
(gst_rtp_h264_pay_get_property):
* gst/rtp/gstrtph264pay.h:
Make the parsing mode configurable, for some inputs we don't need to
scan every byte for start codes.
Only set the marker bit on ACCESS units.
Original commit message from CVS:
* gst/rtp/gstrtph264pay.c: (gst_rtp_h264_pay_class_init),
(gst_rtp_h264_pay_finalize), (gst_rtp_h264_pay_handle_buffer),
(gst_rtp_h264_pay_set_property), (gst_rtp_h264_pay_get_property):
* gst/rtp/gstrtph264pay.h:
Make it possible to specify profile-level-id and sprop-parameter-sets
using properties in case they are not available in-stream.
Original commit message from CVS:
* gst/rtp/gstrtph264pay.c: (encode_base64),
(gst_rtp_h264_pay_setcaps), (gst_rtp_h264_pay_handle_buffer):
* gst/rtp/gstrtph264pay.h:
Parse codec_data for future AVC compatibility.
Fail when we encounter AVC data for now.
Original commit message from CVS:
Patch by: Wai-Ming Ho <webregbox at yahoo dot co dot uk>
* gst/rtp/gstrtph264pay.c: (gst_rtp_h264_pay_init),
(gst_rtp_h264_pay_finalize), (gst_rtp_h264_pay_setcaps),
(next_start_code), (is_nal_equal), (gst_rtp_h264_pay_decode_nal),
(encode_base64), (gst_rtp_h264_pay_parse_sps_pps),
(gst_rtp_h264_pay_handle_buffer):
* gst/rtp/gstrtph264pay.h:
Use higher performance start-code searching.
Parse NALs and store SPS, PPS and profile in the caps so that they can
be used in the SDP. Fixes#502814.