mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2024-11-15 22:11:01 +00:00
2719 lines
130 KiB
XML
2719 lines
130 KiB
XML
<?xml version="1.0"?>
|
|
<!-- This file was automatically generated from C sources - DO NOT EDIT!
|
|
To affect the contents of this file, edit the original C definitions,
|
|
and/or use gtk-doc annotations. -->
|
|
<repository xmlns="http://www.gtk.org/introspection/core/1.0" xmlns:c="http://www.gtk.org/introspection/c/1.0" xmlns:glib="http://www.gtk.org/introspection/glib/1.0" version="1.2">
|
|
<include name="Gst" version="1.0"/>
|
|
<package name="gstreamer-check-1.0"/>
|
|
<c:include name="gst/check/check.h"/>
|
|
<namespace name="GstCheck" version="1.0" shared-library="libgstcheck-1.0.so.0" c:identifier-prefixes="Gst" c:symbol-prefixes="gst">
|
|
|
|
|
|
|
|
<record name="Harness" c:type="GstHarness" version="1.6">
|
|
<doc xml:space="preserve">#GstHarness is meant to make writing unit test for GStreamer much easier.
|
|
It can be thought of as a way of treating a #GstElement as a black box,
|
|
deterministically feeding it data, and controlling what data it outputs.
|
|
|
|
The basic structure of #GstHarness is two "floating" #GstPads that connect
|
|
to the harnessed #GstElement src and sink #GstPads like so:
|
|
|
|
|[
|
|
__________________________
|
|
_____ | _____ _____ | _____
|
|
| | | | | | | | | |
|
|
| src |--+-| sink| Element | src |-+--| sink|
|
|
|_____| | |_____| |_____| | |_____|
|
|
|__________________________|
|
|
|
|
]|
|
|
|
|
With this, you can now simulate any environment the #GstElement might find
|
|
itself in. By specifying the #GstCaps of the harness #GstPads, using
|
|
functions like gst_harness_set_src_caps() or gst_harness_set_sink_caps_str(),
|
|
you can test how the #GstElement interacts with different caps sets.
|
|
|
|
Your harnessed #GstElement can of course also be a bin, and using
|
|
gst_harness_new_parse() supporting standard gst-launch syntax, you can
|
|
easily test a whole pipeline instead of just one element.
|
|
|
|
You can then go on to push #GstBuffers and #GstEvents on to the srcpad,
|
|
using functions like gst_harness_push() and gst_harness_push_event(), and
|
|
then pull them out to examine them with gst_harness_pull() and
|
|
gst_harness_pull_event().
|
|
|
|
## A simple buffer-in buffer-out example
|
|
|
|
|[<!-- language="C" -->
|
|
#include <gst/gst.h>
|
|
#include <gst/check/gstharness.h>
|
|
GstHarness *h;
|
|
GstBuffer *in_buf;
|
|
GstBuffer *out_buf;
|
|
|
|
// attach the harness to the src and sink pad of GstQueue
|
|
h = gst_harness_new ("queue");
|
|
|
|
// we must specify a caps before pushing buffers
|
|
gst_harness_set_src_caps_str (h, "mycaps");
|
|
|
|
// create a buffer of size 42
|
|
in_buf = gst_harness_create_buffer (h, 42);
|
|
|
|
// push the buffer into the queue
|
|
gst_harness_push (h, in_buf);
|
|
|
|
// pull the buffer from the queue
|
|
out_buf = gst_harness_pull (h);
|
|
|
|
// validate the buffer in is the same as buffer out
|
|
fail_unless (in_buf == out_buf);
|
|
|
|
// cleanup
|
|
gst_buffer_unref (out_buf);
|
|
gst_harness_teardown (h);
|
|
|
|
]|
|
|
|
|
Another main feature of the #GstHarness is its integration with the
|
|
#GstTestClock. Operating the #GstTestClock can be very challenging, but
|
|
#GstHarness simplifies some of the most desired actions a lot, like wanting
|
|
to manually advance the clock while at the same time releasing a #GstClockID
|
|
that is waiting, with functions like gst_harness_crank_single_clock_wait().
|
|
|
|
#GstHarness also supports sub-harnesses, as a way of generating and
|
|
validating data. A sub-harness is another #GstHarness that is managed by
|
|
the "parent" harness, and can either be created by using the standard
|
|
gst_harness_new type functions directly on the (GstHarness *)->src_harness,
|
|
or using the much more convenient gst_harness_add_src() or
|
|
gst_harness_add_sink_parse(). If you have a decoder-element you want to test,
|
|
(like vp8dec) it can be very useful to add a src-harness with both a
|
|
src-element (videotestsrc) and an encoder (vp8enc) to feed the decoder data
|
|
with different configurations, by simply doing:
|
|
|
|
|[<!-- language="C" -->
|
|
GstHarness * h = gst_harness_new (h, "vp8dec");
|
|
gst_harness_add_src_parse (h, "videotestsrc is-live=1 ! vp8enc", TRUE);
|
|
]|
|
|
|
|
and then feeding it data with:
|
|
|
|
|[<!-- language="C" -->
|
|
gst_harness_push_from_src (h);
|
|
]|</doc>
|
|
<field name="element" writable="1">
|
|
<doc xml:space="preserve">the element inside the harness</doc>
|
|
<type name="Gst.Element" c:type="GstElement*"/>
|
|
</field>
|
|
<field name="srcpad" writable="1">
|
|
<doc xml:space="preserve">the internal harness source pad</doc>
|
|
<type name="Gst.Pad" c:type="GstPad*"/>
|
|
</field>
|
|
<field name="sinkpad" writable="1">
|
|
<doc xml:space="preserve">the internal harness sink pad</doc>
|
|
<type name="Gst.Pad" c:type="GstPad*"/>
|
|
</field>
|
|
<field name="src_harness" writable="1">
|
|
<doc xml:space="preserve">the source (input) harness (if any)</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</field>
|
|
<field name="sink_harness" writable="1">
|
|
<doc xml:space="preserve">the sink (output) harness (if any)</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</field>
|
|
<field name="priv" readable="0" private="1">
|
|
<type name="HarnessPrivate" c:type="GstHarnessPrivate*"/>
|
|
</field>
|
|
<method name="add_element_full" c:identifier="gst_harness_add_element_full" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Adds a #GstElement to an empty #GstHarness
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="element" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstElement to add to the harness (transfer none)</doc>
|
|
<type name="Gst.Element" c:type="GstElement*"/>
|
|
</parameter>
|
|
<parameter name="hsrc" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #GstStaticPadTemplate describing the harness srcpad.
|
|
%NULL will not create a harness srcpad.</doc>
|
|
<type name="Gst.StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
|
|
</parameter>
|
|
<parameter name="element_sinkpad_name" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gchar with the name of the element
|
|
sinkpad that is then linked to the harness srcpad. Can be a static or request
|
|
or a sometimes pad that has been added. %NULL will not get/request a sinkpad
|
|
from the element. (Like if the element is a src.)</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="hsink" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #GstStaticPadTemplate describing the harness sinkpad.
|
|
%NULL will not create a harness sinkpad.</doc>
|
|
<type name="Gst.StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
|
|
</parameter>
|
|
<parameter name="element_srcpad_name" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gchar with the name of the element
|
|
srcpad that is then linked to the harness sinkpad, similar to the
|
|
@element_sinkpad_name.</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="add_element_sink_pad" c:identifier="gst_harness_add_element_sink_pad" version="1.6">
|
|
<doc xml:space="preserve">Links the specified #GstPad the @GstHarness srcpad.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="sinkpad" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstPad to link to the harness srcpad</doc>
|
|
<type name="Gst.Pad" c:type="GstPad*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="add_element_src_pad" c:identifier="gst_harness_add_element_src_pad" version="1.6">
|
|
<doc xml:space="preserve">Links the specified #GstPad the @GstHarness sinkpad. This can be useful if
|
|
perhaps the srcpad did not exist at the time of creating the harness,
|
|
like a demuxer that provides a sometimes-pad after receiving data.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="srcpad" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstPad to link to the harness sinkpad</doc>
|
|
<type name="Gst.Pad" c:type="GstPad*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="add_parse" c:identifier="gst_harness_add_parse" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Parses the @launchline and puts that in a #GstBin,
|
|
and then attches the supplied #GstHarness to the bin.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="launchline" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar describing a gst-launch type line</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="add_probe" c:identifier="gst_harness_add_probe" version="1.6">
|
|
<doc xml:space="preserve">A convenience function to allows you to call gst_pad_add_probe on a
|
|
#GstPad of a #GstElement that are residing inside the #GstHarness,
|
|
by using normal gst_pad_add_probe syntax
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="element_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar with a #GstElementFactory name</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="pad_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar with the name of the pad to attach the probe to</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="mask" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstPadProbeType (see gst_pad_add_probe)</doc>
|
|
<type name="Gst.PadProbeType" c:type="GstPadProbeType"/>
|
|
</parameter>
|
|
<parameter name="callback" transfer-ownership="none" scope="notified" closure="4" destroy="5">
|
|
<doc xml:space="preserve">a #GstPadProbeCallback (see gst_pad_add_probe)</doc>
|
|
<type name="Gst.PadProbeCallback" c:type="GstPadProbeCallback"/>
|
|
</parameter>
|
|
<parameter name="user_data" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gpointer (see gst_pad_add_probe)</doc>
|
|
<type name="gpointer" c:type="gpointer"/>
|
|
</parameter>
|
|
<parameter name="destroy_data" transfer-ownership="none" scope="async">
|
|
<doc xml:space="preserve">a #GDestroyNotify (see gst_pad_add_probe)</doc>
|
|
<type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="add_propose_allocation_meta" c:identifier="gst_harness_add_propose_allocation_meta" version="1.16">
|
|
<doc xml:space="preserve">Add api with params as one of the supported metadata API to propose when
|
|
receiving an allocation query.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="api" transfer-ownership="none">
|
|
<doc xml:space="preserve">a metadata API</doc>
|
|
<type name="GType" c:type="GType"/>
|
|
</parameter>
|
|
<parameter name="params" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">API specific parameters</doc>
|
|
<type name="Gst.Structure" c:type="const GstStructure*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="add_sink" c:identifier="gst_harness_add_sink" version="1.6">
|
|
<doc xml:space="preserve">Similar to gst_harness_add_sink_harness, this is a convenience to
|
|
directly create a sink-harness using the @sink_element_name name specified.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="sink_element_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar with the name of a #GstElement</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="add_sink_harness" c:identifier="gst_harness_add_sink_harness" version="1.6">
|
|
<doc xml:space="preserve">Similar to gst_harness_add_src, this allows you to send the data coming out
|
|
of your harnessed #GstElement to a sink-element, allowing to test different
|
|
responses the element output might create in sink elements. An example might
|
|
be an existing sink providing some analytical data on the input it receives that
|
|
can be useful to your testing. If the goal is to test a sink-element itself,
|
|
this is better achieved using gst_harness_new directly on the sink.
|
|
|
|
If a sink-harness already exists it will be replaced.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="sink_harness" transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness to be added as a sink-harness.</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="add_sink_parse" c:identifier="gst_harness_add_sink_parse" version="1.6">
|
|
<doc xml:space="preserve">Similar to gst_harness_add_sink, this allows you to specify a launch-line
|
|
instead of just an element name. See gst_harness_add_src_parse for details.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="launchline" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar with the name of a #GstElement</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="add_src" c:identifier="gst_harness_add_src" version="1.6">
|
|
<doc xml:space="preserve">Similar to gst_harness_add_src_harness, this is a convenience to
|
|
directly create a src-harness using the @src_element_name name specified.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="src_element_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar with the name of a #GstElement</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="has_clock_wait" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gboolean specifying if the #GstElement uses
|
|
gst_clock_wait_id internally.</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="add_src_harness" c:identifier="gst_harness_add_src_harness" version="1.6">
|
|
<doc xml:space="preserve">A src-harness is a great way of providing the #GstHarness with data.
|
|
By adding a src-type #GstElement, it is then easy to use functions like
|
|
gst_harness_push_from_src or gst_harness_src_crank_and_push_many
|
|
to provide your harnessed element with input. The @has_clock_wait variable
|
|
is a great way to control you src-element with, in that you can have it
|
|
produce a buffer for you by simply cranking the clock, and not have it
|
|
spin out of control producing buffers as fast as possible.
|
|
|
|
If a src-harness already exists it will be replaced.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="src_harness" transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness to be added as a src-harness.</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</parameter>
|
|
<parameter name="has_clock_wait" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gboolean specifying if the #GstElement uses
|
|
gst_clock_wait_id internally.</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="add_src_parse" c:identifier="gst_harness_add_src_parse" version="1.6">
|
|
<doc xml:space="preserve">Similar to gst_harness_add_src, this allows you to specify a launch-line,
|
|
which can be useful for both having more then one #GstElement acting as your
|
|
src (Like a src producing raw buffers, and then an encoder, providing encoded
|
|
data), but also by allowing you to set properties like "is-live" directly on
|
|
the elements.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="launchline" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar describing a gst-launch type line</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="has_clock_wait" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gboolean specifying if the #GstElement uses
|
|
gst_clock_wait_id internally.</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="buffers_in_queue" c:identifier="gst_harness_buffers_in_queue" version="1.6">
|
|
<doc xml:space="preserve">The number of #GstBuffers currently in the #GstHarness sinkpad #GAsyncQueue
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #guint number of buffers in the queue</doc>
|
|
<type name="guint" c:type="guint"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="buffers_received" c:identifier="gst_harness_buffers_received" version="1.6">
|
|
<doc xml:space="preserve">The total number of #GstBuffers that has arrived on the #GstHarness sinkpad.
|
|
This number includes buffers that have been dropped as well as buffers
|
|
that have already been pulled out.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #guint number of buffers received</doc>
|
|
<type name="guint" c:type="guint"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="crank_multiple_clock_waits" c:identifier="gst_harness_crank_multiple_clock_waits" version="1.6">
|
|
<doc xml:space="preserve">Similar to gst_harness_crank_single_clock_wait(), this is the function to use
|
|
if your harnessed element(s) are using more then one gst_clock_id_wait.
|
|
Failing to do so can (and will) make it racy which #GstClockID you actually
|
|
are releasing, where as this function will process all the waits at the
|
|
same time, ensuring that one thread can't register another wait before
|
|
both are released.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a @gboolean %TRUE if the "crank" was successful, %FALSE if not.</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="waits" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #guint describing the number of #GstClockIDs to crank</doc>
|
|
<type name="guint" c:type="guint"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="crank_single_clock_wait" c:identifier="gst_harness_crank_single_clock_wait" version="1.6">
|
|
<doc xml:space="preserve">A "crank" consists of three steps:
|
|
1: Wait for a #GstClockID to be registered with the #GstTestClock.
|
|
2: Advance the #GstTestClock to the time the #GstClockID is waiting for.
|
|
3: Release the #GstClockID wait.
|
|
Together, this provides an easy way to not have to think about the details
|
|
around clocks and time, but still being able to write deterministic tests
|
|
that are dependent on this. A "crank" can be though of as the notion of
|
|
manually driving the clock forward to its next logical step.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a @gboolean %TRUE if the "crank" was successful, %FALSE if not.</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="create_buffer" c:identifier="gst_harness_create_buffer" version="1.6">
|
|
<doc xml:space="preserve">Allocates a buffer using a #GstBufferPool if present, or else using the
|
|
configured #GstAllocator and #GstAllocationParams
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstBuffer of size @size</doc>
|
|
<type name="Gst.Buffer" c:type="GstBuffer*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="size" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gsize specifying the size of the buffer</doc>
|
|
<type name="gsize" c:type="gsize"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="dump_to_file" c:identifier="gst_harness_dump_to_file" version="1.6">
|
|
<doc xml:space="preserve">Allows you to dump the #GstBuffers the #GstHarness sinkpad #GAsyncQueue
|
|
to a file.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="filename" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar with a the name of a file</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="events_in_queue" c:identifier="gst_harness_events_in_queue" version="1.6">
|
|
<doc xml:space="preserve">The number of #GstEvents currently in the #GstHarness sinkpad #GAsyncQueue
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #guint number of events in the queue</doc>
|
|
<type name="guint" c:type="guint"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="events_received" c:identifier="gst_harness_events_received" version="1.6">
|
|
<doc xml:space="preserve">The total number of #GstEvents that has arrived on the #GstHarness sinkpad
|
|
This number includes events handled by the harness as well as events
|
|
that have already been pulled out.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #guint number of events received</doc>
|
|
<type name="guint" c:type="guint"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="find_element" c:identifier="gst_harness_find_element" version="1.6">
|
|
<doc xml:space="preserve">Most useful in conjunction with gst_harness_new_parse, this will scan the
|
|
#GstElements inside the #GstHarness, and check if any of them matches
|
|
@element_name. Typical usecase being that you need to access one of the
|
|
harnessed elements for properties and/or signals.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full" nullable="1">
|
|
<doc xml:space="preserve">a #GstElement or %NULL if not found</doc>
|
|
<type name="Gst.Element" c:type="GstElement*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="element_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar with a #GstElementFactory name</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="get" c:identifier="gst_harness_get" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">A convenience function to allows you to call g_object_get on a #GstElement
|
|
that are residing inside the #GstHarness, by using normal g_object_get
|
|
syntax.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="element_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar with a #GstElementFactory name</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="first_property_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar with the first property name</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="..." transfer-ownership="none">
|
|
<doc xml:space="preserve">return location for the first property, followed optionally by more
|
|
name/return location pairs, followed by %NULL</doc>
|
|
<varargs/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="get_allocator" c:identifier="gst_harness_get_allocator" version="1.6">
|
|
<doc xml:space="preserve">Gets the @allocator and its @params that has been decided to use after an
|
|
allocation query.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="allocator" direction="out" caller-allocates="0" transfer-ownership="none" optional="1" allow-none="1">
|
|
<doc xml:space="preserve">the #GstAllocator used</doc>
|
|
<type name="Gst.Allocator" c:type="GstAllocator**"/>
|
|
</parameter>
|
|
<parameter name="params" direction="out" caller-allocates="1" transfer-ownership="full" optional="1" allow-none="1">
|
|
<doc xml:space="preserve">the #GstAllocationParams of
|
|
@allocator</doc>
|
|
<type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="get_last_pushed_timestamp" c:identifier="gst_harness_get_last_pushed_timestamp" version="1.6">
|
|
<doc xml:space="preserve">Get the timestamp of the last #GstBuffer pushed on the #GstHarness srcpad,
|
|
typically with gst_harness_push or gst_harness_push_from_src.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstClockTime with the timestamp or %GST_CLOCK_TIME_NONE if no
|
|
#GstBuffer has been pushed on the #GstHarness srcpad</doc>
|
|
<type name="Gst.ClockTime" c:type="GstClockTime"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="get_testclock" c:identifier="gst_harness_get_testclock" version="1.6">
|
|
<doc xml:space="preserve">Get the #GstTestClock. Useful if specific operations on the testclock is
|
|
needed.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstTestClock, or %NULL if the testclock is not
|
|
present.</doc>
|
|
<type name="TestClock" c:type="GstTestClock*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="play" c:identifier="gst_harness_play" version="1.6">
|
|
<doc xml:space="preserve">This will set the harnessed #GstElement to %GST_STATE_PLAYING.
|
|
#GstElements without a sink-#GstPad and with the %GST_ELEMENT_FLAG_SOURCE
|
|
flag set is considered a src #GstElement
|
|
Non-src #GstElements (like sinks and filters) are automatically set to
|
|
playing by the #GstHarness, but src #GstElements are not to avoid them
|
|
starting to produce buffers.
|
|
Hence, for src #GstElement you must call gst_harness_play() explicitly.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="pull" c:identifier="gst_harness_pull" version="1.6">
|
|
<doc xml:space="preserve">Pulls a #GstBuffer from the #GAsyncQueue on the #GstHarness sinkpad. The pull
|
|
will timeout in 60 seconds. This is the standard way of getting a buffer
|
|
from a harnessed #GstElement.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstBuffer or %NULL if timed out.</doc>
|
|
<type name="Gst.Buffer" c:type="GstBuffer*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="pull_event" c:identifier="gst_harness_pull_event" version="1.6">
|
|
<doc xml:space="preserve">Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness sinkpad.
|
|
Timeouts after 60 seconds similar to gst_harness_pull.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstEvent or %NULL if timed out.</doc>
|
|
<type name="Gst.Event" c:type="GstEvent*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="pull_upstream_event" c:identifier="gst_harness_pull_upstream_event" version="1.6">
|
|
<doc xml:space="preserve">Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness srcpad.
|
|
Timeouts after 60 seconds similar to gst_harness_pull.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstEvent or %NULL if timed out.</doc>
|
|
<type name="Gst.Event" c:type="GstEvent*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="push" c:identifier="gst_harness_push" version="1.6">
|
|
<doc xml:space="preserve">Pushes a #GstBuffer on the #GstHarness srcpad. The standard way of
|
|
interacting with an harnessed element.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstFlowReturn with the result from the push</doc>
|
|
<type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="buffer" transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstBuffer to push</doc>
|
|
<type name="Gst.Buffer" c:type="GstBuffer*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="push_and_pull" c:identifier="gst_harness_push_and_pull" version="1.6">
|
|
<doc xml:space="preserve">Basically a gst_harness_push and a gst_harness_pull in one line. Reflects
|
|
the fact that you often want to do exactly this in your test: Push one buffer
|
|
in, and inspect the outcome.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstBuffer or %NULL if timed out.</doc>
|
|
<type name="Gst.Buffer" c:type="GstBuffer*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="buffer" transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstBuffer to push</doc>
|
|
<type name="Gst.Buffer" c:type="GstBuffer*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="push_event" c:identifier="gst_harness_push_event" version="1.6">
|
|
<doc xml:space="preserve">Pushes an #GstEvent on the #GstHarness srcpad.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gboolean with the result from the push</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="event" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstEvent to push</doc>
|
|
<type name="Gst.Event" c:type="GstEvent*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="push_from_src" c:identifier="gst_harness_push_from_src" version="1.6">
|
|
<doc xml:space="preserve">Transfer data from the src-#GstHarness to the main-#GstHarness. It consists
|
|
of 4 steps:
|
|
1: Make sure the src is started. (see: gst_harness_play)
|
|
2: Crank the clock (see: gst_harness_crank_single_clock_wait)
|
|
3: Pull a #GstBuffer from the src-#GstHarness (see: gst_harness_pull)
|
|
4: Push the same #GstBuffer into the main-#GstHarness (see: gst_harness_push)
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstFlowReturn with the result of the push</doc>
|
|
<type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="push_to_sink" c:identifier="gst_harness_push_to_sink" version="1.6">
|
|
<doc xml:space="preserve">Transfer one #GstBuffer from the main-#GstHarness to the sink-#GstHarness.
|
|
See gst_harness_push_from_src for details.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstFlowReturn with the result of the push</doc>
|
|
<type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="push_upstream_event" c:identifier="gst_harness_push_upstream_event" version="1.6">
|
|
<doc xml:space="preserve">Pushes an #GstEvent on the #GstHarness sinkpad.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gboolean with the result from the push</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="event" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstEvent to push</doc>
|
|
<type name="Gst.Event" c:type="GstEvent*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="query_latency" c:identifier="gst_harness_query_latency" version="1.6">
|
|
<doc xml:space="preserve">Get the min latency reported by any harnessed #GstElement.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstClockTime with min latency</doc>
|
|
<type name="Gst.ClockTime" c:type="GstClockTime"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="set" c:identifier="gst_harness_set" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">A convenience function to allows you to call g_object_set on a #GstElement
|
|
that are residing inside the #GstHarness, by using normal g_object_set
|
|
syntax.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="element_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar with a #GstElementFactory name</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="first_property_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar with the first property name</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="..." transfer-ownership="none">
|
|
<doc xml:space="preserve">value for the first property, followed optionally by more
|
|
name/value pairs, followed by %NULL</doc>
|
|
<varargs/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="set_blocking_push_mode" c:identifier="gst_harness_set_blocking_push_mode" version="1.6">
|
|
<doc xml:space="preserve">Setting this will make the harness block in the chain-function, and
|
|
then release when gst_harness_pull() or gst_harness_try_pull() is called.
|
|
Can be useful when wanting to control a src-element that is not implementing
|
|
gst_clock_id_wait() so it can't be controlled by the #GstTestClock, since
|
|
it otherwise would produce buffers as fast as possible.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="set_caps" c:identifier="gst_harness_set_caps" version="1.6">
|
|
<doc xml:space="preserve">Sets the @GstHarness srcpad and sinkpad caps.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="in" transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstCaps to set on the harness srcpad</doc>
|
|
<type name="Gst.Caps" c:type="GstCaps*"/>
|
|
</parameter>
|
|
<parameter name="out" transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstCaps to set on the harness sinkpad</doc>
|
|
<type name="Gst.Caps" c:type="GstCaps*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="set_caps_str" c:identifier="gst_harness_set_caps_str" version="1.6">
|
|
<doc xml:space="preserve">Sets the @GstHarness srcpad and sinkpad caps using strings.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="in" transfer-ownership="none">
|
|
<doc xml:space="preserve">a @gchar describing a #GstCaps to set on the harness srcpad</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="out" transfer-ownership="none">
|
|
<doc xml:space="preserve">a @gchar describing a #GstCaps to set on the harness sinkpad</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="set_drop_buffers" c:identifier="gst_harness_set_drop_buffers" version="1.6">
|
|
<doc xml:space="preserve">When set to %TRUE, instead of placing the buffers arriving from the harnessed
|
|
#GstElement inside the sinkpads #GAsyncQueue, they are instead unreffed.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="drop_buffers" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gboolean specifying to drop outgoing buffers or not</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="set_forwarding" c:identifier="gst_harness_set_forwarding" version="1.6">
|
|
<doc xml:space="preserve">As a convenience, a src-harness will forward %GST_EVENT_STREAM_START,
|
|
%GST_EVENT_CAPS and %GST_EVENT_SEGMENT to the main-harness if forwarding
|
|
is enabled, and forward any sticky-events from the main-harness to
|
|
the sink-harness. It will also forward the %GST_QUERY_ALLOCATION.
|
|
|
|
If forwarding is disabled, the user will have to either manually push
|
|
these events from the src-harness using gst_harness_src_push_event(), or
|
|
create and push them manually. While this will allow full control and
|
|
inspection of these events, for the most cases having forwarding enabled
|
|
will be sufficient when writing a test where the src-harness' main function
|
|
is providing data for the main-harness.
|
|
|
|
Forwarding is enabled by default.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="forwarding" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gboolean to enable/disable forwarding</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="set_propose_allocator" c:identifier="gst_harness_set_propose_allocator" version="1.6">
|
|
<doc xml:space="preserve">Sets the @allocator and @params to propose when receiving an allocation
|
|
query.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="allocator" transfer-ownership="full" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #GstAllocator</doc>
|
|
<type name="Gst.Allocator" c:type="GstAllocator*"/>
|
|
</parameter>
|
|
<parameter name="params" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #GstAllocationParams</doc>
|
|
<type name="Gst.AllocationParams" c:type="const GstAllocationParams*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="set_sink_caps" c:identifier="gst_harness_set_sink_caps" version="1.6">
|
|
<doc xml:space="preserve">Sets the @GstHarness sinkpad caps.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="caps" transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstCaps to set on the harness sinkpad</doc>
|
|
<type name="Gst.Caps" c:type="GstCaps*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="set_sink_caps_str" c:identifier="gst_harness_set_sink_caps_str" version="1.6">
|
|
<doc xml:space="preserve">Sets the @GstHarness sinkpad caps using a string.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="str" transfer-ownership="none">
|
|
<doc xml:space="preserve">a @gchar describing a #GstCaps to set on the harness sinkpad</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="set_src_caps" c:identifier="gst_harness_set_src_caps" version="1.6">
|
|
<doc xml:space="preserve">Sets the @GstHarness srcpad caps. This must be done before any buffers
|
|
can legally be pushed from the harness to the element.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="caps" transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstCaps to set on the harness srcpad</doc>
|
|
<type name="Gst.Caps" c:type="GstCaps*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="set_src_caps_str" c:identifier="gst_harness_set_src_caps_str" version="1.6">
|
|
<doc xml:space="preserve">Sets the @GstHarness srcpad caps using a string. This must be done before
|
|
any buffers can legally be pushed from the harness to the element.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="str" transfer-ownership="none">
|
|
<doc xml:space="preserve">a @gchar describing a #GstCaps to set on the harness srcpad</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="set_time" c:identifier="gst_harness_set_time" version="1.6">
|
|
<doc xml:space="preserve">Advance the #GstTestClock to a specific time.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a @gboolean %TRUE if the time could be set. %FALSE if not.</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="time" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstClockTime to advance the clock to</doc>
|
|
<type name="Gst.ClockTime" c:type="GstClockTime"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="set_upstream_latency" c:identifier="gst_harness_set_upstream_latency" version="1.6">
|
|
<doc xml:space="preserve">Sets the min latency reported by #GstHarness when receiving a latency-query</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="latency" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstClockTime specifying the latency</doc>
|
|
<type name="Gst.ClockTime" c:type="GstClockTime"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="sink_push_many" c:identifier="gst_harness_sink_push_many" version="1.6">
|
|
<doc xml:space="preserve">Convenience that calls gst_harness_push_to_sink @pushes number of times.
|
|
Will abort the pushing if any one push fails.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstFlowReturn with the result of the push</doc>
|
|
<type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="pushes" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gint with the number of calls to gst_harness_push_to_sink</doc>
|
|
<type name="gint" c:type="gint"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="src_crank_and_push_many" c:identifier="gst_harness_src_crank_and_push_many" version="1.6">
|
|
<doc xml:space="preserve">Transfer data from the src-#GstHarness to the main-#GstHarness. Similar to
|
|
gst_harness_push_from_src, this variant allows you to specify how many cranks
|
|
and how many pushes to perform. This can be useful for both moving a lot
|
|
of data at the same time, as well as cases when one crank does not equal one
|
|
buffer to push and v.v.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstFlowReturn with the result of the push</doc>
|
|
<type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="cranks" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gint with the number of calls to gst_harness_crank_single_clock_wait</doc>
|
|
<type name="gint" c:type="gint"/>
|
|
</parameter>
|
|
<parameter name="pushes" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gint with the number of calls to gst_harness_push</doc>
|
|
<type name="gint" c:type="gint"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="src_push_event" c:identifier="gst_harness_src_push_event" version="1.6">
|
|
<doc xml:space="preserve">Similar to what gst_harness_src_push does with #GstBuffers, this transfers
|
|
a #GstEvent from the src-#GstHarness to the main-#GstHarness. Note that
|
|
some #GstEvents are being transferred automagically. Look at sink_forward_pad
|
|
for details.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gboolean with the result of the push</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="stress_custom_start" c:identifier="gst_harness_stress_custom_start" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Start a custom stress-thread that will call your @callback for every
|
|
iteration allowing you to do something nasty.
|
|
|
|
MT safe.</doc>
|
|
<return-value>
|
|
<doc xml:space="preserve">a #GstHarnessThread</doc>
|
|
<type name="HarnessThread" c:type="GstHarnessThread*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="init" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #GFunc that is called initially and only once</doc>
|
|
<type name="GLib.Func" c:type="GFunc"/>
|
|
</parameter>
|
|
<parameter name="callback" transfer-ownership="none" closure="2">
|
|
<doc xml:space="preserve">a #GFunc that is called as often as possible</doc>
|
|
<type name="GLib.Func" c:type="GFunc"/>
|
|
</parameter>
|
|
<parameter name="data" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gpointer with custom data to pass to the @callback function</doc>
|
|
<type name="gpointer" c:type="gpointer"/>
|
|
</parameter>
|
|
<parameter name="sleep" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gulong specifying how long to sleep in (microseconds) for
|
|
each call to the @callback</doc>
|
|
<type name="gulong" c:type="gulong"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="stress_property_start_full" c:identifier="gst_harness_stress_property_start_full" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Call g_object_set with @name and @value in intervals of @sleep microseconds
|
|
|
|
MT safe.</doc>
|
|
<return-value>
|
|
<doc xml:space="preserve">a #GstHarnessThread</doc>
|
|
<type name="HarnessThread" c:type="GstHarnessThread*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar specifying a property name</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="value" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GValue to set the property to</doc>
|
|
<type name="GObject.Value" c:type="const GValue*"/>
|
|
</parameter>
|
|
<parameter name="sleep" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gulong specifying how long to sleep in (microseconds) for
|
|
each g_object_set with @name and @value</doc>
|
|
<type name="gulong" c:type="gulong"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="stress_push_buffer_start_full" c:identifier="gst_harness_stress_push_buffer_start_full" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Push a #GstBuffer in intervals of @sleep microseconds.
|
|
|
|
MT safe.</doc>
|
|
<return-value>
|
|
<doc xml:space="preserve">a #GstHarnessThread</doc>
|
|
<type name="HarnessThread" c:type="GstHarnessThread*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="caps" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstCaps for the #GstBuffer</doc>
|
|
<type name="Gst.Caps" c:type="GstCaps*"/>
|
|
</parameter>
|
|
<parameter name="segment" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstSegment</doc>
|
|
<type name="Gst.Segment" c:type="const GstSegment*"/>
|
|
</parameter>
|
|
<parameter name="buf" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstBuffer to push</doc>
|
|
<type name="Gst.Buffer" c:type="GstBuffer*"/>
|
|
</parameter>
|
|
<parameter name="sleep" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gulong specifying how long to sleep in (microseconds) for
|
|
each call to gst_pad_push</doc>
|
|
<type name="gulong" c:type="gulong"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="stress_push_buffer_with_cb_start_full" c:identifier="gst_harness_stress_push_buffer_with_cb_start_full" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Push a #GstBuffer returned by @func in intervals of @sleep microseconds.
|
|
|
|
MT safe.</doc>
|
|
<return-value>
|
|
<doc xml:space="preserve">a #GstHarnessThread</doc>
|
|
<type name="HarnessThread" c:type="GstHarnessThread*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="caps" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstCaps for the #GstBuffer</doc>
|
|
<type name="Gst.Caps" c:type="GstCaps*"/>
|
|
</parameter>
|
|
<parameter name="segment" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstSegment</doc>
|
|
<type name="Gst.Segment" c:type="const GstSegment*"/>
|
|
</parameter>
|
|
<parameter name="func" transfer-ownership="none" scope="notified" closure="3" destroy="4">
|
|
<doc xml:space="preserve">a #GstHarnessPrepareBufferFunc function called before every iteration
|
|
to prepare / create a #GstBuffer for pushing</doc>
|
|
<type name="HarnessPrepareBufferFunc" c:type="GstHarnessPrepareBufferFunc"/>
|
|
</parameter>
|
|
<parameter name="data" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gpointer with data to the #GstHarnessPrepareBufferFunc function</doc>
|
|
<type name="gpointer" c:type="gpointer"/>
|
|
</parameter>
|
|
<parameter name="notify" transfer-ownership="none" scope="async">
|
|
<doc xml:space="preserve">a #GDestroyNotify that is called when thread is stopped</doc>
|
|
<type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
|
|
</parameter>
|
|
<parameter name="sleep" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gulong specifying how long to sleep in (microseconds) for
|
|
each call to gst_pad_push</doc>
|
|
<type name="gulong" c:type="gulong"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="stress_push_event_start_full" c:identifier="gst_harness_stress_push_event_start_full" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Push the @event onto the harnessed #GstElement sinkpad in intervals of
|
|
@sleep microseconds
|
|
|
|
MT safe.</doc>
|
|
<return-value>
|
|
<doc xml:space="preserve">a #GstHarnessThread</doc>
|
|
<type name="HarnessThread" c:type="GstHarnessThread*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="event" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstEvent to push</doc>
|
|
<type name="Gst.Event" c:type="GstEvent*"/>
|
|
</parameter>
|
|
<parameter name="sleep" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gulong specifying how long to sleep in (microseconds) for
|
|
each gst_event_push with @event</doc>
|
|
<type name="gulong" c:type="gulong"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="stress_push_event_with_cb_start_full" c:identifier="gst_harness_stress_push_event_with_cb_start_full" version="1.8" introspectable="0">
|
|
<doc xml:space="preserve">Push a #GstEvent returned by @func onto the harnessed #GstElement sinkpad
|
|
in intervals of @sleep microseconds.
|
|
|
|
MT safe.</doc>
|
|
<return-value>
|
|
<doc xml:space="preserve">a #GstHarnessThread</doc>
|
|
<type name="HarnessThread" c:type="GstHarnessThread*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="func" transfer-ownership="none" scope="notified" closure="1" destroy="2">
|
|
<doc xml:space="preserve">a #GstHarnessPrepareEventFunc function called before every iteration
|
|
to prepare / create a #GstEvent for pushing</doc>
|
|
<type name="HarnessPrepareEventFunc" c:type="GstHarnessPrepareEventFunc"/>
|
|
</parameter>
|
|
<parameter name="data" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gpointer with data to the #GstHarnessPrepareEventFunc function</doc>
|
|
<type name="gpointer" c:type="gpointer"/>
|
|
</parameter>
|
|
<parameter name="notify" transfer-ownership="none" scope="async">
|
|
<doc xml:space="preserve">a #GDestroyNotify that is called when thread is stopped</doc>
|
|
<type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
|
|
</parameter>
|
|
<parameter name="sleep" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gulong specifying how long to sleep in (microseconds) for
|
|
each call to gst_pad_push</doc>
|
|
<type name="gulong" c:type="gulong"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="stress_push_upstream_event_start_full" c:identifier="gst_harness_stress_push_upstream_event_start_full" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Push the @event onto the harnessed #GstElement srcpad in intervals of
|
|
@sleep microseconds.
|
|
|
|
MT safe.</doc>
|
|
<return-value>
|
|
<doc xml:space="preserve">a #GstHarnessThread</doc>
|
|
<type name="HarnessThread" c:type="GstHarnessThread*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="event" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstEvent to push</doc>
|
|
<type name="Gst.Event" c:type="GstEvent*"/>
|
|
</parameter>
|
|
<parameter name="sleep" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gulong specifying how long to sleep in (microseconds) for
|
|
each gst_event_push with @event</doc>
|
|
<type name="gulong" c:type="gulong"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="stress_push_upstream_event_with_cb_start_full" c:identifier="gst_harness_stress_push_upstream_event_with_cb_start_full" version="1.8" introspectable="0">
|
|
<doc xml:space="preserve">Push a #GstEvent returned by @func onto the harnessed #GstElement srcpad
|
|
in intervals of @sleep microseconds.
|
|
|
|
MT safe.</doc>
|
|
<return-value>
|
|
<doc xml:space="preserve">a #GstHarnessThread</doc>
|
|
<type name="HarnessThread" c:type="GstHarnessThread*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="func" transfer-ownership="none" scope="notified" closure="1" destroy="2">
|
|
<doc xml:space="preserve">a #GstHarnessPrepareEventFunc function called before every iteration
|
|
to prepare / create a #GstEvent for pushing</doc>
|
|
<type name="HarnessPrepareEventFunc" c:type="GstHarnessPrepareEventFunc"/>
|
|
</parameter>
|
|
<parameter name="data" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gpointer with data to the #GstHarnessPrepareEventFunc function</doc>
|
|
<type name="gpointer" c:type="gpointer"/>
|
|
</parameter>
|
|
<parameter name="notify" transfer-ownership="none" scope="async">
|
|
<doc xml:space="preserve">a #GDestroyNotify that is called when thread is stopped</doc>
|
|
<type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
|
|
</parameter>
|
|
<parameter name="sleep" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gulong specifying how long to sleep in (microseconds) for
|
|
each call to gst_pad_push</doc>
|
|
<type name="gulong" c:type="gulong"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="stress_requestpad_start_full" c:identifier="gst_harness_stress_requestpad_start_full" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Call gst_element_request_pad in intervals of @sleep microseconds
|
|
|
|
MT safe.</doc>
|
|
<return-value>
|
|
<doc xml:space="preserve">a #GstHarnessThread</doc>
|
|
<type name="HarnessThread" c:type="GstHarnessThread*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="templ" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstPadTemplate</doc>
|
|
<type name="Gst.PadTemplate" c:type="GstPadTemplate*"/>
|
|
</parameter>
|
|
<parameter name="name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="caps" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstCaps</doc>
|
|
<type name="Gst.Caps" c:type="GstCaps*"/>
|
|
</parameter>
|
|
<parameter name="release" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gboolean</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</parameter>
|
|
<parameter name="sleep" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gulong specifying how long to sleep in (microseconds) for
|
|
each gst_element_request_pad</doc>
|
|
<type name="gulong" c:type="gulong"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="stress_statechange_start_full" c:identifier="gst_harness_stress_statechange_start_full" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Change the state of your harnessed #GstElement from NULL to PLAYING and
|
|
back again, only pausing for @sleep microseconds every time.
|
|
|
|
MT safe.</doc>
|
|
<return-value>
|
|
<doc xml:space="preserve">a #GstHarnessThread</doc>
|
|
<type name="HarnessThread" c:type="GstHarnessThread*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="sleep" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gulong specifying how long to sleep in (microseconds) for
|
|
each state-change</doc>
|
|
<type name="gulong" c:type="gulong"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="take_all_data" c:identifier="gst_harness_take_all_data" shadowed-by="take_all_data_as_bytes" version="1.14" introspectable="0">
|
|
<doc xml:space="preserve">Pulls all pending data from the harness and returns it as a single
|
|
data slice.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a pointer to the data, newly allocated. Free
|
|
with g_free() when no longer needed. Will return %NULL if there is no
|
|
data.</doc>
|
|
<type name="guint8" c:type="guint8*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="size" direction="out" caller-allocates="0" transfer-ownership="full">
|
|
<doc xml:space="preserve">the size of the data in bytes</doc>
|
|
<type name="gsize" c:type="gsize*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="take_all_data_as_buffer" c:identifier="gst_harness_take_all_data_as_buffer" version="1.14">
|
|
<doc xml:space="preserve">Pulls all pending data from the harness and returns it as a single buffer.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">the data as a buffer. Unref with gst_buffer_unref()
|
|
when no longer needed.</doc>
|
|
<type name="Gst.Buffer" c:type="GstBuffer*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="take_all_data_as_bytes" c:identifier="gst_harness_take_all_data_as_bytes" shadows="take_all_data" version="1.14">
|
|
<doc xml:space="preserve">Pulls all pending data from the harness and returns it as a single #GBytes.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a pointer to the data, newly allocated. Free
|
|
with g_free() when no longer needed.</doc>
|
|
<type name="GLib.Bytes" c:type="GBytes*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="teardown" c:identifier="gst_harness_teardown" version="1.6">
|
|
<doc xml:space="preserve">Tears down a @GstHarness, freeing all resources allocated using it.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="try_pull" c:identifier="gst_harness_try_pull" version="1.6">
|
|
<doc xml:space="preserve">Pulls a #GstBuffer from the #GAsyncQueue on the #GstHarness sinkpad. Unlike
|
|
gst_harness_pull this will not wait for any buffers if not any are present,
|
|
and return %NULL straight away.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstBuffer or %NULL if no buffers are present in the #GAsyncQueue</doc>
|
|
<type name="Gst.Buffer" c:type="GstBuffer*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="try_pull_event" c:identifier="gst_harness_try_pull_event" version="1.6">
|
|
<doc xml:space="preserve">Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness sinkpad.
|
|
See gst_harness_try_pull for details.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstEvent or %NULL if no buffers are present in the #GAsyncQueue</doc>
|
|
<type name="Gst.Event" c:type="GstEvent*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="try_pull_upstream_event" c:identifier="gst_harness_try_pull_upstream_event" version="1.6">
|
|
<doc xml:space="preserve">Pulls an #GstEvent from the #GAsyncQueue on the #GstHarness srcpad.
|
|
See gst_harness_try_pull for details.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstEvent or %NULL if no buffers are present in the #GAsyncQueue</doc>
|
|
<type name="Gst.Event" c:type="GstEvent*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="upstream_events_in_queue" c:identifier="gst_harness_upstream_events_in_queue" version="1.6">
|
|
<doc xml:space="preserve">The number of #GstEvents currently in the #GstHarness srcpad #GAsyncQueue
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #guint number of events in the queue</doc>
|
|
<type name="guint" c:type="guint"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="upstream_events_received" c:identifier="gst_harness_upstream_events_received" version="1.6">
|
|
<doc xml:space="preserve">The total number of #GstEvents that has arrived on the #GstHarness srcpad
|
|
This number includes events handled by the harness as well as events
|
|
that have already been pulled out.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #guint number of events received</doc>
|
|
<type name="guint" c:type="guint"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="use_systemclock" c:identifier="gst_harness_use_systemclock" version="1.6">
|
|
<doc xml:space="preserve">Sets the system #GstClock on the @GstHarness #GstElement
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="use_testclock" c:identifier="gst_harness_use_testclock" version="1.6">
|
|
<doc xml:space="preserve">Sets the #GstTestClock on the #GstHarness #GstElement
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="wait_for_clock_id_waits" c:identifier="gst_harness_wait_for_clock_id_waits" version="1.6">
|
|
<doc xml:space="preserve">Waits for @timeout seconds until @waits number of #GstClockID waits is
|
|
registered with the #GstTestClock. Useful for writing deterministic tests,
|
|
where you want to make sure that an expected number of waits have been
|
|
reached.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a @gboolean %TRUE if the waits have been registered, %FALSE if not.
|
|
(Could be that it timed out waiting or that more waits than waits was found)</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</instance-parameter>
|
|
<parameter name="waits" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #guint describing the numbers of #GstClockID registered with
|
|
the #GstTestClock</doc>
|
|
<type name="guint" c:type="guint"/>
|
|
</parameter>
|
|
<parameter name="timeout" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #guint describing how many seconds to wait for @waits to be true</doc>
|
|
<type name="guint" c:type="guint"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<function name="new" c:identifier="gst_harness_new" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Creates a new harness. Works like gst_harness_new_with_padnames(), except it
|
|
assumes the #GstElement sinkpad is named "sink" and srcpad is named "src"
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness, or %NULL if the harness could
|
|
not be created</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="element_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar describing the #GstElement name</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="new_empty" c:identifier="gst_harness_new_empty" version="1.8" introspectable="0">
|
|
<doc xml:space="preserve">Creates a new empty harness. Use gst_harness_add_element_full() to add
|
|
an #GstElement to it.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness, or %NULL if the harness could
|
|
not be created</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</return-value>
|
|
</function>
|
|
<function name="new_full" c:identifier="gst_harness_new_full" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Creates a new harness.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness, or %NULL if the harness could
|
|
not be created</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="element" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstElement to attach the harness to (transfer none)</doc>
|
|
<type name="Gst.Element" c:type="GstElement*"/>
|
|
</parameter>
|
|
<parameter name="hsrc" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #GstStaticPadTemplate describing the harness srcpad.
|
|
%NULL will not create a harness srcpad.</doc>
|
|
<type name="Gst.StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
|
|
</parameter>
|
|
<parameter name="element_sinkpad_name" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gchar with the name of the element
|
|
sinkpad that is then linked to the harness srcpad. Can be a static or request
|
|
or a sometimes pad that has been added. %NULL will not get/request a sinkpad
|
|
from the element. (Like if the element is a src.)</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="hsink" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #GstStaticPadTemplate describing the harness sinkpad.
|
|
%NULL will not create a harness sinkpad.</doc>
|
|
<type name="Gst.StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
|
|
</parameter>
|
|
<parameter name="element_srcpad_name" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gchar with the name of the element
|
|
srcpad that is then linked to the harness sinkpad, similar to the
|
|
@element_sinkpad_name.</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="new_parse" c:identifier="gst_harness_new_parse" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Creates a new harness, parsing the @launchline and putting that in a #GstBin,
|
|
and then attches the harness to the bin.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness, or %NULL if the harness could
|
|
not be created</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="launchline" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar describing a gst-launch type line</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="new_with_element" c:identifier="gst_harness_new_with_element" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Creates a new harness. Works in the same way as gst_harness_new_full(), only
|
|
that generic padtemplates are used for the harness src and sinkpads, which
|
|
will be sufficient in most usecases.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness, or %NULL if the harness could
|
|
not be created</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="element" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstElement to attach the harness to (transfer none)</doc>
|
|
<type name="Gst.Element" c:type="GstElement*"/>
|
|
</parameter>
|
|
<parameter name="element_sinkpad_name" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gchar with the name of the element
|
|
sinkpad that is then linked to the harness srcpad. %NULL does not attach a
|
|
sinkpad</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="element_srcpad_name" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gchar with the name of the element
|
|
srcpad that is then linked to the harness sinkpad. %NULL does not attach a
|
|
srcpad</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="new_with_padnames" c:identifier="gst_harness_new_with_padnames" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Creates a new harness. Works like gst_harness_new_with_element(),
|
|
except you specify the factoryname of the #GstElement
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness, or %NULL if the harness could
|
|
not be created</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="element_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar describing the #GstElement name</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="element_sinkpad_name" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gchar with the name of the element
|
|
sinkpad that is then linked to the harness srcpad. %NULL does not attach a
|
|
sinkpad</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="element_srcpad_name" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gchar with the name of the element
|
|
srcpad that is then linked to the harness sinkpad. %NULL does not attach a
|
|
srcpad</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="new_with_templates" c:identifier="gst_harness_new_with_templates" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Creates a new harness, like gst_harness_new_full(), except it
|
|
assumes the #GstElement sinkpad is named "sink" and srcpad is named "src"
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness, or %NULL if the harness could
|
|
not be created</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="element_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar describing the #GstElement name</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="hsrc" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #GstStaticPadTemplate describing the harness srcpad.
|
|
%NULL will not create a harness srcpad.</doc>
|
|
<type name="Gst.StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
|
|
</parameter>
|
|
<parameter name="hsink" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #GstStaticPadTemplate describing the harness sinkpad.
|
|
%NULL will not create a harness sinkpad.</doc>
|
|
<type name="Gst.StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="stress_thread_stop" c:identifier="gst_harness_stress_thread_stop" version="1.6">
|
|
<doc xml:space="preserve">Stop the running #GstHarnessThread
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="guint" c:type="guint"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="t" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarnessThread</doc>
|
|
<type name="HarnessThread" c:type="GstHarnessThread*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
</record>
|
|
<callback name="HarnessPrepareBufferFunc" c:type="GstHarnessPrepareBufferFunc" version="1.6">
|
|
<return-value transfer-ownership="full">
|
|
<type name="Gst.Buffer" c:type="GstBuffer*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</parameter>
|
|
<parameter name="data" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">user data</doc>
|
|
<type name="gpointer" c:type="gpointer"/>
|
|
</parameter>
|
|
</parameters>
|
|
</callback>
|
|
<callback name="HarnessPrepareEventFunc" c:type="GstHarnessPrepareEventFunc" version="1.8">
|
|
<return-value transfer-ownership="full">
|
|
<type name="Gst.Event" c:type="GstEvent*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="h" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarness</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</parameter>
|
|
<parameter name="data" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">user data</doc>
|
|
<type name="gpointer" c:type="gpointer"/>
|
|
</parameter>
|
|
</parameters>
|
|
</callback>
|
|
<record name="HarnessPrivate" c:type="GstHarnessPrivate" disguised="1">
|
|
</record>
|
|
<record name="HarnessThread" c:type="GstHarnessThread" disguised="1" version="1.6">
|
|
<doc xml:space="preserve">Opaque handle representing a GstHarness stress testing thread.</doc>
|
|
</record>
|
|
<record name="StreamConsistency" c:type="GstStreamConsistency" disguised="1">
|
|
<doc xml:space="preserve">Opaque consistency checker handle.</doc>
|
|
</record>
|
|
<class name="TestClock" c:symbol-prefix="test_clock" c:type="GstTestClock" version="1.2" parent="Gst.Clock" glib:type-name="GstTestClock" glib:get-type="gst_test_clock_get_type" glib:type-struct="TestClockClass">
|
|
<doc xml:space="preserve">GstTestClock is an implementation of #GstClock which has different
|
|
behaviour compared to #GstSystemClock. Time for #GstSystemClock advances
|
|
according to the system time, while time for #GstTestClock changes only
|
|
when gst_test_clock_set_time() or gst_test_clock_advance_time() are
|
|
called. #GstTestClock provides unit tests with the possibility to
|
|
precisely advance the time in a deterministic manner, independent of the
|
|
system time or any other external factors.
|
|
|
|
## Advancing the time of a #GstTestClock
|
|
|
|
|[<!-- language="C" -->
|
|
#include <gst/gst.h>
|
|
#include <gst/check/gsttestclock.h>
|
|
|
|
GstClock *clock;
|
|
GstTestClock *test_clock;
|
|
|
|
clock = gst_test_clock_new ();
|
|
test_clock = GST_TEST_CLOCK (clock);
|
|
GST_INFO ("Time: %" GST_TIME_FORMAT, GST_TIME_ARGS (gst_clock_get_time (clock)));
|
|
gst_test_clock_advance_time ( test_clock, 1 * GST_SECOND);
|
|
GST_INFO ("Time: %" GST_TIME_FORMAT, GST_TIME_ARGS (gst_clock_get_time (clock)));
|
|
g_usleep (10 * G_USEC_PER_SEC);
|
|
GST_INFO ("Time: %" GST_TIME_FORMAT, GST_TIME_ARGS (gst_clock_get_time (clock)));
|
|
gst_test_clock_set_time (test_clock, 42 * GST_SECOND);
|
|
GST_INFO ("Time: %" GST_TIME_FORMAT, GST_TIME_ARGS (gst_clock_get_time (clock)));
|
|
...
|
|
]|
|
|
|
|
#GstClock allows for setting up single shot or periodic clock notifications
|
|
as well as waiting for these notifications synchronously (using
|
|
gst_clock_id_wait()) or asynchronously (using gst_clock_id_wait_async() or
|
|
gst_clock_id_wait_async()). This is used by many GStreamer elements,
|
|
among them #GstBaseSrc and #GstBaseSink.
|
|
|
|
#GstTestClock keeps track of these clock notifications. By calling
|
|
gst_test_clock_wait_for_next_pending_id() or
|
|
gst_test_clock_wait_for_multiple_pending_ids() a unit tests may wait for the
|
|
next one or several clock notifications to be requested. Additionally unit
|
|
tests may release blocked waits in a controlled fashion by calling
|
|
gst_test_clock_process_next_clock_id(). This way a unit test can control the
|
|
inaccuracy (jitter) of clock notifications, since the test can decide to
|
|
release blocked waits when the clock time has advanced exactly to, or past,
|
|
the requested clock notification time.
|
|
|
|
There are also interfaces for determining if a notification belongs to a
|
|
#GstTestClock or not, as well as getting the number of requested clock
|
|
notifications so far.
|
|
|
|
N.B.: When a unit test waits for a certain amount of clock notifications to
|
|
be requested in gst_test_clock_wait_for_next_pending_id() or
|
|
gst_test_clock_wait_for_multiple_pending_ids() then these functions may block
|
|
for a long time. If they block forever then the expected clock notifications
|
|
were never requested from #GstTestClock, and so the assumptions in the code
|
|
of the unit test are wrong. The unit test case runner in gstcheck is
|
|
expected to catch these cases either by the default test case timeout or the
|
|
one set for the unit test by calling tcase_set_timeout\(\).
|
|
|
|
The sample code below assumes that the element under test will delay a
|
|
buffer pushed on the source pad by some latency until it arrives on the sink
|
|
pad. Moreover it is assumed that the element will at some point call
|
|
gst_clock_id_wait() to synchronously wait for a specific time. The first
|
|
buffer sent will arrive exactly on time only delayed by the latency. The
|
|
second buffer will arrive a little late (7ms) due to simulated jitter in the
|
|
clock notification.
|
|
|
|
## Demonstration of how to work with clock notifications and #GstTestClock
|
|
|
|
|[<!-- language="C" -->
|
|
#include <gst/gst.h>
|
|
#include <gst/check/gstcheck.h>
|
|
#include <gst/check/gsttestclock.h>
|
|
|
|
GstClockTime latency;
|
|
GstElement *element;
|
|
GstPad *srcpad;
|
|
GstClock *clock;
|
|
GstTestClock *test_clock;
|
|
GstBuffer buf;
|
|
GstClockID pending_id;
|
|
GstClockID processed_id;
|
|
|
|
latency = 42 * GST_MSECOND;
|
|
element = create_element (latency, ...);
|
|
srcpad = get_source_pad (element);
|
|
|
|
clock = gst_test_clock_new ();
|
|
test_clock = GST_TEST_CLOCK (clock);
|
|
gst_element_set_clock (element, clock);
|
|
|
|
GST_INFO ("Set time, create and push the first buffer\n");
|
|
gst_test_clock_set_time (test_clock, 0);
|
|
buf = create_test_buffer (gst_clock_get_time (clock), ...);
|
|
gst_assert_cmpint (gst_pad_push (srcpad, buf), ==, GST_FLOW_OK);
|
|
|
|
GST_INFO ("Block until element is waiting for a clock notification\n");
|
|
gst_test_clock_wait_for_next_pending_id (test_clock, &pending_id);
|
|
GST_INFO ("Advance to the requested time of the clock notification\n");
|
|
gst_test_clock_advance_time (test_clock, latency);
|
|
GST_INFO ("Release the next blocking wait and make sure it is the one from element\n");
|
|
processed_id = gst_test_clock_process_next_clock_id (test_clock);
|
|
g_assert (processed_id == pending_id);
|
|
g_assert_cmpint (GST_CLOCK_ENTRY_STATUS (processed_id), ==, GST_CLOCK_OK);
|
|
gst_clock_id_unref (pending_id);
|
|
gst_clock_id_unref (processed_id);
|
|
|
|
GST_INFO ("Validate that element produced an output buffer and check its timestamp\n");
|
|
g_assert_cmpint (get_number_of_output_buffer (...), ==, 1);
|
|
buf = get_buffer_pushed_by_element (element, ...);
|
|
g_assert_cmpint (GST_BUFFER_TIMESTAMP (buf), ==, latency);
|
|
gst_buffer_unref (buf);
|
|
GST_INFO ("Check that element does not wait for any clock notification\n");
|
|
g_assert (!gst_test_clock_peek_next_pending_id (test_clock, NULL));
|
|
|
|
GST_INFO ("Set time, create and push the second buffer\n");
|
|
gst_test_clock_advance_time (test_clock, 10 * GST_SECOND);
|
|
buf = create_test_buffer (gst_clock_get_time (clock), ...);
|
|
gst_assert_cmpint (gst_pad_push (srcpad, buf), ==, GST_FLOW_OK);
|
|
|
|
GST_INFO ("Block until element is waiting for a new clock notification\n");
|
|
(gst_test_clock_wait_for_next_pending_id (test_clock, &pending_id);
|
|
GST_INFO ("Advance past 7ms beyond the requested time of the clock notification\n");
|
|
gst_test_clock_advance_time (test_clock, latency + 7 * GST_MSECOND);
|
|
GST_INFO ("Release the next blocking wait and make sure it is the one from element\n");
|
|
processed_id = gst_test_clock_process_next_clock_id (test_clock);
|
|
g_assert (processed_id == pending_id);
|
|
g_assert_cmpint (GST_CLOCK_ENTRY_STATUS (processed_id), ==, GST_CLOCK_OK);
|
|
gst_clock_id_unref (pending_id);
|
|
gst_clock_id_unref (processed_id);
|
|
|
|
GST_INFO ("Validate that element produced an output buffer and check its timestamp\n");
|
|
g_assert_cmpint (get_number_of_output_buffer (...), ==, 1);
|
|
buf = get_buffer_pushed_by_element (element, ...);
|
|
g_assert_cmpint (GST_BUFFER_TIMESTAMP (buf), ==,
|
|
10 * GST_SECOND + latency + 7 * GST_MSECOND);
|
|
gst_buffer_unref (buf);
|
|
GST_INFO ("Check that element does not wait for any clock notification\n");
|
|
g_assert (!gst_test_clock_peek_next_pending_id (test_clock, NULL));
|
|
...
|
|
]|
|
|
|
|
Since #GstTestClock is only supposed to be used in unit tests it calls
|
|
g_assert(), g_assert_cmpint() or g_assert_cmpuint() to validate all function
|
|
arguments. This will highlight any issues with the unit test code itself.</doc>
|
|
<constructor name="new" c:identifier="gst_test_clock_new" version="1.2">
|
|
<doc xml:space="preserve">Creates a new test clock with its time set to zero.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstTestClock cast to #GstClock.</doc>
|
|
<type name="Gst.Clock" c:type="GstClock*"/>
|
|
</return-value>
|
|
</constructor>
|
|
<constructor name="new_with_start_time" c:identifier="gst_test_clock_new_with_start_time" version="1.2">
|
|
<doc xml:space="preserve">Creates a new test clock with its time set to the specified time.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstTestClock cast to #GstClock.</doc>
|
|
<type name="Gst.Clock" c:type="GstClock*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="start_time" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstClockTime set to the desired start time of the clock.</doc>
|
|
<type name="Gst.ClockTime" c:type="GstClockTime"/>
|
|
</parameter>
|
|
</parameters>
|
|
</constructor>
|
|
<function name="id_list_get_latest_time" c:identifier="gst_test_clock_id_list_get_latest_time" version="1.4">
|
|
<doc xml:space="preserve">Finds the latest time inside the list.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="Gst.ClockTime" c:type="GstClockTime"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="pending_list" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">List
|
|
of of pending #GstClockIDs</doc>
|
|
<type name="GLib.List" c:type="const GList*">
|
|
<type name="Gst.ClockID"/>
|
|
</type>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<method name="advance_time" c:identifier="gst_test_clock_advance_time" version="1.2">
|
|
<doc xml:space="preserve">Advances the time of the @test_clock by the amount given by @delta. The
|
|
time of @test_clock is monotonically increasing, therefore providing a
|
|
@delta which is negative or zero is a programming error.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="test_clock" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstTestClock for which to increase the time</doc>
|
|
<type name="TestClock" c:type="GstTestClock*"/>
|
|
</instance-parameter>
|
|
<parameter name="delta" transfer-ownership="none">
|
|
<doc xml:space="preserve">a positive #GstClockTimeDiff to be added to the time of the clock</doc>
|
|
<type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="crank" c:identifier="gst_test_clock_crank" version="1.8">
|
|
<doc xml:space="preserve">A "crank" consists of three steps:
|
|
1: Wait for a #GstClockID to be registered with the #GstTestClock.
|
|
2: Advance the #GstTestClock to the time the #GstClockID is waiting for.
|
|
3: Release the #GstClockID wait.
|
|
A "crank" can be though of as the notion of
|
|
manually driving the clock forward to its next logical step.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">%TRUE if the crank was successful, %FALSE otherwise.
|
|
|
|
MT safe.</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="test_clock" transfer-ownership="none">
|
|
<doc xml:space="preserve">#GstTestClock to crank</doc>
|
|
<type name="TestClock" c:type="GstTestClock*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="get_next_entry_time" c:identifier="gst_test_clock_get_next_entry_time" version="1.2">
|
|
<doc xml:space="preserve">Retrieve the requested time for the next pending clock notification.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstClockTime set to the time of the next pending clock
|
|
notification. If no clock notifications have been requested
|
|
%GST_CLOCK_TIME_NONE will be returned.</doc>
|
|
<type name="Gst.ClockTime" c:type="GstClockTime"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="test_clock" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstTestClock to fetch the next clock notification time for</doc>
|
|
<type name="TestClock" c:type="GstTestClock*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="has_id" c:identifier="gst_test_clock_has_id" version="1.2">
|
|
<doc xml:space="preserve">Checks whether @test_clock was requested to provide the clock notification
|
|
given by @id.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">%TRUE if the clock has been asked to provide the given clock
|
|
notification, %FALSE otherwise.</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="test_clock" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstTestClock to ask if it provided the notification</doc>
|
|
<type name="TestClock" c:type="GstTestClock*"/>
|
|
</instance-parameter>
|
|
<parameter name="id" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstClockID clock notification</doc>
|
|
<type name="Gst.ClockID" c:type="GstClockID"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="peek_id_count" c:identifier="gst_test_clock_peek_id_count" version="1.2">
|
|
<doc xml:space="preserve">Determine the number of pending clock notifications that have been
|
|
requested from the @test_clock.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">the number of pending clock notifications.</doc>
|
|
<type name="guint" c:type="guint"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="test_clock" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstTestClock for which to count notifications</doc>
|
|
<type name="TestClock" c:type="GstTestClock*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="peek_next_pending_id" c:identifier="gst_test_clock_peek_next_pending_id" version="1.2">
|
|
<doc xml:space="preserve">Determines if the @pending_id is the next clock notification scheduled to
|
|
be triggered given the current time of the @test_clock.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">%TRUE if @pending_id is the next clock notification to be
|
|
triggered, %FALSE otherwise.</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="test_clock" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstTestClock to check the clock notifications for</doc>
|
|
<type name="TestClock" c:type="GstTestClock*"/>
|
|
</instance-parameter>
|
|
<parameter name="pending_id" direction="out" caller-allocates="0" transfer-ownership="full" optional="1" allow-none="1">
|
|
<doc xml:space="preserve">a #GstClockID clock
|
|
notification to look for</doc>
|
|
<type name="Gst.ClockID" c:type="GstClockID*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="process_id_list" c:identifier="gst_test_clock_process_id_list" version="1.4">
|
|
<doc xml:space="preserve">Processes and releases the pending IDs in the list.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="guint" c:type="guint"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="test_clock" transfer-ownership="none">
|
|
<doc xml:space="preserve">#GstTestClock for which to process the pending IDs</doc>
|
|
<type name="TestClock" c:type="GstTestClock*"/>
|
|
</instance-parameter>
|
|
<parameter name="pending_list" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">List
|
|
of pending #GstClockIDs</doc>
|
|
<type name="GLib.List" c:type="const GList*">
|
|
<type name="Gst.ClockID"/>
|
|
</type>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="process_next_clock_id" c:identifier="gst_test_clock_process_next_clock_id" version="1.2">
|
|
<doc xml:space="preserve">MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstClockID containing the next pending clock
|
|
notification.</doc>
|
|
<type name="Gst.ClockID" c:type="GstClockID"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="test_clock" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstTestClock for which to retrieve the next pending clock
|
|
notification</doc>
|
|
<type name="TestClock" c:type="GstTestClock*"/>
|
|
</instance-parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="set_time" c:identifier="gst_test_clock_set_time" version="1.2">
|
|
<doc xml:space="preserve">Sets the time of @test_clock to the time given by @new_time. The time of
|
|
@test_clock is monotonically increasing, therefore providing a @new_time
|
|
which is earlier or equal to the time of the clock as given by
|
|
gst_clock_get_time() is a programming error.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="test_clock" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstTestClock of which to set the time</doc>
|
|
<type name="TestClock" c:type="GstTestClock*"/>
|
|
</instance-parameter>
|
|
<parameter name="new_time" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstClockTime later than that returned by gst_clock_get_time()</doc>
|
|
<type name="Gst.ClockTime" c:type="GstClockTime"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="timed_wait_for_multiple_pending_ids" c:identifier="gst_test_clock_timed_wait_for_multiple_pending_ids" version="1.16">
|
|
<doc xml:space="preserve">Blocks until at least @count clock notifications have been requested from
|
|
@test_clock, or the timeout expires.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">a @gboolean %TRUE if the waits have been registered, %FALSE if not.
|
|
(Could be that it timed out waiting or that more waits than waits was found)</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="test_clock" transfer-ownership="none">
|
|
<doc xml:space="preserve">#GstTestClock for which to await having enough pending clock</doc>
|
|
<type name="TestClock" c:type="GstTestClock*"/>
|
|
</instance-parameter>
|
|
<parameter name="count" transfer-ownership="none">
|
|
<doc xml:space="preserve">the number of pending clock notifications to wait for</doc>
|
|
<type name="guint" c:type="guint"/>
|
|
</parameter>
|
|
<parameter name="timeout_ms" transfer-ownership="none">
|
|
<doc xml:space="preserve">the timeout in milliseconds</doc>
|
|
<type name="guint" c:type="guint"/>
|
|
</parameter>
|
|
<parameter name="pending_list" direction="out" caller-allocates="0" transfer-ownership="full" optional="1" allow-none="1">
|
|
<doc xml:space="preserve">Address
|
|
of a #GList pointer variable to store the list of pending #GstClockIDs
|
|
that expired, or %NULL</doc>
|
|
<type name="GLib.List" c:type="GList**">
|
|
<type name="Gst.ClockID"/>
|
|
</type>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="wait_for_multiple_pending_ids" c:identifier="gst_test_clock_wait_for_multiple_pending_ids" version="1.4">
|
|
<doc xml:space="preserve">Blocks until at least @count clock notifications have been requested from
|
|
@test_clock. There is no timeout for this wait, see the main description of
|
|
#GstTestClock.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="test_clock" transfer-ownership="none">
|
|
<doc xml:space="preserve">#GstTestClock for which to await having enough pending clock</doc>
|
|
<type name="TestClock" c:type="GstTestClock*"/>
|
|
</instance-parameter>
|
|
<parameter name="count" transfer-ownership="none">
|
|
<doc xml:space="preserve">the number of pending clock notifications to wait for</doc>
|
|
<type name="guint" c:type="guint"/>
|
|
</parameter>
|
|
<parameter name="pending_list" direction="out" caller-allocates="0" transfer-ownership="full" optional="1" allow-none="1">
|
|
<doc xml:space="preserve">Address
|
|
of a #GList pointer variable to store the list of pending #GstClockIDs
|
|
that expired, or %NULL</doc>
|
|
<type name="GLib.List" c:type="GList**">
|
|
<type name="Gst.ClockID"/>
|
|
</type>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="wait_for_next_pending_id" c:identifier="gst_test_clock_wait_for_next_pending_id" version="1.2">
|
|
<doc xml:space="preserve">Waits until a clock notification is requested from @test_clock. There is no
|
|
timeout for this wait, see the main description of #GstTestClock. A reference
|
|
to the pending clock notification is stored in @pending_id.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="test_clock" transfer-ownership="none">
|
|
<doc xml:space="preserve">#GstTestClock for which to get the pending clock notification</doc>
|
|
<type name="TestClock" c:type="GstTestClock*"/>
|
|
</instance-parameter>
|
|
<parameter name="pending_id" direction="out" caller-allocates="0" transfer-ownership="full" optional="1" allow-none="1">
|
|
<doc xml:space="preserve">#GstClockID
|
|
with information about the pending clock notification</doc>
|
|
<type name="Gst.ClockID" c:type="GstClockID*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<method name="wait_for_pending_id_count" c:identifier="gst_test_clock_wait_for_pending_id_count" version="1.2" deprecated="1">
|
|
<doc xml:space="preserve">Blocks until at least @count clock notifications have been requested from
|
|
@test_clock. There is no timeout for this wait, see the main description of
|
|
#GstTestClock.</doc>
|
|
<doc-deprecated xml:space="preserve">use gst_test_clock_wait_for_multiple_pending_ids() instead.</doc-deprecated>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<instance-parameter name="test_clock" transfer-ownership="none">
|
|
<doc xml:space="preserve">#GstTestClock for which to await having enough pending clock</doc>
|
|
<type name="TestClock" c:type="GstTestClock*"/>
|
|
</instance-parameter>
|
|
<parameter name="count" transfer-ownership="none">
|
|
<doc xml:space="preserve">the number of pending clock notifications to wait for</doc>
|
|
<type name="guint" c:type="guint"/>
|
|
</parameter>
|
|
</parameters>
|
|
</method>
|
|
<property name="clock-type" writable="1" transfer-ownership="none">
|
|
<type name="Gst.ClockType"/>
|
|
</property>
|
|
<property name="start-time" writable="1" construct-only="1" transfer-ownership="none">
|
|
<doc xml:space="preserve">When a #GstTestClock is constructed it will have a certain start time set.
|
|
If the clock was created using gst_test_clock_new_with_start_time() then
|
|
this property contains the value of the @start_time argument. If
|
|
gst_test_clock_new() was called the clock started at time zero, and thus
|
|
this property contains the value 0.</doc>
|
|
<type name="guint64" c:type="guint64"/>
|
|
</property>
|
|
<field name="parent">
|
|
<type name="Gst.Clock" c:type="GstClock"/>
|
|
</field>
|
|
<field name="priv" readable="0" private="1">
|
|
<type name="TestClockPrivate" c:type="GstTestClockPrivate*"/>
|
|
</field>
|
|
</class>
|
|
<record name="TestClockClass" c:type="GstTestClockClass" glib:is-gtype-struct-for="TestClock" version="1.2">
|
|
<doc xml:space="preserve">The class of a #GstTestClock, which has no virtual methods to override.</doc>
|
|
<field name="parent_class">
|
|
<doc xml:space="preserve">the parent class structure</doc>
|
|
<type name="Gst.ClockClass" c:type="GstClockClass"/>
|
|
</field>
|
|
</record>
|
|
<record name="TestClockPrivate" c:type="GstTestClockPrivate" disguised="1">
|
|
</record>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<function name="consistency_checker_add_pad" c:identifier="gst_consistency_checker_add_pad">
|
|
<doc xml:space="preserve">Sets up a data probe on the given pad which will raise assertions if the
|
|
data flow is inconsistent.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<doc xml:space="preserve">%TRUE if the pad was added</doc>
|
|
<type name="gboolean" c:type="gboolean"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="consist" transfer-ownership="none">
|
|
<doc xml:space="preserve">The #GstStreamConsistency handle</doc>
|
|
<type name="StreamConsistency" c:type="GstStreamConsistency*"/>
|
|
</parameter>
|
|
<parameter name="pad" transfer-ownership="none">
|
|
<doc xml:space="preserve">The #GstPad on which the dataflow will be checked.</doc>
|
|
<type name="Gst.Pad" c:type="GstPad*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="consistency_checker_free" c:identifier="gst_consistency_checker_free">
|
|
<doc xml:space="preserve">Frees the allocated data and probes associated with @consist.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="consist" transfer-ownership="none">
|
|
<doc xml:space="preserve">The #GstStreamConsistency to free.</doc>
|
|
<type name="StreamConsistency" c:type="GstStreamConsistency*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="consistency_checker_new" c:identifier="gst_consistency_checker_new" introspectable="0">
|
|
<doc xml:space="preserve">Sets up a data probe on the given pad which will raise assertions if the
|
|
data flow is inconsistent.</doc>
|
|
<return-value>
|
|
<doc xml:space="preserve">A #GstStreamConsistency structure used to track data flow.</doc>
|
|
<type name="StreamConsistency" c:type="GstStreamConsistency*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="pad" transfer-ownership="none">
|
|
<doc xml:space="preserve">The #GstPad on which the dataflow will be checked.</doc>
|
|
<type name="Gst.Pad" c:type="GstPad*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="consistency_checker_reset" c:identifier="gst_consistency_checker_reset">
|
|
<doc xml:space="preserve">Reset the stream checker's internal variables.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="none" c:type="void"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="consist" transfer-ownership="none">
|
|
<doc xml:space="preserve">The #GstStreamConsistency to reset.</doc>
|
|
<type name="StreamConsistency" c:type="GstStreamConsistency*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="harness_new" c:identifier="gst_harness_new" moved-to="Harness.new" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Creates a new harness. Works like gst_harness_new_with_padnames(), except it
|
|
assumes the #GstElement sinkpad is named "sink" and srcpad is named "src"
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness, or %NULL if the harness could
|
|
not be created</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="element_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar describing the #GstElement name</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="harness_new_empty" c:identifier="gst_harness_new_empty" moved-to="Harness.new_empty" version="1.8" introspectable="0">
|
|
<doc xml:space="preserve">Creates a new empty harness. Use gst_harness_add_element_full() to add
|
|
an #GstElement to it.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness, or %NULL if the harness could
|
|
not be created</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</return-value>
|
|
</function>
|
|
<function name="harness_new_full" c:identifier="gst_harness_new_full" moved-to="Harness.new_full" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Creates a new harness.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness, or %NULL if the harness could
|
|
not be created</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="element" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstElement to attach the harness to (transfer none)</doc>
|
|
<type name="Gst.Element" c:type="GstElement*"/>
|
|
</parameter>
|
|
<parameter name="hsrc" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #GstStaticPadTemplate describing the harness srcpad.
|
|
%NULL will not create a harness srcpad.</doc>
|
|
<type name="Gst.StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
|
|
</parameter>
|
|
<parameter name="element_sinkpad_name" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gchar with the name of the element
|
|
sinkpad that is then linked to the harness srcpad. Can be a static or request
|
|
or a sometimes pad that has been added. %NULL will not get/request a sinkpad
|
|
from the element. (Like if the element is a src.)</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="hsink" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #GstStaticPadTemplate describing the harness sinkpad.
|
|
%NULL will not create a harness sinkpad.</doc>
|
|
<type name="Gst.StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
|
|
</parameter>
|
|
<parameter name="element_srcpad_name" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gchar with the name of the element
|
|
srcpad that is then linked to the harness sinkpad, similar to the
|
|
@element_sinkpad_name.</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="harness_new_parse" c:identifier="gst_harness_new_parse" moved-to="Harness.new_parse" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Creates a new harness, parsing the @launchline and putting that in a #GstBin,
|
|
and then attches the harness to the bin.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness, or %NULL if the harness could
|
|
not be created</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="launchline" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar describing a gst-launch type line</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="harness_new_with_element" c:identifier="gst_harness_new_with_element" moved-to="Harness.new_with_element" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Creates a new harness. Works in the same way as gst_harness_new_full(), only
|
|
that generic padtemplates are used for the harness src and sinkpads, which
|
|
will be sufficient in most usecases.
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness, or %NULL if the harness could
|
|
not be created</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="element" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstElement to attach the harness to (transfer none)</doc>
|
|
<type name="Gst.Element" c:type="GstElement*"/>
|
|
</parameter>
|
|
<parameter name="element_sinkpad_name" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gchar with the name of the element
|
|
sinkpad that is then linked to the harness srcpad. %NULL does not attach a
|
|
sinkpad</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="element_srcpad_name" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gchar with the name of the element
|
|
srcpad that is then linked to the harness sinkpad. %NULL does not attach a
|
|
srcpad</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="harness_new_with_padnames" c:identifier="gst_harness_new_with_padnames" moved-to="Harness.new_with_padnames" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Creates a new harness. Works like gst_harness_new_with_element(),
|
|
except you specify the factoryname of the #GstElement
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness, or %NULL if the harness could
|
|
not be created</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="element_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar describing the #GstElement name</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="element_sinkpad_name" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gchar with the name of the element
|
|
sinkpad that is then linked to the harness srcpad. %NULL does not attach a
|
|
sinkpad</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="element_srcpad_name" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #gchar with the name of the element
|
|
srcpad that is then linked to the harness sinkpad. %NULL does not attach a
|
|
srcpad</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="harness_new_with_templates" c:identifier="gst_harness_new_with_templates" moved-to="Harness.new_with_templates" version="1.6" introspectable="0">
|
|
<doc xml:space="preserve">Creates a new harness, like gst_harness_new_full(), except it
|
|
assumes the #GstElement sinkpad is named "sink" and srcpad is named "src"
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="full">
|
|
<doc xml:space="preserve">a #GstHarness, or %NULL if the harness could
|
|
not be created</doc>
|
|
<type name="Harness" c:type="GstHarness*"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="element_name" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #gchar describing the #GstElement name</doc>
|
|
<type name="utf8" c:type="const gchar*"/>
|
|
</parameter>
|
|
<parameter name="hsrc" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #GstStaticPadTemplate describing the harness srcpad.
|
|
%NULL will not create a harness srcpad.</doc>
|
|
<type name="Gst.StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
|
|
</parameter>
|
|
<parameter name="hsink" transfer-ownership="none" nullable="1" allow-none="1">
|
|
<doc xml:space="preserve">a #GstStaticPadTemplate describing the harness sinkpad.
|
|
%NULL will not create a harness sinkpad.</doc>
|
|
<type name="Gst.StaticPadTemplate" c:type="GstStaticPadTemplate*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
<function name="harness_stress_thread_stop" c:identifier="gst_harness_stress_thread_stop" moved-to="Harness.stress_thread_stop" version="1.6">
|
|
<doc xml:space="preserve">Stop the running #GstHarnessThread
|
|
|
|
MT safe.</doc>
|
|
<return-value transfer-ownership="none">
|
|
<type name="guint" c:type="guint"/>
|
|
</return-value>
|
|
<parameters>
|
|
<parameter name="t" transfer-ownership="none">
|
|
<doc xml:space="preserve">a #GstHarnessThread</doc>
|
|
<type name="HarnessThread" c:type="GstHarnessThread*"/>
|
|
</parameter>
|
|
</parameters>
|
|
</function>
|
|
</namespace>
|
|
</repository>
|