platform/upstream/gstreamer.git
5 years agogstmacros.h: Fix restrict definition on MSVC
Nirbheek Chauhan [Wed, 20 Feb 2019 12:21:40 +0000 (17:51 +0530)]
gstmacros.h: Fix restrict definition on MSVC

Turns out it's exposed as `__restrict`, not as `restrict`.

https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/95#note_120782

5 years agogstmacros.h: Fix check for 'restrict' keyword
Nirbheek Chauhan [Tue, 19 Feb 2019 19:55:11 +0000 (01:25 +0530)]
gstmacros.h: Fix check for 'restrict' keyword

MSVC also defines it as a keyword. Fixes build errors in projects that
include MSVC's xkeycheck.h which ensures that keywords aren't overriden
with a define.

5 years agobuffer: Don't miss return value on Windows build
Seungha Yang [Mon, 18 Feb 2019 00:58:19 +0000 (09:58 +0900)]
buffer: Don't miss return value on Windows build

... and use InterlockedExchangeAdd64 for the 64bit value.
InterlockedExchangeAdd is 32bit version.

5 years agobus: Make removing of signal/bus watches thread-safe
Sebastian Dröge [Fri, 15 Feb 2019 11:23:37 +0000 (13:23 +0200)]
bus: Make removing of signal/bus watches thread-safe

Between getting the GSource with the mutex and destroying it, something
else might've destroyed it already and we would have a dangling pointer.

Keep an additional reference just in case.

5 years agobus: Don't allow removing signal watches with gst_bus_remove_watch()
Sebastian Dröge [Fri, 15 Feb 2019 11:20:27 +0000 (13:20 +0200)]
bus: Don't allow removing signal watches with gst_bus_remove_watch()

Signal watches are reference counted and gst_bus_remove_watch() would
immediately remove it, breaking the reference counting. Only
gst_bus_remove_signal_watch() should be used for removing signal
watches.

5 years agopad: Document that pad unlink function is called with pad lock held
Lawrence Troup [Mon, 11 Feb 2019 02:21:21 +0000 (15:21 +1300)]
pad: Document that pad unlink function is called with pad lock held

Fixes #353

5 years agobuffer: store sequence number for metas
Tim-Philipp Müller [Fri, 2 Dec 2016 17:56:59 +0000 (17:56 +0000)]
buffer: store sequence number for metas

For metas where order might be significant if multiple metas are
attached to the same buffer, so store a sequence number with the
meta when adding it to the buffer. This allows users of the meta
to make sure metas are processed in the right order.

We need a 64-bit integer for the sequence number here in the API,
a 32-bit one might overflow too easily with high packet/buffer
rates. We could do it rtp-seqnum style of course, but that's a
bit of a pain.

We could also make it so that gst_buffer_add_meta() just keeps metas in
order or rely on the order we add the metas in, but that seems too
fragile overall, when buffers (incl. metas) get merged or split.

Also add a compare function for easier sorting.

We store the seqnum in the MetaItem struct here and not in the
GstMeta struct since there's no padding in the GstMeta struct.
We could add a private struct to GstMeta before the start of
GstMeta, but that's what MetaItem effectively is implementation-
wise. We can still change this later if we want, since it's all
private.

Fixes #262

5 years agodeviceprovider: It's (transfer none) not (transfer-none)
Sebastian Dröge [Sat, 9 Feb 2019 09:35:59 +0000 (11:35 +0200)]
deviceprovider: It's (transfer none) not (transfer-none)

5 years agodevice-provider: Allow notifying application of device changes
Thibault Saunier [Wed, 30 Jan 2019 13:41:58 +0000 (10:41 -0300)]
device-provider: Allow notifying application of device changes

Thi introduces new APIs to post a `DEVICE_CHANGED` message on the
bus so the application is notifies when a device is modified. For
example, if the "defaultness" of a device was changed or any property
that can be changed at any time. Atomically changing the device
object notifying that way allow us to abtract away the internal threads.

New APIS:
  - gst_message_new_device_changed
  - gst_message_parse_device_changed
  - gst_device_provider_device_changed

5 years agomeson: Extract flex version using a regex inside a script
Nirbheek Chauhan [Fri, 8 Feb 2019 11:12:43 +0000 (16:42 +0530)]
meson: Extract flex version using a regex inside a script

Different builds of Flex on different platforms output different strings
in --version. For example:

macOS:
flex 2.5.35 Apple(flex-31)

Windows:
win_flex.exe 2.6.4
C:\Program Files (x86)\GnuWin32\bin\flex.EXE version 2.5.4

We need to look for a string that looks like a version, which means
a regex till https://github.com/mesonbuild/meson/issues/1609 is fixed.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/356

5 years agomisc: Fix various compiler warnings on MinGW
Nirbheek Chauhan [Tue, 5 Feb 2019 12:48:48 +0000 (18:18 +0530)]
misc: Fix various compiler warnings on MinGW

gstharness.c: Use G_GSIZE_FORMAT instead of hard-coding %zu
error: unknown conversion type character 'z' in format [-Werror=format]

gst-inspect.c: GPid is void* on non-UNIX, and we only use it on UNIX
error: initialization makes pointer from integer without a cast [-Werror]

gstmeta.c: Use and then discard value
error: value computed is not used [-Werror=unused-value]

With this, gstreamer builds with -Werror on MinGW

5 years agodatetime: new() and new_local_time() constructors are not nullable
Sebastian Dröge [Tue, 29 Jan 2019 14:26:49 +0000 (16:26 +0200)]
datetime: new() and new_local_time() constructors are not nullable

5 years agopad: Constructors are all not nullable
Sebastian Dröge [Tue, 29 Jan 2019 13:50:06 +0000 (15:50 +0200)]
pad: Constructors are all not nullable

They can't possibly return NULL except in case of assertions.

5 years agopadtemplate: Constructors are all nullable as they check the template name
Sebastian Dröge [Tue, 29 Jan 2019 13:49:50 +0000 (15:49 +0200)]
padtemplate: Constructors are all nullable as they check the template name

5 years agotest: Set PTS on proper variable
Edward Hervey [Tue, 29 Jan 2019 11:01:59 +0000 (12:01 +0100)]
test: Set PTS on proper variable

This would previously set the PTS on a random address causing various
memory corruption

5 years agogstinfo: add Windows stacktraces support
Mathieu Duponchelle [Fri, 25 Jan 2019 01:36:18 +0000 (02:36 +0100)]
gstinfo: add Windows stacktraces support

This uses the DbgHelp library if available

5 years agopad: Remove unneeded 64bit upcast in debug trace
Nicolas Dufresne [Fri, 25 Jan 2019 18:46:59 +0000 (13:46 -0500)]
pad: Remove unneeded 64bit upcast in debug trace

The hook->hook_id is a gulong for which there are no portability issues
when tracing in printf format with %lu. So use %lu and remove the upcast
to 64 bit. This makes the code more consistent with everything else
tracing that hook_id and other gulong id.

5 years agogst-inspect: Re-add DEFAULT_LESS_OPTS with initial value
Nicolas Dufresne [Thu, 24 Jan 2019 18:52:46 +0000 (13:52 -0500)]
gst-inspect: Re-add DEFAULT_LESS_OPTS with initial value

Commit 56b4fbef5e6760adc927d0e1c7c8d6a0db9b785c refactored the pipe code
to use GLib utility, but the patch was hading some other changed. LESS
env was now hardcoded in the middle instead of from a define and was
changed from FXR to -RX. The "-" is not even valid for LESS env, and
with the lost of F, we would still use a pager when the content fits the
terminal.

5 years agotaglist: Remove (scope call) annotation from gst_tag_register()
Sebastian Dröge [Wed, 23 Jan 2019 11:51:08 +0000 (13:51 +0200)]
taglist: Remove (scope call) annotation from gst_tag_register()

This was added in 7fdb15d6a2 but it is wrong. (scope call) is for
closures that only have to stay valid for the scope of the call, but the
tag merge function has to stay valid for the whole lifetime of the
application instead.

There's no appropriate scope annotation for that so we have to skip
these functions for now.

5 years agotests: info: Fix spurious validation
Seungha Yang [Wed, 23 Jan 2019 03:15:13 +0000 (12:15 +0900)]
tests: info: Fix spurious validation

Should be equality check, not assignment.
Additionally, use fail_unless_equals_* macro for better readability
and debugging easier, if possible.

5 years agomeson: improve flex version parsing
Mathieu Duponchelle [Wed, 23 Jan 2019 20:15:09 +0000 (21:15 +0100)]
meson: improve flex version parsing

the output of flex --version can contain more than one space

5 years agomeson: Correct minimum required GLib version
Seungha Yang [Tue, 22 Jan 2019 05:05:43 +0000 (14:05 +0900)]
meson: Correct minimum required GLib version

It's updated to 2.40.0 since the commit 3e8ef4cf5a41e26836f0a5a8cb3ddaa5e55f1524

5 years agogst-inspect: Don't setup pager too early
Seungha Yang [Thu, 17 Jan 2019 02:22:27 +0000 (11:22 +0900)]
gst-inspect: Don't setup pager too early

Setup it only if we have something to print out about inspected results.
Otherwise, gst_tools_print_version() output will be redirected to pager and also
exit immediately without waiting child process.

5 years agogst-inspect: Port to Glib's spawn API
Seungha Yang [Tue, 8 Jan 2019 12:23:44 +0000 (21:23 +0900)]
gst-inspect: Port to Glib's spawn API

Although we support pager just for *nix until now,
this can make more portable to Windows.

Fixes #342

5 years agoRelease 1.15.1
Tim-Philipp Müller [Thu, 17 Jan 2019 01:38:59 +0000 (01:38 +0000)]
Release 1.15.1

5 years agoUpdate docs
Tim-Philipp Müller [Thu, 17 Jan 2019 01:38:59 +0000 (01:38 +0000)]
Update docs

5 years agoUpdate translations
Tim-Philipp Müller [Thu, 17 Jan 2019 01:38:49 +0000 (01:38 +0000)]
Update translations

5 years agogst-inspect: Fix ANSI escape sequence usage on Windows
Nirbheek Chauhan [Wed, 16 Jan 2019 20:00:25 +0000 (01:30 +0530)]
gst-inspect: Fix ANSI escape sequence usage on Windows

Either disable it when it's not supported, or setup the console to
interpret them correctly when it's supported.

Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/351

5 years agopad: Fix printf format when printing hook id
Sebastian Dröge [Tue, 15 Jan 2019 16:05:31 +0000 (18:05 +0200)]
pad: Fix printf format when printing hook id

It's a gulong so we have to cast it to a guint64 when using it with
G_GUINT64_FORMAT.

Spotted by Vincent Penvern.

5 years agodeviceprovider: fix counting number of times started
Daniel Drake [Mon, 14 Jan 2019 08:22:16 +0000 (16:22 +0800)]
deviceprovider: fix counting number of times started

GstDeviceProvider has a started_count private variable counter,
and the gst_device_provider_start() documentation emphasizes the
importance of balancing the start and stop calls.

However, when starting a provider that is already started, the
current code will never increment the counter more than once.

So you start it twice, but it will have start_count 1, which is the
maximum value it will ever see.

Then when you stop it twice, on the 2nd stop, after decrementing the
counter in gst_device_provider_stop():

  else if (provider->priv->started_count < 1) {
    g_critical
        ("Trying to stop a GstDeviceProvider %s which is already stopped",
        GST_OBJECT_NAME (provider));

and the program is killed.

Fix this by incrementing the counter when starting a device provider that
was already started.

5 years agotests: gstdatetime: move gst_date_time_new* and time() calls closer
Jordan Petridis [Fri, 11 Jan 2019 10:32:49 +0000 (12:32 +0200)]
tests: gstdatetime: move gst_date_time_new* and time() calls closer

While extremelly rare, time and gst_date_time_new_* will have
diff values and potentially trigger an assertion. Thus move
the calls as closely together as possible to mitigate this.

5 years agoRevert "bin: Hold the state lock while removing elements from a bin"
Sebastian Dröge [Thu, 10 Jan 2019 12:05:34 +0000 (12:05 +0000)]
Revert "bin: Hold the state lock while removing elements from a bin"

This reverts commit 7f70d7a9450b321585fbfd1eb977548d4264b2a6

5 years agotests: Add more int range fixation tests
Jan Alexander Steffens (heftig) [Wed, 9 Jan 2019 13:01:02 +0000 (14:01 +0100)]
tests: Add more int range fixation tests

5 years agostructure: Support stepped ranges when fixating
Jan Alexander Steffens (heftig) [Wed, 9 Jan 2019 12:38:44 +0000 (13:38 +0100)]
structure: Support stepped ranges when fixating

The step restriction was completely ignored until now.

5 years agostructure: Use GLib's CLAMP macro for fixating ranges
Jan Alexander Steffens (heftig) [Wed, 9 Jan 2019 12:37:30 +0000 (13:37 +0100)]
structure: Use GLib's CLAMP macro for fixating ranges

Just a bit of refactoring.

5 years agoelement: Add note about racyness to gst_element_set_locked_state()
Sebastian Dröge [Mon, 7 Jan 2019 12:08:25 +0000 (14:08 +0200)]
element: Add note about racyness to gst_element_set_locked_state()

This is racy if the state lock of the parent bin is not taken. The
parent bin might've just checked the flag in another thread and as the
next step proceed to change the child element's state.

5 years agobin: Hold the state lock while removing elements from a bin
Sebastian Dröge [Mon, 7 Jan 2019 12:08:00 +0000 (14:08 +0200)]
bin: Hold the state lock while removing elements from a bin

We need to take the state lock here to ensure that we're
not currently just before setting the state of this child
element. Otherwise it can happen that we removed the element
here and e.g. set it to NULL state, and shortly afterwards
have another thread set it to a higher state again as part of
a state change for the whole bin.

When adding an element to the bin this is not needed as we
require callers to always ensure after adding to the bin that
the new element is set to the correct state.

5 years agoaggregator: fix typo in docs
Tim-Philipp Müller [Sat, 5 Jan 2019 18:55:12 +0000 (18:55 +0000)]
aggregator: fix typo in docs

5 years agopipeline: Call gst_task_cleanup_all() before checking reference counts after shutdown
Sebastian Dröge [Wed, 2 Jan 2019 21:35:11 +0000 (23:35 +0200)]
pipeline: Call gst_task_cleanup_all() before checking reference counts after shutdown

We have to ensure that all background threads from thread pools are shut
down, or otherwise they might not have had a chance yet to drop their
last reference to the pipeline and then the assertion for a reference
count of 1 on the pipeline fails.

5 years agopipeline: Use the test clock in all unit tests
Sebastian Dröge [Wed, 2 Jan 2019 16:41:24 +0000 (18:41 +0200)]
pipeline: Use the test clock in all unit tests

And check for exact times as we can now do that thanks to the test clock
being deterministic.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/313

5 years agogdb: implement 'gst-dot' and 'gst-print' commands
Michael Olbrich [Wed, 26 Sep 2018 15:09:50 +0000 (17:09 +0200)]
gdb: implement 'gst-dot' and 'gst-print' commands

This adds two custom gdb commands:

'gst-dot' creates dot files that a very close to what
GST_DEBUG_BIN_TO_DOT_FILE() produces. Object properties and buffer content
(e.g. codec-data in caps) are not available.

'gst-print' produces high-level information about GStreamer objects. This
is currently limited to pads for GstElements and events for the pads. The
output can look like this:

(gdb) gst-print pad.object.parent
GstMatroskaDemux (matroskademux0) {
    SinkPad (sink, pull) {
    }
    SrcPad (video_0, push) {
      events:
        stream-start:
          stream-id: 0463ccb080d00b8689bf569a435c4ff84f9ff753545318ae2328ea0763fd0bec/001:1274058367
        caps: video/x-theora
          width: 1920
          height: 800
          pixel-aspect-ratio: 1/1
          framerate: 24/1
          streamheader: < 0x5555557c7d30 [GstBuffer], 0x5555557c7e40 [GstBuffer], 0x7fffe00141d0 [GstBuffer] >
        segment: time
          rate: 1
        tag: global
          container-format: Matroska
    }
    SrcPad (audio_0, push) {
      events:
        stream-start:
          stream-id: 0463ccb080d00b8689bf569a435c4ff84f9ff753545318ae2328ea0763fd0bec/002:1551204875
        caps: audio/mpeg
          mpegversion: 4
          framed: true
          stream-format: raw
          codec_data: 0x7fffe0014500 [GstBuffer]
          level: 2
          base-profile: lc
          profile: lc
          channels: 2
          rate: 44100
        segment: time
          rate: 1
        tag: global
          container-format: Matroska
        tag: stream
          audio-codec: MPEG-4 AAC audio
          language-code: en
    }
}

5 years agogdb: make the code PEP-8 compliant
Michael Olbrich [Sat, 29 Dec 2018 15:20:54 +0000 (16:20 +0100)]
gdb: make the code PEP-8 compliant

5 years agotests: remove unused gststream.h file
Tim-Philipp Müller [Mon, 31 Dec 2018 14:55:55 +0000 (14:55 +0000)]
tests: remove unused gststream.h file

Looks like an earlier version of the .c file.

5 years agogst-inspect: Disable colors when piped
Nicolas Dufresne [Wed, 19 Dec 2018 21:55:57 +0000 (16:55 -0500)]
gst-inspect: Disable colors when piped

This follows what git and systemd tools would do.

5 years agogst-inspect: Fix pager color with less
Nicolas Dufresne [Wed, 19 Dec 2018 21:06:40 +0000 (16:06 -0500)]
gst-inspect: Fix pager color with less

Fixes #341

5 years agobasesrc: ensure submitted buffer list is writable
Tim-Philipp Müller [Wed, 19 Dec 2018 00:34:40 +0000 (00:34 +0000)]
basesrc: ensure submitted buffer list is writable

Fixes flaky appsrc unit test where depending on scheduling
the submitted list might not be writable if submitted via
an action signal from the application thread.

Fixes gst-plugins-base#522

5 years agoidentity: fixes to the eos-after and error-after properties
Jonny Lamb [Fri, 14 Dec 2018 15:55:27 +0000 (15:55 +0000)]
identity: fixes to the eos-after and error-after properties

I copied `error-after` to make the `eos-after` property, but it turned
out there were some problems with that one, so this patch: adds
separate counters (so setting to NULL and reusing the element will
still work); clarifies the properties' min values; and reports an
error when both are set.

5 years agogst-uninstalled: include prefix in the plugins path
Michael Gruner [Wed, 28 Nov 2018 20:58:32 +0000 (14:58 -0600)]
gst-uninstalled: include prefix in the plugins path

5 years agotests: datetime: Fix failure on Windows
Seungha Yang [Mon, 17 Dec 2018 14:29:16 +0000 (23:29 +0900)]
tests: datetime: Fix failure on Windows

The documentation for WIN32 mktime indicates that for struct tm*
before January 1, 1970, that -1 is returned, and since mktime is timezone
dependent, the struct tm corresponding to 1:00, Jan. 1, 1970 might be failed.

See also
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/mktime-mktime32-mktime64

5 years agoqueue2: Add details of query in debug log
Edward Hervey [Tue, 25 Sep 2018 07:03:03 +0000 (09:03 +0200)]
queue2: Add details of query in debug log

5 years agoparse: Move variable to block where it's used
Edward Hervey [Sat, 15 Dec 2018 10:42:30 +0000 (11:42 +0100)]
parse: Move variable to block where it's used

There was a dead assignment used outside of the bin/pipeline creation
which was confusing (and unused). Just move that variable to
where it is actually used.

(Note that that variable was not needed outside of that block since
the refactoring done in 2b33d3318519fd613dd5a4ebbd7c308609904e68 )

5 years agoexamples: Remove dead assignments
Edward Hervey [Sat, 15 Dec 2018 10:08:09 +0000 (11:08 +0100)]
examples: Remove dead assignments

Those values are always set after before usage

5 years agoharness: assert on result of gst_pad_push_event()
Edward Hervey [Sat, 15 Dec 2018 10:07:21 +0000 (11:07 +0100)]
harness: assert on  result of gst_pad_push_event()

That assertion was accidentally removed in the refactoring done in
60de1f26c78feb0cde6d3f82cf86cf35daa71cc0

5 years agogst-inspect: Remove dead assignment
Edward Hervey [Sat, 15 Dec 2018 09:53:55 +0000 (10:53 +0100)]
gst-inspect: Remove dead assignment

readable is set just after before usage since 906bbd3817c86e64d1bfa57570469055456addfe

5 years agopad: Let threads in the test take ownership of a strong reference to their pads
Sebastian Dröge [Fri, 14 Dec 2018 16:38:21 +0000 (18:38 +0200)]
pad: Let threads in the test take ownership of a strong reference to their pads

Otherwise it can easily happen that the pad is destroyed before the
thread disappears, as happened sometimes in the test_pad_probe_block_add_remove
test where joining of the thread was done *after* the pad was unreffed
and destroyed.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/339

5 years agopad: Print some debug information about pad probe hooks we remove
Sebastian Dröge [Fri, 14 Dec 2018 16:37:53 +0000 (18:37 +0200)]
pad: Print some debug information about pad probe hooks we remove

5 years agoidentity: add eos-after property
Jonny Lamb [Tue, 11 Dec 2018 16:48:56 +0000 (16:48 +0000)]
identity: add eos-after property

Using `num-buffers` can be unpredictable as buffer sizes are often
arbitrary (filesrc, multifilesrc, etc.). The `error-after` property on
`identity` is better but obviously reports an error afterwards. This
adds `eos-after` which does exactly the same thing but reports EOS
instead.

5 years agogstcaps: add gst_caps_set_features_simple()
Guillaume Desmottes [Tue, 11 Dec 2018 09:48:46 +0000 (10:48 +0100)]
gstcaps: add gst_caps_set_features_simple()

Convenient helper setting a caps feature on all the structures of a
caps.

5 years agogst: fixed the install command for gdb python macros on macos - `install -D` is not...
Roman Sivriver [Thu, 6 Dec 2018 20:22:21 +0000 (20:22 +0000)]
gst: fixed the install command for gdb python macros on macos - `install -D` is not supported by BSD install

5 years agobuffer: Add more exhaustive test for gst_buffer_foreach_meta() meta removal
Dardo D Kleiner [Sat, 1 Dec 2018 15:32:07 +0000 (10:32 -0500)]
buffer: Add more exhaustive test for gst_buffer_foreach_meta() meta removal

Existing test for iterating/removing buffer meta data was insufficient
to detect linked list corruption when removing multiple items, and could
also suffer from such corruption in attempting to count remaining items.
Modified the one test and added several others to exercise multiple
scenarios.

Validates fix for issue #332.

5 years agobuffer: Fix memory corruption in gst_buffer_foreach_meta() when removing metas
Dardo D Kleiner [Sat, 1 Dec 2018 15:48:11 +0000 (10:48 -0500)]
buffer: Fix memory corruption in gst_buffer_foreach_meta() when removing metas

Fix corruption of meta list head when removing metas at the beginning
during iteration. Linked list handling in gst_buffer_foreach_meta
failed to track the previous entry and update the correct next pointer
when removing items from beyond the head of the list, resulting in
arbitrary list pointer corruption.

Closes #332

5 years agoAutomatic update of common submodule
Thibault Saunier [Wed, 5 Dec 2018 20:24:00 +0000 (17:24 -0300)]
Automatic update of common submodule

From cd1dee0 to 59cb678

5 years agolibdw support is optional
Nicolas Dufresne [Sat, 24 Nov 2018 02:22:21 +0000 (21:22 -0500)]
libdw support is optional

This was no longer optional, leading to deadcode. This regression was
found trying to fix the unwind variant in cerbero.

5 years agogst-inspect: Fix colors for "URI handling" section
Zeeshan Ali [Thu, 29 Nov 2018 11:54:46 +0000 (12:54 +0100)]
gst-inspect: Fix colors for "URI handling" section

They seemed incompatible with other colors.

5 years agogst-inspect: Avoid use of non-bright blue color
Zeeshan Ali [Wed, 28 Nov 2018 17:06:54 +0000 (18:06 +0100)]
gst-inspect: Avoid use of non-bright blue color

Simple blue doesn't work on Linux console, which also happens to be a
gnome-terminal theme. Use bright-blue instead.

5 years agobaseparse: Add unit test for short reads
KimTaeSoo [Mon, 26 Nov 2018 13:00:28 +0000 (22:00 +0900)]
baseparse: Add unit test for short reads

Before the previous commit, buffer pulling count and chain function call
counts are not equal due to EOS. After the modification, these counts
are equal so unit test is passing.

https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/33
https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/294

5 years agobaseparse: Use buffer from short reads instead of pulling again
KimTaeSoo [Wed, 14 Nov 2018 15:17:09 +0000 (00:17 +0900)]
baseparse: Use buffer from short reads instead of pulling again

baseparse internally uses a 64kb buffer for pulling data from upstream.
If a 64kb pull is failing with a short read, it would previously pull
again the requested size.

Doing so is not only inefficient but also seems to cause problems with
some elements (rawvideoparse) where the second pull would fail with EOS.

Short reads are only allowed in GStreamer at EOS.

Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/294

5 years agoinput-selector: Let context queries pass through
Philippe Normand [Wed, 28 Nov 2018 11:00:21 +0000 (11:00 +0000)]
input-selector: Let context queries pass through

By doing so GL source elements can successfully reuse the GL context and display
of downstream elements. This change fixes an issue in playbin when using
gltestsrc where the context query made by the source element would fail and the
source element would create a second (useless) GLDisplay.

5 years agoRun gst-indent through the files
Jordan Petridis [Wed, 28 Nov 2018 03:58:53 +0000 (05:58 +0200)]
Run gst-indent through the files

This is required before we enabled an indent test in the CI.

https://gitlab.freedesktop.org/gstreamer/gstreamer-project/issues/33

5 years agogst-inspect: Use only original 16 colors
Zeeshan Ali [Sat, 24 Nov 2018 13:51:19 +0000 (14:51 +0100)]
gst-inspect: Use only original 16 colors

Not only this will make colored output work on old terminals and console
as well, terminals can theme the actual colors this way to make it fit
with their different themes this way.

5 years agoRevert "harness: Take ownership of floating references (pads, elements) passed to...
Mathieu Duponchelle [Tue, 27 Nov 2018 01:59:41 +0000 (02:59 +0100)]
Revert "harness: Take ownership of floating references (pads, elements) passed to the harness"

This reverts commit 2faf93c009d866d68cf0d063a29bb8c21f192aea.

THis broke half our unit tests, oops:

https://ci.gstreamer.net/job/GStreamer-master/11203/testReport/

5 years agoharness: Take ownership of floating references (pads, elements) passed to the harness
Sebastian Dröge [Tue, 13 Nov 2018 12:32:56 +0000 (14:32 +0200)]
harness: Take ownership of floating references (pads, elements) passed to the harness

Without this bindings get confused about the meaning of references, and
we really own these references if they are not already owned by
something else.

5 years agogst-inspect: Tell `less` to parse color codes
Zeeshan Ali [Sat, 24 Nov 2018 11:06:38 +0000 (12:06 +0100)]
gst-inspect: Tell `less` to parse color codes

This change was originally part of 2cf16838c54 (gst-inspect: Colored
output) but got lost during the recent rebase.

5 years agogst-inspect: Colored output
Zeeshan Ali [Sat, 27 Oct 2018 17:06:20 +0000 (18:06 +0100)]
gst-inspect: Colored output

Let's make the output a bit pretty to read. The colored output can be
disabled with `--no-colors` option or by setting `GST_INSPECT_NO_COLORS'
env (to any value).

The chosen colors are based on the popular Solarized theme, which is
targeted for both dark and light backgrounds.

Note:

* We only support true colors. If the terminal doesn't signal support for
  that via 'COLORTERM' env, we disable colored output.

* We don't add colors to --print-plugin-auto-install-info output, as
  that's meant for machines, not humans. Not only machines don't care
  about beauty, the existing ones will likely not expect colors and choke
  on it and we'll get angry mob at our doors.

[1] https://ethanschoonover.com/solarized

5 years agogst-inspect: Remove redundant plugin name from output
Zeeshan Ali [Sat, 10 Nov 2018 22:35:18 +0000 (23:35 +0100)]
gst-inspect: Remove redundant plugin name from output

When printing info about a specific plugin, there is no need to prefix
some of the details with plugin's name. It's not only redundant but also
inconsistent and makes the task of adding consistent coloring to the
output (which we'll do in a follow patch), harder.

5 years agogst-inspect: Use less -F -X everywhere as the pager
Nirbheek Chauhan [Thu, 22 Nov 2018 22:01:38 +0000 (03:31 +0530)]
gst-inspect: Use less -F -X everywhere as the pager

This emulates the default behaviour of git help pages, and also fixes
a bug on macOS where `less -F` doesn't display anything at all when
the output is shorter than one terminal screen.

Also moved the DEFAULT_PAGER define to after the includes, because
it's an unprefixed define.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/330

6 years agoAdd Gitlab CI configuration
Jordan Petridis [Mon, 12 Nov 2018 12:00:22 +0000 (14:00 +0200)]
Add Gitlab CI configuration

This commit adds a .gitlab-ci.yml file, which uses a feature
to fetch the config from a centralized repository. The intent is
to have all the gstreamer modules use the same configuration.

The configuration is currently hosted at the gst-ci repository
under the gitlab/ci_template.yml path.

Part of https://gitlab.freedesktop.org/gstreamer/gstreamer-project/issues/29

6 years agotests: caps: Add more broken caps test case
Seungha Yang [Tue, 11 Dec 2018 11:12:50 +0000 (20:12 +0900)]
tests: caps: Add more broken caps test case

6 years agogst: Fix string leak when G_VALUE_COLLECT_INIT() was failed
Seungha Yang [Tue, 11 Dec 2018 11:12:41 +0000 (20:12 +0900)]
gst: Fix string leak when G_VALUE_COLLECT_INIT() was failed

Returned string should be freed

Fixes #319

6 years agodebugutils: Make sure that GST_DEBUG_GRAPH_SHOW_VERBOSE gets the correct value in...
Sebastian Dröge [Sat, 10 Nov 2018 18:41:40 +0000 (20:41 +0200)]
debugutils: Make sure that GST_DEBUG_GRAPH_SHOW_VERBOSE gets the correct value in introspection

Currently in Python it would become a signed 64 bit value but should
actually be an unsigned 32 bit value with all bits set.

This is the same problem as with GST_MESSAGE_TYPE_ANY.

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

6 years agotests: fix tests when compiling with glib_checks=disabled
Havard Graff [Tue, 6 Nov 2018 09:20:17 +0000 (10:20 +0100)]
tests: fix tests when compiling with glib_checks=disabled

We won't be able to do ASSERT_CRITICAL, but the main body of the tests
are still valid, and given we ship GStreamer with this configuration, it
is important to be able to run some tests against it.

6 years agotest/datetime: fix test for windows
Havard Graff [Wed, 31 Oct 2018 09:29:22 +0000 (10:29 +0100)]
test/datetime: fix test for windows

In the previous configuration, mktime returned -1 on Windows 10 compiled
with MSVC using meson.

Fix this by moving the hour one forward.

6 years agotests/uri: fix test after GHashTable changes in GLib 2.59
Havard Graff [Wed, 31 Oct 2018 09:27:23 +0000 (10:27 +0100)]
tests/uri: fix test after GHashTable changes in GLib 2.59

Maybe the implementation should not be dependent on a "random" hash-table
ordering, but at least this shows the problem clearly.

6 years agogst-inspect: Pipe stderr to pager as well
Zeeshan Ali [Fri, 9 Nov 2018 10:34:19 +0000 (11:34 +0100)]
gst-inspect: Pipe stderr to pager as well

If stderr is not redirected by the user, also page that.

6 years agotypefind: cleanup (un)reffing of several objects.
Niels De Graef [Mon, 5 Nov 2018 11:24:01 +0000 (12:24 +0100)]
typefind: cleanup (un)reffing of several objects.

By using these functions, we can shave off a few lines, and make the
intent of that line more clear.

6 years agoFix distcheck
Tim-Philipp Müller [Thu, 8 Nov 2018 14:09:32 +0000 (14:09 +0000)]
Fix distcheck

Follow-up to !18 and #320.

6 years agogst: add some gdb python macros
Michael Olbrich [Wed, 26 Sep 2018 11:33:31 +0000 (13:33 +0200)]
gst: add some gdb python macros

This adds gdb pretty printer for some GStreamer types.
For GstObject pointers the type and name is added, e.g.
"0x5555557e4110 [GstDecodeBin|decodebin0]".
For GstMiniObject pointers the object type is added, e.g.
"0x7fffe001fc50 [GstBuffer]".
For GstClockTime and GstClockTimeDiff the time is also printed in human
readable form, e.g. "150116219955 [+0:02:30.116219955]".

Fixes #320

6 years agoclock: Move clock GWeakRef to a private GstClockEntry struct
Sebastian Dröge [Thu, 8 Nov 2018 08:09:29 +0000 (10:09 +0200)]
clock: Move clock GWeakRef to a private GstClockEntry struct

There's no need for it to be in the public struct and we can keep the
padding for things to be added in the future.

6 years agoquery: add a new bitrate query
Matthew Waters [Thu, 17 May 2018 11:42:43 +0000 (21:42 +1000)]
query: add a new bitrate query

Allows determining from downstream what the expected bitrate of a stream
may be which is useful in queue2 for setting time based limits when
upstream does not provide timing information.

Implement bitrate query handling in queue2

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60

6 years agoqueue2: avoid ping-pong between 0% and 100% buffering messages
Matthew Waters [Thu, 17 May 2018 11:09:36 +0000 (21:09 +1000)]
queue2: avoid ping-pong between 0% and 100% buffering messages

If upstream is pushing buffers larger than our limits, only 1 buffer
is ever in the queue at a time.  Once that single buffer has left the
queue, a 0% buffering message would be posted followed immediately by a
100% buffering message when the next buffer was inserted into the queue
a very short time later.  As per the recommendations, This would result
in the application pausing for a short while causing the appearance of
a short stutter.

The first step of a solution involves not posting a buffering message if
there is still data waiting on the sink pad for insertion into the queue.
This successfully drops the 0% messages from being posted however a
message is still posted on each transition to 100% when the new buffer
arrives resulting in a string of 100% buffering messages.  We silence
these by storing the last posted buffering percentage and only posting a
new message when it is different from or last posted message.

6 years agotracers: log: Fix post query trace
Nicolas Dufresne [Tue, 6 Nov 2018 20:12:27 +0000 (20:12 +0000)]
tracers: log: Fix post query trace

The post tracer hooks have a GstQuery argument which was truncated from
the trace. As the post hook is the one that contains the useful data,
this bug was hiding the important information from that trace.

6 years agodocs: add new GstTestClock API
Havard Graff [Tue, 6 Nov 2018 13:21:35 +0000 (14:21 +0100)]
docs: add new GstTestClock API

6 years agoharness: improve _wait_for_clock_id_waits performance
Havard Graff [Tue, 6 Nov 2018 10:45:45 +0000 (11:45 +0100)]
harness: improve _wait_for_clock_id_waits performance

By moving the functionality down to the testclock, the implementation
no longer needs to poll the waits, but rather wait properly for
them to be added.

The performance-hit here would be that by polling the test-clock
regularly, you would create contention on the testclock-lock, making code
using the testclock (gst_clock_id_wait) fighting for the lock.

6 years agosystemclock: pre-calculate the ratio for multiplying the perf-count on win
Havard Graff [Thu, 20 Sep 2018 08:42:48 +0000 (01:42 -0700)]
systemclock: pre-calculate the ratio for multiplying the perf-count on win

Saves a lot of computations.

6 years agogstpad: use hook_id instead of hook in called_probes list
Havard Graff [Sun, 28 Oct 2018 11:46:09 +0000 (12:46 +0100)]
gstpad: use hook_id instead of hook in called_probes list

A pointer to a hook in this list can easily not be unique, given both
the slice-allocator reusing memory, and the OS re-using freed blocks
in malloc.

By doing many repeated add and remove of probes, this becomes very easily
reproduced.

Instead use hook_id, which *is* unique for a added GHook.

6 years agogst/buffer: add a new function for wrapping GBytes
Matthew Waters [Thu, 27 Sep 2018 09:13:35 +0000 (19:13 +1000)]
gst/buffer: add a new function for wrapping GBytes

One restriction on the GBytes is that the data cannot be NULL as this is
explicitly forbidden by GstMemory.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/318

6 years agomeson: generate pkg-config files for our plugins
Matthew Waters [Fri, 2 Nov 2018 13:49:01 +0000 (00:49 +1100)]
meson: generate pkg-config files for our plugins

6 years agogst_clear_*: Remove volatile from arguments
Jan Alexander Steffens (heftig) [Mon, 5 Nov 2018 13:07:59 +0000 (14:07 +0100)]
gst_clear_*: Remove volatile from arguments

g_clear_pointer is not thread-safe and never was. GLib similarly removed
the volatile from g_clear_object in 2aacef39b1.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/327

6 years agogst_clear_*: Cast to GstMiniObject** when needed
Jan Alexander Steffens (heftig) [Mon, 5 Nov 2018 13:03:51 +0000 (14:03 +0100)]
gst_clear_*: Cast to GstMiniObject** when needed

6 years agodocs: update gstreamer-sections.txt with new API
Niels De Graef [Mon, 5 Nov 2018 08:37:29 +0000 (09:37 +0100)]
docs: update gstreamer-sections.txt with new API