platform/upstream/gstreamer.git
9 years agoexamples: reuse variables in encoding example
Luis de Bethencourt [Thu, 9 Apr 2015 10:23:25 +0000 (11:23 +0100)]
examples: reuse variables in encoding example

9 years agoaudiodecoder: Don't post error messages while holding the stream lock
Sebastian Dröge [Thu, 9 Apr 2015 03:49:24 +0000 (20:49 -0700)]
audiodecoder: Don't post error messages while holding the stream lock

9 years agoaudiodecoder: Don't get and parse the current srcpad caps
Sebastian Dröge [Thu, 9 Apr 2015 03:48:39 +0000 (20:48 -0700)]
audiodecoder: Don't get and parse the current srcpad caps

We only get here if we don't have any srcpad caps, and we're going
to override the GstAudioInfo a few lines below anyway without ever
using it if for whatever reason we get caps here.

9 years agovideodecoder: Try to invent default caps instead of setting none at all when getting...
Sebastian Dröge [Thu, 9 Apr 2015 03:45:58 +0000 (20:45 -0700)]
videodecoder: Try to invent default caps instead of setting none at all when getting a GAP event before CAPS

Otherwise we would forward the GAP event without ever providing any caps,
which then would make decodebin expose a srcpad without any caps set. That's
confusing for applications and can lead to all kinds of interesting bugs.

Instead do the same as already is done in GstAudioDecoder, and try to invent
caps based on the sinkpad caps and the caps allowed by downstream and the
srcpad template caps.

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

9 years agodecodebin: Also log the pointer value of sticky events in debug output
Sebastian Dröge [Thu, 9 Apr 2015 03:44:15 +0000 (20:44 -0700)]
decodebin: Also log the pointer value of sticky events in debug output

Makes it easier to follow them in the debug logs.

9 years agoexamples: remove unused return value in addstream
Luis de Bethencourt [Wed, 8 Apr 2015 16:12:22 +0000 (17:12 +0100)]
examples: remove unused return value in addstream

Removing unused return value of pause_play_stream ().
Fixing code style to satisfy the git hook.

9 years agoexamples: avoid sprinkle running endlessly
Luis de Bethencourt [Wed, 8 Apr 2015 14:31:39 +0000 (15:31 +0100)]
examples: avoid sprinkle running endlessly

Quit sprinkle when there are no more frequencies to remove.
Also rename for readability the check for linking elements.

9 years agotests: Use AM_TESTS_ENVIRONMENT
Edward Hervey [Wed, 8 Apr 2015 14:15:43 +0000 (16:15 +0200)]
tests: Use AM_TESTS_ENVIRONMENT

Needed by the new automake test runner

9 years agortp: rtcpbuffer: fix typo in enum
Tim-Philipp Müller [Tue, 7 Apr 2015 15:43:59 +0000 (16:43 +0100)]
rtp: rtcpbuffer: fix typo in enum

and in docs. Spotted by Rob Swain.

9 years agotests: remove unused filename string from appsink-src2
Luis de Bethencourt [Tue, 7 Apr 2015 14:32:35 +0000 (15:32 +0100)]
tests: remove unused filename string from appsink-src2

9 years agotests: check file exists before running appsink-src
Luis de Bethencourt [Tue, 7 Apr 2015 14:30:30 +0000 (15:30 +0100)]
tests: check file exists before running appsink-src

9 years agotests: add missing license headers for example apps
Luis de Bethencourt [Tue, 7 Apr 2015 14:16:41 +0000 (15:16 +0100)]
tests: add missing license headers for example apps

9 years ago{audio,video}decoder: Forward SEGMENT_DONE events immediately and drain decoders
Sebastian Dröge [Tue, 7 Apr 2015 02:20:00 +0000 (19:20 -0700)]
{audio,video}decoder: Forward SEGMENT_DONE events immediately and drain decoders

Otherwise we're going to wait with draining until the next data comes, which
is a bit suboptimal and might take a long time... or maybe never happens.

9 years agotests: appsrc: clean up block_deadlock test and make it work in valgrind
Tim-Philipp Müller [Sun, 5 Apr 2015 12:53:38 +0000 (13:53 +0100)]
tests: appsrc: clean up block_deadlock test and make it work in valgrind

Remove all the bus watch and main loop code from the block_deadlock
test, it's not needed: neither pipeline will ever post an EOS or ERROR
message on the bus, and we're the only ones posting an error, from a
timeout. Might just as well just sleep for a bit and then do whatever
we want to do.

Don't gratuitiously set tcase timeout, just use whatever is the
default (or set via the environment).

Make individual pipeline runs shorter.

Check for valgrind and only do a handful iterations when running
in valgrind, not 100 (each iteration takes about 4s on a core i7).

Make videotestsrc output smaller buffers than the default resolution,
we don't care about the buffer contents here anyway.

Fixes test timeouts when run in valgrind.

9 years agotests: multisocketsink: fix flaky unit test
Tim-Philipp Müller [Sun, 5 Apr 2015 11:30:39 +0000 (12:30 +0100)]
tests: multisocketsink: fix flaky unit test

On slower systems, or under high system load (e.g. check-valgrind),
the sending_buffers_with_9_gstmemories test would sometimes fail,
because the read call only returns 32 bytes instead of the full
36 bytes expected. This is because multisocketsink might end up
doing a partial write of 32 bytes first, and then write the
missing 4 bytes later, but since we don't wait for all of data
to be written, there's a short window where our read call in the
unit test might then only receive the 32 bytes written so far,
which makes it deeply unhappy.

Instead, make sure we loop to read all bytes.

9 years agotcpserversink: don't error out if clients send us something, just ignore it
Tim-Philipp Müller [Sat, 4 Apr 2015 20:38:40 +0000 (21:38 +0100)]
tcpserversink: don't error out if clients send us something, just ignore it

We don't expect clients to send us any data, but if they do, just
ignore it. Web browsers might send us an HTTP request for example,
but some will still be happy if we just send them data without
a proper HTTP response.

There was a bug in the reading code path. We only have a small
read buffer and would provoke an EWOULDBLOCK trying to read
because we don't bail out of the loop early enough.

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

9 years agotests: basetime: fix timeouts when running under valgrind
Tim-Philipp Müller [Sat, 4 Apr 2015 00:23:48 +0000 (01:23 +0100)]
tests: basetime: fix timeouts when running under valgrind

This test sets a rather short timeout, increase this when
we run under valgrind. Also add a short sleep to the
fakesrc ! fakesink pipeline to avoid thrashing the CPU,
which would often not stop the main loop when it should.

Also fix wrong (0.10) return value from pad probe callback.

9 years agovideorate: downgrade left-over ERROR debug message
Tim-Philipp Müller [Fri, 3 Apr 2015 23:46:46 +0000 (00:46 +0100)]
videorate: downgrade left-over ERROR debug message

9 years agovideorate: fix a couple of memory leaks
Tim-Philipp Müller [Fri, 3 Apr 2015 23:42:52 +0000 (00:42 +0100)]
videorate: fix a couple of memory leaks

tests: videorate: fix leak in unit test

9 years agodoc: Add gst_video_encoder_get_allocator() to doc
Nicolas Dufresne [Fri, 3 Apr 2015 22:18:32 +0000 (18:18 -0400)]
doc: Add gst_video_encoder_get_allocator() to doc

9 years agotag: exiftag: don't try to convert utf-8 to latin1 if string is ASCII already
Tim-Philipp Müller [Fri, 3 Apr 2015 20:00:53 +0000 (21:00 +0100)]
tag: exiftag: don't try to convert utf-8 to latin1 if string is ASCII already

Bypass g_convert/iconv if there's nothing to convert. That way,
conversion won't fail on systems where iconv doesn't support
converting utf-8 to latin1 and there's nothing to convert.

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

9 years agoAutomatic update of common submodule
Tim-Philipp Müller [Fri, 3 Apr 2015 17:57:43 +0000 (18:57 +0100)]
Automatic update of common submodule

From bc76a8b to c8fb372

9 years agooggdemux: fix wrong duration on partial streams with a skeleton index
Vincent Penquerc'h [Thu, 12 Mar 2015 16:01:48 +0000 (16:01 +0000)]
oggdemux: fix wrong duration on partial streams with a skeleton index

When a stream has a skeleton index, the stream time is taken from that
index. However, when part of the stream is captured, the index is
invalid as its offsets are now wrong. To avoid this, we ignore the index
when the last offset points beyond the end of the stream (when its
byte length is known).

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

9 years agotextoverlay: fix disappearing text with high deltax
Vincent Penquerc'h [Wed, 18 Mar 2015 16:32:53 +0000 (16:32 +0000)]
textoverlay: fix disappearing text with high deltax

When deltax is large enough to cause the text to push past the
width of the frame, it would disappear due to a bug in setting
the layout width.

While there, fix a log printing an incorrect width to set.

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

9 years agooggmux: fix deadlock when not pulling a buffer from collectpads
Vincent Penquerc'h [Wed, 17 Dec 2014 12:17:09 +0000 (12:17 +0000)]
oggmux: fix deadlock when not pulling a buffer from collectpads

oggmux keeps a cached buffer per pad, and pulls buffers from
collectpads to this cached buffer for all pads before processing
the best pad. In some cases, the move from collectpads buffer
to cached buffer is delayed till next call. However, when there
is only one pad, this can't be delayed till next call as there
will be a deadlock since collectpads has no other pad to push to.

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

9 years agodecodebin2: fix deadlock on chain shutdown
Vincent Penquerc'h [Wed, 25 Mar 2015 15:36:38 +0000 (15:36 +0000)]
decodebin2: fix deadlock on chain shutdown

When shutting down the chain, we can get a deadlock when removing
a pad, if that chain was being busy streaming but blocked (eg, while
waiting for a queue to have free space).

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

9 years agoexamples: add license header to scrubby
Luis de Bethencourt [Fri, 3 Apr 2015 12:20:58 +0000 (13:20 +0100)]
examples: add license header to scrubby

9 years agoaudio,video: use gst_segment_is_equal instead of memcmp
Vincent Penquerc'h [Thu, 19 Mar 2015 10:48:15 +0000 (10:48 +0000)]
audio,video: use gst_segment_is_equal instead of memcmp

memcmp will blindly compare the reserved fields, as well as any
padding the compiler may choose to sprinkle in GstSegment.

Fixes valgrind complaints in unit tests, as well as some found via
https://bugzilla.gnome.org/show_bug.cgi?id=738216

9 years agoxvimagsink: fix failure to allocate large shared memory blocks
Vincent Penquerc'h [Fri, 4 Apr 2014 11:32:14 +0000 (12:32 +0100)]
xvimagsink: fix failure to allocate large shared memory blocks

A previous patch increased allocations by 15 bytes in order to ensure
16 byte alignment for g_malloc blocks. However, shared memory is
already block aligned, and this extra 15 bytes caused allocation
to fail when we were already allocating to the shared memory limit,
which is a lot smaller than typical available RAM.

Fix this by removing the alignment slack when allocating shared
memory.

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

9 years agoximage: do not allocate extra alignment slack for shared memory
Vincent Penquerc'h [Fri, 4 Apr 2014 11:40:14 +0000 (12:40 +0100)]
ximage: do not allocate extra alignment slack for shared memory

A previous patch increased allocations by 15 bytes in order to ensure
16 byte alignment for g_malloc blocks. However, shared memory is
already block aligned, and this extra 15 bytes is not needed. Since
shared memory limits are low compared to RAM, we remove this waste.

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

9 years agotests: require Gtk+ 3.10 for examples
Chihyoung Kim [Fri, 3 Apr 2015 04:56:28 +0000 (13:56 +0900)]
tests: require Gtk+ 3.10 for examples

Fixes build of playback and seek tests when an
older Gtk+ version is present on the system.

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

9 years agovideorate: Detect framerate if not forced to variable downstream
Thibault Saunier [Tue, 9 Dec 2014 12:18:42 +0000 (13:18 +0100)]
videorate: Detect framerate if not forced to variable downstream

In case upstream does not provide videorate with framerate information,
it will detect the current framerate from the buffer it received,
but if downstream forces the use of variable framerate (most probably
through the use of a caps filter with framerate = 0 / 1), videorate will
respect that.

And add some unit tests

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

9 years agovideorate: Do not loop forever pushing first buffer when variable framerate
Thibault Saunier [Tue, 9 Dec 2014 10:31:30 +0000 (11:31 +0100)]
videorate: Do not loop forever pushing first buffer when variable framerate

In the case the framerate is variable (represented by framerate=0/1),
we currently end up loop pushing the first buffer and then recompute
diff1 and diff2 without updating the videorate->next_ts at all
leading to infinitely looping pushing that first buffer.

In the case of variable framerate, we should just compute the next_ts
as previous_pts + previous_duration.

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

9 years agoplayback-test: update deprecated API
Luis de Bethencourt [Thu, 2 Apr 2015 13:32:15 +0000 (14:32 +0100)]
playback-test: update deprecated API

9 years agotests: fix deprecated API in colorkey and videooverlay
Luis de Bethencourt [Thu, 2 Apr 2015 10:33:12 +0000 (11:33 +0100)]
tests: fix deprecated API in colorkey and videooverlay

9 years agoexamples: fix deprecated API in scrubby
Luis de Bethencourt [Thu, 2 Apr 2015 10:14:08 +0000 (11:14 +0100)]
examples: fix deprecated API in scrubby

9 years agooggdemux: don't use GST_ERROR() for debug messages
Guillaume Desmottes [Thu, 19 Mar 2015 13:34:07 +0000 (14:34 +0100)]
oggdemux: don't use GST_ERROR() for debug messages

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

9 years agotests: use elapsed label of volume example
Luis de Bethencourt [Wed, 1 Apr 2015 14:58:28 +0000 (15:58 +0100)]
tests: use elapsed label of volume example

9 years agoaudioconvert: avoid float calculations when mixing integer-formatted channels
Bernhard Miller [Mon, 30 Mar 2015 09:24:46 +0000 (11:24 +0200)]
audioconvert: avoid float calculations when mixing integer-formatted channels

The patch calculates a second channel mixing matrix from the current one. The
matrix contains the original values * (2^10) as integers. This matrix is used
when integer-formatted channels are mixed.

On a ARM Cortex-A8, single core, 800MHz this improves performance in a
testcase from 29s to 9s for downmixing 6 channels to stereo.

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

9 years agotests: fix deprecated API in audio volume example
Luis de Bethencourt [Wed, 1 Apr 2015 14:02:13 +0000 (15:02 +0100)]
tests: fix deprecated API in audio volume example

9 years agojsseek: update deprecated GTK API
Luis de Bethencourt [Wed, 1 Apr 2015 13:37:23 +0000 (14:37 +0100)]
jsseek: update deprecated GTK API

9 years agojsseek: switch deprecated GtkTable for GtkGrid
Luis de Bethencourt [Wed, 1 Apr 2015 12:50:51 +0000 (13:50 +0100)]
jsseek: switch deprecated GtkTable for GtkGrid

9 years agotests: update deprecated GTK API in audiomix
Luis de Bethencourt [Wed, 1 Apr 2015 10:01:57 +0000 (11:01 +0100)]
tests: update deprecated GTK API in audiomix

9 years agointrospection: Don't use g-ir-scanner cache at compile time
Edward Hervey [Tue, 31 Mar 2015 09:21:25 +0000 (11:21 +0200)]
introspection: Don't use g-ir-scanner cache at compile time

It pollutes user directories and we don't need to cache it

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

9 years agoid3v2: ignore RVA2 tags with more than 64 peak bits
Vincent Penquerc'h [Thu, 10 Apr 2014 11:03:05 +0000 (12:03 +0100)]
id3v2: ignore RVA2 tags with more than 64 peak bits

The spec for this does not say nor imply how this should be
interpreted.  The previous code would try to shift by 64 bits,
which is undefined.

Coverity 1195119

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

9 years agoplaybin: avoid possible deference of null pointer
Luis de Bethencourt [Mon, 30 Mar 2015 09:50:45 +0000 (10:50 +0100)]
playbin: avoid possible deference of null pointer

For safety, check the pointer playbin->curr_group is valid before
reading parameters of the structure.

CID #1291624

9 years agooggdemux: resurrect some flow return handling
Mark Nauwelaerts [Sat, 28 Mar 2015 15:59:23 +0000 (16:59 +0100)]
oggdemux: resurrect some flow return handling

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

9 years agoappsrc: handle a sample not having caps or a buffer more gracefully
Nicola Murino [Fri, 27 Mar 2015 19:16:28 +0000 (20:16 +0100)]
appsrc: handle a sample not having caps or a buffer more gracefully

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

9 years agobasedepay: Handle initial gaps and no clock-base
Nicolas Dufresne [Fri, 27 Mar 2015 20:22:36 +0000 (16:22 -0400)]
basedepay: Handle initial gaps and no clock-base

When generating segment, we can't assume the first buffer is actually
the first expected one. If it's not, we need to adjust the segment to
start a bit before.

Additionally, we if don't know when the stream is suppose to have
started (no clock-base in caps), it means we need to keep everything in
running time and only rely on jitterbuffer to synchronize.

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

9 years agodecodebin: improve debug message by printing the object
Thiago Santos [Fri, 27 Mar 2015 02:53:44 +0000 (23:53 -0300)]
decodebin: improve debug message by printing the object

Print the pad object that EOS'd too early

9 years agovideoencoder: Keep sticky events around when doing a soft reset
Song Bing [Fri, 27 Mar 2015 05:39:43 +0000 (13:39 +0800)]
videoencoder: Keep sticky events around when doing a soft reset

The current code will first discard all frames, and then tries to copy
all sticky events from the (now discarded) frames. Let's change the order.

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

9 years agoriff: Add FLLR tag
David Schleef [Fri, 27 Mar 2015 01:03:12 +0000 (18:03 -0700)]
riff: Add FLLR tag

9 years agobasedepayload: Fix generated segment
Nicolas Dufresne [Wed, 25 Mar 2015 22:40:25 +0000 (18:40 -0400)]
basedepayload: Fix generated segment

This fixes playback position in RTSP.

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

9 years agoplaybin: ignore new pads if it is shutting down
Thiago Santos [Wed, 25 Mar 2015 11:20:03 +0000 (08:20 -0300)]
playbin: ignore new pads if it is shutting down

If a new pad is added after playbin has been put to READY/NULL it
should ignore new pads as it is shutting down.

This can happen when the pipeline fails to preroll (is still in READY)
and the user gives up on waiting or an error that doesn't reach
the demuxer occurs (on some event handling) and it will continue to
work and exposing pads while playbin has been put to NULL.

Without this check an input-selector is created and set to PAUSED
state, preventing playbin from properly shutting down in case it
has data blocked inside it.

9 years agoRevert "theoradec: Disable usage of crop meta"
Nicolas Dufresne [Tue, 24 Mar 2015 19:47:20 +0000 (15:47 -0400)]
Revert "theoradec: Disable usage of crop meta"

This reverts commit da52868f468bd75ddb595a3eb52aaa38ecbbac41.

9 years agovideorate: Don't leak the pools
Nicolas Dufresne [Tue, 24 Mar 2015 19:18:36 +0000 (15:18 -0400)]
videorate: Don't leak the pools

gst_query_set_nth_alloction_pool() is transfer none on the pool, so we must
unref the pool when done.

9 years agotheoradec: Disable usage of crop meta
Nicolas Dufresne [Sun, 1 Mar 2015 16:44:22 +0000 (11:44 -0500)]
theoradec: Disable usage of crop meta

This is a temporary workaround that simply disables usage of crop
meta for now.

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

9 years agoaudioconvert: Eliminate unsigned quantizers
Ilya Konstantinov [Tue, 24 Mar 2015 15:28:51 +0000 (17:28 +0200)]
audioconvert: Eliminate unsigned quantizers

audio_convert_convert unpacks to default format (signed) before calling
quantize, and the unsigned variants were equivalent to signed anyway,
so we just get rid of them.

9 years agoaudioconvert: Avoid int division in quantization
Ilya Konstantinov [Tue, 24 Mar 2015 01:01:22 +0000 (03:01 +0200)]
audioconvert: Avoid int division in quantization

Since range size is always 2^n, we can simply use modulo (implemented
with a bitmask).

The previous implementation used 64-bit integer division, which is
done in software on ARMv7. Although the divisor was constant, the
division could not be transformed into "multiplication by magic number"
since the dividend was 64-bit.

The now-unused and not-so-fast gst_fast_random_(u)int32_range functions
were removed.

Also, implementing bug fixes:

1) ADD_DITHER_TPDF_HF_I no longer discards bias.

2) We change TPDF's noise range to be the same as RPDF's. Previously,
RPDF's noise ranged:
  { bias - dither, bias + dither }
while TPDF's noise ranged:
  { bias/2 - dither/2, bias/2 + dither/2 - 1 } +
  { bias/2 - dither/2, bias/2 + dither/2 - 1 } =
  { bias - dither, bias + dither - 2 }
Now, both range:
  { bias - dither, bias + dither - 1 }

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

9 years agodecodebin2: Set multiqueue sizes before use-buffering.
Duncan Palmer [Sun, 15 Feb 2015 23:25:03 +0000 (09:25 +1000)]
decodebin2: Set multiqueue sizes before use-buffering.

This fixes a race where the use-buffering property on a multiqueue was
set before the queue depth was changed from it's high preroll limits to
lower playback limits. This resulted in buffering messages being emitted
by the multiqueue in the short window between use-buffering being
set and the queue depth being reset.

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

9 years agoRevert "fdmemory: freed pointer will always be 0"
Luis de Bethencourt [Tue, 24 Mar 2015 10:46:44 +0000 (10:46 +0000)]
Revert "fdmemory: freed pointer will always be 0"

This reverts commit 7fbcefb753f944a79eae6957ea2789c960eb9eea.

9 years agofdmemory: freed pointer will always be 0
Luis de Bethencourt [Tue, 24 Mar 2015 10:19:05 +0000 (10:19 +0000)]
fdmemory: freed pointer will always be 0

9 years agooggdemux: Fix compiler warning
Wonchul Lee [Fri, 20 Mar 2015 08:45:03 +0000 (17:45 +0900)]
oggdemux: Fix compiler warning

gstoggdemux.c:1233:11: error: format specifies type 'long' but the argument has type 'ogg_int64_t' (aka 'long long') [-Werror,-Wformat]
          granule);
          ^~~~~~~

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

9 years agodefs: update
Wim Taymans [Thu, 19 Mar 2015 12:31:07 +0000 (13:31 +0100)]
defs: update

9 years agovideo-convert: fix clamping for 16 bits alpha mult
Wim Taymans [Thu, 19 Mar 2015 11:42:23 +0000 (12:42 +0100)]
video-convert: fix clamping for 16 bits alpha mult

9 years agovideo-frame: fix height/width assertions
Tim-Philipp Müller [Wed, 18 Mar 2015 20:38:20 +0000 (20:38 +0000)]
video-frame: fix height/width assertions

As commit 274984e8 states:
When doing CROP META it is expected that the width and/or height
in the GstVideoMeta is bigger or equal to the caps negotiated size.

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

9 years agofdmemory: make a base class for allocating fd-backed memory
Wim Taymans [Wed, 18 Mar 2015 14:12:03 +0000 (15:12 +0100)]
fdmemory: make a base class for allocating fd-backed memory

Make a base class that can help with allocating fd-backed memory.
Make dmabuf extend from the base class.
We can now make methods to check if memory has an fd and get the fd for
all the different types of fd-backed memory.

9 years agomultisocketsink: Allocate enough memory on the stack in the test
Sebastian Dröge [Mon, 16 Mar 2015 19:41:19 +0000 (20:41 +0100)]
multisocketsink: Allocate enough memory on the stack in the test

Otherwise we just overwrite other things on the stack and cause crashes.

9 years agooggdemux: fix playback regression on streams with clipped data at start
Vincent Penquerc'h [Mon, 16 Mar 2015 11:53:24 +0000 (11:53 +0000)]
oggdemux: fix playback regression on streams with clipped data at start

The code that was calculating the start granule from packet durations
was interpreting a negative value as an error, but this is actually a
valid case, to indicate clipping of data at start.

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

9 years agofdmemory: add flags to control behaviour
Wim Taymans [Sun, 15 Mar 2015 16:27:33 +0000 (17:27 +0100)]
fdmemory: add flags to control behaviour

Add some flags to the GstFdMemory to control how memory is mapped and
unmapped.

9 years agoallocators: add allocators test
Wim Taymans [Sun, 15 Mar 2015 15:41:21 +0000 (16:41 +0100)]
allocators: add allocators test

9 years agofdmemory: add fd backed GstMemory to separate file
Wim Taymans [Sun, 15 Mar 2015 14:16:23 +0000 (15:16 +0100)]
fdmemory: add fd backed GstMemory to separate file

Make a separate file for the code to handle the fd backed memory.
This would make it possible later to add other allocators also using
fd backed memory.

9 years agostreamsynchronizer: fix deadlock condition
Thiago Santos [Sat, 14 Mar 2015 18:08:15 +0000 (18:08 +0000)]
streamsynchronizer: fix deadlock condition

The variables could have changed when the lock was released
to push a gap event. Streamsynchronizer needs to check them
again before going to sleep.

Bonus: fix a comment typo

9 years agoplaysink: remove redundant else statements
Ramiro Polla [Fri, 13 Mar 2015 18:07:12 +0000 (18:07 +0000)]
playsink: remove redundant else statements

9 years agoplaybin: don't escape percent sign in documentation code sample
Ramiro Polla [Fri, 13 Mar 2015 18:23:46 +0000 (18:23 +0000)]
playbin: don't escape percent sign in documentation code sample

9 years agoAdd test_that_multisocketsink_and_socketsrc_preserve_meta
William Manley [Mon, 3 Nov 2014 12:47:18 +0000 (12:47 +0000)]
Add test_that_multisocketsink_and_socketsrc_preserve_meta

This test is in a seperate commit to the previous two because it depends
on and tests the functionality in both.

9 years agosocketsrc: Add support for GstNetControlMessageMeta
William Manley [Fri, 13 Mar 2015 16:19:28 +0000 (16:19 +0000)]
socketsrc: Add support for GstNetControlMessageMeta

multisocketsink now understands the new GstNetControlMessageMeta to allow
sending control messages (ancillary data) with data when writing to Unix
domain sockets.

Thanks to glib's `GSocketControlMessage` abstraction the code introduced
in this commit is entirely portable and doesn't introduce and additional
dependencies or conditionally compiled code, even if it is unlikely to be
of much use on non-UNIX systems.

9 years agomultisocketsink: Add support for GstNetControlMessageMeta
William Manley [Thu, 30 Oct 2014 17:53:15 +0000 (17:53 +0000)]
multisocketsink: Add support for GstNetControlMessageMeta

multisocketsink now understands the new GstNetControlMessageMeta to allow
sending control messages (ancillary data) with data when writing to Unix
domain sockets.

A later commit will introduce a new socketsrc element which will similarly
understand `GstNetControlMessageMeta`.  This, when used with a
`GSocketControlMessage` of type `GUnixFDMessage` will allow GStreamer to
send and receive file-descriptions in ancillary data, the first step to
using memfds to implement zero-copy video IPC.

Thanks to glib's `GSocketControlMessage` abstraction the code introduced
in this commit is entirely portable and doesn't introduce and additional
dependencies or conditionally compiled code, even if it is unlikely to be
of much use on non-UNIX systems.

9 years agosocketsrc: Add `connection-closed-by-peer` signal
William Manley [Fri, 13 Mar 2015 13:56:13 +0000 (13:56 +0000)]
socketsrc: Add `connection-closed-by-peer` signal

This provides notification that the socket in use was closed by the peer
and gives an opportunity to replace it with a new one which is not
closed, allowing reading from many sockets in order.

I use this in pulsevideo to implement reconnection logic to handle the
pulsevideo service dieing, such that is can be restarted without
disrupting downstream.

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

9 years agosocketsrc: Tidy up usage of `g_object_unref`/`g_clear_object` and locking
William Manley [Fri, 13 Mar 2015 13:43:59 +0000 (13:43 +0000)]
socketsrc: Tidy up usage of `g_object_unref`/`g_clear_object` and locking

This is clearer, and should make future changes safer.  No functional
change intended.

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

9 years agosocketsrc: Refactor to simplify
William Manley [Fri, 13 Mar 2015 13:30:48 +0000 (13:30 +0000)]
socketsrc: Refactor to simplify

* Don't bother polling, just do a blocking read, the `GCancellable` will
  take care of unlocking.  This should also be faster on MS Windows where
  the GIO documentation for `g_socket_get_available_bytes` states: "Note
  that on Windows, this function is rather inefficient in the UDP case".

* Implement `GstPushSrc.fill` rather than `GstPushSrc.create`.  This means
  that we will be using the downstream allocator which may be more
  efficient.  It also means that socketsrc is likely to respect its
  "blocksize" property (assuming that there is enough data available).

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

9 years agotcp: Add element socketsrc
William Manley [Mon, 3 Nov 2014 02:47:14 +0000 (02:47 +0000)]
tcp: Add element socketsrc

`socketsrc` can be considered a source counterpart to `multisocketsink`.
It can be considered a generalization of `tcpclientsrc` and
`tcpserversrc`:  it contains all the logic required to communicate over
the socket but none of the logic for creating the sockets/establishing
the connection in the first place, allowing the user to accomplish this
externally in whatever manner they wish making it applicable to other
types of sockets besides TCP.

This commit essentially copies the implementation directly from
tcpserversrc.  Later patches will tidy the implementation up and
re-implement `tcpclientsrc` and `tcpserversrc` in terms of `socketsrc`.

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

9 years agoaudioringbuffer: Log with the ringbuffer object where possible
Arun Raghavan [Fri, 13 Mar 2015 17:54:23 +0000 (23:24 +0530)]
audioringbuffer: Log with the ringbuffer object where possible

9 years agomultisocketsink: Map `GstMemory`s individually when sending
William Manley [Fri, 13 Mar 2015 12:49:31 +0000 (12:49 +0000)]
multisocketsink: Map `GstMemory`s individually when sending

If a buffer is made up of non-contiguous `GstMemory`s `gst_buffer_map`
has to copy all the data into a new `GstMemory` which is contiguous.  By
mapping all the `GstMemory`s individually and then using scatter-gather
IO we avoid this situation.

This is a preparatory step for adding support to multisocketsink for
sending file descriptors, where a GstBuffer may be made up of several
`GstMemory`s, some of which are backed by a memfd or file, but I think this
patch is valid and useful on its own.

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

9 years agovideo-frame: Relax width/height assertion
Nicolas Dufresne [Fri, 13 Mar 2015 10:30:43 +0000 (10:30 +0000)]
video-frame: Relax width/height assertion

When doing CROP META it is exepcted that the width and/or height in the
GstVideoMeta is bigger or equal to the caps negotiated size.

9 years agovideopool: Choose the biggest buffer size
Nicolas Dufresne [Thu, 12 Mar 2015 16:32:31 +0000 (16:32 +0000)]
videopool: Choose the biggest buffer size

We should respect what has been negotiated.

9 years agooggdemux: recover from EOS when searching for chain in push mode
Vincent Penquerc'h [Thu, 12 Mar 2015 10:06:15 +0000 (10:06 +0000)]
oggdemux: recover from EOS when searching for chain in push mode

If we get EOS when we're trying to build a chain, we disable seeking
and continue instead of posting an error. This can happen for corner
cases such as a stream with a video that stops before the end, for
instance.

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

9 years agooggdemux: fix seeking in files with a "missing" stream
Vincent Penquerc'h [Wed, 11 Mar 2015 16:46:38 +0000 (16:46 +0000)]
oggdemux: fix seeking in files with a "missing" stream

When looking for pages when seeking, we stop looking for non sparse
streams if we don't find one within a given threshold. This fixes
seeking filling up queues and blocking in corner cases such as an
audio file with a pathological 1 frame video stream (yes, I saw one).

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

9 years agodocs: Add new video functions and objects. Cleanup a little.
Jan Schmidt [Thu, 12 Mar 2015 14:06:57 +0000 (01:06 +1100)]
docs: Add new video functions and objects. Cleanup a little.

Add GstVideoChroma, GstVideoDither, GstVideoScaler and friends to the docs.

Remove and clean up a few obsolete/deleted refs and typos

9 years agoplaybin: Disconnect signals and invalidate group if it fails to activate
Sebastian Dröge [Thu, 12 Mar 2015 12:17:11 +0000 (12:17 +0000)]
playbin: Disconnect signals and invalidate group if it fails to activate

Otherwise playbin might move to the group directly after EOS of the next
group, and then error out again.

9 years agotheoradec: Fix decoding in the presence of GstVideoCropMeta
Jan Schmidt [Sat, 31 Jan 2015 16:39:07 +0000 (03:39 +1100)]
theoradec: Fix decoding in the presence of GstVideoCropMeta

Store the video info of the internal frame decode width/height
separate to the exposed (cropped) frame info, so that it can be
used for mapping the downstream allocated video frame buffer correctly
when using GstVideoCropMeta.

Fixes playback of files with sizes that aren't a multiple of 16-pixels
width or height.

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

9 years agostreamsynchronizer: Should wait state change complete before start another state...
Song Bing [Tue, 3 Mar 2015 07:18:04 +0000 (15:18 +0800)]
streamsynchronizer: Should wait state change complete before start another state change

Should wait state change complete before start another state change.
Can't ensure can received async-done message when state change from PLAYING to PAUSED.

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

9 years agostreamsynchronizer: Remove unnecessary ERROR message.
Song Bing [Fri, 27 Feb 2015 08:40:23 +0000 (16:40 +0800)]
streamsynchronizer: Remove unnecessary ERROR message.

Remove unnecessary ERROR message.
Push GAP will fail as flushing. Needn't ERROR message.

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

9 years agooggdemux: do not send seek events from the streaming thread
Vincent Penquerc'h [Thu, 5 Mar 2015 17:42:53 +0000 (17:42 +0000)]
oggdemux: do not send seek events from the streaming thread

This will usually deadlock, despite this patch being in master for
quite some time and working fine. Nevertheless, we deem it to be
not working, disregarding facts.

As such, we fix it by keeping track of seek events, and sending
them upstream from a separate thread. Buffers are then discarded
till we get a new segment with the expected seqnum.

9 years agooggdemux: set correct seqnum on segment events after a seek in push mode
Vincent Penquerc'h [Mon, 23 Feb 2015 13:07:41 +0000 (13:07 +0000)]
oggdemux: set correct seqnum on segment events after a seek in push mode

There is already a seqnum field for this, which was used to overwrite
the seqnum that was set by the push specific code.

9 years agooggdemux: try harder to query duration from upstream
Vincent Penquerc'h [Mon, 23 Feb 2015 11:30:36 +0000 (11:30 +0000)]
oggdemux: try harder to query duration from upstream

READY->PAUSED can be too early as souphttpsrc can get the HTTP
headers after this. Try again in the chain function.

Also use seeking query to disable seeking if upstream reports
being unseekable.

9 years agooggdemux: add non flushing time seeking in push mode
Vincent Penquerc'h [Fri, 31 Oct 2014 10:55:14 +0000 (10:55 +0000)]
oggdemux: add non flushing time seeking in push mode

Some resetting code has to be done in the NEW_SEGMENT
event handler, instead of the missing FLUSH_STOP one.

Segment base was also wrongly accounted for. This was hidden
by the fact that flushing resets the base.

A discontinuity is now also signalled on seeking. We have to
also ensure that the discontinuity "sticks" till a buffer
with a valid timestamp goes out, or the audio decoder base
class will ignore the discontinuity for purposes of keeping
track of the current time.

This allows using non flushing segment seeks for looping
HTML audio in particular, and more generally non flushing seeks.

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

9 years agooggdemux: fix wrong first granule
Vincent Penquerc'h [Wed, 4 Feb 2015 17:13:44 +0000 (17:13 +0000)]
oggdemux: fix wrong first granule

The code was using the first nonnegative granulepos to seed the
granule tracking, which appeared to work since headers have zero
granulepos. However, this does not work for files with a hole at
start, which are common in live streaming.

The correct behavior is to look for the first granule, and subtract
the duration of all the packets finishing on this page.

The function which does this relies on the fact that the ogg_stream
structure can be duplicated by shallow copy, in order to pull the
packets from the first page(s) on the copy without affecting the
original stream state.

9 years agovideo-converter: fix border handling of YUY2 and friends
Wim Taymans [Wed, 11 Mar 2015 08:48:20 +0000 (09:48 +0100)]
video-converter: fix border handling of YUY2 and friends

Don't draw the border in groups of 4 pixels for YUY2 but instead in
groups of 2 with alternating U and V. This avoids a crash on odd width
borders.

9 years agovideo-converter: force yuv conversion for border
Wim Taymans [Wed, 11 Mar 2015 08:47:23 +0000 (09:47 +0100)]
video-converter: force yuv conversion for border

Make sure we always do yuv conversion for the border.