platform/upstream/gstreamer.git
9 years agortspsrc: fix container handling
Wim Taymans [Tue, 3 Feb 2015 16:35:52 +0000 (17:35 +0100)]
rtspsrc: fix container handling

We detect a container correctly now so we need to revert the weird
check there was before.
Use gst_rtspsrc_stream_push_event() to push the caps event on the
right pad.

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

9 years agomatroskamux: store and write stream tags
Thiago Santos [Mon, 2 Feb 2015 22:46:27 +0000 (19:46 -0300)]
matroskamux: store and write stream tags

Separate global from stream tags storage and write them to the
appropriate tags entry in the output

9 years agoqtdemux: parse stream tags
Thiago Santos [Mon, 2 Feb 2015 16:35:59 +0000 (13:35 -0300)]
qtdemux: parse stream tags

Keep global and stream tags separately and parse the udta node
that can be found under the trak atom. The udta will contain
stream specific tags and will be pushed as such

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

9 years agoqtmux: store stream and container tags separately
Thiago Santos [Sat, 31 Jan 2015 17:32:34 +0000 (14:32 -0300)]
qtmux: store stream and container tags separately

Tags received via events, when marked as stream tags, will
be stored on that stream's trak atom instead of being stored
in the main tags atom. This allows the resulting file to have
global and stream tags stored.

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

9 years agoqtmux: refactor tags functions to accomodata UDTA at trak level
Thiago Santos [Sat, 31 Jan 2015 16:14:44 +0000 (13:14 -0300)]
qtmux: refactor tags functions to accomodata UDTA at trak level

Refactor the functions that were bound to the 'moov' atom to
directly pass the desired 'udta' that should receive the tags.
This allows the tags to be written to 'udta' at the 'moov' or
the 'trak' level, creating tags that are for the container or
for a stream only.

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

9 years agoqtmux: map application name to _swr tag
Thiago Santos [Sat, 31 Jan 2015 13:47:40 +0000 (10:47 -0300)]
qtmux: map application name to _swr tag

It refers to the application name and version used to create the
file

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

9 years agomatroska: Fix seeking past the end of the file in reverse mode.
Jan Schmidt [Fri, 30 Jan 2015 15:30:40 +0000 (02:30 +1100)]
matroska: Fix seeking past the end of the file in reverse mode.

Snap to the end of the file when seeking past the end in reverse mode,
and also fix GST_SEEK_TYPE_END and GST_SEEK_TYPE_NONE handling
for the stop position by always seeking on a segment in stream time

9 years agortpsession: Fix signal name
Sebastian Dröge [Fri, 30 Jan 2015 17:22:31 +0000 (18:22 +0100)]
rtpsession: Fix signal name

This wasn't meant to be pushed at all yet, but now that it's there
already it won't hurt to make it correct at least.

9 years agortpstats: Fix typo in documentation
Sebastian Dröge [Fri, 30 Jan 2015 15:56:35 +0000 (16:56 +0100)]
rtpstats: Fix typo in documentation

9 years agortpsession: Add new on-receiving-rtcp signal
Sebastian Dröge [Fri, 30 Jan 2015 15:50:36 +0000 (16:50 +0100)]
rtpsession: Add new on-receiving-rtcp signal

This will be emitted whenever an RTCP packet is received. Different to
on-feedback-rtcp, this signal gets every complete RTCP packet and not
just the individual feedback packets.

9 years agoqtdemux: simplify segment.base math
Thiago Santos [Wed, 28 Jan 2015 17:02:15 +0000 (14:02 -0300)]
qtdemux: simplify segment.base math

Remove a fix for heavily edited files added for fixing
https://bugzilla.gnome.org/show_bug.cgi?id=345830 to work
with seeks and proper gaps playback. The fix was replaced
for a more general solution that bases on using previous
segment's duration, just like it works for media segments
playback.

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

9 years agovideomixer: update orc files
Luis de Bethencourt [Tue, 27 Jan 2015 14:00:35 +0000 (14:00 +0000)]
videomixer: update orc files

9 years agoqtdemux: Fix data dropping for fragmented streams
Thiago Santos [Mon, 26 Jan 2015 20:08:12 +0000 (17:08 -0300)]
qtdemux: Fix data dropping for fragmented streams

For fragmented streams with extra data at the end of the mdat
qtdemux was not dropping those bytes and would try to use
that extra data as the beginning of a new atom, causing the
stream to fail.

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

9 years agortpsession: Deprecate rtcp-immediate-feedback-threshold property
Sebastian Dröge [Sun, 25 Jan 2015 16:30:33 +0000 (17:30 +0100)]
rtpsession: Deprecate rtcp-immediate-feedback-threshold property

It had no effect since quite some time and also is not needed in general,
especially not to switch between immediate feedback mode and early feedback
mode. The latest understanding of the RFC is that from the endpoint point of
view, both modes are exactly the same. RTCP is only allowed to use the
bandwidth as given by the RFC constraints, as such it is only ever possible
to schedule a RTCP packet early but it's against the RFC to schedule more RTCP
packets.

The difference between immediate feedback mode and early feedback mode is that
the former guarantees that an RTCP packet can be sent for every event
"immediately", which means that the bandwidth calculations from the RFC have
resulted in an RTCP scheduling interval that is small enough. Early feedback
mode on the other hand means that we can schedule some packets early to make
that happen, but it's not guaranteed at all that it's possible to schedule
an RTCP packet per event (i.e. they need to be accumulated or dropped).

9 years agortpsession: Delay the next regular RTCP packet after early RTCP
Sebastian Dröge [Thu, 22 Jan 2015 09:29:39 +0000 (10:29 +0100)]
rtpsession: Delay the next regular RTCP packet after early RTCP

This is required to not exceed the short term average RTCP bitrate when
using early feedback as compared to without early feedback.

9 years agortpsession: Add new send-rtcp-full signal
Sebastian Dröge [Thu, 22 Jan 2015 09:28:52 +0000 (10:28 +0100)]
rtpsession: Add new send-rtcp-full signal

This indicates with a boolean return value if scheduling a new RTCP packet
within the requested delay was possible. Otherwise it behaves exactly like
send-rtcp. The only reason for adding a new signal is ABI compatibility.

9 years agopulsesink: Free format_info in query_getcaps
Jimmy Ohn [Tue, 20 Jan 2015 00:32:00 +0000 (00:32 +0000)]
pulsesink: Free format_info in query_getcaps

If we can not create probe stream in query_getcaps function, it will appear
memory leakage from format info.
The following patch prevent memory leakage in pulsesink.

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

9 years agomatroskademux: remove unnecessary check
Luis de Bethencourt [Fri, 23 Jan 2015 17:35:51 +0000 (17:35 +0000)]
matroskademux: remove unnecessary check

No matter if gst_matroska_read_common_parse_index_cuetrack () returns that the
flow is OK or not, the check there will be a break from the switch. Removing the
check since the outcome is the same.

CID #1265762

9 years agomatroskamux: Avoid using freed variable
Edward Hervey [Fri, 23 Jan 2015 14:16:25 +0000 (15:16 +0100)]
matroskamux: Avoid using freed variable

the name variable might have been attributed to pad_name, make sure we
free it only *after* pad_name has been used.

Coverity CID : 1265774

9 years agoavimux: Avoid using freed variable
Edward Hervey [Fri, 23 Jan 2015 14:13:55 +0000 (15:13 +0100)]
avimux: Avoid using freed variable

the name variable might have been attributed to pad_name, make sure we
free it only *after* pad_name has been used.

Coverity CID : 1265775

9 years agov4l2object: reuse caps framerate if not overwritten by v4l2 device
Peter Seiderer [Fri, 14 Nov 2014 11:59:31 +0000 (12:59 +0100)]
v4l2object: reuse caps framerate if not overwritten by v4l2 device

Enables duration setting in v4l2src.

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

9 years agortpsession: Fix indention
Sebastian Dröge [Thu, 22 Jan 2015 09:29:24 +0000 (10:29 +0100)]
rtpsession: Fix indention

9 years agoqtdemux_dump: Bypass even more code if debugging is disabled
Edward Hervey [Wed, 21 Jan 2015 16:36:26 +0000 (17:36 +0100)]
qtdemux_dump: Bypass even more code if debugging is disabled

And avoid using variables that won't exist when debugging is disabled

9 years agoqtdemux: Only traverse/dump nodes if guaranteed to be used
Edward Hervey [Wed, 21 Jan 2015 14:30:33 +0000 (15:30 +0100)]
qtdemux: Only traverse/dump nodes if guaranteed to be used

__gst_debug_min is the "global" lowest debug level set. There's no
guarantee the qtdemux debug category is actually set at that level.

9 years agomatroska: Avoid debugging below category threshold
Edward Hervey [Sat, 20 Dec 2014 16:09:14 +0000 (17:09 +0100)]
matroska: Avoid debugging below category threshold

This part alone was what made the matroska thread take a full core
on an android phone ...

9 years agoConstify some static arrays everywhere
Sebastian Dröge [Wed, 21 Jan 2015 08:55:30 +0000 (09:55 +0100)]
Constify some static arrays everywhere

9 years agoqtdemux: fix deadlock seeking in files without seek entries
Vincent Penquerc'h [Mon, 19 Jan 2015 17:49:54 +0000 (17:49 +0000)]
qtdemux: fix deadlock seeking in files without seek entries

A mutex unlock was missing.

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

9 years agovideomixer: fix illegal memory access in blend function with negative ypos
Vincent Penquerc'h [Mon, 19 Jan 2015 12:34:25 +0000 (12:34 +0000)]
videomixer: fix illegal memory access in blend function with negative ypos

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

9 years agov4l2videodec: Proxy getcaps
Nicolas Dufresne [Tue, 13 Jan 2015 21:49:34 +0000 (16:49 -0500)]
v4l2videodec: Proxy getcaps

Replace the sink_query with new getcaps() virtual and use the proxy
helper with the probed caps. This allow upstream element taking decision
base on what is supported downstream.

9 years agoqtmux: Add support for v210
Sebastian Dröge [Tue, 13 Jan 2015 18:05:20 +0000 (19:05 +0100)]
qtmux: Add support for v210

9 years agoqtdemux: v210 is v210, not UYVY and yuv2 is YUY2, not I420
Sebastian Dröge [Tue, 13 Jan 2015 17:58:01 +0000 (18:58 +0100)]
qtdemux: v210 is v210, not UYVY and yuv2 is YUY2, not I420

Also add a few other raw video formats we support: v308, v216
and add comments for a few others we don't support yet.

https://developer.apple.com/library/mac/technotes/tn2162/

9 years agoAutomatic update of common submodule
Stefan Sauer [Mon, 12 Jan 2015 14:56:29 +0000 (15:56 +0100)]
Automatic update of common submodule

From f2c6b95 to bc76a8b

9 years agoosxvideosink: Disable hack for NSApp iteration with a special #define
Sebastian Dröge [Sat, 10 Jan 2015 14:51:16 +0000 (15:51 +0100)]
osxvideosink: Disable hack for NSApp iteration with a special #define

The hack causes deadlocks and other interesting problems and it really
can only be fixed properly inside GLib. We will include a patch for
GLib in our builds for now that handles this, and hopefully at some
point GLib will also merge a proper solution.

A proper solution would first require to refactor the polling in
GMainContext to only provide a single fd, e.g. via epoll/kqueue
or a thread like the one added by our patch. Then this single
fd could be retrieved from the GMainContext and directly integrated
into a NSRunLoop.

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

9 years agopulsesink: uncork if needed upon commit
Mark Nauwelaerts [Thu, 8 Jan 2015 20:07:05 +0000 (21:07 +0100)]
pulsesink: uncork if needed upon commit

... to provide for a running clock.

9 years agov4l2videodec: Prevent renegotiation
Nicolas Dufresne [Fri, 9 Jan 2015 21:59:53 +0000 (16:59 -0500)]
v4l2videodec: Prevent renegotiation

Renegotiation isn't supported, simply prevent it the way we do in
v4l2src.

9 years agov4l2videodec: Don't unlock the stream lock twice
Nicolas Dufresne [Tue, 6 Jan 2015 18:54:25 +0000 (13:54 -0500)]
v4l2videodec: Don't unlock the stream lock twice

9 years agoqtdemux: fix stream time conversion
Thiago Santos [Fri, 9 Jan 2015 14:40:40 +0000 (11:40 -0300)]
qtdemux: fix stream time conversion

Use the right macro to convert to the correct scale or the
segment information will be wrong

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

9 years agov4l2allocator: Add protection against driver bug
Nicolas Dufresne [Wed, 7 Jan 2015 23:48:58 +0000 (18:48 -0500)]
v4l2allocator: Add protection against driver bug

v4l2loopback driver has a this nasty bug that if the queue is larger
then 2 buffers, it returns random index on dqbuf. So far we assumed
that the index was always right, which would lead to memory being
unref twice, and eventually crash.

9 years agov4l2: Don't use allocator size to iterate
Nicolas Dufresne [Wed, 7 Jan 2015 22:58:05 +0000 (17:58 -0500)]
v4l2: Don't use allocator size to iterate

As the buffer array is fixed size and small, it's safer to simply
use this static size to cleanup the buffers. This is also more
consistent with the rest. The associated method is no longer
required and can be dropped.

9 years agov4l2bufferpool: Don't clean buffer array in dispose
Nicolas Dufresne [Wed, 7 Jan 2015 22:55:14 +0000 (17:55 -0500)]
v4l2bufferpool: Don't clean buffer array in dispose

This should already have been done, plus this code is incorrect
and may lead to crash.

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

9 years agov4l2bufferpool: Don't ref queued output buffer
Nicolas Dufresne [Wed, 7 Jan 2015 22:48:31 +0000 (17:48 -0500)]
v4l2bufferpool: Don't ref queued output buffer

This partly revert to the old 1.2 behavior. Instead of keeping a
reference to the output buffer queued, we simply release them but
don't forward it to GstBufferPool. This way, the buffer pool don't
need to be flushed to be stopped.

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

9 years agov4l2bufferpool: Never fail on streamoff
Nicolas Dufresne [Thu, 8 Jan 2015 16:37:23 +0000 (11:37 -0500)]
v4l2bufferpool: Never fail on streamoff

Failing streamoff prevents allocator from being disposed hence
lead to device FD leak. There is no known cases where streamoff
may fails for which we'd still be streaming. streamoff is known
to fail when a device is being unplugged (in which case errno
19/ENODEV is set).

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

9 years agov4l2: Add support for detecting the presence of V4L2 support on OpenBSD
Brad Smith [Thu, 8 Jan 2015 02:52:17 +0000 (21:52 -0500)]
v4l2: Add support for detecting the presence of V4L2 support on OpenBSD

https://bugzilla.gnome.org/review?bug=742503

9 years agoac3parse: request at least 8 bytes to properly parse header
Matej Knopp [Sun, 4 Jan 2015 14:57:10 +0000 (15:57 +0100)]
ac3parse: request at least 8 bytes to properly parse header

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

9 years agowavparse: skip an additional uninteresting chunk type before the fmt chunk.
Michael Smith [Thu, 8 Jan 2015 00:20:03 +0000 (16:20 -0800)]
wavparse: skip an additional uninteresting chunk type before the fmt chunk.

9 years agoaudiodynamic: assert func_index is inside bounds
Luis de Bethencourt [Wed, 7 Jan 2015 18:16:12 +0000 (18:16 +0000)]
audiodynamic: assert func_index is inside bounds

Bringing back the check removed in the previous commit but have that check be a
g_assert. Changing the function to static void since return can never be False,
because audio format will never be unkown.

9 years agoaudiodynamic: remove always-true conditional
Luis de Bethencourt [Wed, 7 Jan 2015 17:31:39 +0000 (17:31 +0000)]
audiodynamic: remove always-true conditional

func_index is set by the sum of three ternary operators which add, 0:4, 0:2,
and 1:0. Minimum value would be 0+0+0=0, and maximum would be 4+2+1=7.
The conditional checking if func_index is >= 0 and < 8 will always be true.
Removing it.

CID 1226442

9 years agortpjitterbuffer: If we get a gap with a buffer without DTS, error out
Sebastian Dröge [Wed, 7 Jan 2015 17:05:18 +0000 (18:05 +0100)]
rtpjitterbuffer: If we get a gap with a buffer without DTS, error out

We (currently?) can't really handle gaps between RTP packets if they're not
properly timestamped. The current code would go into calculations with
GST_CLOCK_TIME_NONE and then cause assertions everywhere. It's probably
better to error out cleanly instead.

10 years agortspsrc: set PLAYING state after configuring caps
Aleix Conchillo Flaqué [Fri, 21 Nov 2014 19:39:19 +0000 (11:39 -0800)]
rtspsrc: set PLAYING state after configuring caps

We set to PLAYING after we have configured the caps, otherwise we
might end up calling request_key (with SRTP) while caps are still
being configured, ending in a crash.

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

10 years agotests: gdkpixbufoverlay-test: remove outdated FIXME
Tim-Philipp Müller [Tue, 30 Dec 2014 18:03:22 +0000 (18:03 +0000)]
tests: gdkpixbufoverlay-test: remove outdated FIXME

10 years agotests: rtpcollision: use alawenc/dec in these tests instead of Speex
Tim-Philipp Müller [Tue, 30 Dec 2014 17:19:42 +0000 (17:19 +0000)]
tests: rtpcollision: use alawenc/dec in these tests instead of Speex

They should always be built, while the speex elements are not.

Need to check for a smaller number of buffers then (7->4) because
speexenc will add 3 header buffers while alawenc will just output
as many buffers as it receives as input.

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

10 years agotests: simple-launch-lines: only run jpeg/png tests if elements are available
Tim-Philipp Müller [Tue, 30 Dec 2014 16:36:02 +0000 (16:36 +0000)]
tests: simple-launch-lines: only run jpeg/png tests if elements are available

10 years agosouphttpsrc: Don't return a buffer when returning not GST_FLOW_OK
Sebastian Dröge [Tue, 30 Dec 2014 15:26:58 +0000 (16:26 +0100)]
souphttpsrc: Don't return a buffer when returning not GST_FLOW_OK

basesrc assumes that we don't return a buffer if
something else than OK is returned. It will just
leak any buffer we might accidentially provide
here.

This can potentially happen during flushing.

Maybe fixes https://bugzilla.gnome.org/show_bug.cgi?id=741993

10 years agotests: rtpaux: use alawenc/dec in these tests instead of Speex
Tim-Philipp Müller [Tue, 30 Dec 2014 14:52:42 +0000 (14:52 +0000)]
tests: rtpaux: use alawenc/dec in these tests instead of Speex

They should always be built, while the speex elements are not.

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

10 years agomatroskademux: Improve detection of being stuck at the same offset
Sebastian Dröge [Mon, 29 Dec 2014 14:35:19 +0000 (15:35 +0100)]
matroskademux: Improve detection of being stuck at the same offset

Only error out if we read from the same position again and got the
same length. Just the same position is not necessarily enough.

10 years agomatroskademux: Don't get stuck at the same offset when searching for clusters
Sebastian Dröge [Mon, 29 Dec 2014 14:00:02 +0000 (15:00 +0100)]
matroskademux: Don't get stuck at the same offset when searching for clusters

This could happen if there is an invalid cluster with size 0, and in that
case just error out instead of looping forever.

10 years agoqtmux: fix ALAC muxing
Tim-Philipp Müller [Thu, 25 Dec 2014 21:32:40 +0000 (21:32 +0000)]
qtmux: fix ALAC muxing

Actually copy the codec data instead of copying nothing
and then bombing out because there's no data.

Fixes: gst-launch-1.0 audiotestsrc ! avenc_alac ! qtmux ! fakesink
https://bugzilla.gnome.org/show_bug.cgi?id=741783

10 years agortpptdemux: just drop invalid rtp packets instead of erroring out
Tim-Philipp Müller [Thu, 25 Dec 2014 15:48:04 +0000 (15:48 +0000)]
rtpptdemux: just drop invalid rtp packets instead of erroring out

Apparently linphone sends an invalid RTP packet as very
first packet. We want to ignore that instead of erroring
out (same for any other invalid packets really).

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

10 years agortpptdemux: fix 0.10-ism in docs
Tim-Philipp Müller [Thu, 25 Dec 2014 15:44:15 +0000 (15:44 +0000)]
rtpptdemux: fix 0.10-ism in docs

10 years agotests: gdkpixbufoverlay-test: use absolute positioning to fix demo
Tim-Philipp Müller [Thu, 25 Dec 2014 14:58:12 +0000 (14:58 +0000)]
tests: gdkpixbufoverlay-test: use absolute positioning to fix demo

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

10 years agogdkpixbufoverlay: add "positioning-mode" property to allow absolute positions
Tim-Philipp Müller [Thu, 25 Dec 2014 14:53:09 +0000 (14:53 +0000)]
gdkpixbufoverlay: add "positioning-mode" property to allow absolute positions

Set positioning-mode=pixels-absolute to allow positioning with
absolute coordinates, meaning negative x/y offsets will be
interpreted as being to the left/above the video frame instead
of being interpreted as relative to the right/bottom edge of
the video frame (which is a silly default, but that's how it is).

This means we can nicely slide images into and out of the frame,
see gdkpixbufoverlay-test.

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

10 years agoosxaudio: Directly return the ringbuffer's caps if it is acquired
Sebastian Dröge [Mon, 22 Dec 2014 14:33:51 +0000 (15:33 +0100)]
osxaudio: Directly return the ringbuffer's caps if it is acquired

10 years agoosxaudio: Put all audio formats into the template caps
Sebastian Dröge [Mon, 22 Dec 2014 11:56:19 +0000 (12:56 +0100)]
osxaudio: Put all audio formats into the template caps

We report the proper caps later from the get_caps() vfunc implementation after
probing the selected device.

10 years agoosxaudio: Also set the big endian flag for floating point samples
Sebastian Dröge [Mon, 22 Dec 2014 11:56:05 +0000 (12:56 +0100)]
osxaudio: Also set the big endian flag for floating point samples

10 years agoMAINTAINERS: Update my mail address
Sebastian Dröge [Mon, 22 Dec 2014 10:45:59 +0000 (11:45 +0100)]
MAINTAINERS: Update my mail address

10 years agoosxaudio: Fix deadlock and property change notification in device selection code
Sebastian Dröge [Mon, 22 Dec 2014 09:23:01 +0000 (10:23 +0100)]
osxaudio: Fix deadlock and property change notification in device selection code

After creating the ringbuffer we have to set the device on the ringbuffer as
it defaults to kAudioDeviceUnknown. At this point it can't have changed to
anything else yet and we don't have to notify about changes to the sink/src
"device" property. It's also not a good idea because GstAudioBaseSrc has the
object lock taken while the ringbuffer is created, which might cause a
deadlock if something calls back into the element from "notify::device".

Once the base class is done with the NULL_TO_READY state change, it has opened
the device via the ringbuffer and this might have chosen a different device.
Especially if we initially used kAudioDeviceUnknown. Also notify about this
property change as initially intended by this code.

10 years agov4l2pool: Update configuration size
Nicolas Dufresne [Fri, 19 Dec 2014 17:30:03 +0000 (12:30 -0500)]
v4l2pool: Update configuration size

We already update our copy of VideoInfo.size to proper size, now also
the configuration so the size matches on release.

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

10 years agomatroska-demux: Cache upstream length
Edward Hervey [Fri, 19 Dec 2014 09:57:29 +0000 (10:57 +0100)]
matroska-demux: Cache upstream length

Instead of constantly querying upstream, just cache the last duration,
and in the unlikelyness we might have gone over query again before
deciding we are EOS.

Cut 15% cpu off matroskademux streaming thread (srsly...)

10 years agomatroska: mux/demux the OpusHead header
Vincent Penquerc'h [Wed, 17 Dec 2014 17:36:18 +0000 (17:36 +0000)]
matroska: mux/demux the OpusHead header

This is meant to be so (https://wiki.xiph.org/MatroskaOpus - while
it is marked as a draft, this part was confirmed to be correct on
IRC), and allows one to determine whether a demuxed stream is
multistream or not, and thus set the multistream caps field
accordingly. In turn, this means downstream does not have to guess.

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

10 years agortspsrc: Don't dereference NULL if a suitable stream for the AUX element can't be...
Sebastian Dröge [Thu, 18 Dec 2014 10:50:33 +0000 (11:50 +0100)]
rtspsrc: Don't dereference NULL if a suitable stream for the AUX element can't be found

CID 1258717

10 years agoAutomatic update of common submodule
Sebastian Dröge [Thu, 18 Dec 2014 09:53:39 +0000 (10:53 +0100)]
Automatic update of common submodule

From ef1ffdc to f2c6b95

10 years agoudpsink: allocate scratch space for render functions on the heap
Tim-Philipp Müller [Fri, 12 Dec 2014 23:06:07 +0000 (23:06 +0000)]
udpsink: allocate scratch space for render functions on the heap

and not the stack. Our allocations could get a bit too large
to be sure it's not going to cause trouble using the stack.

10 years agomultiudpsink: re-use send_buffers() code path for render() function
Tim-Philipp Müller [Tue, 24 Jun 2014 00:16:37 +0000 (01:16 +0100)]
multiudpsink: re-use send_buffers() code path for render() function

It's like rendering a buffer list, just with one buffer.
Has the added advantage that if there are multiple clients
we can send the buffer to all the clients in one go.

10 years agomultiudpsink: keep client list consistent during removals
Tim-Philipp Müller [Tue, 24 Jun 2014 00:15:25 +0000 (01:15 +0100)]
multiudpsink: keep client list consistent during removals

We unlock and re-lock the client lock while emitting the
removed signal, which causes inconsistencies in the client
list vs. the client counts. Instead, remove the client from
the list already before emitting the signal and put it into
a temporary list of clients to be removed. That way things
look consistent to the streaming thread, but signal callbacks
can still do things like get stats from removed clients.

10 years agomultiudpsink: fix client count after removal
Tim-Philipp Müller [Mon, 23 Jun 2014 23:56:27 +0000 (00:56 +0100)]
multiudpsink: fix client count after removal

10 years agomultiudpsink: keep client list sorted by socket family
Tim-Philipp Müller [Mon, 23 Jun 2014 17:43:21 +0000 (18:43 +0100)]
multiudpsink: keep client list sorted by socket family

We make use of in the send_buffers() function if we
need to use different sockets to send to IPv4 and
IPv6 destinations.

10 years agomultiudpsink: add sendmmsg-ready render_list function prototype
Tim-Philipp Müller [Fri, 20 Jun 2014 10:36:19 +0000 (11:36 +0100)]
multiudpsink: add sendmmsg-ready render_list function prototype

Add prototype for a render_list() function that can use a
sendmmsg-style g_socket_send_messages() function once it lands
in GLib. We can use this infrastructure to send multiple buffers
made up by multiple memories to multiple clients in one go, which
drastically reduces the number of syscalls made when sending
high-bitrate video streams.

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

10 years agomultiudpsink: make udp client structure refcounted
Tim-Philipp Müller [Thu, 19 Jun 2014 18:16:01 +0000 (19:16 +0100)]
multiudpsink: make udp client structure refcounted

Use the refcount for memory management and keep track
of the number of duplicate clients in a separate
variable. This will be useful later, and means we
don't have to hold the OBJECT_LOCK all the time.

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

10 years agomultiudpsink: keep count of number of unique and non-unique IPv4 and IPv6 clients
Tim-Philipp Müller [Thu, 19 Jun 2014 17:31:05 +0000 (18:31 +0100)]
multiudpsink: keep count of number of unique and non-unique IPv4 and IPv6 clients

This will come in handy later.

10 years agov4l2bufferpool: Disable create_buf with libv4l2
Nicolas Dufresne [Tue, 16 Dec 2014 20:00:22 +0000 (15:00 -0500)]
v4l2bufferpool: Disable create_buf with libv4l2

Libv4l2 does not work with CREATE_BUFS. Instead of failing on random
error caused by libv4l2, disable CREATE_BUFS when an emulated format is
detected.

10 years agov4l2allocator: Add protection against broken libv4l2
Nicolas Dufresne [Tue, 9 Dec 2014 22:39:12 +0000 (17:39 -0500)]
v4l2allocator: Add protection against broken libv4l2

It looks like libv4l2 support for CREATE_BUF is incomplete. That
combine with existing bugs may lead to crash in GStreamer. These
check will make it robust by:

- Checking create buf index isn't an already in used index
- Checking that the index out of QUERYBUF matches the requested
  index

10 years agortspsrc: Add something to the debug logs if an RTX AUX element can't be added
Sebastian Dröge [Tue, 16 Dec 2014 15:37:24 +0000 (16:37 +0100)]
rtspsrc: Add something to the debug logs if an RTX AUX element can't be added

... because the application already has a signal handler set up here.

10 years agortspsrc: add retransmission support according to RFC4588
Matthew Waters [Fri, 21 Nov 2014 03:13:34 +0000 (14:13 +1100)]
rtspsrc: add retransmission support according to RFC4588

Based on the client-rtpaux example

10 years agoosxvideosink: clear rectangle structures before use
Wim Taymans [Tue, 16 Dec 2014 12:25:01 +0000 (13:25 +0100)]
osxvideosink: clear rectangle structures before use

10 years agov4l2object: Always set format
Nicolas Dufresne [Tue, 9 Dec 2014 20:09:56 +0000 (15:09 -0500)]
v4l2object: Always set format

Right now we try to be clever by detecting if device format have
changed or not, and skip setting format in this case. This is valid
behaviour with V4L2, but it's also very error prone. The rational
for not setting these all the time is for speed, though I can't
measure any noticeable gain on any HW I own. Also, until recently,
we where doing get/set on the format for each format we where
probing, making it near to impossible that the format would match.
This also fixes bug where we where skipping frame-rate setting if
format didn't change.

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

10 years agovideocrop: Remove todo about caps filter
Nicolas Dufresne [Mon, 15 Dec 2014 23:30:01 +0000 (18:30 -0500)]
videocrop: Remove todo about caps filter

The filter is already interected.

10 years agovideocrop: Make sure new crop is applied
Nicolas Dufresne [Mon, 15 Dec 2014 23:19:05 +0000 (18:19 -0500)]
videocrop: Make sure new crop is applied

Since "basetransform: Fix caps equality check" commit a7f357,
set_info() will not be called anymore if crop didn't change
the caps. This is fixed by setting "need_update" boolean when
cropping properties has been changed, and then applying these
if they where not applied before rendering the next frame. This
patch also fixed the locking, dropping un-needed custom lock,
and no holding needless lock while doing the operation as we
already hold the streaming lock.

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

10 years agoosxaudiosink: Prefer filter caps order while getting caps
Arun Raghavan [Fri, 12 Dec 2014 12:40:35 +0000 (18:10 +0530)]
osxaudiosink: Prefer filter caps order while getting caps

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

10 years agoosxaudiosink: Add some error handling around channel layout parsing
Arun Raghavan [Tue, 9 Dec 2014 08:08:26 +0000 (13:38 +0530)]
osxaudiosink: Add some error handling around channel layout parsing

For now we just spit a warning and ignore the channel layout if we can't
support it.

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

10 years agoosxaudio: Take lock around sink/source before accessing the ringbuffer
Arun Raghavan [Mon, 8 Dec 2014 17:08:22 +0000 (22:38 +0530)]
osxaudio: Take lock around sink/source before accessing the ringbuffer

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

10 years agoosxaudiosrc: Probe channel layout too
Arun Raghavan [Mon, 1 Dec 2014 15:36:27 +0000 (21:06 +0530)]
osxaudiosrc: Probe channel layout too

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

10 years agoosxaudiosink: Only fix up channels/layout for PCM caps while probing
Arun Raghavan [Mon, 1 Dec 2014 15:02:04 +0000 (20:32 +0530)]
osxaudiosink: Only fix up channels/layout for PCM caps while probing

It's unlikely that setting a channel layout will do much for AC3/DTS
streams. If we find at some point that it does make sense, we can
perform the structure copying unconditionally (i.e., the current code is
wrong, since AC3/DTS will get two structures now - one with the channel
layout, one without).

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

10 years agoosxaudiosrc: Implement caps probing
Arun Raghavan [Mon, 1 Dec 2014 14:11:35 +0000 (19:41 +0530)]
osxaudiosrc: Implement caps probing

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

10 years agoosxaudio: Bind audio device to audio unit early
Arun Raghavan [Mon, 1 Dec 2014 13:59:57 +0000 (19:29 +0530)]
osxaudio: Bind audio device to audio unit early

We want to bind the device during open so that subsequent format queries
on the audio unit are as specific as possible from that point onwards.

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

10 years agoosxaudiosink: Fix up caps querying a bit
Arun Raghavan [Sat, 29 Nov 2014 17:46:30 +0000 (23:16 +0530)]
osxaudiosink: Fix up caps querying a bit

This should make caps queries correct in PAUSED and higher as well.

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

10 years agoosxaudio: Move osxaudiosrc-specific code out of the generic path
Arun Raghavan [Fri, 28 Nov 2014 17:02:36 +0000 (22:32 +0530)]
osxaudio: Move osxaudiosrc-specific code out of the generic path

Avoids one layering violation (GstCoreAudio referring to
GstOsxAudioSrc).

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

10 years agoosxaudio: Clean up a GstCoreAudio -> GstOsxAudioSrc/Sink reference
Arun Raghavan [Fri, 28 Nov 2014 16:53:17 +0000 (22:23 +0530)]
osxaudio: Clean up a GstCoreAudio -> GstOsxAudioSrc/Sink reference

Now that device selection has no sink/source-specific bits, we can have
generic device selection for this path. We do need to now track state
changes so we can look up the final device_id once the device is open,
though.

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

10 years agoosxaudiosink: Move device caps probing to get_caps()
Arun Raghavan [Fri, 28 Nov 2014 14:10:52 +0000 (19:40 +0530)]
osxaudiosink: Move device caps probing to get_caps()

This should be preferred to running the probe at device open time.

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

10 years agoosxaudio: Make some debug code compile conditionally
Arun Raghavan [Fri, 28 Nov 2014 13:07:02 +0000 (18:37 +0530)]
osxaudio: Make some debug code compile conditionally

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

10 years agoosxaudio: Move device selection to ringbuffer->open_device()
Arun Raghavan [Fri, 28 Nov 2014 09:36:35 +0000 (15:06 +0530)]
osxaudio: Move device selection to ringbuffer->open_device()

This is conceptually the right thing to do, and allows us to correctly
catch errors in device selection as well, which we could not do while
creating the ringbuffer.

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