Blame libs/gst/check/gstharness.h

Packit a6ee4b
/* GstHarness - A test-harness for GStreamer testing
Packit a6ee4b
 *
Packit a6ee4b
 * Copyright (C) 2012-2015 Pexip <pexip.com>
Packit a6ee4b
 *
Packit a6ee4b
 * This library is free software; you can redistribute it and/or
Packit a6ee4b
 * modify it under the terms of the GNU Library General Public
Packit a6ee4b
 * License as published by the Free Software Foundation; either
Packit a6ee4b
 * version 2 of the License, or (at your option) any later version.
Packit a6ee4b
 *
Packit a6ee4b
 * This library is distributed in the hope that it will be useful,
Packit a6ee4b
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit a6ee4b
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit a6ee4b
 * Library General Public License for more details.
Packit a6ee4b
 *
Packit a6ee4b
 * You should have received a copy of the GNU Library General Public
Packit a6ee4b
 * License along with this library; if not, write to the
Packit a6ee4b
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Packit a6ee4b
 * Boston, MA 02111-1307, USA.
Packit a6ee4b
 */
Packit a6ee4b
Packit a6ee4b
#ifndef __GST_HARNESS_H__
Packit a6ee4b
#define __GST_HARNESS_H__
Packit a6ee4b
Packit a6ee4b
#include <gst/gst.h>
Packit a6ee4b
#include <gst/check/gsttestclock.h>
Packit a6ee4b
#include <gst/check/check-prelude.h>
Packit a6ee4b
Packit a6ee4b
G_BEGIN_DECLS
Packit a6ee4b
Packit a6ee4b
/**
Packit a6ee4b
 * GstHarnessThread:
Packit a6ee4b
 *
Packit a6ee4b
 * Opaque handle representing a GstHarness stress testing thread.
Packit a6ee4b
 *
Packit a6ee4b
 * Since: 1.6
Packit a6ee4b
 */
Packit a6ee4b
typedef struct _GstHarnessThread GstHarnessThread;
Packit a6ee4b
Packit a6ee4b
typedef struct _GstHarness GstHarness;
Packit a6ee4b
typedef struct _GstHarnessPrivate GstHarnessPrivate;
Packit a6ee4b
Packit a6ee4b
/**
Packit a6ee4b
 * GstHarness:
Packit a6ee4b
 * @element: the element inside the harness
Packit a6ee4b
 * @srcpad: the internal harness source pad
Packit a6ee4b
 * @sinkpad: the internal harness sink pad
Packit a6ee4b
 * @src_harness: the source (input) harness (if any)
Packit a6ee4b
 * @sink_harness: the sink (output) harness (if any)
Packit a6ee4b
 *
Packit a6ee4b
 * Since: 1.6
Packit a6ee4b
 */
Packit a6ee4b
struct _GstHarness {
Packit a6ee4b
  GstElement * element;
Packit a6ee4b
Packit a6ee4b
  GstPad * srcpad;
Packit a6ee4b
  GstPad * sinkpad;
Packit a6ee4b
Packit a6ee4b
  GstHarness * src_harness;
Packit a6ee4b
  GstHarness * sink_harness;
Packit a6ee4b
Packit a6ee4b
  /*< private >*/
Packit a6ee4b
  GstHarnessPrivate * priv;
Packit a6ee4b
};
Packit a6ee4b
Packit a6ee4b
/* Harness creation */
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarness * gst_harness_new_empty (void);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_add_element_full (GstHarness           * h,
Packit a6ee4b
                                           GstElement           * element,
Packit a6ee4b
                                           GstStaticPadTemplate * hsrc,
Packit a6ee4b
                                           const gchar          * element_sinkpad_name,
Packit a6ee4b
                                           GstStaticPadTemplate * hsink,
Packit a6ee4b
                                           const gchar          * element_srcpad_name);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarness * gst_harness_new_full (GstElement * element,
Packit a6ee4b
                                   GstStaticPadTemplate * hsrc,
Packit a6ee4b
                                   const gchar          * element_sinkpad_name,
Packit a6ee4b
                                   GstStaticPadTemplate * hsink,
Packit a6ee4b
                                   const gchar          * element_srcpad_name);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarness * gst_harness_new_with_element  (GstElement  * element,
Packit a6ee4b
                                            const gchar * element_sinkpad_name,
Packit a6ee4b
                                            const gchar * element_srcpad_name);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarness * gst_harness_new_with_padnames (const gchar * element_name,
Packit a6ee4b
                                            const gchar * element_sinkpad_name,
Packit a6ee4b
                                            const gchar * element_srcpad_name);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarness * gst_harness_new_with_templates (const gchar * element_name,
Packit a6ee4b
                                             GstStaticPadTemplate * hsrc,
Packit a6ee4b
                                             GstStaticPadTemplate * hsink);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarness * gst_harness_new (const gchar * element_name);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarness * gst_harness_new_parse (const gchar * launchline);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_add_parse (GstHarness * h, const gchar * launchline);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_teardown (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_add_element_src_pad  (GstHarness * h, GstPad * srcpad);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_add_element_sink_pad (GstHarness * h, GstPad * sinkpad);
Packit a6ee4b
Packit a6ee4b
/* Caps Functions */
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_set_src_caps  (GstHarness * h, GstCaps * caps);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_set_sink_caps (GstHarness * h, GstCaps * caps);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_set_caps (GstHarness * h, GstCaps * in, GstCaps * out);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_set_src_caps_str  (GstHarness * h, const gchar * str);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_set_sink_caps_str (GstHarness * h, const gchar * str);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_set_caps_str (GstHarness  * h,
Packit a6ee4b
                                       const gchar * in,
Packit a6ee4b
                                       const gchar * out);
Packit a6ee4b
Packit a6ee4b
/* Clock Functions */
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void           gst_harness_use_systemclock (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void           gst_harness_use_testclock (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstTestClock * gst_harness_get_testclock (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
gboolean       gst_harness_set_time (GstHarness * h, GstClockTime time);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
gboolean       gst_harness_wait_for_clock_id_waits (GstHarness * h,
Packit a6ee4b
                                                    guint waits,
Packit a6ee4b
                                                    guint timeout);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
gboolean       gst_harness_crank_single_clock_wait (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
gboolean       gst_harness_crank_multiple_clock_waits (GstHarness * h,
Packit a6ee4b
                                                       guint waits);
Packit a6ee4b
Packit a6ee4b
/* misc */
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void           gst_harness_play (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void           gst_harness_set_blocking_push_mode (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void           gst_harness_set_forwarding (GstHarness * h, gboolean forwarding);
Packit a6ee4b
Packit a6ee4b
/* buffers */
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstBuffer *    gst_harness_create_buffer (GstHarness * h, gsize size);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstFlowReturn  gst_harness_push (GstHarness * h, GstBuffer * buffer);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstBuffer *    gst_harness_pull (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstBuffer *    gst_harness_try_pull (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstBuffer *    gst_harness_push_and_pull (GstHarness * h, GstBuffer * buffer);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
guint          gst_harness_buffers_received (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
guint          gst_harness_buffers_in_queue (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void           gst_harness_set_drop_buffers (GstHarness * h, gboolean drop_buffers);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void           gst_harness_dump_to_file (GstHarness * h, const gchar * filename);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
guint8 *       gst_harness_take_all_data (GstHarness * h, gsize * size);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstBuffer *    gst_harness_take_all_data_as_buffer (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GBytes *       gst_harness_take_all_data_as_bytes (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstClockTime   gst_harness_get_last_pushed_timestamp (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
/* downstream events */
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
gboolean       gst_harness_push_event (GstHarness * h, GstEvent * event);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstEvent *     gst_harness_pull_event (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstEvent *     gst_harness_try_pull_event  (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
guint          gst_harness_events_received (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
guint          gst_harness_events_in_queue (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
/* upstream events */
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
gboolean   gst_harness_push_upstream_event (GstHarness * h, GstEvent * event);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstEvent * gst_harness_pull_upstream_event (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstEvent * gst_harness_try_pull_upstream_event  (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
guint      gst_harness_upstream_events_received (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
guint      gst_harness_upstream_events_in_queue (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
/* latency */
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstClockTime gst_harness_query_latency (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_set_upstream_latency (GstHarness * h, GstClockTime latency);
Packit a6ee4b
Packit a6ee4b
/* allocation query parameters */
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_set_propose_allocator (GstHarness                * h,
Packit a6ee4b
                                                GstAllocator              * allocator,
Packit a6ee4b
                                                const GstAllocationParams * params);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_get_allocator         (GstHarness          * h,
Packit a6ee4b
                                                GstAllocator       ** allocator,
Packit a6ee4b
                                                GstAllocationParams * params);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void         gst_harness_add_propose_allocation_meta (GstHarness                * h,
Packit a6ee4b
                                                      GType                       api,
Packit a6ee4b
                                                      const GstStructure        * params);
Packit a6ee4b
Packit a6ee4b
/* src-harness */
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void          gst_harness_add_src_harness (GstHarness * h,
Packit a6ee4b
                                           GstHarness * src_harness,
Packit a6ee4b
                                           gboolean has_clock_wait);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void          gst_harness_add_src (GstHarness  * h,
Packit a6ee4b
                                   const gchar * src_element_name,
Packit a6ee4b
                                   gboolean      has_clock_wait);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void          gst_harness_add_src_parse (GstHarness  * h,
Packit a6ee4b
                                         const gchar * launchline,
Packit a6ee4b
                                         gboolean      has_clock_wait);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstFlowReturn gst_harness_push_from_src (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstFlowReturn gst_harness_src_crank_and_push_many (GstHarness * h,
Packit a6ee4b
                                                   gint         cranks,
Packit a6ee4b
                                                   gint         pushes);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
gboolean      gst_harness_src_push_event (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
/* sink-harness */
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void          gst_harness_add_sink_harness (GstHarness * h,
Packit a6ee4b
                                            GstHarness * sink_harness);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void          gst_harness_add_sink (GstHarness  * h,
Packit a6ee4b
                                    const gchar * sink_element_name);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void          gst_harness_add_sink_parse (GstHarness  * h,
Packit a6ee4b
                                          const gchar * launchline);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstFlowReturn gst_harness_push_to_sink   (GstHarness * h);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstFlowReturn gst_harness_sink_push_many (GstHarness * h, gint pushes);
Packit a6ee4b
Packit a6ee4b
/* convenience functions */
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstElement *  gst_harness_find_element (GstHarness * h,
Packit a6ee4b
                                       const gchar * element_name);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void          gst_harness_set (GstHarness  * h,
Packit a6ee4b
                               const gchar * element_name,
Packit a6ee4b
                               const gchar * first_property_name, ...);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void          gst_harness_get (GstHarness  * h,
Packit a6ee4b
                               const gchar * element_name,
Packit a6ee4b
                               const gchar * first_property_name, ...);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
void          gst_harness_add_probe (GstHarness        * h,
Packit a6ee4b
                                     const gchar       * element_name,
Packit a6ee4b
                                     const gchar       * pad_name,
Packit a6ee4b
                                     GstPadProbeType     mask,
Packit a6ee4b
                                     GstPadProbeCallback callback,
Packit a6ee4b
                                     gpointer            user_data,
Packit a6ee4b
                                     GDestroyNotify      destroy_data);
Packit a6ee4b
Packit a6ee4b
/* Stress */
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
guint              gst_harness_stress_thread_stop  (GstHarnessThread * t);
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarnessThread * gst_harness_stress_custom_start (GstHarness * h,
Packit a6ee4b
                                                    GFunc        init,
Packit a6ee4b
                                                    GFunc        callback,
Packit a6ee4b
                                                    gpointer     data,
Packit a6ee4b
                                                    gulong       sleep);
Packit a6ee4b
Packit a6ee4b
#define gst_harness_stress_statechange_start(h)                                \
Packit a6ee4b
  gst_harness_stress_statechange_start_full (h, G_USEC_PER_SEC / 100)
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarnessThread * gst_harness_stress_statechange_start_full (GstHarness * h,
Packit a6ee4b
                                                              gulong       sleep);
Packit a6ee4b
Packit a6ee4b
#define gst_harness_stress_push_buffer_start(h, c, s, b)                       \
Packit a6ee4b
  gst_harness_stress_push_buffer_start_full (h, c, s, b, 0)
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarnessThread * gst_harness_stress_push_buffer_start_full (GstHarness * h,
Packit a6ee4b
                                                              GstCaps    * caps,
Packit a6ee4b
                                                              const GstSegment * segment,
Packit a6ee4b
                                                              GstBuffer  * buf,
Packit a6ee4b
                                                              gulong       sleep);
Packit a6ee4b
Packit a6ee4b
/**
Packit a6ee4b
 * GstHarnessPrepareBufferFunc:
Packit a6ee4b
 * @h: a #GstHarness
Packit a6ee4b
 * @data: user data
Packit a6ee4b
 *
Packit a6ee4b
 * Since: 1.6
Packit a6ee4b
 */
Packit a6ee4b
typedef GstBuffer * (*GstHarnessPrepareBufferFunc) (GstHarness * h, gpointer data);
Packit a6ee4b
Packit a6ee4b
#define gst_harness_stress_push_buffer_with_cb_start(h, c, s, f, d, n)         \
Packit a6ee4b
  gst_harness_stress_push_buffer_with_cb_start_full (h, c, s, f, d, n, 0)
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarnessThread * gst_harness_stress_push_buffer_with_cb_start_full (GstHarness   * h,
Packit a6ee4b
                                                                      GstCaps      * caps,
Packit a6ee4b
                                                                      const GstSegment * segment,
Packit a6ee4b
                                                                      GstHarnessPrepareBufferFunc func,
Packit a6ee4b
                                                                      gpointer       data,
Packit a6ee4b
                                                                      GDestroyNotify notify,
Packit a6ee4b
                                                                      gulong         sleep);
Packit a6ee4b
Packit a6ee4b
#define gst_harness_stress_push_event_start(h, e)                              \
Packit a6ee4b
  gst_harness_stress_push_event_start_full (h, e, 0)
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarnessThread * gst_harness_stress_push_event_start_full (GstHarness * h,
Packit a6ee4b
                                                             GstEvent   * event,
Packit a6ee4b
                                                             gulong       sleep);
Packit a6ee4b
Packit a6ee4b
/**
Packit a6ee4b
 * GstHarnessPrepareEventFunc:
Packit a6ee4b
 * @h: a #GstHarness
Packit a6ee4b
 * @data: user data
Packit a6ee4b
 *
Packit a6ee4b
 * Since: 1.8
Packit a6ee4b
 */
Packit a6ee4b
typedef GstEvent * (*GstHarnessPrepareEventFunc) (GstHarness * h, gpointer data);
Packit a6ee4b
Packit a6ee4b
#define gst_harness_stress_push_event_with_cb_start(h, f, d, n)                \
Packit a6ee4b
  gst_harness_stress_push_event_with_cb_start_full (h, f, d, n, 0)
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarnessThread * gst_harness_stress_push_event_with_cb_start_full (GstHarness   * h,
Packit a6ee4b
                                                                     GstHarnessPrepareEventFunc func,
Packit a6ee4b
                                                                     gpointer       data,
Packit a6ee4b
                                                                     GDestroyNotify notify,
Packit a6ee4b
                                                                     gulong         sleep);
Packit a6ee4b
Packit a6ee4b
#define gst_harness_stress_send_upstream_event_start(h, e)                     \
Packit a6ee4b
  gst_harness_stress_push_upstream_event_start_full (h, e, 0)
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarnessThread * gst_harness_stress_push_upstream_event_start_full (GstHarness * h,
Packit a6ee4b
                                                                      GstEvent   * event,
Packit a6ee4b
                                                                      gulong       sleep);
Packit a6ee4b
Packit a6ee4b
#define gst_harness_stress_send_upstream_event_with_cb_start(h, f, d, n)       \
Packit a6ee4b
  gst_harness_stress_push_upstream_event_with_cb_start_full (h, f, d, n, 0)
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarnessThread * gst_harness_stress_push_upstream_event_with_cb_start_full (GstHarness   * h,
Packit a6ee4b
                                                                              GstHarnessPrepareEventFunc func,
Packit a6ee4b
                                                                              gpointer       data,
Packit a6ee4b
                                                                              GDestroyNotify notify,
Packit a6ee4b
                                                                              gulong         sleep);
Packit a6ee4b
Packit a6ee4b
Packit a6ee4b
#define gst_harness_stress_property_start(h, n, v)                             \
Packit a6ee4b
  gst_harness_stress_property_start_full (h, n, v, G_USEC_PER_SEC / 1000)
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarnessThread * gst_harness_stress_property_start_full (GstHarness   * h,
Packit a6ee4b
                                                           const gchar  * name,
Packit a6ee4b
                                                           const GValue * value,
Packit a6ee4b
                                                           gulong         sleep);
Packit a6ee4b
Packit a6ee4b
#define gst_harness_stress_requestpad_start(h, t, n, c, r)                     \
Packit a6ee4b
  gst_harness_stress_requestpad_start_full (h, t, n, c, r, G_USEC_PER_SEC / 100)
Packit a6ee4b
Packit a6ee4b
GST_CHECK_API
Packit a6ee4b
GstHarnessThread * gst_harness_stress_requestpad_start_full (GstHarness     * h,
Packit a6ee4b
                                                             GstPadTemplate * templ,
Packit a6ee4b
                                                             const gchar    * name,
Packit a6ee4b
                                                             GstCaps        * caps,
Packit a6ee4b
                                                             gboolean         release,
Packit a6ee4b
                                                             gulong           sleep);
Packit a6ee4b
Packit a6ee4b
G_END_DECLS
Packit a6ee4b
Packit a6ee4b
#endif /* __GST_HARNESS_H__ */