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
Also make it so that the mtu is always set if specified, not
only in case of the rather weird bufferlist test code path.
This allows us to easily make the payloader fragment a payload
across multiple output packets by setting a small MTU on it.
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
The previous implementation had the formatting of SDP attributes happen
in each RTP payloader, now instead the constituent values are propagated
as caps fields. This allows for applications to do SDP offer/answer
based on caps negotiation.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=700748
rtph263ppay should accept any input compatible with its sink template
caps if it just outputs to e.g. udpsink or fakesink.
rtph263ppay ! rtph263pdepay should also work with any compatible input.
This would fail before with not-negotiated errors because the get_caps
function would see the encoding-name in the depayloader's template caps
and default to baseline H.263 because there's no profile/level information
in those caps, which is the right thing to do if downstream has filtercaps
from an SDP, but not if those fields are absent because they can be
anything like with the depayloader's template caps. Makes
videotestsrc ! avenc_h263p ! rtph263ppay ! rtph263pdepay ! fakesink
work.
Need to add h263version field to input caps since the
payloader sink get_caps function will contain it in the
the caps, and the stricter caps subset check requires
this to be present in the input caps as well then.
Feed data into the pipeline using appsrc instead of fdsrc and
a pipe. Store unsigned byte values in guint8 instead of char.
Getting rid of the capsfilter also helps to avoid 'format is
not fully specified' warnings when pushing "video/x-h264" data
into rtph264pay with fully specified h264 caps in the sink template.
Original commit message from CVS:
* tests/check/elements/icydemux.c: (icydemux_found_pad):
Add some refcount check
* tests/check/elements/rtp-payloading.c: (rtp_pipeline_run):
Don't ignore the result of write(), fixes a compiler warning for me.
* tests/icles/videobox-test.c: (main):
Make the output a little more pretty.
Original commit message from CVS:
* tests/check/elements/cmmldec.c: (GST_START_TEST):
* tests/check/elements/rtp-payloading.c: (rtp_pipeline_create),
(rtp_pipeline_run):
* tests/check/elements/souphttpsrc.c: (souphttpsrc_suite):
Don't use declarations after statements.
Original commit message from CVS:
patch by: Wim Taymans <wim.taymans@collabora.co.uk>
fixes: #514889
* gst/rtp/gstrtph264pay.c:
* gst/rtp/gstrtpmp4gdepay.c:
* gst/rtp/gstrtpmp4gpay.c:
* gst/rtp/gstrtpmp4gpay.h:
* gst/rtp/gstrtptheorapay.c:
* gst/rtp/gstrtpvorbispay.c:
Fix various leaks shown up in valgrind
- free sprops and buffer in error cases in H264 payloader
- fix leak in mp4g depayloader when construction the caps
- don't leak config string in the mp4g payloader
- don't leak buffers and headers in theora and vorbis payloaders
* tests/check/elements/rtp-payloading.c:
Fix the RTP data test
- Actually send valid amr data to the payloader instead of 20
zero-bytes
- The mp4g payloader expects codec_data on the caps
Original commit message from CVS:
* tests/check/Makefile.am:
Add rtp-payloading test to VALGRIND_TO_FIX.
* tests/check/elements/rtp-payloading.c:
Add semicolons after GST_TEST_END so gst-indent gets the
formatting right; make test less verbose in general, but
more verbose in the error case (which should probably
make the test fail anyway).
Original commit message from CVS:
* tests/check/Makefile.am:
* tests/check/elements/.cvsignore:
* tests/check/elements/rtp-payloading.c:
Add add testsuite for the rtp-payloader that tries simulating
dataflow. Needs more test data.