gstreamer/gst/audiolatency/gstaudiolatency.h
Nirbheek Chauhan 3fb81536ce audiolatency: New plugin for measuring audio latency
Measures the audio latency between the source pad and the sink pad by
outputting period ticks on the source pad and measuring how long they
take to arrive on the sink pad.

Very useful for quantifying latency improvements in audio pipelines.
This plugin was particularly useful during development of the
low-latency features of the wasapi plugin.

https://bugzilla.gnome.org/show_bug.cgi?id=793839
2018-02-27 23:54:28 +05:30

70 lines
2 KiB
C

/*
* Copyright (C) 2018 Centricular Ltd.
* Author: Nirbheek Chauhan <nirbheek@centricular.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef __GST_AUDIOLATENCY_H__
#define __GST_AUDIOLATENCY_H__
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_AUDIOLATENCY \
(gst_audiolatency_get_type ())
#define GST_AUDIOLATENCY(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_AUDIOLATENCY, GstAudioLatency))
#define GST_AUDIOLATENCY_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_AUDIOLATENCY, GstAudioLatencyClass))
#define GST_IS_AUDIOLATENCY(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_AUDIOLATENCY))
#define GST_IS_AUDIOLATENCY_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_AUDIOLATENCY))
typedef struct _GstAudioLatency GstAudioLatency;
typedef struct _GstAudioLatencyClass GstAudioLatencyClass;
#define GST_AUDIOLATENCY_NUM_LATENCIES 5
struct _GstAudioLatency
{
GstBin parent;
GstPad *sinkpad;
GstPad *srcpad;
/* audiotestsrc */
GstElement *audiosrc;
/* measurements */
gint64 send_pts;
gint64 recv_pts;
gint next_latency_idx;
gint latencies[GST_AUDIOLATENCY_NUM_LATENCIES];
/* properties */
gboolean print_latency;
};
struct _GstAudioLatencyClass
{
GstBinClass parent_class;
};
GType gst_audiolatency_get_type (void);
G_END_DECLS
#endif /* __GST_AUDIOLATENCY_H__ */