platform/upstream/gst-plugins-good.git
10 years agortprtxreceive: change the rtx_pt_map directly in set_property() instead of delaying...
George Kiagiadakis [Tue, 14 Jan 2014 11:07:58 +0000 (12:07 +0100)]
rtprtxreceive: change the rtx_pt_map directly in set_property() instead of delaying it for chain()

The same lock is held, so there is no point in complicating it...

10 years agortprtxreceive: simplify the code of finalize()
George Kiagiadakis [Tue, 14 Jan 2014 10:55:00 +0000 (11:55 +0100)]
rtprtxreceive: simplify the code of finalize()

10 years agortprtxreceive: use the GstObject lock instead of a new one
George Kiagiadakis [Tue, 14 Jan 2014 10:52:21 +0000 (11:52 +0100)]
rtprtxreceive: use the GstObject lock instead of a new one

10 years agortprtxsend: use the GstObject lock instead of a new one
George Kiagiadakis [Tue, 14 Jan 2014 10:45:52 +0000 (11:45 +0100)]
rtprtxsend: use the GstObject lock instead of a new one

10 years agov4l2: Add NV12_64Z32 support
Nicolas Dufresne [Tue, 10 Dec 2013 19:29:55 +0000 (14:29 -0500)]
v4l2: Add NV12_64Z32 support

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

10 years agoosshelper: Don't leak fd when getting card name
Justin Joy [Tue, 14 Jan 2014 10:08:49 +0000 (19:08 +0900)]
osshelper: Don't leak fd when getting card name

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

10 years agoRevert "aacparse: relax the detection of ADTS"
Vincent Penquerc'h [Tue, 14 Jan 2014 09:43:33 +0000 (09:43 +0000)]
Revert "aacparse: relax the detection of ADTS"

This was pushed by mistake along with the V4L2 fix.

This reverts commit 8eb4b032bef444397c4d211f2095c173ba114187.

10 years agortpg726pay: don't leak encoding_name string
Justin Joy [Tue, 14 Jan 2014 06:42:01 +0000 (15:42 +0900)]
rtpg726pay: don't leak encoding_name string

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

10 years agov4l2: fix build break using V4L2_CAP_VIDEO_M2M_MPLANE
Vincent Penquerc'h [Mon, 13 Jan 2014 09:14:00 +0000 (09:14 +0000)]
v4l2: fix build break using V4L2_CAP_VIDEO_M2M_MPLANE

This may not be defined. Since the previous version used
only the other define (V4L2_CAP_VIDEO_OUTPUT_MPLANE), fall
back on this only when not available.

10 years agoaacparse: relax the detection of ADTS
Akihiro Tsukada [Tue, 26 Feb 2013 16:45:52 +0000 (01:45 +0900)]
aacparse: relax the detection of ADTS

According to ISO/IEC 13818-7, "channel_config" field in ADTS header
may have value of 0, as in the case of frame with PCE.
gst_aac_parse_detect_streams() returned FALSE for those frames
and discarded them.

10 years agov4l2bufferpool: check set_config return value in gst_v4l2_buffer_pool_new
Julien Isorce [Tue, 7 Jan 2014 11:58:23 +0000 (11:58 +0000)]
v4l2bufferpool: check set_config return value in gst_v4l2_buffer_pool_new

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

10 years agov4l2object: Add parsed=1 field for encoded output
Nicolas Dufresne [Fri, 10 Jan 2014 17:40:31 +0000 (12:40 -0500)]
v4l2object: Add parsed=1 field for encoded output

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

10 years agov4l2object: Don't leak empty caps
Nicolas Dufresne [Fri, 10 Jan 2014 17:39:16 +0000 (12:39 -0500)]
v4l2object: Don't leak empty caps

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

10 years agov4l2bufferpool: do not stop a stream not previously started
Julien Isorce [Wed, 8 Jan 2014 16:51:21 +0000 (16:51 +0000)]
v4l2bufferpool: do not stop a stream not previously started

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

10 years agov4l2object: Don't enforce dimension field on encoded formats
Nicolas Dufresne [Thu, 12 Dec 2013 21:27:21 +0000 (16:27 -0500)]
v4l2object: Don't enforce dimension field on encoded formats

Don't enforce having width, height and framerate in template caps for encoded
formats. These don't always need to be exposed and may break negotiation for
decoder and decoding sink. If needed, these field will be automatically added
when probed caps are known.

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

10 years agov4l2object: unref downstream pool
Julien Isorce [Thu, 12 Dec 2013 17:09:59 +0000 (17:09 +0000)]
v4l2object: unref downstream pool

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

10 years agov4l2bufferpool: add gst_v4l2_buffer_pool_flush
Julien Isorce [Wed, 18 Dec 2013 18:37:23 +0000 (13:37 -0500)]
v4l2bufferpool: add gst_v4l2_buffer_pool_flush

STREAMOFF set all v4l2buffers to DEQUEUE state.

Then for CAPTURE we call QBUF on each buffer.
For OUTPUT the buffers are just push back in the GstBufferPool
base class 's queue.
But the loop actually looks like the same.

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

10 years agov4l2object: Add vp8 support
Benjamin Gaignard [Mon, 16 Dec 2013 22:29:30 +0000 (17:29 -0500)]
v4l2object: Add vp8 support

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

10 years agov4l2object: Don't force framerate field for OUTPUT
Nicolas Dufresne [Thu, 12 Dec 2013 21:46:09 +0000 (16:46 -0500)]
v4l2object: Don't force framerate field for OUTPUT

If there is nothing that seems to force a certain framerate on output device, it is
preferable to simply not set that feild. This allow negotiation with tsdemux in a
decoder for example.

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

10 years agov4l2object: _v4l2fourcc_to_structure() can be static
Nicolas Dufresne [Thu, 12 Dec 2013 19:07:03 +0000 (14:07 -0500)]
v4l2object: _v4l2fourcc_to_structure() can be static

This function is not used anymore outside v4l2object.

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

10 years agov4l2object: Add MPEG1/2 support
Nicolas Dufresne [Thu, 12 Dec 2013 19:22:26 +0000 (14:22 -0500)]
v4l2object: Add MPEG1/2 support

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

10 years agov4l2object: Ask for a decent buffer size when dealing with encoded formats
Nicolas Dufresne [Thu, 12 Dec 2013 17:18:45 +0000 (12:18 -0500)]
v4l2object: Ask for a decent buffer size when dealing with encoded formats

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

10 years agov4l2bufferpool: On warn on size change if n_planes > 1
Nicolas Dufresne [Sat, 7 Dec 2013 19:03:53 +0000 (14:03 -0500)]
v4l2bufferpool: On warn on size change if n_planes > 1

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

10 years agov4l2object: check if translated format is valid
Julien Isorce [Tue, 31 Dec 2013 16:38:09 +0000 (16:38 +0000)]
v4l2object: check if translated format is valid

Also add a FIXME in gst_v4l2_object_setup_format
to note that the whole function has to be improved
in order to support ENCODED formats.
It requires to have an encoder device which we do not
have right now.

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

10 years agov4l2object: Validate returned dimensions
Nicolas Dufresne [Sat, 7 Dec 2013 15:31:15 +0000 (10:31 -0500)]
v4l2object: Validate returned dimensions

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

10 years agov4l2object: Ensure max is not smaller then min in decide_allocation
Nicolas Dufresne [Fri, 6 Dec 2013 00:36:25 +0000 (19:36 -0500)]
v4l2object: Ensure max is not smaller then min in decide_allocation

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

10 years agov4l2object: Don't keep the max paramter when using our own pool
Nicolas Dufresne [Fri, 6 Dec 2013 00:36:06 +0000 (19:36 -0500)]
v4l2object: Don't keep the max paramter when using our own pool

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

10 years agov4l2bufferpool: Respect the suggested min buffer
Nicolas Dufresne [Fri, 6 Dec 2013 00:34:44 +0000 (19:34 -0500)]
v4l2bufferpool: Respect the suggested min buffer

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

10 years agov4l2object: Allocate pool if needed in decide_allocation
Nicolas Dufresne [Thu, 5 Dec 2013 23:48:44 +0000 (18:48 -0500)]
v4l2object: Allocate pool if needed in decide_allocation

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

10 years agov4l2object: Add V4L2_CID_MIN_BUFFERS_FOR_CAPTURE support
Nicolas Dufresne [Thu, 5 Dec 2013 23:49:19 +0000 (18:49 -0500)]
v4l2object: Add V4L2_CID_MIN_BUFFERS_FOR_CAPTURE support

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

10 years agov4l2: Move decide allocation into v4l2object
Nicolas Dufresne [Thu, 5 Dec 2013 23:48:15 +0000 (18:48 -0500)]
v4l2: Move decide allocation into v4l2object

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

10 years agov4l2object: Implement _setup_format()
Nicolas Dufresne [Thu, 5 Dec 2013 18:51:13 +0000 (13:51 -0500)]
v4l2object: Implement _setup_format()

This method allow setting up the object from the currently configured format on the
device. This is useful for M2M element where input data decides the format that will
be set on capture side.

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

10 years agov4l2object: Split out saving format from set_format()
Nicolas Dufresne [Tue, 10 Dec 2013 19:34:17 +0000 (14:34 -0500)]
v4l2object: Split out saving format from set_format()

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

10 years agov4l2object: set only one plane for encoded format
Julien Isorce [Tue, 31 Dec 2013 15:37:26 +0000 (15:37 +0000)]
v4l2object: set only one plane for encoded format

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

10 years agov4l2object: Move code block where it belongs
Nicolas Dufresne [Wed, 4 Dec 2013 21:49:13 +0000 (16:49 -0500)]
v4l2object: Move code block where it belongs

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

10 years agov4l2object: Don't check format specific information
Nicolas Dufresne [Wed, 4 Dec 2013 21:26:12 +0000 (16:26 -0500)]
v4l2object: Don't check format specific information

The number of plane, and the stride does not represent a capability change. Same caps
can have different stride from the default GstVideoInfo and the number of planes will
never change for 1 format.

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

10 years agov4l2object: Move the extrapolation of stride at the right place
Nicolas Dufresne [Wed, 4 Dec 2013 21:23:18 +0000 (16:23 -0500)]
v4l2object: Move the extrapolation of stride at the right place

Now that we have a stride array, we should extrapolate only when
eeded (non multi-planar buffer).

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

10 years agov4l2object: Move back assertions where they should be
Nicolas Dufresne [Wed, 4 Dec 2013 20:09:44 +0000 (15:09 -0500)]
v4l2object: Move back assertions where they should be

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

10 years agov4l2object: Move mplane logic into gst_v4l2_object_get_caps_info()
Nicolas Dufresne [Wed, 4 Dec 2013 20:09:10 +0000 (15:09 -0500)]
v4l2object: Move mplane logic into gst_v4l2_object_get_caps_info()

It makes the gst_v4l2_object_set_format() slightly simplier and will make that
logic reusable. Note that gst_v4l2_object_has_mplane() will always return the
same value for one device. There is no need to check against the caps as this
has already been done by _open.

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

10 years agov4l2object: Split _v4l2fourcc_to_video_format
Nicolas Dufresne [Tue, 3 Dec 2013 23:27:47 +0000 (18:27 -0500)]
v4l2object: Split _v4l2fourcc_to_video_format

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

10 years agov4l2bufferpool: Request buffers only once
Nicolas Dufresne [Mon, 2 Dec 2013 23:05:11 +0000 (18:05 -0500)]
v4l2bufferpool: Request buffers only once

VIDIOC_REQBUFS allocates buffer, it has no place inside set_config. Also, some driver do
no allow multiple calls to this ioctl.

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

10 years agov4l2object: Don't validate dimension for encoded format
Nicolas Dufresne [Mon, 2 Dec 2013 20:26:50 +0000 (15:26 -0500)]
v4l2object: Don't validate dimension for encoded format

We set the dimensions just in case but don't validate them
afterwards. For some codecs the dimensions are *not* in the
bitstream, IIRC VC1 in ASF mode for example.

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

10 years agov4l2object: Quirks for dev without initial format
Nicolas Dufresne [Thu, 28 Nov 2013 22:10:29 +0000 (17:10 -0500)]
v4l2object: Quirks for dev without initial format

Most M2M have undefined behaviour initially when VIDIOC_G_FMT is called.

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

10 years agov4l2object: Add gst_v4l2_object_open_shared()
Nicolas Dufresne [Thu, 28 Nov 2013 22:09:26 +0000 (17:09 -0500)]
v4l2object: Add gst_v4l2_object_open_shared()

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

10 years agov4l2object: Implement gst_v4l2_dup()
Nicolas Dufresne [Thu, 28 Nov 2013 22:07:05 +0000 (17:07 -0500)]
v4l2object: Implement gst_v4l2_dup()

This will duplicated the FD from another object and copy over the probed result.

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

10 years agov4l2object: make IO_MODE enum public
Nicolas Dufresne [Thu, 28 Nov 2013 21:59:59 +0000 (16:59 -0500)]
v4l2object: make IO_MODE enum public

This is to allow adding a second io-mode property on M2M device like decoder so
input and output can be controlled separatly.

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

10 years agov4l2: better handle quirks activation
Nicolas Dufresne [Wed, 5 Jun 2013 03:42:24 +0000 (23:42 -0400)]
v4l2: better handle quirks activation

This way we can activate deactivate those quirks all at once at one
place.

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

10 years agov4l2: Fix h264 caps
Nicolas Dufresne [Wed, 5 Jun 2013 03:34:04 +0000 (23:34 -0400)]
v4l2: Fix h264 caps

V4L2_PIX_FMT_H264 is documentated as byte-stream (with start code). The ensure proper
negotiation with element like h264parse.

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

10 years agov4l2object: Split caps in different categories
Nicolas Dufresne [Fri, 6 Dec 2013 19:44:51 +0000 (14:44 -0500)]
v4l2object: Split caps in different categories

This is need to correctly expose capabilities on specialized devices
like decoders and encoders.

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

10 years agomatroskademux: don't leak TOC chapter list
Tim-Philipp Müller [Fri, 10 Jan 2014 14:16:00 +0000 (14:16 +0000)]
matroskademux: don't leak TOC chapter list

10 years agomatroskamux: remove obsolete write-dummy-and-overwrite-on-eos code
Vincent Penquerc'h [Fri, 10 Jan 2014 08:52:16 +0000 (08:52 +0000)]
matroskamux: remove obsolete write-dummy-and-overwrite-on-eos code

The need for rewriting apparently is obsolete 0.10 leftover.
We now have caps for subtitles when we create the headers,
so we always write the correct data in the first place.

10 years agortprtxsend: remove duplicate assignment
Tim-Philipp Müller [Thu, 9 Jan 2014 23:55:16 +0000 (23:55 +0000)]
rtprtxsend: remove duplicate assignment

Coverity CID 1151680

10 years agomatroskamux: write subtitle codec ID and data at start when known
Vincent Penquerc'h [Thu, 9 Jan 2014 18:25:04 +0000 (18:25 +0000)]
matroskamux: write subtitle codec ID and data at start when known

This avoids issues with writing dummy data first, then having
to come back and write correct data later. Doing so prevents
the muxed stream from being actually streamable.

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

10 years agoconfigure: Include AvailabilityMacros.h for osxvideo check
Sebastian Dröge [Thu, 9 Jan 2014 16:32:15 +0000 (17:32 +0100)]
configure: Include AvailabilityMacros.h for osxvideo check

Otherwise MAC_OS_X_VERSION_MIN_REQUIRED might not be defined

10 years agoqtmux: respect the HDLR box string format for mov and isomedia
Thiago Santos [Thu, 9 Jan 2014 14:56:31 +0000 (11:56 -0300)]
qtmux: respect the HDLR box string format for mov and isomedia

Mov spec says it uses a pascal style string, while isomedia uses
a null terminated one. Store the current atoms flavor into the HDLR
to be able to generate the correct output.

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

10 years agoRevert "matroskamux: Use the running time for container timestamps, not buffer timest...
Wim Taymans [Wed, 8 Jan 2014 10:28:04 +0000 (11:28 +0100)]
Revert "matroskamux: Use the running time for container timestamps, not buffer timestamps"

This reverts commit b3aa8755fe07639f22e4104f4932d769d6c9075a.

We are already using the running-time because they were placed on the
buffers with gst_collect_pads_clip_running_time(). Arguably it would be
better to not modify the incomming buffers but collectpads seems to want
to use absolute timestamps from the buffers for finding the best buffer
(this can be changed with a custom compare function..).

10 years agoconfigure: Fix AC_COMPILE_IFELSE usage
Sebastian Dröge [Wed, 8 Jan 2014 09:41:24 +0000 (10:41 +0100)]
configure: Fix AC_COMPILE_IFELSE usage

10 years agoosxvideosink: Improve configure check for OSX >= 10.6
Sebastian Dröge [Wed, 8 Jan 2014 09:31:18 +0000 (10:31 +0100)]
osxvideosink: Improve configure check for OSX >= 10.6

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

10 years agortpbin: remove unused list of decoders
Aleix Conchillo Flaqué [Tue, 7 Jan 2014 20:13:51 +0000 (12:13 -0800)]
rtpbin: remove unused list of decoders

remove list of decoders, which are already handled by the list of elements.

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

10 years agomatroskamux: Error out if ADPCM caps don't contain the layout field
Sebastian Dröge [Wed, 8 Jan 2014 08:46:55 +0000 (09:46 +0100)]
matroskamux: Error out if ADPCM caps don't contain the layout field

10 years agomatroskamux: Add support for g726 ADPCM
Nicola Murino [Fri, 3 Jan 2014 14:25:23 +0000 (15:25 +0100)]
matroskamux: Add support for g726 ADPCM

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

10 years agortspsrc: use new method to get media-type
Wim Taymans [Tue, 7 Jan 2014 14:04:02 +0000 (15:04 +0100)]
rtspsrc: use new method to get media-type

Use the new method to get the media type of a transport.

10 years agowavparse: split the test
Stefan Sauer [Mon, 6 Jan 2014 20:12:17 +0000 (21:12 +0100)]
wavparse: split the test

This way one failure won't shadow the other test and also if one fails we get
better disgnostics through the test-name.

10 years agomatroskamux: Add HEVC / h265 support
Sebastian Dröge [Mon, 6 Jan 2014 13:54:46 +0000 (14:54 +0100)]
matroskamux: Add HEVC / h265 support

10 years agomatroskademux: Add HEVC / h265 support
Sebastian Dröge [Mon, 6 Jan 2014 13:54:38 +0000 (14:54 +0100)]
matroskademux: Add HEVC / h265 support

10 years agowavparse: remove ifdef'ed code
Stefan Sauer [Mon, 6 Jan 2014 12:36:38 +0000 (13:36 +0100)]
wavparse: remove ifdef'ed code

We do have adtl and cue parse as part of toc handling alreday. The fmt code is a left over from <0.10 times.

10 years agoavidemux, waveparse: more logging for unhandled chunks
Stefan Sauer [Mon, 6 Jan 2014 12:32:58 +0000 (13:32 +0100)]
avidemux, waveparse: more logging for unhandled chunks

Always print a warning with the tag and if possible do a memdump.

10 years agoavidemux: expose 'strn' - stream name - as title tag
Stefan Sauer [Sun, 5 Jan 2014 21:47:42 +0000 (22:47 +0100)]
avidemux: expose 'strn' - stream name - as title tag

10 years agoavidemux: parse fuji strd
Stefan Sauer [Sun, 5 Jan 2014 21:41:24 +0000 (22:41 +0100)]
avidemux: parse fuji strd

We can get maker, model and capture date from this chunk.
Fixes #636143

10 years agoavidemux: ... and use the local api both times
Stefan Sauer [Sun, 5 Jan 2014 20:46:33 +0000 (21:46 +0100)]
avidemux: ... and use the local api both times

10 years agoavidemux: copy the riff api for ncdt into the element
Stefan Sauer [Sun, 5 Jan 2014 20:38:14 +0000 (21:38 +0100)]
avidemux: copy the riff api for ncdt into the element

This chunk is avi specific, no need to expose this as public api.

10 years agomatroskamux: Add missing semicolon from last commit
Sebastian Dröge [Sun, 5 Jan 2014 09:28:21 +0000 (10:28 +0100)]
matroskamux: Add missing semicolon from last commit

10 years agomatroskamux: Use the running time for container timestamps, not buffer timestamps
Sebastian Dröge [Sun, 5 Jan 2014 09:22:37 +0000 (10:22 +0100)]
matroskamux: Use the running time for container timestamps, not buffer timestamps

Buffer timestamps have no real meaning here, and for selecting the next
buffer we already use the running time anyway.

10 years agoavi: use new riff api to extract nikon metadata
Stefan Sauer [Sat, 4 Jan 2014 20:34:38 +0000 (21:34 +0100)]
avi: use new riff api to extract nikon metadata

Fixes #636143

10 years agortprtxsend/rtprtxreceive: generate gtk doc
Julien Isorce [Fri, 1 Nov 2013 16:41:43 +0000 (16:41 +0000)]
rtprtxsend/rtprtxreceive: generate gtk doc

10 years agotest/check: Verify rtprtxsend::ssrc-map property works as expected
George Kiagiadakis [Mon, 2 Dec 2013 10:26:09 +0000 (11:26 +0100)]
test/check: Verify rtprtxsend::ssrc-map property works as expected

10 years agortprtxreceive: modify to use a payload-type map like rtprtxsend
George Kiagiadakis [Fri, 29 Nov 2013 18:35:44 +0000 (19:35 +0100)]
rtprtxreceive: modify to use a payload-type map like rtprtxsend

10 years agortprtxsend: do not keep history of packets with an unknown payload type
George Kiagiadakis [Fri, 29 Nov 2013 18:58:26 +0000 (19:58 +0100)]
rtprtxsend: do not keep history of packets with an unknown payload type

This allows to disable retransmission per payload type by not putting
a certain payload type in the map.

10 years agortprtxsend: Allow SSRC-multiplexing and multiple payload types in the original stream
Wim Taymans [Thu, 2 Jan 2014 14:18:52 +0000 (15:18 +0100)]
rtprtxsend: Allow SSRC-multiplexing and multiple payload types in the original stream

Conflicts:
tests/examples/rtp/server-rtpaux.c

10 years agortprtxsend: Add an rtx-ssrc property to allow external control of the ssrc
George Kiagiadakis [Mon, 25 Nov 2013 14:00:45 +0000 (15:00 +0100)]
rtprtxsend: Add an rtx-ssrc property to allow external control of the ssrc

This is useful when one needs to know the SSRC beforehands, so that it can
be used for SRTP for example.

10 years agoexamples: rtp: Add end-to-end rtpbin example with RTX elements
Torrie Fischer [Wed, 13 Nov 2013 20:11:35 +0000 (15:11 -0500)]
examples: rtp: Add end-to-end rtpbin example with RTX elements

This example demonstrates how to use rtpbin with retransmission (rtx)
elements set in the place of rtpbin's "aux" elements in order to
enable RTP retransmission according to the rules of RFC4588.

10 years agodoc: add design-rtpauxiliary.txt to describe how rtpbin deals with auxiliary elements
Julien Isorce [Tue, 5 Nov 2013 17:35:01 +0000 (17:35 +0000)]
doc: add design-rtpauxiliary.txt to describe how rtpbin deals with auxiliary elements

10 years agosession: also push EOS event to RTCP srcpad
Wim Taymans [Thu, 2 Jan 2014 13:48:49 +0000 (14:48 +0100)]
session: also push EOS event to RTCP srcpad

10 years agosession: place SSRC in Retransmission event
Wim Taymans [Thu, 2 Jan 2014 13:46:11 +0000 (14:46 +0100)]
session: place SSRC in Retransmission event

10 years agotests/check: add rtpaux::test_simple_rtpbin_aux
Julien Isorce [Fri, 1 Nov 2013 16:57:15 +0000 (16:57 +0000)]
tests/check: add rtpaux::test_simple_rtpbin_aux

It shows how to use "set-aux-receive" and "set-aux-send"
properties of rtpbin to set rtprtxsend and rtprtxreceive

Build 2 pipelines, one for rtpbin as a sender and one for
rtobin as a receive. Then transmit an audio stream.

It also drops some packets to activate restransmission and
check they are actually retransmited.

10 years agotests/check: add rtpcollision::test_rtx_ssrc_collision unit test
Julien Isorce [Fri, 1 Nov 2013 17:09:42 +0000 (17:09 +0000)]
tests/check: add rtpcollision::test_rtx_ssrc_collision unit test

check that rtxrtpsend changes its retransmission ssrc when
collision happens

10 years agotests/check: add rtprtx::test_rtxreceive_data_reconstruction
George Kiagiadakis [Wed, 6 Nov 2013 10:34:13 +0000 (12:34 +0200)]
tests/check: add rtprtx::test_rtxreceive_data_reconstruction

This unit test verifies that retransmitted rtp packets coming out
of rtprtxreceive are the same as the original ones.

10 years agortprtxsend: use a realistic limit for the value of max-size-packets
George Kiagiadakis [Tue, 5 Nov 2013 07:33:51 +0000 (09:33 +0200)]
rtprtxsend: use a realistic limit for the value of max-size-packets

G_MAXINT16 is chosen because if the queue contains more than
G_MAXINT16 packets, seqnum comparison will not work properly.

10 years agortprtxsend: use a GSequence to implement the buffer queue
George Kiagiadakis [Mon, 4 Nov 2013 18:05:03 +0000 (20:05 +0200)]
rtprtxsend: use a GSequence to implement the buffer queue

This has the advantage that searching the queue to find the
buffer with the requested seqnum is done with binary search.

10 years agortprtxsend: retransmit packets in the same order as the rtx requests
George Kiagiadakis [Mon, 4 Nov 2013 16:38:24 +0000 (18:38 +0200)]
rtprtxsend: retransmit packets in the same order as the rtx requests

10 years agotests/check: Add unit test for rtxsend's max_size_time property
George Kiagiadakis [Sat, 2 Nov 2013 17:56:44 +0000 (19:56 +0200)]
tests/check: Add unit test for rtxsend's max_size_time property

10 years agortprtxsend: Handle the max_size_time property
George Kiagiadakis [Tue, 29 Oct 2013 17:27:00 +0000 (18:27 +0100)]
rtprtxsend: Handle the max_size_time property

This property allows you to specify the amount of buffers
to keep in the retransmission queue expressed as time (ms)
instead of buffer count (which is the max_size_buffers property).

10 years agortprtxsend: keep important buffer information in a private structure
George Kiagiadakis [Sat, 2 Nov 2013 13:21:08 +0000 (15:21 +0200)]
rtprtxsend: keep important buffer information in a private structure

This is to avoid mapping a buffer every time we need to read a seqnum
or a timestamp.

10 years agotests/check: Add rtprtx::test_rtxsender_packet_retention
George Kiagiadakis [Fri, 1 Nov 2013 10:58:47 +0000 (11:58 +0100)]
tests/check: Add rtprtx::test_rtxsender_packet_retention

This unit test verifies that the rtxsend element correctly maintains
a buffer of already transmitted rtp packets and that it can
re-transmit all of them correctly on demand. It also verifies
that the limit of this buffer (max-size-packets property) is respected.

10 years agotests/check: add rtprtx::test_drop_multiple_sender unit test
Julien Isorce [Fri, 1 Nov 2013 16:22:13 +0000 (16:22 +0000)]
tests/check: add rtprtx::test_drop_multiple_sender unit test

Several senders / one receiver

Similar than test_drop_one_sender but with multiple senders
mixed through the funnel element.
It drops some packets and checks that they are retransmited
correctly.

10 years agotests/check: add rtprtx::test_drop_one_sender unit test
Julien Isorce [Fri, 1 Nov 2013 16:21:00 +0000 (16:21 +0000)]
tests/check: add rtprtx::test_drop_one_sender unit test

Test for one sender / one receiver

Build the pipeline
videotestsrc ! rtpvrawpay ! rtprtxsend ! rtprtxreceive ! fakesink
and drop some buffers between rtprtxsend and rtprtxreceive
Then it checks that every dropped packet has been re-sent.
It also checks that not too much requests has been sent.

10 years agotests/check: add rtprtx::test_push_forward_seq
Julien Isorce [Fri, 1 Nov 2013 16:17:51 +0000 (16:17 +0000)]
tests/check: add rtprtx::test_push_forward_seq

add simple unit test that manually push buffers
in rtprtxsend connected to rtprtxreceive.
Drops some buffers and make sure they are retransmisted.

10 years agortpmanager: add new rtprtxsend / rtprtxreceive elements
Julien Isorce [Fri, 1 Nov 2013 15:52:03 +0000 (15:52 +0000)]
rtpmanager: add new rtprtxsend / rtprtxreceive elements

The purpose of the sender RTX object is to keep a history
of RTP packets up to a configurable limit (in time). It will
listen for custom retransmission events from downstream. When
it receives a request for retransmission, it will look up the
requested seqnum in its list of stored packets. If the packet
is available, it will create a RTX packet according to RFC 4588
and send this as an auxiliary stream.

The receiver will listen to the custom retransmission events
from the downstream jitterbuffer and will remember the SSRC1
of the stream and seqnum that was requested. When it sees a
packet with one of the stored seqnum, it associates the SSRC2
of the stream with the SSRC1 of the master stream. From then
on it knows that SSRC2 is the retransmission stream of SSRC1.
This algorithm is stated in RFC 4588. For this algorithm to
work, RFC4588 also states that no two pending retransmission
requests can exist for the same seqnum and different SSRCs or
else it would be impossible to associate the retransmission with
the original requester SSRC.
When the RTX receiver has associated the retransmission packets,
it can depayload and forward them to the source pad of the element.

RTX is SSRC-multiplexed

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

10 years agodoc: add design for rtp retransmission
Julien Isorce [Tue, 5 Nov 2013 16:36:46 +0000 (16:36 +0000)]
doc: add design for rtp retransmission

Describe how rtprtxsend and rtprtxreceive generally work
but also how the association algorithm is implemented.

10 years agosouphttpsrc: use status code macro instead of 407
Reynaldo H. Verdejo Pinochet [Thu, 2 Jan 2014 23:23:05 +0000 (20:23 -0300)]
souphttpsrc: use status code macro instead of 407

Rest of the code is using the _PROXY_AUTHENTICATION_REQUIRED
macro too. Easier to understand if you don't recall HTTP
error codes by heart.