Commit graph

18713 commits

Author SHA1 Message Date
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
Niels De Graef
8d180557eb uri: Add gst_clear_uri()
Basically, you can use this instead of using `gst_uri_unref()` (which
needs to be preceded by a NULL-check).

See https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/275
and https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/3
2019-05-10 14:59:23 +02:00
Víctor Manuel Jáquez Leal
19467a7d8d gstbasesink: Fix gir annotation 2019-05-09 08:59:59 +02:00
Aaron Boxer
fa99a88558 gstbasesink: add stats getter method
fixes #355
2019-05-08 14:45:42 -04:00
Niels De Graef
cfca53ce67 gst: Add support for g_autoptr(GstPromise) 2019-05-08 12:11:50 +02:00
Niklas Hambüchen
f5ccb2215a Make get_flex_version.py script executable
Like all other scripts in the same dir.

It has a hashbang, so it should be executable.
2019-05-01 15:46:56 +02:00
Guillaume Desmottes
ab60a330db gst-stats: format latency as GST_TIME
Latency is easier to read when formatted as time rather than displayed
as a flat number in ns.
Especially when displaying GST_CLOCK_TIME_NONE which is now formated as
99:99:99.999999999 instead of 18446744073709551615.
2019-04-25 06:28:26 +00:00
Andoni Morales Alastruey
38d535ff84 gst-inspect: fix unused-const-variable error in windows
../tools/gst-inspect.c:44:20: error: 'DEFAULT_PAGER' defined but not used [-Werror=unused-const-variable=]
2019-04-24 16:34:08 +00:00
Mathieu Duponchelle
21a02e7672 gstsegment: Add GST_SEEK_FLAG_TRICKMODE_FORWARD_PREDICTED
This is generally useful, and mandated by the ONVIF streaming
spec, section 6.5.3

<https://www.onvif.org/specs/stream/ONVIF-Streaming-Spec.pdf>
2019-04-24 15:30:22 +00:00
Rasmus Thomsen
cc9c3c3175 meson: check for libcap via pkg-config
It's possible that setcap is installed, but the libcap headers/libs aren't (e.g.
during cross compilation, when you have the program installed for the host,
but need the headers of the target). Also removes the need to manually check
for the libcap headers.
2019-04-24 13:27:42 +00:00
Sebastian Dröge
f57e79a073 bitwriter: Fix inclusion of header in C++ code
../subprojects/gstreamer/libs/gst/base/gstbitwriter.h: In function 'gboolean _gst_bit_writer_check_remaining(GstBitWriter*, guint32)':
../subprojects/gstreamer/libs/gst/base/gstbitwriter.h:161:31: error: invalid conversion from 'gpointer' {aka 'void*'} to 'guint8*' {aka 'unsigned char*'} [-fpermissive]
   bitwriter->data = g_realloc (bitwriter->data, (new_bit_size >> 3));
                     ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2019-04-23 15:15:56 +00:00