platform/upstream/gstreamer.git
9 years agoptp: Initial implementation of a PTP clock
Sebastian Dröge [Thu, 14 May 2015 10:18:25 +0000 (12:18 +0200)]
ptp: Initial implementation of a PTP clock

GstPtpClock implements a PTP (IEEE1588:2008) ordinary clock in
slave-only mode, that allows a GStreamer pipeline to synchronize
to a PTP network clock in some specific domain.

The PTP subsystem can be initialized with gst_ptp_init(), which then
starts a helper process to do the actual communication via the PTP
ports. This is required as PTP listens on ports < 1024 and thus
requires special privileges. Once this helper process is started, the
main process will synchronize to all PTP domains that are detected on
the selected interfaces.

gst_ptp_clock_new() then allows to create a GstClock that provides the
PTP time from a master clock inside a specific PTP domain. This clock
will only return valid timestamps once the timestamps in the PTP domain
are known. To check this, the GstPtpClock::internal-clock property and
the related notify::clock signal can be used. Once the internal clock
is not NULL, the PTP domain's time is known. Alternatively you can wait
for this with gst_ptp_clock_wait_ready().

To gather statistics about the PTP clock synchronization,
gst_ptp_statistics_callback_add() can be used. This gives the
application the possibility to collect all kinds of statistics
from the clock synchronization.

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

9 years agoclock: Add GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC and related API
Sebastian Dröge [Wed, 3 Jun 2015 11:16:15 +0000 (13:16 +0200)]
clock: Add GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC and related API

gst_clock_wait_for_sync(), gst_clock_is_synced() and gst_clock_set_synced()
plus a signal to asynchronously wait for the clock to be synced.

This can be used by clocks to signal that they need initial synchronization
before they can report any time, and that this synchronization can also get
completely lost at some point. Network clocks, like the GStreamer
netclientclock, NTP or PTP clocks are examples for clocks where this is useful
to have as they can't report any time at all before they're synced.

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

9 years agomemory: provide a mem_unmap function that takes the flags to unmap
Matthew Waters [Wed, 3 Jun 2015 08:03:36 +0000 (18:03 +1000)]
memory: provide a mem_unmap function that takes the flags to unmap

There are gstmemory's available that operate in two memory domains
and need to ensure consistent access between these domains.

Imagine a scenario where e.g. the GLMemory is mapped twice in both
the GPU and the CPU domain.  On unmap or a subsequent map, it would
like to ensure that the most recent data is available in the memory
domain requested.  Either by flushing the writes and/or initiating a
DMA transfer.  Without knowing which domain is being unmapped, the
memory does not know where the most recent data is to transfer to
the other memory domain.

Note: this still does not allow downgrading a memory map.

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

9 years agomemory: gst_memory_share may fail to exclusively lock the parent memory
Matthew Waters [Tue, 2 Jun 2015 06:14:50 +0000 (16:14 +1000)]
memory: gst_memory_share may fail to exclusively lock the parent memory

Now that locking exclusively dows not always succeed, we need to signal
the failure case from gst_memory_init.

Rather than introducing an API or funcionality change to gst_memory_init,
workaround by checking exclusivity in the calling code.

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

9 years agobuffer: locking memory exclusively may fail
Matthew Waters [Mon, 1 Jun 2015 14:23:37 +0000 (00:23 +1000)]
buffer: locking memory exclusively may fail

Attempt to return a copy of the memory instead.

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

9 years agominiobject: disallow a double write/exclusive lock
Matthew Waters [Sun, 31 May 2015 11:25:23 +0000 (21:25 +1000)]
miniobject: disallow a double write/exclusive lock

gst_memory_lock (mem, WRITE | EXCLUSIVE);
gst_memory_lock (mem, WRITE | EXCLUSIVE);

Succeeds when the part-miniobject.txt design doc suggests that this should fail:

  "A gst_mini_object_lock() can fail when a WRITE lock is requested and
  the exclusive counter is > 1. Indeed a GstMiniObject object with an
  exclusive counter 1 is locked EXCLUSIVELY by at least 2 objects and is
  therefore not writable."

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

9 years agouri: match return type of get_uri_type() implementation to declaration
Tim-Philipp Müller [Tue, 2 Jun 2015 19:32:35 +0000 (20:32 +0100)]
uri: match return type of get_uri_type() implementation to declaration

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

9 years agogstbuffer: Add a note about metas needing to be copied last
Jan Schmidt [Tue, 2 Jun 2015 14:12:36 +0000 (00:12 +1000)]
gstbuffer: Add a note about metas needing to be copied last

9 years agogstvalue: Implement gst_value_is_subset() for flagsets
Jan Schmidt [Wed, 27 May 2015 12:23:00 +0000 (22:23 +1000)]
gstvalue: Implement gst_value_is_subset() for flagsets

9 years agocheck: Use GST_CHECK_MAIN macro
Edward Hervey [Tue, 2 Jun 2015 14:33:48 +0000 (16:33 +0200)]
check: Use GST_CHECK_MAIN macro

9 years agodownloadbuffer: release lock before posting msg
eunhae choi [Wed, 20 May 2015 12:18:08 +0000 (21:18 +0900)]
downloadbuffer: release lock before posting msg

to avoid the deadlock in playbin2,
send msg after release the download buffer lock.

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

9 years agostructure: add note about missing field creation on _set()
Reynaldo H. Verdejo Pinochet [Sun, 31 May 2015 23:21:42 +0000 (20:21 -0300)]
structure: add note about missing field creation on _set()

9 years agotests: fix some leaks in new flagset checks
Tim-Philipp Müller [Sat, 30 May 2015 12:01:09 +0000 (13:01 +0100)]
tests: fix some leaks in new flagset checks

9 years agoqueuearray: remove duplicate assignment
Tim-Philipp Müller [Sat, 30 May 2015 11:39:19 +0000 (12:39 +0100)]
queuearray: remove duplicate assignment

We've already done this earlier in the function,
and nothing has changed since we first read it.

9 years agogst/gst.c: Add a warning about DllMain to prevent misuse
Nirbheek Chauhan [Wed, 27 May 2015 11:52:28 +0000 (17:22 +0530)]
gst/gst.c: Add a warning about DllMain to prevent misuse

DllMain should not be relied on for anything except storing the DLL handle.
It should also not be defined for static builds, but doing so is not
straightforward and is mostly harmless, so let's just add a comment about that
for now.

9 years agofunnel: Improve debug output a bit
Sebastian Dröge [Wed, 27 May 2015 11:54:25 +0000 (13:54 +0200)]
funnel: Improve debug output a bit

9 years agodocs: fix typo in draft-klass.txt
Luis de Bethencourt [Tue, 26 May 2015 13:46:16 +0000 (14:46 +0100)]
docs: fix typo in draft-klass.txt

9 years agocode-reviews: remove obsolete code reviews
Luis de Bethencourt [Tue, 26 May 2015 13:03:25 +0000 (14:03 +0100)]
code-reviews: remove obsolete code reviews

This obsolete folder hasn't been touched since 2001 and has no purpose. It
confuses new developers.

9 years agobasesink: use the slightly more correct take_sample for last-sample
Matthew Waters [Mon, 25 May 2015 11:02:28 +0000 (21:02 +1000)]
basesink: use the slightly more correct take_sample for last-sample

gst_value_take_buffer() and gst_value_take_sample() both resolve to
g_value_take_boxed().  Use the method with the correct name if we
ever change that.

9 years agogstvalue: Add GstFlagSet type
Jan Schmidt [Mon, 25 May 2015 06:23:33 +0000 (16:23 +1000)]
gstvalue: Add GstFlagSet type

GstFlagSet is a new type designed for negotiating sets
of boolean capabilities flags, consisting of a 32-bit
flags bitfield and 32-bit mask field. The mask field
indicates which of the flags bits an element needs to have
as specific values, and which it doesn't care about.

This allows efficient negotiation of arrays of boolean
capabilities.

The standard serialisation format is FLAGS:MASK, with
flags and mask fields expressed in hexadecimal, however
GstFlagSet has a gst_register_flagset() function, which
associates a new GstFlagSet derived type with an existing
GFlags gtype. When serializing a GstFlagSet with an
associated set of GFlags, it also serializes a human-readable
form of the flags for easier debugging.

It is possible to parse a GFlags style serialisation of a
flagset, without the hex portion on the front. ie,
+flag1/flag2/flag3+flag4, to indicate that
flag1 & flag4 must be set, and flag2/flag3 must be unset,
and any other flags are don't-care.

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

9 years agogstvalue: Add a comparision function for GstStructures
Thibault Saunier [Wed, 20 May 2015 18:19:29 +0000 (20:19 +0200)]
gstvalue: Add a comparision function for GstStructures

9 years agonet: keep GCancellable fd around instead of re-creating it constantly
Tim-Philipp Müller [Tue, 19 May 2015 13:34:04 +0000 (14:34 +0100)]
net: keep GCancellable fd around instead of re-creating it constantly

Just create the cancellable fd once and keep it around instead
of creating/closing it for every single packet. Since we spend
most time waiting for packets, an fd is alloced and in use pretty
much all the time anyway.

9 years agoRevert "doc: Workaround gtkdoc issue"
Tim-Philipp Müller [Mon, 18 May 2015 11:52:00 +0000 (12:52 +0100)]
Revert "doc: Workaround gtkdoc issue"

This reverts commit 460a7bf68292d057c77e84d1ea86b8e73fc081f3.

This should be fixed by the gtk-doc 1.23 release.

<para> cannot contain <refsect2>:
http://www.docbook.org/tdg/en/html/para.html
http://www.docbook.org/tdg/en/html/refsect2.html

9 years agosparsefile: small cleanup
Wim Taymans [Mon, 11 May 2015 08:52:23 +0000 (10:52 +0200)]
sparsefile: small cleanup

The error path unrefs file->file so make sure we only go there when
there is a non-NULL file->file.

9 years agodoc: Workaround gtkdoc issue
Nicolas Dufresne [Sun, 17 May 2015 03:29:03 +0000 (23:29 -0400)]
doc: Workaround gtkdoc issue

With gtkdoc 1.22, the XML generator fails when a itemizedlist is
followed by a refsect2. Workaround the issue by wrapping the refsect2
into para.

9 years agodocs/design/part-negotiation.txt: minor corrections
Reynaldo H. Verdejo Pinochet [Wed, 13 May 2015 16:28:05 +0000 (13:28 -0300)]
docs/design/part-negotiation.txt: minor corrections

9 years agotimedvaluecontrolsource: Check that the only iter is the end iter in the GSequence
Thibault Saunier [Sat, 16 May 2015 10:57:12 +0000 (12:57 +0200)]
timedvaluecontrolsource: Check that the only iter is the end iter in the GSequence

Previous patch was assuming that if the returned iter was the last iter
the GSequence was empty, which is obviously wrong.

9 years agotimedvaluecontrolsource: Fix removing all keyframes, and adding one back
Thibault Saunier [Sat, 16 May 2015 09:17:40 +0000 (11:17 +0200)]
timedvaluecontrolsource: Fix removing all keyframes, and adding one back

We were segfaulting because g_sequence_search was returning the iter_end,
and that iterator does not contain anything and thus should not be used
directly

9 years agofakesrc: fix property description
Tim-Philipp Müller [Fri, 15 May 2015 19:44:08 +0000 (20:44 +0100)]
fakesrc: fix property description

We're enterprise now folks.

9 years agopad: bump chain function call logs from LOG to DEBUG
Vincent Penquerc'h [Fri, 15 May 2015 13:57:14 +0000 (14:57 +0100)]
pad: bump chain function call logs from LOG to DEBUG

They're really useful compared to other LOG stuff in there, so
there is value is including them and not the rest.

9 years agogstobject: add gst_object_has_as_ancestor and deprecate previous function
Stefan Sauer [Fri, 15 May 2015 11:43:12 +0000 (13:43 +0200)]
gstobject: add gst_object_has_as_ancestor and deprecate previous function

The old gst_object_has_ancestor will call the new code. This establishes the
symetry with the new gst_object_has_as_parent.

API: gst_object_has_as_ancestor()

9 years agogstobject: rename gst_object_has_parent to gst_object_has_as_parent
Stefan Sauer [Fri, 15 May 2015 06:05:50 +0000 (08:05 +0200)]
gstobject: rename gst_object_has_parent to gst_object_has_as_parent

This avoid confusion with a potential punction that check if a gstobject has-a
parent.

API: gst_object_has_as_parent()

9 years agobasesink: Fix QoS/lateness checking if subclass implements prepare/prepare_list vfuncs
Jian [Thu, 14 May 2015 07:49:43 +0000 (15:49 +0800)]
basesink: Fix QoS/lateness checking if subclass implements prepare/prepare_list vfuncs

In basesink functions gst_base_sink_chain_unlocked(), below code is used to
checking if buffer is late before doing prepare call to save some effort:
    if (syncable && do_sync)
      late =
          gst_base_sink_is_too_late (basesink, obj, rstart, rstop,
          GST_CLOCK_EARLY, 0, FALSE);

    if (G_UNLIKELY (late))
      goto dropped;

But this code has problem, it should calculate jitter based on current media
clock, rather than just passing 0. I found it will drop all the frames when
rewind in slow speed, such as -2X.

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

9 years agofdsrc: docs: fix and update documentation
Víctor Manuel Jáquez Leal [Mon, 11 May 2015 15:14:50 +0000 (17:14 +0200)]
fdsrc: docs: fix and update documentation

Update example to use gst-launch-1.0 and fix a paragraph.

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

9 years agoAdd removed example directories to CRUFT_DIRS
Tim-Philipp Müller [Sat, 9 May 2015 10:53:49 +0000 (11:53 +0100)]
Add removed example directories to CRUFT_DIRS

9 years agodocs: gst-launch -> gst-launch-1.0 in example pipelines
Tim-Philipp Müller [Fri, 8 May 2015 13:08:42 +0000 (14:08 +0100)]
docs: gst-launch -> gst-launch-1.0 in example pipelines

And some small example pipeline fix-ups.

9 years agodocs/design/part-conventions.txt: minor corrections
Reynaldo H. Verdejo Pinochet [Sun, 10 May 2015 01:10:30 +0000 (22:10 -0300)]
docs/design/part-conventions.txt: minor corrections

9 years agodocs/design/part-context.txt: minor corrections
Reynaldo H. Verdejo Pinochet [Sun, 10 May 2015 01:04:52 +0000 (22:04 -0300)]
docs/design/part-context.txt: minor corrections

9 years agodocs/design/part-clocks.txt: minor corrections
Reynaldo H. Verdejo Pinochet [Sun, 10 May 2015 01:01:04 +0000 (22:01 -0300)]
docs/design/part-clocks.txt: minor corrections

9 years agodocs: update porting guides to mention new device probing API
Tim-Philipp Müller [Sat, 2 May 2015 16:16:38 +0000 (17:16 +0100)]
docs: update porting guides to mention new device probing API

9 years agodocs/design/part-states.txt: minor corrections
Reynaldo H. Verdejo Pinochet [Fri, 1 May 2015 23:37:18 +0000 (20:37 -0300)]
docs/design/part-states.txt: minor corrections

9 years agoevent: remove duplicated include
Jimmy Ohn [Fri, 1 May 2015 09:32:26 +0000 (18:32 +0900)]
event: remove duplicated include

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

9 years agotests: remove some pointless ancient code examples
Tim-Philipp Müller [Tue, 28 Apr 2015 18:59:31 +0000 (19:59 +0100)]
tests: remove some pointless ancient code examples

9 years agobaseparse: fix GST_BASE_PARSE_FLAG_LOST_SYNC
Ilya Konstantinov [Tue, 28 Apr 2015 14:54:51 +0000 (17:54 +0300)]
baseparse: fix GST_BASE_PARSE_FLAG_LOST_SYNC

Since frame->priv->discont was cleared earlier,
GST_BASE_PARSE_FLAG_LOST_SYNC was never being set.

Take the chance to refactor the frame creation a bit to
organize the flags setting and reset.

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

9 years agobaseparse: respect DISCONT flag on buffers
Thiago Santos [Mon, 9 Mar 2015 22:31:36 +0000 (19:31 -0300)]
baseparse: respect DISCONT flag on buffers

Drain the parser when a DISCONT buffer is received and then mark
the next buffer to be pushed as a DISCONT one

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

9 years agotaglist: Copy the tag scope too when copying tag lists
Sebastian Dröge [Tue, 28 Apr 2015 13:50:46 +0000 (15:50 +0200)]
taglist: Copy the tag scope too when copying tag lists

9 years agoidentity: Also synchronize GAP events in sync=1
Olivier Crête [Tue, 21 Apr 2015 00:02:51 +0000 (20:02 -0400)]
identity: Also synchronize GAP events in sync=1

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

9 years agoidentity: With sync=true, don't pre-roll
Olivier Crête [Mon, 20 Apr 2015 23:31:37 +0000 (19:31 -0400)]
identity: With sync=true, don't pre-roll

To act like a real live element, block the streaming when paused, and
return NO_PREROLL.

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

9 years agoidentity: Take upstream latency into account for sync=1
Olivier Crête [Mon, 20 Apr 2015 23:24:45 +0000 (19:24 -0400)]
identity: Take upstream latency into account for sync=1

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

9 years agoidentity: Handle PTS and DTS separately
Olivier Crête [Mon, 20 Apr 2015 23:07:27 +0000 (19:07 -0400)]
identity: Handle PTS and DTS separately

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

9 years agoRemove obsolete Android build cruft
Tim-Philipp Müller [Sun, 26 Apr 2015 16:05:48 +0000 (17:05 +0100)]
Remove obsolete Android build cruft

This is not needed any longer.

9 years agoinputselector: Only try to push the first EOS received
Thiago Santos [Fri, 24 Apr 2015 19:51:24 +0000 (16:51 -0300)]
inputselector: Only try to push the first EOS received

Subsequent EOS will push on the source pad that already received
EOS and that will make the event function return FALSE. It needs
only to push the first one and only return TRUE for the subsequent
ones.

9 years agotests: printf: add unit test for %%
Tim-Philipp Müller [Fri, 24 Apr 2015 14:19:26 +0000 (15:19 +0100)]
tests: printf: add unit test for %%

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

9 years agoprintf: fix invalid memory access in case of %%
Tim-Philipp Müller [Fri, 24 Apr 2015 14:16:24 +0000 (15:16 +0100)]
printf: fix invalid memory access in case of %%

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

9 years agotests: define GST_CHECK_TEST_ENVIRONMENT_BEACON
Tim-Philipp Müller [Thu, 23 Apr 2015 14:55:44 +0000 (15:55 +0100)]
tests: define GST_CHECK_TEST_ENVIRONMENT_BEACON

9 years agocheck: optionally check env var for us to make sure test env is set up
Tim-Philipp Müller [Thu, 23 Apr 2015 14:54:08 +0000 (15:54 +0100)]
check: optionally check env var for us to make sure test env is set up

If GST_CHECK_TEST_ENVIRONMENT_BEACON is defined, check if the
environment variable it is defined to is set up at the start
of each test.

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

9 years agobasesrc: Remove unused assignment in perform_seek()
Changbok Chea [Thu, 23 Apr 2015 00:06:42 +0000 (09:06 +0900)]
basesrc: Remove unused assignment in perform_seek()

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

9 years agotest: memory: Added test to verify the allocation params
Prashant Gotarne [Wed, 22 Apr 2015 06:14:00 +0000 (11:44 +0530)]
test: memory: Added test to verify the allocation params

New test added to verify the allocation params for the memory

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

9 years agotests: info: add test case to reproduce infinite loop
Jason Litzinger [Wed, 22 Apr 2015 17:04:06 +0000 (11:04 -0600)]
tests: info: add test case to reproduce infinite loop

gst_debug_unset_threshold_for_name() used to go into an
infinite loop when there was more than one category in
the list.  This test captures the problem by failing
via timeout.

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

9 years agogstinfo: fix infinite loop in gst_debug_unset_threshold_for_name()
Jason Litzinger [Wed, 22 Apr 2015 18:03:33 +0000 (12:03 -0600)]
gstinfo: fix infinite loop in gst_debug_unset_threshold_for_name()

Ensure iterator is advanced. The current list iteration code only
advances the iterator (walk) if a match is found, which results
in an infinite loop when more than one entry exists in the list.

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

9 years agoscripts: create-uninstalled-setup: miscellaneous fixes
Tim-Philipp Müller [Wed, 22 Apr 2015 09:14:53 +0000 (10:14 +0100)]
scripts: create-uninstalled-setup: miscellaneous fixes

Error out if required build tools (flex, bison, pkg-config)
are not present, instead of printing a message and then
continuing.

Check out submodules when fetching the repositories, so
they're already there and ready later.

Remove some 0.10 cruft.

9 years agoAdd INSTALL to .gitignore
Tim-Philipp Müller [Wed, 22 Apr 2015 08:59:24 +0000 (09:59 +0100)]
Add INSTALL to .gitignore

9 years agotests: error out if test environment is not actually set up properly
Tim-Philipp Müller [Wed, 22 Apr 2015 08:56:55 +0000 (09:56 +0100)]
tests: error out if test environment is not actually set up properly

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

9 years agoconfigure: can use AM_SILENT_RULES unconditionally now
Tim-Philipp Müller [Wed, 22 Apr 2015 08:52:58 +0000 (09:52 +0100)]
configure: can use AM_SILENT_RULES unconditionally now

https://autotools.io/automake/silent.html

9 years agoconfigure: bump automake requirement to 1.14 and autoconf to 2.69
Tim-Philipp Müller [Wed, 22 Apr 2015 08:47:39 +0000 (09:47 +0100)]
configure: bump automake requirement to 1.14 and autoconf to 2.69

This is only required for builds from git, people can still
build tarballs if they only have older autotools.

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

9 years agoRemove INSTALL file
Sebastian Dröge [Wed, 22 Apr 2015 08:32:57 +0000 (10:32 +0200)]
Remove INSTALL file

autotools automatically generate this, and when using different versions
for autogen.sh there will always be changes to a file tracked by git.

9 years agogstreamer-uninstalled: Update path to the GstValidate scenarios
Thibault Saunier [Mon, 20 Apr 2015 20:07:34 +0000 (22:07 +0200)]
gstreamer-uninstalled: Update path to the GstValidate scenarios

9 years agobuffer: Check return value of meta transform function in gst_buffer_copy_into()
Sebastian Dröge [Mon, 20 Apr 2015 07:23:43 +0000 (09:23 +0200)]
buffer: Check return value of meta transform function in gst_buffer_copy_into()

... by printing some debug output whenever copying a GstMeta fails.

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

9 years agoevent: fix header formatting
Tim-Philipp Müller [Sat, 18 Apr 2015 11:31:02 +0000 (12:31 +0100)]
event: fix header formatting

9 years agotests: protection: fix leak in unit test
Tim-Philipp Müller [Sat, 18 Apr 2015 11:28:15 +0000 (12:28 +0100)]
tests: protection: fix leak in unit test

9 years agogst.h: include the new gstprotection.h header
Tim-Philipp Müller [Sat, 18 Apr 2015 11:27:46 +0000 (12:27 +0100)]
gst.h: include the new gstprotection.h header

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

9 years agoprotection: add GstProtectionMeta to support protected content
Alex Ashley [Wed, 15 Apr 2015 14:33:31 +0000 (15:33 +0100)]
protection: add GstProtectionMeta to support protected content

In order to support some types of protected streams (such as those
protected using DASH Common Encryption) some per-buffer information
needs to be passed between elements.

This commit adds a GstMeta type called GstProtectionMeta that allows
protection specific information to be added to a GstBuffer. An example
of its usage is qtdemux providing information to each output sample
that enables a downstream element to decrypt it.

This commit adds a utility function to select a supported protection
system from the installed Decryption elements found in the registry.
The gst_protection_select_system function that takes an array of
identifiers and searches the registry for a element of klass Decryptor that
supports one or more of the supplied identifiers. If multiple elements
are found, the one with the highest rank is selected.

This commit adds a unit test for the gst_protection_select_system
function that adds a fake Decryptor element to the registry and then
checks that it can correctly be selected by the utility function.

This commit adds a unit test for GstProtectionMeta that creates
GstProtectionMeta and adds & removes it from a buffer and performs some
simple reference count checks.

API: gst_buffer_add_protection_meta()
API: gst_buffer_get_protection_meta()
API: gst_protection_select_system()
API: gst_protection_meta_api_get_type()
API: gst_protection_meta_get_info()

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

9 years agoevent: add new GST_EVENT_PROTECTION
Alex Ashley [Mon, 16 Mar 2015 12:35:27 +0000 (12:35 +0000)]
event: add new GST_EVENT_PROTECTION

In order for a decrypter element to decrypt media protected using a
specific protection system, it first needs all the protection system
specific  information necessary (E.g. information on how to acquire
the decryption keys) for that stream.

The GST_EVENT_PROTECTION defined in this commit enables this information
to be passed from elements that extract it (e.g. qtdemux, dashdemux) to
elements that use it (E.g. a decrypter element).

API: GST_EVENT_PROTECTION
API: gst_event_new_protection()
API: gst_event_parse_protection()

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

9 years agotee: fix use of possibly-freed pad in debug statement
Tim-Philipp Müller [Sat, 18 Apr 2015 10:42:21 +0000 (11:42 +0100)]
tee: fix use of possibly-freed pad in debug statement

The gst_object_unref() in the block above may be dropping
the last ref to the pad and free the pad. Set pad pointer
to NULL here, so that we don't accidentally use a
possibly-freed pad pointer in the debug log statements
further below, and also use the tee element as log object
since that's more appropriate anyway.

Fixes valgrind warnings and crashes in tee test_stress
unit test when debug logging is enabled.

9 years agotests: info: fix unit test when run with GST_DEBUG=*:9
Tim-Philipp Müller [Sat, 18 Apr 2015 11:00:13 +0000 (12:00 +0100)]
tests: info: fix unit test when run with GST_DEBUG=*:9

Only save the messages we're interested in and expecting.
When run with *:9 we might get additional TRACE level
messages from other categories and then we don't end up
with the number of messages we expect.

9 years agotests: pad: fix buffer leak in new blocking_with_probe_type_idle test
Tim-Philipp Müller [Sat, 18 Apr 2015 10:25:16 +0000 (11:25 +0100)]
tests: pad: fix buffer leak in new blocking_with_probe_type_idle test

9 years agotests: pad: fix invalid memory access in debug log message
Tim-Philipp Müller [Sat, 18 Apr 2015 10:11:26 +0000 (11:11 +0100)]
tests: pad: fix invalid memory access in debug log message

The string we put in the buffer is not NUL-terminated, so
don't try to print that via %s in a debug log message.

9 years agohelpers: on OSX, MKDIR_P is install-sh -c -d
Mathieu Duponchelle [Fri, 17 Apr 2015 13:19:07 +0000 (15:19 +0200)]
helpers: on OSX, MKDIR_P is install-sh -c -d

So we need to call it before cding to the bin directory.

9 years agohelpers: install -D isn't portable, use $(MKDIR_P) instead.
Mathieu Duponchelle [Fri, 17 Apr 2015 11:02:12 +0000 (13:02 +0200)]
helpers: install -D isn't portable, use $(MKDIR_P) instead.

9 years agotests: pad: test that idle probe will block
Thiago Santos [Tue, 14 Apr 2015 13:47:20 +0000 (10:47 -0300)]
tests: pad: test that idle probe will block

This tests add an idle probe on an idle pad from a separate thread
so that the callback is called immediatelly. This callback will sit
still and then we try to push a buffer on this same pad. It verifies
that the idle probe blocks data passing

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

9 years agopad: block data flow when idle probe is running
Thiago Santos [Tue, 14 Apr 2015 20:06:36 +0000 (17:06 -0300)]
pad: block data flow when idle probe is running

When idle probe runs directly from the gst_pad_add_probe() function
we need to make sure that no data flow happens as idle probe
is a blocking probe. The idle probe will prevent that any
buffer, bufferlist or serialized events and queries are not
flowing while it is running.

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

9 years agodocs: clarify that return value of gst_filename_to_uri() must be freed
Tim-Philipp Müller [Thu, 16 Apr 2015 12:41:20 +0000 (13:41 +0100)]
docs: clarify that return value of gst_filename_to_uri() must be freed

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

9 years agobin: undo upward state changes on children when a child fails
Vincent Penquerc'h [Wed, 15 Apr 2015 10:02:54 +0000 (11:02 +0100)]
bin: undo upward state changes on children when a child fails

When a bin changes states upwards, and a child fails to change,
any child that was already switched will not be reset to its
original state, leaving its state inconsistent with the bin,
which does not change state due to the failure.

If the state change was from NULL to READY, it means that deleting
this bin will cause those children to be deleted while not in
NULL state, which is a Bad Thing. For other upward changes, it
is less of a problem, as a subsequent switch back to NULL will
cause an actual downwards change on those inconsistent elements,
albeit from the "wrong" state.

We now reset state to the original one when a child fails.

Includes unit test.

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

9 years agohelpers: use $(INSTALL) to ... install the helper.
Mathieu Duponchelle [Wed, 15 Apr 2015 12:45:21 +0000 (14:45 +0200)]
helpers: use $(INSTALL) to ... install the helper.

As it will create the folders and set permissions appropriately,
better than doing it manually.

9 years agohelpers: Fix Makefile.am to install the completion-helper correctly.
Mathieu Duponchelle [Wed, 15 Apr 2015 11:02:36 +0000 (13:02 +0200)]
helpers: Fix Makefile.am to install the completion-helper correctly.

+ The program is installed at install-exec time, we thus need
  to move it in install-exec-hook, not install-data-hook.

9 years agoRevert "basesrc: fix pool leak on allocation query error path"
Vincent Penquerc'h [Wed, 15 Apr 2015 10:38:35 +0000 (11:38 +0100)]
Revert "basesrc: fix pool leak on allocation query error path"

This reverts commit 84fdf50b2f98951a32fa14802b62621f1105cd35.

It seems the bug was fixed independently, and the merge was
automagic, yielding two extra free calls.

9 years agotests: clock: fix test clock name
Suhwang Kim [Tue, 14 Apr 2015 04:42:55 +0000 (13:42 +0900)]
tests: clock: fix test clock name

Don't call the slave test clock "Master".

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

9 years agoelementfactory: add ENCRYPTOR class defines
Tim-Philipp Müller [Tue, 14 Apr 2015 16:47:08 +0000 (17:47 +0100)]
elementfactory: add ENCRYPTOR class defines

to go with DECRYPTOR.

9 years agoelementfactory: add DECRYPTOR class defines
Alex Ashley [Mon, 16 Mar 2015 13:11:59 +0000 (13:11 +0000)]
elementfactory: add DECRYPTOR class defines

An element that performs decryption does not naturally fit within any
of the existing element factory class types. It is useful to be able
to easily get a list of all elements that support decryption so that
a union can be computed between the protection systems that have a
supported decryptor and the allowed protection systems for a particular
stream.

This commit adds a new GST_ELEMENT_FACTORY_TYPE_DECRYPTOR and its
associated string identifier "Decryptor". It also adds
GST_ELEMENT_FACTORY_TYPE_DECRYPTOR to GST_ELEMENT_FACTORY_TYPE_DECODABLE
so that uridecodebin can auto-plug a decryption element.

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

9 years agotypefindelement: Use gst_event_unref() instead of gst_mini_object_unref() + casting
Sebastian Dröge [Mon, 13 Apr 2015 15:01:41 +0000 (17:01 +0200)]
typefindelement: Use gst_event_unref() instead of gst_mini_object_unref() + casting

9 years agotypefind: fix leak in gst_type_find_element_src_event()
Guillaume Desmottes [Mon, 13 Apr 2015 12:40:22 +0000 (14:40 +0200)]
typefind: fix leak in gst_type_find_element_src_event()

gst_type_find_element_src_event() is supposed to consume @event but wasn't
doing so when it was handling the event itself.

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

Signed-off-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
9 years agogstvalue: reset errno before g_ascii_strtoull call
Hyunjun Ko [Sat, 11 Apr 2015 11:44:02 +0000 (20:44 +0900)]
gstvalue: reset errno before g_ascii_strtoull call

"errno" already has meaningless value before g_ascii_strtoull call.
This causes invalid error check without reset.

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

9 years agobasesrc: Only set DTS to segment.start on the first buffer if subclass did not provid...
Sebastian Dröge [Sun, 12 Apr 2015 11:13:32 +0000 (13:13 +0200)]
basesrc: Only set DTS to segment.start on the first buffer if subclass did not provide PTS

Otherwise we're going to set a rather arbitrary DTS of segment.start (usually
0) for live sources, which confuses synchronization if the source started
capturing at a later time. And it's especially wrong for raw media, for which
we should not set any DTS at all.

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

9 years agotypefind: Run the default have-type handler after all application handlers
Sebastian Dröge [Tue, 2 Sep 2014 14:40:28 +0000 (17:40 +0300)]
typefind: Run the default have-type handler after all application handlers

Otherwise the CAPS event will already be forwarded downstream and
the application has no way to intervene anymore.

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

9 years agomultiqueue: Don't automatically enter the buffering state when use-buffering is set.
Duncan Palmer [Tue, 10 Mar 2015 02:57:44 +0000 (12:57 +1000)]
multiqueue: Don't automatically enter the buffering state when use-buffering is set.

There is no reason I can see to set mq->buffering = TRUE when
use_buffering is set; the code here also calls update_buffering(), which
will set mq->buffering = TRUE if this is warranted because of low buffer
levels.

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

9 years agoinputselector: fix cached buffer leak in chain function
Guillaume Desmottes [Fri, 10 Apr 2015 10:32:27 +0000 (12:32 +0200)]
inputselector: fix cached buffer leak in chain function

gst_selector_pad_chain() was popping cached buffers out of the queue without
freeing those. Make sure we don't steal the GstBuffer as the cached buffer ref
has been passed to the pad chain function.

This can be reproduced by running the
validate.file.playback.switch_subtitle_track_while_paused.test5_mkv scenario
with Valgrind.

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

Signed-off-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
9 years agotests: Use AM_TESTS_ENVIRONMENT
Edward Hervey [Wed, 8 Apr 2015 14:04:11 +0000 (16:04 +0200)]
tests: Use AM_TESTS_ENVIRONMENT

Needed by the new automake test runner

9 years agobufferlist: make sure list is writable before adding or removing buffers
Prashant Gotarne [Tue, 7 Apr 2015 09:30:46 +0000 (15:00 +0530)]
bufferlist: make sure list is writable before adding or removing buffers

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

9 years agobufferlist: minor docs addition for gst_buffer_list_get()
Prashant Gotarne [Tue, 7 Apr 2015 09:04:58 +0000 (14:34 +0530)]
bufferlist: minor docs addition for gst_buffer_list_get()

Return buffer remains valid as long as list is valid
and buffer is not removed from list.

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

9 years agobasesrc: fix pool leak on allocation query error path
Vincent Penquerc'h [Tue, 7 Apr 2015 10:38:31 +0000 (11:38 +0100)]
basesrc: fix pool leak on allocation query error path

It could be triggered by:

gst-launch-1.0 videotestsrc num-buffers=20 ! videcrop bottom=214748364 ! videoconvert ! autovideosink

Spotted while testing:

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