## GstHarness GstHarness |

## Functions

GstHarness * | gst_harness_new_empty ()
GstHarness * | gst_harness_new_full ()
GstHarness * | gst_harness_new_with_element ()
GstHarness * | gst_harness_new_with_padnames ()
GstHarness * | gst_harness_new_with_templates ()
GstHarness * | gst_harness_new ()
GstHarness * | gst_harness_new_parse ()
void | gst_harness_add_element_full ()
void | gst_harness_add_parse ()
void | gst_harness_teardown ()
void | gst_harness_add_element_src_pad ()
void | gst_harness_add_element_sink_pad ()
void | gst_harness_set_src_caps ()
void | gst_harness_set_sink_caps ()
void | gst_harness_set_caps ()
void | gst_harness_set_src_caps_str ()
void | gst_harness_set_sink_caps_str ()
void | gst_harness_set_caps_str ()
void | gst_harness_use_systemclock ()
void | gst_harness_use_testclock ()
GstTestClock * | gst_harness_get_testclock ()
gboolean | gst_harness_set_time ()
gboolean | gst_harness_wait_for_clock_id_waits ()
gboolean | gst_harness_crank_single_clock_wait ()
gboolean | gst_harness_crank_multiple_clock_waits ()
void | gst_harness_play ()
void | gst_harness_set_blocking_push_mode ()
void | gst_harness_set_forwarding ()
GstBuffer * | gst_harness_create_buffer ()
GstFlowReturn | gst_harness_push ()
GstBuffer * | gst_harness_pull ()
GstBuffer * | gst_harness_try_pull ()
GstBuffer * | gst_harness_push_and_pull ()
guint | gst_harness_buffers_received ()
guint | gst_harness_buffers_in_queue ()
void | gst_harness_set_drop_buffers ()
void | gst_harness_dump_to_file ()
GstClockTime | gst_harness_get_last_pushed_timestamp ()
gboolean | gst_harness_push_event ()
GstEvent * | gst_harness_pull_event ()
GstEvent * | gst_harness_try_pull_event ()
guint | gst_harness_events_received ()
guint | gst_harness_events_in_queue ()
gboolean | gst_harness_push_upstream_event ()
GstEvent * | gst_harness_pull_upstream_event ()
GstEvent * | gst_harness_try_pull_upstream_event ()
guint | gst_harness_upstream_events_received ()
guint | gst_harness_upstream_events_in_queue ()
GstClockTime | gst_harness_query_latency ()
void | gst_harness_set_upstream_latency ()
void | gst_harness_set_propose_allocator ()
void | gst_harness_get_allocator ()
void | gst_harness_add_src ()
void | gst_harness_add_src_harness ()
void | gst_harness_add_src_parse ()
GstFlowReturn | gst_harness_push_from_src ()
GstFlowReturn | gst_harness_src_crank_and_push_many ()
gboolean | gst_harness_src_push_event ()
void | gst_harness_add_sink ()
void | gst_harness_add_sink_harness ()
void | gst_harness_add_sink_parse ()
GstFlowReturn | gst_harness_push_to_sink ()
GstFlowReturn | gst_harness_sink_push_many ()
GstElement * | gst_harness_find_element ()
void | gst_harness_set ()
void | gst_harness_get ()
void | gst_harness_add_probe ()
guint | gst_harness_stress_thread_stop ()
GstHarnessThread * | gst_harness_stress_custom_start ()
#define | gst_harness_stress_statechange_start()
GstHarnessThread * | gst_harness_stress_statechange_start_full ()
#define | gst_harness_stress_push_buffer_start()
GstHarnessThread * | gst_harness_stress_push_buffer_start_full ()
GstBuffer * | (*GstHarnessPrepareBufferFunc) ()
#define | gst_harness_stress_push_buffer_with_cb_start()
GstHarnessThread * | gst_harness_stress_push_buffer_with_cb_start_full ()
#define | gst_harness_stress_push_event_start()
GstHarnessThread * | gst_harness_stress_push_event_start_full ()
GstEvent * | (*GstHarnessPrepareEventFunc) ()
#define | gst_harness_stress_push_event_with_cb_start()
GstHarnessThread * | gst_harness_stress_push_event_with_cb_start_full ()
#define | gst_harness_stress_send_upstream_event_start()
GstHarnessThread * | gst_harness_stress_push_upstream_event_start_full ()
#define | gst_harness_stress_send_upstream_event_with_cb_start()
GstHarnessThread * | gst_harness_stress_push_upstream_event_with_cb_start_full ()
#define | gst_harness_stress_property_start()
GstHarnessThread * | gst_harness_stress_property_start_full ()
#define | gst_harness_stress_requestpad_start()
GstHarnessThread * | gst_harness_stress_requestpad_start_full ()

## Types and Values

struct | GstHarness
| GstHarnessThread

## Includes

    #include <gst/check/check.h>

## Description

## Functions

### gst_harness_new_empty ()

    GstHarness *
    gst_harness_new_empty (void);

### gst_harness_new_full ()

    GstHarness *
    gst_harness_new_full (GstElement *element,
                          GstStaticPadTemplate *hsrc,
                          const gchar *element_sinkpad_name,
                          GstStaticPadTemplate *hsink,
                          const gchar *element_srcpad_name);

### gst_harness_new_with_element ()

    GstHarness *
    gst_harness_new_with_element (GstElement *element,
                                  const gchar *element_sinkpad_name,
                                  const gchar *element_srcpad_name);

### gst_harness_new_with_padnames ()

    GstHarness *
    gst_harness_new_with_padnames (const gchar *element_name,
                                   const gchar *element_sinkpad_name,
                                   const gchar *element_srcpad_name);

### gst_harness_new_with_templates ()

    GstHarness *
    gst_harness_new_with_templates (const gchar *element_name,
                                    GstStaticPadTemplate *hsrc,
                                    GstStaticPadTemplate *hsink);

### gst_harness_new ()

    GstHarness *
    gst_harness_new (const gchar *element_name);

### gst_harness_new_parse ()

    GstHarness *
    gst_harness_new_parse (const gchar *launchline);

### gst_harness_add_element_full ()

    void
    gst_harness_add_element_full (GstHarness *h,
                                  GstElement *element,
                                  GstStaticPadTemplate *hsrc,
                                  const gchar *element_sinkpad_name,
                                  GstStaticPadTemplate *hsink,
                                  const gchar *element_srcpad_name);

### gst_harness_add_parse ()

    void
    gst_harness_add_parse (GstHarness *h,
                           const gchar *launchline);

### gst_harness_teardown ()

    void
    gst_harness_teardown (GstHarness *h);

### gst_harness_add_element_src_pad ()

    void
    gst_harness_add_element_src_pad (GstHarness *h,
                                     GstPad *srcpad);

### gst_harness_add_element_sink_pad ()

    void
    gst_harness_add_element_sink_pad (GstHarness *h,
                                      GstPad *sinkpad);

### gst_harness_set_src_caps ()

    void
    gst_harness_set_src_caps (GstHarness *h,
                              GstCaps *caps);

### gst_harness_set_sink_caps ()

    void
    gst_harness_set_sink_caps (GstHarness *h,
                               GstCaps *caps);

### gst_harness_set_caps ()

    void
    gst_harness_set_caps (GstHarness *h,
                          GstCaps *in,
                          GstCaps *out);

### gst_harness_set_src_caps_str ()

    void
    gst_harness_set_src_caps_str (GstHarness *h,
                                  const gchar *str);

### gst_harness_set_sink_caps_str ()

    void
    gst_harness_set_sink_caps_str (GstHarness *h,
                                   const gchar *str);

### gst_harness_set_caps_str ()

    void
    gst_harness_set_caps_str (GstHarness *h,
                              const gchar *in,
                              const gchar *out);

### gst_harness_use_systemclock ()

    void
    gst_harness_use_systemclock (GstHarness *h);

### gst_harness_use_testclock ()

    void
    gst_harness_use_testclock (GstHarness *h);

### gst_harness_get_testclock ()

    GstTestClock *
    gst_harness_get_testclock (GstHarness *h);

### gst_harness_set_time ()

    gboolean
    gst_harness_set_time (GstHarness *h,
                          GstClockTime time);

### gst_harness_wait_for_clock_id_waits ()

    gboolean
    gst_harness_wait_for_clock_id_waits (GstHarness *h,
                                         guint waits,
                                         guint timeout);

### gst_harness_crank_single_clock_wait ()

    gboolean
    gst_harness_crank_single_clock_wait (GstHarness *h);

### gst_harness_crank_multiple_clock_waits ()

    gboolean
    gst_harness_crank_multiple_clock_waits
                                   (GstHarness *h,
                                    guint waits);

### gst_harness_play ()

    void
    gst_harness_play (GstHarness *h);

### gst_harness_set_blocking_push_mode ()

    void
    gst_harness_set_blocking_push_mode (GstHarness *h);

### gst_harness_set_forwarding ()

    void
    gst_harness_set_forwarding (GstHarness *h,
                                gboolean forwarding);

### gst_harness_create_buffer ()

    GstBuffer *
    gst_harness_create_buffer (GstHarness *h,
                               gsize size);

### gst_harness_push ()

    GstFlowReturn
    gst_harness_push (GstHarness *h,
                      GstBuffer *buffer);

### gst_harness_pull ()

    GstBuffer *
    gst_harness_pull (GstHarness *h);

### gst_harness_try_pull ()

    GstBuffer *
    gst_harness_try_pull (GstHarness *h);

### gst_harness_push_and_pull ()

    GstBuffer *
    gst_harness_push_and_pull (GstHarness *h,
                               GstBuffer *buffer);

### gst_harness_buffers_received ()

    guint
    gst_harness_buffers_received (GstHarness *h);

### gst_harness_buffers_in_queue ()

    guint
    gst_harness_buffers_in_queue (GstHarness *h);

### gst_harness_set_drop_buffers ()

    void
    gst_harness_set_drop_buffers (GstHarness *h,
                                  gboolean drop_buffers);

### gst_harness_dump_to_file ()

    void
    gst_harness_dump_to_file (GstHarness *h,
                              const gchar *filename);

### gst_harness_get_last_pushed_timestamp ()

    GstClockTime
    gst_harness_get_last_pushed_timestamp (GstHarness *h);

### gst_harness_push_event ()

    gboolean
    gst_harness_push_event (GstHarness *h,
                            GstEvent *event);

### gst_harness_pull_event ()

    GstEvent *
    gst_harness_pull_event (GstHarness *h);

### gst_harness_try_pull_event ()

    GstEvent *
    gst_harness_try_pull_event (GstHarness *h);

### gst_harness_events_received ()

    guint
    gst_harness_events_received (GstHarness *h);

### gst_harness_events_in_queue ()

    guint
    gst_harness_events_in_queue (GstHarness *h);

### gst_harness_push_upstream_event ()

    gboolean
    gst_harness_push_upstream_event (GstHarness *h,
                                     GstEvent *event);

### gst_harness_pull_upstream_event ()

    GstEvent *
    gst_harness_pull_upstream_event (GstHarness *h);

### gst_harness_try_pull_upstream_event ()

    GstEvent *
    gst_harness_try_pull_upstream_event (GstHarness *h);

### gst_harness_upstream_events_received ()

    guint
    gst_harness_upstream_events_received (GstHarness *h);

### gst_harness_upstream_events_in_queue ()

    guint
    gst_harness_upstream_events_in_queue (GstHarness *h);

### gst_harness_query_latency ()

    GstClockTime
    gst_harness_query_latency (GstHarness *h);

### gst_harness_set_upstream_latency ()

    void
    gst_harness_set_upstream_latency (GstHarness *h,
                                      GstClockTime latency);

### gst_harness_set_propose_allocator ()

    void
    gst_harness_set_propose_allocator (GstHarness *h,
                                       GstAllocator *allocator,
                                       const GstAllocationParams *params);

### gst_harness_get_allocator ()

    void
    gst_harness_get_allocator (GstHarness *h,
                               GstAllocator **allocator,
                               GstAllocationParams *params);

### gst_harness_add_src ()

    void
    gst_harness_add_src (GstHarness *h,
                         const gchar *src_element_name,
                         gboolean has_clock_wait);

### gst_harness_add_src_harness ()

    void
    gst_harness_add_src_harness (GstHarness *h,
                                 GstHarness *src_harness,
                                 gboolean has_clock_wait);

### gst_harness_add_src_parse ()

    void
    gst_harness_add_src_parse (GstHarness *h,
                               const gchar *launchline,
                               gboolean has_clock_wait);

### gst_harness_push_from_src ()

    GstFlowReturn
    gst_harness_push_from_src (GstHarness *h);

### gst_harness_src_crank_and_push_many ()

    GstFlowReturn
    gst_harness_src_crank_and_push_many (GstHarness *h,
                                         gint cranks,
                                         gint pushes);

### gst_harness_src_push_event ()

    gboolean
    gst_harness_src_push_event (GstHarness *h);

### gst_harness_add_sink ()

    void
    gst_harness_add_sink (GstHarness *h,
                          const gchar *sink_element_name);

### gst_harness_add_sink_harness ()

    void
    gst_harness_add_sink_harness (GstHarness *h,
                                  GstHarness *sink_harness);

### gst_harness_add_sink_parse ()

    void
    gst_harness_add_sink_parse (GstHarness *h,
                                const gchar *launchline);

### gst_harness_push_to_sink ()

    GstFlowReturn
    gst_harness_push_to_sink (GstHarness *h);

### gst_harness_sink_push_many ()

    GstFlowReturn
    gst_harness_sink_push_many (GstHarness *h,
                                gint pushes);

### gst_harness_find_element ()

    GstElement *
    gst_harness_find_element (GstHarness *h,
                              const gchar *element_name);

### gst_harness_set ()

    void
    gst_harness_set (GstHarness *h,
                     const gchar *element_name,
                     const gchar *first_property_name,
                     ...);

### gst_harness_get ()

    void
    gst_harness_get (GstHarness *h,
                     const gchar *element_name,
                     const gchar *first_property_name,
                     ...);

### gst_harness_add_probe ()

    void
    gst_harness_add_probe (GstHarness *h,
                           const gchar *element_name,
                           const gchar *pad_name,
                           GstPadProbeType mask,
                           GstPadProbeCallback callback,
                           gpointer user_data,
                           GDestroyNotify destroy_data);

### gst_harness_stress_thread_stop ()

    guint
    gst_harness_stress_thread_stop (GstHarnessThread *t);

### gst_harness_stress_custom_start ()

    GstHarnessThread *
    gst_harness_stress_custom_start (GstHarness *h,
                                     GFunc init,
                                     GFunc callback,
                                     gpointer data,
                                     gulong sleep);

### gst_harness_stress_statechange_start()

    #define             gst_harness_stress_statechange_start(h)

### gst_harness_stress_statechange_start_full ()

    GstHarnessThread *
    gst_harness_stress_statechange_start_full
                                   (GstHarness *h,
                                    gulong sleep);

### gst_harness_stress_push_buffer_start()

    #define             gst_harness_stress_push_buffer_start(h, c, s, b)

### gst_harness_stress_push_buffer_start_full ()

    GstHarnessThread *
    gst_harness_stress_push_buffer_start_full
                                   (GstHarness *h,
                                    GstCaps *caps,
                                    const GstSegment *segment,
                                    GstBuffer *buf,
                                    gulong sleep);

### GstHarnessPrepareBufferFunc ()

    GstBuffer *
    (*GstHarnessPrepareBufferFunc) (GstHarness *h,
                                    gpointer data);

### gst_harness_stress_push_buffer_with_cb_start()

    #define             gst_harness_stress_push_buffer_with_cb_start(h, c, s, f, d, n)

### gst_harness_stress_push_buffer_with_cb_start_full ()

    GstHarnessThread *
    gst_harness_stress_push_buffer_with_cb_start_full
                                   (GstHarness *h,
                                    GstCaps *caps,
                                    const GstSegment *segment,
                                    GstHarnessPrepareBufferFunc func,
                                    gpointer data,
                                    GDestroyNotify notify,
                                    gulong sleep);

### gst_harness_stress_push_event_start()

    #define             gst_harness_stress_push_event_start(h, e)

### gst_harness_stress_push_event_start_full ()

    GstHarnessThread *
    gst_harness_stress_push_event_start_full
                                   (GstHarness *h,
                                    GstEvent *event,
                                    gulong sleep);

### GstHarnessPrepareEventFunc ()

    GstEvent *
    (*GstHarnessPrepareEventFunc) (GstHarness *h,
                                   gpointer data);

### gst_harness_stress_push_event_with_cb_start()

    #define             gst_harness_stress_push_event_with_cb_start(h, f, d, n)

### gst_harness_stress_push_event_with_cb_start_full ()

    GstHarnessThread *
    gst_harness_stress_push_event_with_cb_start_full
                                   (GstHarness *h,
                                    GstHarnessPrepareEventFunc func,
                                    gpointer data,
                                    GDestroyNotify notify,
                                    gulong sleep);

### gst_harness_stress_send_upstream_event_start()

    #define             gst_harness_stress_send_upstream_event_start(h, e)

### gst_harness_stress_push_upstream_event_start_full ()

    GstHarnessThread *
    gst_harness_stress_push_upstream_event_start_full
                                   (GstHarness *h,
                                    GstEvent *event,
                                    gulong sleep);

### gst_harness_stress_send_upstream_event_with_cb_start()

    #define             gst_harness_stress_send_upstream_event_with_cb_start(h, f, d, n)

### gst_harness_stress_push_upstream_event_with_cb_start_full ()

    GstHarnessThread *
    gst_harness_stress_push_upstream_event_with_cb_start_full
                                   (GstHarness *h,
                                    GstHarnessPrepareEventFunc func,
                                    gpointer data,
                                    GDestroyNotify notify,
                                    gulong sleep);

### gst_harness_stress_property_start()

    #define             gst_harness_stress_property_start(h, n, v)

### gst_harness_stress_property_start_full ()

    GstHarnessThread *
    gst_harness_stress_property_start_full
                                   (GstHarness *h,
                                    const gchar *name,
                                    const GValue *value,
                                    gulong sleep);

### gst_harness_stress_requestpad_start()

    #define             gst_harness_stress_requestpad_start(h, t, n, c, r)

### gst_harness_stress_requestpad_start_full ()

    GstHarnessThread *
    gst_harness_stress_requestpad_start_full
                                   (GstHarness *h,
                                    GstPadTemplate *templ,
                                    const gchar *name,
                                    GstCaps *caps,
                                    gboolean release,
                                    gulong sleep);

## Types and Values

### struct GstHarness

    struct GstHarness {
      GstElement * element;

      GstPad * srcpad;
      GstPad * sinkpad;

      GstHarness * src_harness;
      GstHarness * sink_harness;
    };

### GstHarnessThread

    typedef struct _GstHarnessThread GstHarnessThread;