Commit graph

18673 commits

Author SHA1 Message Date
Niels De Graef 09141c6e1f Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally
Since we started depending on GLib 2.44, we can be sure this macro is
defined (it will be a no-op on compilers that don't support it). For
plugins we should just start using `G_DECLARE_FINAL_TYPE` which means
we no longer need the macro there, but for most types in core we don't
want to break ABI, which means it's better to just keep it like it is
(and use the `#ifdef` instead).
2019-06-04 08:50:59 +02:00
Niels De Graef 56d19cbf75 meson: Bump minimal GLib version to 2.44
This means we can use some newer features and get rid of some
boilerplate code using the `G_DECLARE_*` macros.

As discussed on IRC, 2.44 is old enough by now to start depending on it.
2019-06-03 08:51:40 +02:00
Mathieu Duponchelle b22a0c3873 docs: unprefix subproject paths 2019-06-01 02:37:26 +02:00
Thibault Saunier f040102d45 docs: Add tracers support 2019-05-31 18:53:43 -04:00
Mathieu Duponchelle bcb4be455e gstelement: fix links to the gsterror page 2019-05-31 01:56:08 +02:00
Mathieu Duponchelle cce397cc50 gsttaglist: do not link to symbols from gst-plugins-base in doc 2019-05-31 01:45:41 +02:00
Mathieu Duponchelle ca17a6c791 doc: remove xml from comments 2019-05-29 21:33:42 +02:00
Thibault Saunier 3635a6a98b docs: Document pad types
And update the plugins doc cache
2019-05-25 10:56:50 -04:00
Thibault Saunier 6dac555e32 aggregator: Minor documentation fix 2019-05-25 10:56:50 -04:00
Tim-Philipp Müller 1a3bf3234f aggregator: fix flow-return boolean return type mismatch
Not that it matters, since we don't check the return value
anyway. Unclear why the aggregator pad flush function should
have a return value at all really, and perhaps it should be
called reset anyway. Spotted by dv on irc.
2019-05-25 14:33:27 +02:00
Michael Olbrich 96b88ffe35 gdb: add gst_element_pad() function
Another helper to navigate a pipeline. It makes it possible to easily
access the pads of an element:

(gdb) print $gst_element_pad(basesink, "sink")
$1 = 0x7fffe80770f0 [GstPad|sink]
2019-05-24 10:37:50 +00:00
Michael Olbrich 4877afc145 gdb: print more data for segment events
This add the different timestamps for segment events:

(gdb) gst-print pad
SrcPad(src, push) {
  events:
[...]
    segment: time
      rate: 1.1
      start:    0:03:08.449753330
      time:     0:03:08.449753330
      position: 0:03:08.449753330
      duration: 0:12:14.166687500
[...]
}
2019-05-24 10:37:50 +00:00
Michael Olbrich 2bd2ed289a gdb: add 'gst-pipeline-tree' command
It shows a simple tree of all elements in pipeline.
As with gst-dot, the toplevel bin is found from any element of the
pipeline:

(gdb) gst-pipeline-tree bsink
playbin
  inputselector1
  inputselector0
  uridecodebin0
    queue2-0
    decodebin0
      avdec_aac0
      aacparse0
      vaapidecodebin0
        vaapipostproc0
        capsfilter1
        vaapi-queue
        vaapidecode0
      capsfilter0
      h264parse0
      multiqueue0
      matroskademux0
      typefind
    typefindelement0
    source
  playsink
    abin
      aconv
        resample
        conv
        identity
      aqueue
      pulsesink0
    vbin
      vconv
        scale
        conv
        identity
      vqueue
      vaapisink0
    vdbin
      deinterlace
      vdconv
    audiotee
    streamsynchronizer0
2019-05-24 10:37:50 +00:00
Michael Olbrich ebce5a7ee9 gdb: add gst_pipeline() and gst_bin_get() functions
This simplifies navigating in a GStreamer pipeline, e.g.

(gdb) print $gst_bin_get($gst_pipeline(pad), "matroskademux0")
$1 = 0x7fffe81b4050 [GstMatroskaDemux|matroskademux0]
2019-05-24 10:37:50 +00:00
Michael Olbrich 8ccb9f2595 gdb: handle ghost and proxy pads while looking for the top-level element
The parent object for pads is not always a GstElement. Handle GstProxyPad
parents as well.
2019-05-24 10:37:50 +00:00
Michael Olbrich 320a4cba4b gdb: refactor finding top-level pipeline
No functional changes. Just refactoring to make it possible to reuse this
later.
2019-05-24 10:37:50 +00:00
Michael Olbrich 36c2fc3bc3 gdb: gst-print add more pad and element information
For elements, this adds all child elements, the state and base/start time:

(gdb) gst-print pipeline
0x5555556ebd20 "pipeline0"
GstPipeline(pipeline0) {
    children:
      fakesink0
      queue0
      videotestsrc0
    state: PLAYING
    base_time: +2:54:36.892581150
    start_time: 0:00:00.000000000
}

For pads, this adds the peer pads and the current task state and the
offset (if not zero):

(gdb) gst-print pad
SrcGhostPad(src, push) {
  events:
    [...]
  peer: vaapisink0:sink
  inner peer: scale:src
}

(gdb) gst-print pad
SrcPad(src, push) {
  events:
    [...]
  peer: queue0:sink
  task: STARTED
  offset: 30000000 [+0:00:00.030000000]
}
2019-05-24 10:37:50 +00:00
Michael Olbrich 0d7db77bae gdb: refactor time formating
Make it reuseable independent of the GstClockTimePrinter.
2019-05-24 10:37:50 +00:00
Sebastian Dröge 744687e537 dataurisrc: Add test that checks various URIs against their expected output 2019-05-23 18:53:35 +02:00
Benjamin Otte 73f6f466c2 dataurisrc: Fix crash when semicolon is aprt of data
This URI is valid:
  data:,;base64
(It encodes the literal string ";base64")

But would lead to a crash because the code assumed the semicolon would
be placed before the colon.
2019-05-21 17:22:04 +02:00
Benjamin Otte 3c2312ce6b dataurisrc: Allow case-insensitive scheme
Quoting RFC 2396:

  For resiliency, programs interpreting URI should treat upper case
  letters as equivalent to lower case in scheme names (e.g., allow
  "HTTP" as well as "http").
2019-05-21 17:15:52 +02:00
Matthew Waters 29557fe623 docs: add coretracers to the list of plugins 2019-05-18 02:41:43 +00:00
Thibault Saunier 0faab7d9b8 docs: Stop building the doc cache by default
Fixes https://gitlab.freedesktop.org/gstreamer/gst-docs/issues/36
2019-05-16 18:22:20 +00:00
Thibault Saunier 042f6d5def docs: Update diplayed plugins filename something stable 2019-05-16 18:22:20 +00:00
Thibault Saunier 6009b82d65 hotdoc: Let the the registry inspect in forks
So that the whole process doesn't segfault if something bad happens while inspecting
2019-05-16 18:22:20 +00:00
Thibault Saunier 816710d17c docs: Use the MESON_BUILD_ROOT env variable in the plugins cache generator 2019-05-16 18:22:20 +00:00
Thibault Saunier 56d01406bc docs: Do not pass the json through stdout
Unicode encoding breaks on windows when doing so
2019-05-16 18:22:20 +00:00
Thibault Saunier e31f06f7f9 registry: Avoid discovering plugins in hotdoc private directories 2019-05-16 18:22:20 +00:00
Thibault Saunier ea12e67cc2 docs: Do not inspect internal files 2019-05-16 18:22:20 +00:00
Seungha Yang bb34bd4575 docs: Always follow Unix style newline
The 'open()' follows default behavior of OS (CRLF in case of Windows).
So it results in a bunch of git diff on Windows.
2019-05-16 18:22:20 +00:00
Sebastian Dröge 904d552176 basesink: Remove leading space from Since maker of gst_base_sink_get_stats()
gobject-introspection does not like this.
2019-05-16 15:24:02 +00:00
Sebastian Dröge f23f864774 basesink: Fix syntax for gtk-doc comment of the new stats property 2019-05-16 15:24:02 +00:00
Edward Hervey 7aee718394 gstpad: Probes that return HANDLED can reset the data info field
Before GST_PAD_PROBE_HANDLED was introduced, we had to handle the case
where some probes would reset the probe info data field to NULL. This would
be considered an invalid use-case.

But with GST_PAD_PROBE_HANDLED it is totally fine to reset that, since
the probe has "handled" it.
2019-05-16 15:13:48 +02:00
Sebastian Dröge eec9bd8db3 filesink: Implement workaround for some (network) filesystems that spuriously return EACCES on write
This seems to happen when another client is accessing the file at the
same time, and retrying after a short amount of time solves it.

Sometimes partial data is written at that point already but we have no
idea how much it is, or if what was written is correct (it sometimes
isn't) so we always first seek back to the current position and repeat
the whole failed write.

It happens at least on Linux and macOS on SMB/CIFS and NFS file systems.

Between write attempts that failed with EACCES we wait 10ms, and after
enough consecutive tries that failed with EACCES we simply time out.

In theory a valid EACCES for files to which we simply have no access
should've happened already during the call to open(), except for NFS
(see open(2)).

This can be enabled with the new max-transient-error-timeout property, and
a new o-sync boolean property was added to open the file in O_SYNC mode
as without that it's not guaranteed that we get EACCES for the actual
writev() call that failed but might only get it at a later time.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/305
2019-05-16 14:15:02 +03:00
Aaron Boxer 162c59b4a4 gstreamer.pc.in: exec_prefix must be defined before libexecdir 2019-05-14 15:44:07 -04:00
Thibault Saunier 5a7db17caf docs: Update plugins cache 2019-05-13 22:47:38 -04:00
Thibault Saunier 039bbb99a6 docs: Fix cache invalidation status
The dictionnary is updated in place so we were checking the same twice
2019-05-13 22:47:05 -04:00
Thibault Saunier 21428feac7 docs: Use the new GstPluginsPath.json to have the right plugin path
When inspecting plugins to generate the json cache file. Otherwise
when we are not in the uninstalled env and using `gst-build` plugins
with dependency might fail/throw warning, etc..
2019-05-13 17:00:00 -04:00
Thibault Saunier 71f39a7836 pkgconfig: Add information about libexecdir
https://bugzilla.gnome.org/show_bug.cgi?id=797349
2019-05-13 16:34:09 -04:00
Thibault Saunier 36e516d6a0 doc: Update the README 2019-05-13 16:34:09 -04:00
Thibault Saunier 949fba4b1f doc: Fix hotdoc warnings
* Making sure that `static inline` function are in the GIR (by first
  defining them, and make sure to mark as skiped)
* Do not try to link to unexisting symbols
* Also generate GIR information about gst_tracers
2019-05-13 16:34:09 -04:00
Thibault Saunier a0c65067e0 Port to hotdoc 2019-05-13 16:34:09 -04:00
Thibault Saunier 781ad55f68 doc: Remove gtk-doc support 2019-05-13 11:33:49 -04:00
Thibault Saunier 3d5dbfb457 gst: Add a GParamSpecFlag to force gst-inspect to use pspec default value
Instead of the object value, this should be used every time a random
value will be returned by g_object_get This is also useful to make the
values returned by inspecting element stable accross runs.
2019-05-13 11:33:49 -04:00
Thibault Saunier 4e29b4aa34 doc: Add some missing docstrings 2019-05-13 11:33:49 -04:00
Thibault Saunier 5b2da0835e doc: Fix and add some missing docstrings 2019-05-13 11:33:49 -04:00
Thibault Saunier 4d259e8af3 structure: Mark _from_string as constructor 2019-05-13 11:33:49 -04:00
Nirbheek Chauhan ebd918c0f6 meson: Pass -DGST_STATIC_COMPILATION for static builds
This is only needed on Windows when building with MSVC, but it is safe
to pass it everywhere.

Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/398
2019-05-13 14:42:28 +05:30
Nirbheek Chauhan b19de413b9 meson: Link to objects instea of static helper library
Otherwise the objects from that static helper library are not included
in the gstreamer-1.0 static library. This was supposed to be fixed in
Meson, but the pull request hasn't been merged yet:
https://github.com/mesonbuild/meson/pull/3939

Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/398
2019-05-13 13:24:42 +05:30
Michael Olbrich 0364f74643 meson: set correct install path for gdb helper
The original version of the patch used glib-2.0 but that was later changed
to gstreamer-1.0 for autotools. The meson file was forgotten.

Fix the path to match the one used in libgstreamer-gdb.py.in.
2019-05-11 18:40:15 +02:00