mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-09-29 23:32:33 +00:00
use overridable ERROR_CFLAGS; more macro splitting
Original commit message from CVS: use overridable ERROR_CFLAGS; more macro splitting
This commit is contained in:
parent
eec80f9dc7
commit
9e8a11d3ce
29 changed files with 781 additions and 803 deletions
106
ChangeLog
106
ChangeLog
|
@ -1,3 +1,109 @@
|
|||
2005-07-10 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
* configure.ac:
|
||||
use overridable ERROR_CFLAGS
|
||||
* docs/libs/gst-plugins-base-libs.types:
|
||||
* docs/libs/tmpl/gstringbuffer.sgml:
|
||||
* ext/alsa/gstalsasink.c: (gst_alsasink_get_type),
|
||||
(gst_alsasink_class_init):
|
||||
* ext/alsa/gstalsasrc.c: (gst_alsasrc_get_type),
|
||||
(gst_alsasrc_class_init):
|
||||
* gst-libs/gst/audio/audio.h:
|
||||
* gst-libs/gst/audio/gstaudioclock.h:
|
||||
* gst-libs/gst/audio/gstaudiofilter.c: (gst_audio_filter_get_type),
|
||||
(gst_audio_filter_base_init), (gst_audio_filter_class_init),
|
||||
(gst_audio_filter_link), (gst_audio_filter_init),
|
||||
(gst_audio_filter_chain), (gst_audio_filter_set_property),
|
||||
(gst_audio_filter_get_property),
|
||||
(gst_audio_filter_class_add_pad_templates):
|
||||
* gst-libs/gst/audio/gstaudiofilter.h:
|
||||
* gst-libs/gst/audio/gstaudiofiltertemplate.c:
|
||||
(gst_audio_filter_template_get_type),
|
||||
(gst_audio_filter_template_base_init),
|
||||
(gst_audio_filter_template_class_init),
|
||||
(gst_audio_filter_template_init),
|
||||
(gst_audio_filter_template_set_property),
|
||||
(gst_audio_filter_template_get_property), (plugin_init),
|
||||
(gst_audio_filter_template_setup),
|
||||
(gst_audio_filter_template_filter),
|
||||
(gst_audio_filter_template_filter_inplace):
|
||||
* gst-libs/gst/audio/gstaudiosink.c:
|
||||
(gst_audioringbuffer_get_type), (gst_audioringbuffer_class_init),
|
||||
(audioringbuffer_thread_func), (gst_audioringbuffer_acquire),
|
||||
(gst_audioringbuffer_release), (gst_audioringbuffer_start),
|
||||
(gst_audioringbuffer_stop), (gst_audioringbuffer_delay),
|
||||
(gst_audio_sink_base_init), (gst_audio_sink_class_init),
|
||||
(gst_audio_sink_init), (gst_audio_sink_create_ringbuffer):
|
||||
* gst-libs/gst/audio/gstaudiosink.h:
|
||||
* gst-libs/gst/audio/gstaudiosrc.c: (gst_audioringbuffer_get_type),
|
||||
(gst_audioringbuffer_class_init), (audioringbuffer_thread_func),
|
||||
(gst_audioringbuffer_acquire), (gst_audioringbuffer_release),
|
||||
(gst_audioringbuffer_start), (gst_audioringbuffer_stop),
|
||||
(gst_audioringbuffer_delay), (gst_audio_src_base_init),
|
||||
(gst_audio_src_class_init), (gst_audio_src_init),
|
||||
(gst_audio_src_create_ringbuffer):
|
||||
* gst-libs/gst/audio/gstaudiosrc.h:
|
||||
* gst-libs/gst/audio/gstbaseaudiosink.c:
|
||||
(gst_base_audio_sink_base_init), (gst_base_audio_sink_class_init),
|
||||
(gst_base_audio_sink_init), (gst_base_audio_sink_dispose),
|
||||
(gst_base_audio_sink_get_clock), (gst_base_audio_sink_get_time),
|
||||
(gst_base_audio_sink_set_property),
|
||||
(gst_base_audio_sink_get_property), (gst_base_audio_sink_setcaps),
|
||||
(gst_base_audio_sink_get_times), (gst_base_audio_sink_event),
|
||||
(gst_base_audio_sink_preroll), (gst_base_audio_sink_render),
|
||||
(gst_base_audio_sink_create_ringbuffer),
|
||||
(gst_base_audio_sink_callback), (gst_base_audio_sink_change_state):
|
||||
* gst-libs/gst/audio/gstbaseaudiosink.h:
|
||||
* gst-libs/gst/audio/gstbaseaudiosrc.c:
|
||||
(gst_base_audio_src_base_init), (gst_base_audio_src_class_init),
|
||||
(gst_base_audio_src_init), (gst_base_audio_src_get_clock),
|
||||
(gst_base_audio_src_get_time), (gst_base_audio_src_set_property),
|
||||
(gst_base_audio_src_get_property), (gst_base_audio_src_fixate),
|
||||
(gst_base_audio_src_setcaps), (gst_base_audio_src_get_times),
|
||||
(gst_base_audio_src_event), (gst_base_audio_src_create),
|
||||
(gst_base_audio_src_create_ringbuffer),
|
||||
(gst_base_audio_src_callback), (gst_base_audio_src_change_state):
|
||||
* gst-libs/gst/audio/gstbaseaudiosrc.h:
|
||||
* gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_get_type),
|
||||
(gst_ring_buffer_class_init), (gst_ring_buffer_init),
|
||||
(gst_ring_buffer_dispose), (gst_ring_buffer_finalize),
|
||||
(gst_ring_buffer_debug_spec_caps),
|
||||
(gst_ring_buffer_debug_spec_buff), (gst_ring_buffer_parse_caps),
|
||||
(gst_ring_buffer_set_callback), (gst_ring_buffer_acquire),
|
||||
(gst_ring_buffer_release), (gst_ring_buffer_is_acquired),
|
||||
(gst_ring_buffer_start), (gst_ring_buffer_pause),
|
||||
(gst_ring_buffer_stop), (gst_ring_buffer_delay),
|
||||
(gst_ring_buffer_samples_done), (gst_ring_buffer_set_sample),
|
||||
(wait_segment), (gst_ring_buffer_commit), (gst_ring_buffer_read),
|
||||
(gst_ring_buffer_prepare_read), (gst_ring_buffer_advance),
|
||||
(gst_ring_buffer_clear):
|
||||
* gst-libs/gst/audio/gstringbuffer.h:
|
||||
* gst-libs/gst/video/gstvideosink.c: (gst_video_sink_init),
|
||||
(gst_video_sink_class_init), (gst_video_sink_get_type):
|
||||
* gst-libs/gst/video/videosink.h:
|
||||
* gst/tcp/gstmultifdsink.c: (gst_multifdsink_get_type),
|
||||
(gst_multifdsink_class_init),
|
||||
(gst_multifdsink_handle_client_write),
|
||||
(gst_multifdsink_change_state):
|
||||
* gst/tcp/gsttcpclientsink.c: (gst_tcpclientsink_class_init),
|
||||
(gst_tcpclientsink_setcaps):
|
||||
* sys/ximage/ximagesink.c: (gst_ximagesink_renegotiate_size),
|
||||
(gst_ximagesink_getcaps), (gst_ximagesink_setcaps),
|
||||
(gst_ximagesink_change_state), (gst_ximagesink_show_frame),
|
||||
(gst_ximagesink_buffer_free), (gst_ximagesink_buffer_alloc),
|
||||
(gst_ximagesink_send_pending_navigation),
|
||||
(gst_ximagesink_set_xwindow_id), (gst_ximagesink_get_desired_size),
|
||||
(gst_ximagesink_class_init), (gst_ximagesink_get_type):
|
||||
* sys/xvimage/xvimagesink.c: (gst_xvimagesink_getcaps),
|
||||
(gst_xvimagesink_setcaps), (gst_xvimagesink_change_state),
|
||||
(gst_xvimagesink_show_frame), (gst_xvimagesink_buffer_alloc),
|
||||
(gst_xvimagesink_send_pending_navigation),
|
||||
(gst_xvimagesink_navigation_send_event),
|
||||
(gst_xvimagesink_set_xwindow_id),
|
||||
(gst_xvimagesink_get_desired_size), (gst_xvimagesink_class_init),
|
||||
(gst_xvimagesink_get_type):
|
||||
more macro splitting
|
||||
|
||||
2005-07-08 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
* ext/ogg/gstoggdemux.c: (gst_ogg_pad_dispose):
|
||||
|
|
2
common
2
common
|
@ -1 +1 @@
|
|||
Subproject commit 221ac8abacb46858382a9f8c924152ae588f4a2e
|
||||
Subproject commit ac7272b7af934c2294a44ac1c0f3fac3f8d17ec6
|
15
configure.ac
15
configure.ac
|
@ -60,16 +60,7 @@ AS_AC_EXPAND(LOCALEDIR, $datadir/locale)
|
|||
AC_DEFINE_UNQUOTED([LOCALEDIR], "$LOCALEDIR",
|
||||
[gettext locale dir])
|
||||
|
||||
dnl decide on error flags
|
||||
AS_COMPILER_FLAG(-Wall, GST_WALL="yes", GST_WALL="no")
|
||||
|
||||
if test "x$GST_WALL" = "xyes"; then
|
||||
GST_ERROR="$GST_ERROR -Wall"
|
||||
|
||||
if test "x$GST_CVS" = "xyes"; then
|
||||
AS_COMPILER_FLAG(-Werror,GST_ERROR="$GST_ERROR -Werror",GST_ERROR="$GST_ERROR")
|
||||
fi
|
||||
fi
|
||||
GST_SET_ERROR_CFLAGS($GST_CVS)
|
||||
|
||||
dnl determine c++ compiler
|
||||
AC_PROG_CXX
|
||||
|
@ -693,6 +684,7 @@ GST_CHECK_FEATURE(VORBIS, [vorbis plug-in], vorbisenc vorbisdec, [
|
|||
if test "x$HAVE_VORBIS" = "xyes"; then
|
||||
ac_cflags_save="$CFLAGS"
|
||||
dnl FIXME: does this work on non-gcc? -- Company
|
||||
dnl FIXME: no, it doesn't. Why is this here in the first place ? -- thomasvs
|
||||
CFLAGS="-Wall -Werror"
|
||||
AC_COMPILE_IFELSE(
|
||||
AC_LANG_PROGRAM([
|
||||
|
@ -831,7 +823,8 @@ AM_CONDITIONAL(HAVE_RAW1394, test "x$HAVE_RAW1394" = "xyes")
|
|||
|
||||
dnl prefer internal headers to already installed ones
|
||||
dnl also add builddir include for enumtypes and marshal
|
||||
GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $GST_ERROR"
|
||||
dnl add ERROR_CFLAGS, but overridable
|
||||
GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS \$(ERROR_CFLAGS)"
|
||||
|
||||
AC_SUBST(GST_LIBS)
|
||||
AC_SUBST(GST_CFLAGS)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#include <gst/interfaces/colorbalance.h>
|
||||
#include <gst/audio/gstringbuffer.h>
|
||||
|
||||
gst_ringbuffer_get_type
|
||||
gst_ring_buffer_get_type
|
||||
|
||||
gst_color_balance_get_type
|
||||
gst_color_balance_channel_get_type
|
||||
|
|
|
@ -44,137 +44,3 @@ an implementation of an audio ringbuffer
|
|||
@stop:
|
||||
@delay:
|
||||
|
||||
<!-- ##### FUNCTION gst_ringbuffer_set_callback ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@buf:
|
||||
@cb:
|
||||
@user_data:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gst_ringbuffer_acquire ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@buf:
|
||||
@spec:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gst_ringbuffer_release ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@buf:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gst_ringbuffer_is_acquired ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@buf:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gst_ringbuffer_start ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@buf:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gst_ringbuffer_pause ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@buf:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gst_ringbuffer_stop ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@buf:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gst_ringbuffer_delay ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@buf:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gst_ringbuffer_samples_done ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@buf:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gst_ringbuffer_set_sample ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@buf:
|
||||
@sample:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gst_ringbuffer_commit ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@buf:
|
||||
@sample:
|
||||
@data:
|
||||
@len:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gst_ringbuffer_prepare_read ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@buf:
|
||||
@segment:
|
||||
@readptr:
|
||||
@len:
|
||||
@Returns:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gst_ringbuffer_clear ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@buf:
|
||||
@segment:
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gst_ringbuffer_advance ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
@buf:
|
||||
@advance:
|
||||
|
||||
|
||||
|
|
|
@ -113,7 +113,7 @@ gst_alsasink_get_type (void)
|
|||
};
|
||||
|
||||
alsasink_type =
|
||||
g_type_register_static (GST_TYPE_AUDIOSINK, "GstAlsaSink",
|
||||
g_type_register_static (GST_TYPE_AUDIO_SINK, "GstAlsaSink",
|
||||
&alsasink_info, 0);
|
||||
}
|
||||
|
||||
|
@ -151,7 +151,7 @@ gst_alsasink_class_init (GstAlsaSinkClass * klass)
|
|||
gstbaseaudiosink_class = (GstBaseAudioSinkClass *) klass;
|
||||
gstaudiosink_class = (GstAudioSinkClass *) klass;
|
||||
|
||||
parent_class = g_type_class_ref (GST_TYPE_BASEAUDIOSINK);
|
||||
parent_class = g_type_class_ref (GST_TYPE_BASE_AUDIO_SINK);
|
||||
|
||||
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_alsasink_dispose);
|
||||
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_alsasink_get_property);
|
||||
|
|
|
@ -109,7 +109,7 @@ gst_alsasrc_get_type (void)
|
|||
};
|
||||
|
||||
alsasrc_type =
|
||||
g_type_register_static (GST_TYPE_AUDIOSRC, "GstAlsaSrc",
|
||||
g_type_register_static (GST_TYPE_AUDIO_SRC, "GstAlsaSrc",
|
||||
&alsasrc_info, 0);
|
||||
}
|
||||
|
||||
|
@ -147,7 +147,7 @@ gst_alsasrc_class_init (GstAlsaSrcClass * klass)
|
|||
gstbaseaudiosrc_class = (GstBaseAudioSrcClass *) klass;
|
||||
gstaudiosrc_class = (GstAudioSrcClass *) klass;
|
||||
|
||||
parent_class = g_type_class_ref (GST_TYPE_BASEAUDIOSRC);
|
||||
parent_class = g_type_class_ref (GST_TYPE_BASE_AUDIO_SRC);
|
||||
|
||||
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_alsasrc_dispose);
|
||||
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_alsasrc_get_property);
|
||||
|
|
|
@ -58,7 +58,7 @@ G_BEGIN_DECLS
|
|||
"endianness = (int) { LITTLE_ENDIAN, BIG_ENDIAN }, " \
|
||||
"width = (int) { 8, 16, 24, 32 }, " \
|
||||
"depth = (int) [ 1, 32 ], " \
|
||||
"signed = (boolean) { true, false }"
|
||||
"signed = (boolean) { true, false }"
|
||||
|
||||
|
||||
/* "standard" int audio is native order, 16 bit stereo. */
|
||||
|
@ -69,7 +69,7 @@ G_BEGIN_DECLS
|
|||
"endianness = (int) BYTE_ORDER, " \
|
||||
"width = (int) 16, " \
|
||||
"depth = (int) 16, " \
|
||||
"signed = (boolean) true"
|
||||
"signed = (boolean) true"
|
||||
|
||||
#define GST_AUDIO_FLOAT_PAD_TEMPLATE_CAPS \
|
||||
"audio/x-raw-float, " \
|
||||
|
|
|
@ -60,7 +60,7 @@ struct _GstAudioClockClass {
|
|||
gpointer _gst_reserved[GST_PADDING];
|
||||
};
|
||||
|
||||
GType gst_audio_clock_get_type (void);
|
||||
GType gst_audio_clock_get_type (void);
|
||||
GstClock* gst_audio_clock_new (gchar *name, GstAudioClockGetTimeFunc func,
|
||||
gpointer user_data);
|
||||
|
||||
|
|
|
@ -42,36 +42,36 @@ enum
|
|||
/* FILL ME */
|
||||
};
|
||||
|
||||
static void gst_audiofilter_base_init (gpointer g_class);
|
||||
static void gst_audiofilter_class_init (gpointer g_class, gpointer class_data);
|
||||
static void gst_audiofilter_init (GTypeInstance * instance, gpointer g_class);
|
||||
static void gst_audio_filter_base_init (gpointer g_class);
|
||||
static void gst_audio_filter_class_init (gpointer g_class, gpointer class_data);
|
||||
static void gst_audio_filter_init (GTypeInstance * instance, gpointer g_class);
|
||||
|
||||
static void gst_audiofilter_set_property (GObject * object, guint prop_id,
|
||||
static void gst_audio_filter_set_property (GObject * object, guint prop_id,
|
||||
const GValue * value, GParamSpec * pspec);
|
||||
static void gst_audiofilter_get_property (GObject * object, guint prop_id,
|
||||
static void gst_audio_filter_get_property (GObject * object, guint prop_id,
|
||||
GValue * value, GParamSpec * pspec);
|
||||
|
||||
static GstFlowReturn gst_audiofilter_chain (GstPad * pad, GstBuffer * buffer);
|
||||
GstCaps *gst_audiofilter_class_get_capslist (GstAudiofilterClass * klass);
|
||||
static GstFlowReturn gst_audio_filter_chain (GstPad * pad, GstBuffer * buffer);
|
||||
GstCaps *gst_audio_filter_class_get_capslist (GstAudiofilterClass * klass);
|
||||
|
||||
static GstElementClass *parent_class = NULL;
|
||||
|
||||
GType
|
||||
gst_audiofilter_get_type (void)
|
||||
gst_audio_filter_get_type (void)
|
||||
{
|
||||
static GType audiofilter_type = 0;
|
||||
|
||||
if (!audiofilter_type) {
|
||||
static const GTypeInfo audiofilter_info = {
|
||||
sizeof (GstAudiofilterClass),
|
||||
gst_audiofilter_base_init,
|
||||
gst_audio_filter_base_init,
|
||||
NULL,
|
||||
gst_audiofilter_class_init,
|
||||
gst_audio_filter_class_init,
|
||||
NULL,
|
||||
NULL,
|
||||
sizeof (GstAudiofilter),
|
||||
0,
|
||||
gst_audiofilter_init,
|
||||
gst_audio_filter_init,
|
||||
};
|
||||
|
||||
audiofilter_type = g_type_register_static (GST_TYPE_ELEMENT,
|
||||
|
@ -81,7 +81,7 @@ gst_audiofilter_get_type (void)
|
|||
}
|
||||
|
||||
static void
|
||||
gst_audiofilter_base_init (gpointer g_class)
|
||||
gst_audio_filter_base_init (gpointer g_class)
|
||||
{
|
||||
static GstElementDetails audiofilter_details = {
|
||||
"Audio filter base class",
|
||||
|
@ -96,7 +96,7 @@ gst_audiofilter_base_init (gpointer g_class)
|
|||
}
|
||||
|
||||
static void
|
||||
gst_audiofilter_class_init (gpointer g_class, gpointer class_data)
|
||||
gst_audio_filter_class_init (gpointer g_class, gpointer class_data)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstElementClass *gstelement_class;
|
||||
|
@ -108,12 +108,12 @@ gst_audiofilter_class_init (gpointer g_class, gpointer class_data)
|
|||
|
||||
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
|
||||
|
||||
gobject_class->set_property = gst_audiofilter_set_property;
|
||||
gobject_class->get_property = gst_audiofilter_get_property;
|
||||
gobject_class->set_property = gst_audio_filter_set_property;
|
||||
gobject_class->get_property = gst_audio_filter_get_property;
|
||||
}
|
||||
|
||||
static GstPadLinkReturn
|
||||
gst_audiofilter_link (GstPad * pad, GstPad * peer)
|
||||
gst_audio_filter_link (GstPad * pad, GstPad * peer)
|
||||
{
|
||||
GstAudiofilter *audiofilter;
|
||||
|
||||
|
@ -122,9 +122,9 @@ gst_audiofilter_link (GstPad * pad, GstPad * peer)
|
|||
//GstStructure *structure;
|
||||
GstAudiofilterClass *audiofilter_class;
|
||||
|
||||
GST_DEBUG ("gst_audiofilter_link");
|
||||
audiofilter = GST_AUDIOFILTER (gst_pad_get_parent (pad));
|
||||
audiofilter_class = GST_AUDIOFILTER_CLASS (G_OBJECT_GET_CLASS (audiofilter));
|
||||
GST_DEBUG ("gst_audio_filter_link");
|
||||
audiofilter = GST_AUDIO_FILTER (gst_pad_get_parent (pad));
|
||||
audiofilter_class = GST_AUDIO_FILTER_CLASS (G_OBJECT_GET_CLASS (audiofilter));
|
||||
|
||||
#if 0
|
||||
ret = GST_PAD_LINK_DELAYED; /* intialise with dummy value */
|
||||
|
@ -166,20 +166,20 @@ gst_audiofilter_link (GstPad * pad, GstPad * peer)
|
|||
}
|
||||
|
||||
static void
|
||||
gst_audiofilter_init (GTypeInstance * instance, gpointer g_class)
|
||||
gst_audio_filter_init (GTypeInstance * instance, gpointer g_class)
|
||||
{
|
||||
GstAudiofilter *audiofilter = GST_AUDIOFILTER (instance);
|
||||
GstAudiofilter *audiofilter = GST_AUDIO_FILTER (instance);
|
||||
GstPadTemplate *pad_template;
|
||||
|
||||
GST_DEBUG ("gst_audiofilter_init");
|
||||
GST_DEBUG ("gst_audio_filter_init");
|
||||
|
||||
pad_template =
|
||||
gst_element_class_get_pad_template (GST_ELEMENT_CLASS (g_class), "sink");
|
||||
g_return_if_fail (pad_template != NULL);
|
||||
audiofilter->sinkpad = gst_pad_new_from_template (pad_template, "sink");
|
||||
gst_element_add_pad (GST_ELEMENT (audiofilter), audiofilter->sinkpad);
|
||||
gst_pad_set_chain_function (audiofilter->sinkpad, gst_audiofilter_chain);
|
||||
gst_pad_set_link_function (audiofilter->sinkpad, gst_audiofilter_link);
|
||||
gst_pad_set_chain_function (audiofilter->sinkpad, gst_audio_filter_chain);
|
||||
gst_pad_set_link_function (audiofilter->sinkpad, gst_audio_filter_link);
|
||||
//gst_pad_set_getcaps_function (audiofilter->sinkpad, gst_pad_proxy_getcaps);
|
||||
|
||||
pad_template =
|
||||
|
@ -187,31 +187,31 @@ gst_audiofilter_init (GTypeInstance * instance, gpointer g_class)
|
|||
g_return_if_fail (pad_template != NULL);
|
||||
audiofilter->srcpad = gst_pad_new_from_template (pad_template, "src");
|
||||
gst_element_add_pad (GST_ELEMENT (audiofilter), audiofilter->srcpad);
|
||||
gst_pad_set_link_function (audiofilter->srcpad, gst_audiofilter_link);
|
||||
gst_pad_set_link_function (audiofilter->srcpad, gst_audio_filter_link);
|
||||
//gst_pad_set_getcaps_function (audiofilter->srcpad, gst_pad_proxy_getcaps);
|
||||
|
||||
audiofilter->inited = FALSE;
|
||||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_audiofilter_chain (GstPad * pad, GstBuffer * buffer)
|
||||
gst_audio_filter_chain (GstPad * pad, GstBuffer * buffer)
|
||||
{
|
||||
GstBuffer *inbuf = GST_BUFFER (buffer);
|
||||
GstAudiofilter *audiofilter;
|
||||
GstBuffer *outbuf;
|
||||
GstAudiofilterClass *audiofilter_class;
|
||||
|
||||
GST_DEBUG ("gst_audiofilter_chain");
|
||||
GST_DEBUG ("gst_audio_filter_chain");
|
||||
|
||||
g_return_val_if_fail (pad != NULL, GST_FLOW_ERROR);
|
||||
g_return_val_if_fail (GST_IS_PAD (pad), GST_FLOW_ERROR);
|
||||
g_return_val_if_fail (inbuf != NULL, GST_FLOW_ERROR);
|
||||
|
||||
audiofilter = GST_AUDIOFILTER (gst_pad_get_parent (pad));
|
||||
audiofilter = GST_AUDIO_FILTER (gst_pad_get_parent (pad));
|
||||
//g_return_if_fail (audiofilter->inited);
|
||||
audiofilter_class = GST_AUDIOFILTER_CLASS (G_OBJECT_GET_CLASS (audiofilter));
|
||||
audiofilter_class = GST_AUDIO_FILTER_CLASS (G_OBJECT_GET_CLASS (audiofilter));
|
||||
|
||||
GST_DEBUG ("gst_audiofilter_chain: got buffer of %d bytes in '%s'",
|
||||
GST_DEBUG ("gst_audio_filter_chain: got buffer of %d bytes in '%s'",
|
||||
GST_BUFFER_SIZE (inbuf), GST_OBJECT_NAME (audiofilter));
|
||||
|
||||
if (audiofilter->passthru) {
|
||||
|
@ -255,15 +255,15 @@ gst_audiofilter_chain (GstPad * pad, GstBuffer * buffer)
|
|||
}
|
||||
|
||||
static void
|
||||
gst_audiofilter_set_property (GObject * object, guint prop_id,
|
||||
gst_audio_filter_set_property (GObject * object, guint prop_id,
|
||||
const GValue * value, GParamSpec * pspec)
|
||||
{
|
||||
GstAudiofilter *src;
|
||||
|
||||
g_return_if_fail (GST_IS_AUDIOFILTER (object));
|
||||
src = GST_AUDIOFILTER (object);
|
||||
g_return_if_fail (GST_IS_AUDIO_FILTER (object));
|
||||
src = GST_AUDIO_FILTER (object);
|
||||
|
||||
GST_DEBUG ("gst_audiofilter_set_property");
|
||||
GST_DEBUG ("gst_audio_filter_set_property");
|
||||
switch (prop_id) {
|
||||
default:
|
||||
break;
|
||||
|
@ -271,13 +271,13 @@ gst_audiofilter_set_property (GObject * object, guint prop_id,
|
|||
}
|
||||
|
||||
static void
|
||||
gst_audiofilter_get_property (GObject * object, guint prop_id, GValue * value,
|
||||
gst_audio_filter_get_property (GObject * object, guint prop_id, GValue * value,
|
||||
GParamSpec * pspec)
|
||||
{
|
||||
GstAudiofilter *src;
|
||||
|
||||
g_return_if_fail (GST_IS_AUDIOFILTER (object));
|
||||
src = GST_AUDIOFILTER (object);
|
||||
g_return_if_fail (GST_IS_AUDIO_FILTER (object));
|
||||
src = GST_AUDIO_FILTER (object);
|
||||
|
||||
switch (prop_id) {
|
||||
default:
|
||||
|
@ -287,7 +287,7 @@ gst_audiofilter_get_property (GObject * object, guint prop_id, GValue * value,
|
|||
}
|
||||
|
||||
void
|
||||
gst_audiofilter_class_add_pad_templates (GstAudiofilterClass *
|
||||
gst_audio_filter_class_add_pad_templates (GstAudiofilterClass *
|
||||
audiofilter_class, const GstCaps * caps)
|
||||
{
|
||||
GstElementClass *element_class = GST_ELEMENT_CLASS (audiofilter_class);
|
||||
|
|
|
@ -18,8 +18,8 @@
|
|||
*/
|
||||
|
||||
|
||||
#ifndef __GST_AUDIOFILTER_H__
|
||||
#define __GST_AUDIOFILTER_H__
|
||||
#ifndef __GST_AUDIO_FILTER_H__
|
||||
#define __GST_AUDIO_FILTER_H__
|
||||
|
||||
|
||||
#include <gst/gst.h>
|
||||
|
@ -38,16 +38,16 @@ typedef void (*GstAudiofilterInplaceFilterFunc)(GstAudiofilter *filter,
|
|||
typedef void (*GstAudiofilterSetupFunc) (GstAudiofilter *filter);
|
||||
|
||||
|
||||
#define GST_TYPE_AUDIOFILTER \
|
||||
(gst_audiofilter_get_type())
|
||||
#define GST_AUDIOFILTER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIOFILTER,GstAudiofilter))
|
||||
#define GST_AUDIOFILTER_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIOFILTER,GstAudiofilterClass))
|
||||
#define GST_IS_AUDIOFILTER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIOFILTER))
|
||||
#define GST_IS_AUDIOFILTER_CLASS(obj) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIOFILTER))
|
||||
#define GST_TYPE_AUDIO_FILTER \
|
||||
(gst_audio_filter_get_type())
|
||||
#define GST_AUDIO_FILTER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIO_FILTER,GstAudiofilter))
|
||||
#define GST_AUDIO_FILTER_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIO_FILTER,GstAudiofilterClass))
|
||||
#define GST_IS_AUDIO_FILTER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIO_FILTER))
|
||||
#define GST_IS_AUDIO_FILTER_CLASS(obj) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIO_FILTER))
|
||||
|
||||
struct _GstAudiofilter {
|
||||
GstElement element;
|
||||
|
@ -77,11 +77,11 @@ struct _GstAudiofilterClass {
|
|||
GstAudiofilterFilterFunc filter;
|
||||
};
|
||||
|
||||
GType gst_audiofilter_get_type(void);
|
||||
GType gst_audio_filter_get_type(void);
|
||||
|
||||
void gst_audiofilter_class_add_pad_templates (GstAudiofilterClass *audiofilterclass, const GstCaps *caps);
|
||||
void gst_audio_filter_class_add_pad_templates (GstAudiofilterClass *audiofilterclass, const GstCaps *caps);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GST_AUDIOFILTER_H__ */
|
||||
#endif /* __GST_AUDIO_FILTER_H__ */
|
||||
|
||||
|
|
|
@ -37,16 +37,16 @@
|
|||
typedef struct _GstAudiofilterTemplate GstAudiofilterTemplate;
|
||||
typedef struct _GstAudiofilterTemplateClass GstAudiofilterTemplateClass;
|
||||
|
||||
#define GST_TYPE_AUDIOFILTER_TEMPLATE \
|
||||
(gst_audiofilter_template_get_type())
|
||||
#define GST_AUDIOFILTER_TEMPLATE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIOFILTER_TEMPLATE,GstAudiofilterTemplate))
|
||||
#define GST_AUDIOFILTER_TEMPLATE_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIOFILTER_TEMPLATE,GstAudiofilterTemplateClass))
|
||||
#define GST_IS_AUDIOFILTER_TEMPLATE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIOFILTER_TEMPLATE))
|
||||
#define GST_IS_AUDIOFILTER_TEMPLATE_CLASS(obj) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIOFILTER_TEMPLATE))
|
||||
#define GST_TYPE_AUDIO_FILTER_TEMPLATE \
|
||||
(gst_audio_filter_template_get_type())
|
||||
#define GST_AUDIO_FILTER_TEMPLATE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIO_FILTER_TEMPLATE,GstAudiofilterTemplate))
|
||||
#define GST_AUDIO_FILTER_TEMPLATE_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIO_FILTER_TEMPLATE,GstAudiofilterTemplateClass))
|
||||
#define GST_IS_AUDIO_FILTER_TEMPLATE(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIO_FILTER_TEMPLATE))
|
||||
#define GST_IS_AUDIO_FILTER_TEMPLATE_CLASS(obj) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIO_FILTER_TEMPLATE))
|
||||
|
||||
struct _GstAudiofilterTemplate
|
||||
{
|
||||
|
@ -73,49 +73,49 @@ enum
|
|||
/* FILL ME */
|
||||
};
|
||||
|
||||
static void gst_audiofilter_template_base_init (gpointer g_class);
|
||||
static void gst_audiofilter_template_class_init (gpointer g_class,
|
||||
static void gst_audio_filter_template_base_init (gpointer g_class);
|
||||
static void gst_audio_filter_template_class_init (gpointer g_class,
|
||||
gpointer class_data);
|
||||
static void gst_audiofilter_template_init (GTypeInstance * instance,
|
||||
static void gst_audio_filter_template_init (GTypeInstance * instance,
|
||||
gpointer g_class);
|
||||
|
||||
static void gst_audiofilter_template_set_property (GObject * object,
|
||||
static void gst_audio_filter_template_set_property (GObject * object,
|
||||
guint prop_id, const GValue * value, GParamSpec * pspec);
|
||||
static void gst_audiofilter_template_get_property (GObject * object,
|
||||
static void gst_audio_filter_template_get_property (GObject * object,
|
||||
guint prop_id, GValue * value, GParamSpec * pspec);
|
||||
|
||||
static void gst_audiofilter_template_setup (GstAudiofilter * audiofilter);
|
||||
static void gst_audiofilter_template_filter (GstAudiofilter * audiofilter,
|
||||
static void gst_audio_filter_template_setup (GstAudiofilter * audiofilter);
|
||||
static void gst_audio_filter_template_filter (GstAudiofilter * audiofilter,
|
||||
GstBuffer * outbuf, GstBuffer * inbuf);
|
||||
static void gst_audiofilter_template_filter_inplace (GstAudiofilter *
|
||||
static void gst_audio_filter_template_filter_inplace (GstAudiofilter *
|
||||
audiofilter, GstBuffer * buf);
|
||||
|
||||
GType
|
||||
gst_audiofilter_template_get_type (void)
|
||||
gst_audio_filter_template_get_type (void)
|
||||
{
|
||||
static GType audiofilter_template_type = 0;
|
||||
|
||||
if (!audiofilter_template_type) {
|
||||
static const GTypeInfo audiofilter_template_info = {
|
||||
sizeof (GstAudiofilterTemplateClass),
|
||||
gst_audiofilter_template_base_init,
|
||||
gst_audio_filter_template_base_init,
|
||||
NULL,
|
||||
gst_audiofilter_template_class_init,
|
||||
gst_audio_filter_template_class_init,
|
||||
NULL,
|
||||
gst_audiofilter_template_init,
|
||||
gst_audio_filter_template_init,
|
||||
sizeof (GstAudiofilterTemplate),
|
||||
0,
|
||||
NULL,
|
||||
};
|
||||
|
||||
audiofilter_template_type = g_type_register_static (GST_TYPE_AUDIOFILTER,
|
||||
audiofilter_template_type = g_type_register_static (GST_TYPE_AUDIO_FILTER,
|
||||
"GstAudiofilterTemplate", &audiofilter_template_info, 0);
|
||||
}
|
||||
return audiofilter_template_type;
|
||||
}
|
||||
|
||||
static void
|
||||
gst_audiofilter_template_base_init (gpointer g_class)
|
||||
gst_audio_filter_template_base_init (gpointer g_class)
|
||||
{
|
||||
static GstElementDetails audiofilter_template_details = {
|
||||
"Audio filter template",
|
||||
|
@ -128,12 +128,12 @@ gst_audiofilter_template_base_init (gpointer g_class)
|
|||
|
||||
gst_element_class_set_details (element_class, &audiofilter_template_details);
|
||||
|
||||
gst_audiofilter_class_add_pad_templates (GST_AUDIOFILTER_CLASS (g_class),
|
||||
gst_audio_filter_class_add_pad_templates (GST_AUDIO_FILTER_CLASS (g_class),
|
||||
gst_caps_from_string (GST_AUDIO_INT_STANDARD_PAD_TEMPLATE_CAPS));
|
||||
}
|
||||
|
||||
static void
|
||||
gst_audiofilter_template_class_init (gpointer g_class, gpointer class_data)
|
||||
gst_audio_filter_template_class_init (gpointer g_class, gpointer class_data)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstElementClass *gstelement_class;
|
||||
|
@ -152,37 +152,37 @@ gst_audiofilter_template_class_init (gpointer g_class, gpointer class_data)
|
|||
G_PARAM_READWRITE));
|
||||
#endif
|
||||
|
||||
gobject_class->set_property = gst_audiofilter_template_set_property;
|
||||
gobject_class->get_property = gst_audiofilter_template_get_property;
|
||||
gobject_class->set_property = gst_audio_filter_template_set_property;
|
||||
gobject_class->get_property = gst_audio_filter_template_get_property;
|
||||
|
||||
audiofilter_class->setup = gst_audiofilter_template_setup;
|
||||
audiofilter_class->filter = gst_audiofilter_template_filter;
|
||||
audiofilter_class->filter_inplace = gst_audiofilter_template_filter_inplace;
|
||||
audiofilter_class->setup = gst_audio_filter_template_setup;
|
||||
audiofilter_class->filter = gst_audio_filter_template_filter;
|
||||
audiofilter_class->filter_inplace = gst_audio_filter_template_filter_inplace;
|
||||
audiofilter_class->filter = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
gst_audiofilter_template_init (GTypeInstance * instance, gpointer g_class)
|
||||
gst_audio_filter_template_init (GTypeInstance * instance, gpointer g_class)
|
||||
{
|
||||
//GstAudiofilterTemplate *audiofilter_template = GST_AUDIOFILTER_TEMPLATE (instance);
|
||||
//GstAudiofilter *audiofilter = GST_AUDIOFILTER (instance);
|
||||
//GstAudiofilterTemplate *audiofilter_template = GST_AUDIO_FILTER_TEMPLATE (instance);
|
||||
//GstAudiofilter *audiofilter = GST_AUDIO_FILTER (instance);
|
||||
|
||||
GST_DEBUG ("gst_audiofilter_template_init");
|
||||
GST_DEBUG ("gst_audio_filter_template_init");
|
||||
|
||||
/* do stuff */
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
gst_audiofilter_template_set_property (GObject * object, guint prop_id,
|
||||
gst_audio_filter_template_set_property (GObject * object, guint prop_id,
|
||||
const GValue * value, GParamSpec * pspec)
|
||||
{
|
||||
GstAudiofilterTemplate *src;
|
||||
|
||||
g_return_if_fail (GST_IS_AUDIOFILTER_TEMPLATE (object));
|
||||
src = GST_AUDIOFILTER_TEMPLATE (object);
|
||||
g_return_if_fail (GST_IS_AUDIO_FILTER_TEMPLATE (object));
|
||||
src = GST_AUDIO_FILTER_TEMPLATE (object);
|
||||
|
||||
GST_DEBUG ("gst_audiofilter_template_set_property");
|
||||
GST_DEBUG ("gst_audio_filter_template_set_property");
|
||||
switch (prop_id) {
|
||||
default:
|
||||
break;
|
||||
|
@ -190,13 +190,13 @@ gst_audiofilter_template_set_property (GObject * object, guint prop_id,
|
|||
}
|
||||
|
||||
static void
|
||||
gst_audiofilter_template_get_property (GObject * object, guint prop_id,
|
||||
gst_audio_filter_template_get_property (GObject * object, guint prop_id,
|
||||
GValue * value, GParamSpec * pspec)
|
||||
{
|
||||
GstAudiofilterTemplate *src;
|
||||
|
||||
g_return_if_fail (GST_IS_AUDIOFILTER_TEMPLATE (object));
|
||||
src = GST_AUDIOFILTER_TEMPLATE (object);
|
||||
g_return_if_fail (GST_IS_AUDIO_FILTER_TEMPLATE (object));
|
||||
src = GST_AUDIO_FILTER_TEMPLATE (object);
|
||||
|
||||
switch (prop_id) {
|
||||
default:
|
||||
|
@ -209,7 +209,7 @@ static gboolean
|
|||
plugin_init (GstPlugin * plugin)
|
||||
{
|
||||
return gst_element_register (plugin, "audiofiltertemplate", GST_RANK_NONE,
|
||||
GST_TYPE_AUDIOFILTER_TEMPLATE);
|
||||
GST_TYPE_AUDIO_FILTER_TEMPLATE);
|
||||
}
|
||||
|
||||
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
|
||||
|
@ -218,12 +218,12 @@ GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
|
|||
"Audio filter template",
|
||||
plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)
|
||||
|
||||
static void gst_audiofilter_template_setup (GstAudiofilter * audiofilter)
|
||||
static void gst_audio_filter_template_setup (GstAudiofilter * audiofilter)
|
||||
{
|
||||
GstAudiofilterTemplate *audiofilter_template;
|
||||
|
||||
g_return_if_fail (GST_IS_AUDIOFILTER_TEMPLATE (audiofilter));
|
||||
audiofilter_template = GST_AUDIOFILTER_TEMPLATE (audiofilter);
|
||||
g_return_if_fail (GST_IS_AUDIO_FILTER_TEMPLATE (audiofilter));
|
||||
audiofilter_template = GST_AUDIO_FILTER_TEMPLATE (audiofilter);
|
||||
|
||||
/* if any setup needs to be done, do it here */
|
||||
|
||||
|
@ -236,13 +236,13 @@ GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
|
|||
* with a minimum of memory copies. */
|
||||
|
||||
static void
|
||||
gst_audiofilter_template_filter (GstAudiofilter * audiofilter,
|
||||
gst_audio_filter_template_filter (GstAudiofilter * audiofilter,
|
||||
GstBuffer * outbuf, GstBuffer * inbuf)
|
||||
{
|
||||
GstAudiofilterTemplate *audiofilter_template;
|
||||
|
||||
g_return_if_fail (GST_IS_AUDIOFILTER_TEMPLATE (audiofilter));
|
||||
audiofilter_template = GST_AUDIOFILTER_TEMPLATE (audiofilter);
|
||||
g_return_if_fail (GST_IS_AUDIO_FILTER_TEMPLATE (audiofilter));
|
||||
audiofilter_template = GST_AUDIO_FILTER_TEMPLATE (audiofilter);
|
||||
|
||||
/* do something interesting here. This simply copies the source
|
||||
* to the destination. */
|
||||
|
@ -251,13 +251,13 @@ gst_audiofilter_template_filter (GstAudiofilter * audiofilter,
|
|||
}
|
||||
|
||||
static void
|
||||
gst_audiofilter_template_filter_inplace (GstAudiofilter * audiofilter,
|
||||
gst_audio_filter_template_filter_inplace (GstAudiofilter * audiofilter,
|
||||
GstBuffer * buf)
|
||||
{
|
||||
GstAudiofilterTemplate *audiofilter_template;
|
||||
|
||||
g_return_if_fail (GST_IS_AUDIOFILTER_TEMPLATE (audiofilter));
|
||||
audiofilter_template = GST_AUDIOFILTER_TEMPLATE (audiofilter);
|
||||
g_return_if_fail (GST_IS_AUDIO_FILTER_TEMPLATE (audiofilter));
|
||||
audiofilter_template = GST_AUDIO_FILTER_TEMPLATE (audiofilter);
|
||||
|
||||
/* do something interesting here. This simply copies the source
|
||||
* to the destination. */
|
||||
|
|
|
@ -24,29 +24,29 @@
|
|||
|
||||
#include "gstaudiosink.h"
|
||||
|
||||
GST_DEBUG_CATEGORY_STATIC (gst_audiosink_debug);
|
||||
#define GST_CAT_DEFAULT gst_audiosink_debug
|
||||
GST_DEBUG_CATEGORY_STATIC (gst_audio_sink_debug);
|
||||
#define GST_CAT_DEFAULT gst_audio_sink_debug
|
||||
|
||||
#define GST_TYPE_AUDIORINGBUFFER \
|
||||
#define GST_TYPE_AUDIORING_BUFFER \
|
||||
(gst_audioringbuffer_get_type())
|
||||
#define GST_AUDIORINGBUFFER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIORINGBUFFER,GstAudioRingBuffer))
|
||||
#define GST_AUDIORINGBUFFER_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIORINGBUFFER,GstAudioRingBufferClass))
|
||||
#define GST_AUDIORINGBUFFER_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_AUDIORINGBUFFER, GstAudioRingBufferClass))
|
||||
#define GST_IS_AUDIORINGBUFFER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIORINGBUFFER))
|
||||
#define GST_IS_AUDIORINGBUFFER_CLASS(obj)\
|
||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIORINGBUFFER))
|
||||
#define GST_AUDIORING_BUFFER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIORING_BUFFER,GstAudioRingBuffer))
|
||||
#define GST_AUDIORING_BUFFER_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIORING_BUFFER,GstAudioRingBufferClass))
|
||||
#define GST_AUDIORING_BUFFER_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_AUDIORING_BUFFER, GstAudioRingBufferClass))
|
||||
#define GST_IS_AUDIORING_BUFFER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIORING_BUFFER))
|
||||
#define GST_IS_AUDIORING_BUFFER_CLASS(obj)\
|
||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIORING_BUFFER))
|
||||
|
||||
typedef struct _GstAudioRingBuffer GstAudioRingBuffer;
|
||||
typedef struct _GstAudioRingBufferClass GstAudioRingBufferClass;
|
||||
|
||||
#define GST_AUDIORINGBUFFER_GET_COND(buf) (((GstAudioRingBuffer *)buf)->cond)
|
||||
#define GST_AUDIORINGBUFFER_WAIT(buf) (g_cond_wait (GST_AUDIORINGBUFFER_GET_COND (buf), GST_GET_LOCK (buf)))
|
||||
#define GST_AUDIORINGBUFFER_SIGNAL(buf) (g_cond_signal (GST_AUDIORINGBUFFER_GET_COND (buf)))
|
||||
#define GST_AUDIORINGBUFFER_BROADCAST(buf)(g_cond_broadcast (GST_AUDIORINGBUFFER_GET_COND (buf)))
|
||||
#define GST_AUDIORING_BUFFER_GET_COND(buf) (((GstAudioRingBuffer *)buf)->cond)
|
||||
#define GST_AUDIORING_BUFFER_WAIT(buf) (g_cond_wait (GST_AUDIORING_BUFFER_GET_COND (buf), GST_GET_LOCK (buf)))
|
||||
#define GST_AUDIORING_BUFFER_SIGNAL(buf) (g_cond_signal (GST_AUDIORING_BUFFER_GET_COND (buf)))
|
||||
#define GST_AUDIORING_BUFFER_BROADCAST(buf)(g_cond_broadcast (GST_AUDIORING_BUFFER_GET_COND (buf)))
|
||||
|
||||
struct _GstAudioRingBuffer
|
||||
{
|
||||
|
@ -98,7 +98,7 @@ gst_audioringbuffer_get_type (void)
|
|||
};
|
||||
|
||||
ringbuffer_type =
|
||||
g_type_register_static (GST_TYPE_RINGBUFFER, "GstAudioSinkRingBuffer",
|
||||
g_type_register_static (GST_TYPE_RING_BUFFER, "GstAudioSinkRingBuffer",
|
||||
&ringbuffer_info, 0);
|
||||
}
|
||||
return ringbuffer_type;
|
||||
|
@ -115,7 +115,7 @@ gst_audioringbuffer_class_init (GstAudioRingBufferClass * klass)
|
|||
gstobject_class = (GstObjectClass *) klass;
|
||||
gstringbuffer_class = (GstRingBufferClass *) klass;
|
||||
|
||||
ring_parent_class = g_type_class_ref (GST_TYPE_RINGBUFFER);
|
||||
ring_parent_class = g_type_class_ref (GST_TYPE_RING_BUFFER);
|
||||
|
||||
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_audioringbuffer_dispose);
|
||||
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_audioringbuffer_finalize);
|
||||
|
@ -143,11 +143,11 @@ audioringbuffer_thread_func (GstRingBuffer * buf)
|
|||
{
|
||||
GstAudioSink *sink;
|
||||
GstAudioSinkClass *csink;
|
||||
GstAudioRingBuffer *abuf = GST_AUDIORINGBUFFER (buf);
|
||||
GstAudioRingBuffer *abuf = GST_AUDIORING_BUFFER (buf);
|
||||
WriteFunc writefunc;
|
||||
|
||||
sink = GST_AUDIOSINK (GST_OBJECT_PARENT (buf));
|
||||
csink = GST_AUDIOSINK_GET_CLASS (sink);
|
||||
sink = GST_AUDIO_SINK (GST_OBJECT_PARENT (buf));
|
||||
csink = GST_AUDIO_SINK_GET_CLASS (sink);
|
||||
|
||||
GST_DEBUG ("enter thread");
|
||||
|
||||
|
@ -160,7 +160,7 @@ audioringbuffer_thread_func (GstRingBuffer * buf)
|
|||
guint8 *readptr;
|
||||
gint readseg;
|
||||
|
||||
if (gst_ringbuffer_prepare_read (buf, &readseg, &readptr, &len)) {
|
||||
if (gst_ring_buffer_prepare_read (buf, &readseg, &readptr, &len)) {
|
||||
gint written = 0;
|
||||
|
||||
left = len;
|
||||
|
@ -177,18 +177,18 @@ audioringbuffer_thread_func (GstRingBuffer * buf)
|
|||
} while (left > 0);
|
||||
|
||||
/* clear written samples */
|
||||
gst_ringbuffer_clear (buf, readseg);
|
||||
gst_ring_buffer_clear (buf, readseg);
|
||||
|
||||
/* we wrote one segment */
|
||||
gst_ringbuffer_advance (buf, 1);
|
||||
gst_ring_buffer_advance (buf, 1);
|
||||
} else {
|
||||
GST_LOCK (abuf);
|
||||
if (!abuf->running)
|
||||
goto stop_running;
|
||||
GST_DEBUG ("signal wait");
|
||||
GST_AUDIORINGBUFFER_SIGNAL (buf);
|
||||
GST_AUDIORING_BUFFER_SIGNAL (buf);
|
||||
GST_DEBUG ("wait for action");
|
||||
GST_AUDIORINGBUFFER_WAIT (buf);
|
||||
GST_AUDIORING_BUFFER_WAIT (buf);
|
||||
GST_DEBUG ("got signal");
|
||||
if (!abuf->running)
|
||||
goto stop_running;
|
||||
|
@ -243,8 +243,8 @@ gst_audioringbuffer_acquire (GstRingBuffer * buf, GstRingBufferSpec * spec)
|
|||
GstAudioRingBuffer *abuf;
|
||||
gboolean result = FALSE;
|
||||
|
||||
sink = GST_AUDIOSINK (GST_OBJECT_PARENT (buf));
|
||||
csink = GST_AUDIOSINK_GET_CLASS (sink);
|
||||
sink = GST_AUDIO_SINK (GST_OBJECT_PARENT (buf));
|
||||
csink = GST_AUDIO_SINK_GET_CLASS (sink);
|
||||
|
||||
if (csink->open)
|
||||
result = csink->open (sink, spec);
|
||||
|
@ -258,13 +258,13 @@ gst_audioringbuffer_acquire (GstRingBuffer * buf, GstRingBufferSpec * spec)
|
|||
buf->data = gst_buffer_new_and_alloc (spec->segtotal * spec->segsize);
|
||||
memset (GST_BUFFER_DATA (buf->data), 0, GST_BUFFER_SIZE (buf->data));
|
||||
|
||||
abuf = GST_AUDIORINGBUFFER (buf);
|
||||
abuf = GST_AUDIORING_BUFFER (buf);
|
||||
abuf->running = TRUE;
|
||||
|
||||
sink->thread =
|
||||
g_thread_create ((GThreadFunc) audioringbuffer_thread_func, buf, TRUE,
|
||||
NULL);
|
||||
GST_AUDIORINGBUFFER_WAIT (buf);
|
||||
GST_AUDIORING_BUFFER_WAIT (buf);
|
||||
|
||||
return result;
|
||||
|
||||
|
@ -283,12 +283,12 @@ gst_audioringbuffer_release (GstRingBuffer * buf)
|
|||
GstAudioRingBuffer *abuf;
|
||||
gboolean result = FALSE;
|
||||
|
||||
sink = GST_AUDIOSINK (GST_OBJECT_PARENT (buf));
|
||||
csink = GST_AUDIOSINK_GET_CLASS (sink);
|
||||
abuf = GST_AUDIORINGBUFFER (buf);
|
||||
sink = GST_AUDIO_SINK (GST_OBJECT_PARENT (buf));
|
||||
csink = GST_AUDIO_SINK_GET_CLASS (sink);
|
||||
abuf = GST_AUDIORING_BUFFER (buf);
|
||||
|
||||
abuf->running = FALSE;
|
||||
GST_AUDIORINGBUFFER_SIGNAL (buf);
|
||||
GST_AUDIORING_BUFFER_SIGNAL (buf);
|
||||
GST_UNLOCK (buf);
|
||||
|
||||
/* join the thread */
|
||||
|
@ -311,10 +311,10 @@ gst_audioringbuffer_start (GstRingBuffer * buf)
|
|||
{
|
||||
GstAudioSink *sink;
|
||||
|
||||
sink = GST_AUDIOSINK (GST_OBJECT_PARENT (buf));
|
||||
sink = GST_AUDIO_SINK (GST_OBJECT_PARENT (buf));
|
||||
|
||||
GST_DEBUG ("start, sending signal");
|
||||
GST_AUDIORINGBUFFER_SIGNAL (buf);
|
||||
GST_AUDIORING_BUFFER_SIGNAL (buf);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -325,8 +325,8 @@ gst_audioringbuffer_stop (GstRingBuffer * buf)
|
|||
GstAudioSink *sink;
|
||||
GstAudioSinkClass *csink;
|
||||
|
||||
sink = GST_AUDIOSINK (GST_OBJECT_PARENT (buf));
|
||||
csink = GST_AUDIOSINK_GET_CLASS (sink);
|
||||
sink = GST_AUDIO_SINK (GST_OBJECT_PARENT (buf));
|
||||
csink = GST_AUDIO_SINK_GET_CLASS (sink);
|
||||
|
||||
/* unblock any pending writes to the audio device */
|
||||
if (csink->reset) {
|
||||
|
@ -336,7 +336,7 @@ gst_audioringbuffer_stop (GstRingBuffer * buf)
|
|||
}
|
||||
|
||||
GST_DEBUG ("stop, waiting...");
|
||||
GST_AUDIORINGBUFFER_WAIT (buf);
|
||||
GST_AUDIORING_BUFFER_WAIT (buf);
|
||||
GST_DEBUG ("stoped");
|
||||
|
||||
return TRUE;
|
||||
|
@ -349,8 +349,8 @@ gst_audioringbuffer_delay (GstRingBuffer * buf)
|
|||
GstAudioSinkClass *csink;
|
||||
guint res = 0;
|
||||
|
||||
sink = GST_AUDIOSINK (GST_OBJECT_PARENT (buf));
|
||||
csink = GST_AUDIOSINK_GET_CLASS (sink);
|
||||
sink = GST_AUDIO_SINK (GST_OBJECT_PARENT (buf));
|
||||
csink = GST_AUDIO_SINK_GET_CLASS (sink);
|
||||
|
||||
if (csink->delay)
|
||||
res = csink->delay (sink);
|
||||
|
@ -371,20 +371,21 @@ enum
|
|||
};
|
||||
|
||||
#define _do_init(bla) \
|
||||
GST_DEBUG_CATEGORY_INIT (gst_audiosink_debug, "audiosink", 0, "audiosink element");
|
||||
GST_DEBUG_CATEGORY_INIT (gst_audio_sink_debug, "audiosink", 0, "audiosink element");
|
||||
|
||||
GST_BOILERPLATE_FULL (GstAudioSink, gst_audiosink, GstBaseAudioSink,
|
||||
GST_TYPE_BASEAUDIOSINK, _do_init);
|
||||
GST_BOILERPLATE_FULL (GstAudioSink, gst_audio_sink, GstBaseAudioSink,
|
||||
GST_TYPE_BASE_AUDIO_SINK, _do_init);
|
||||
|
||||
static GstRingBuffer *gst_audiosink_create_ringbuffer (GstBaseAudioSink * sink);
|
||||
static GstRingBuffer *gst_audio_sink_create_ringbuffer (GstBaseAudioSink *
|
||||
sink);
|
||||
|
||||
static void
|
||||
gst_audiosink_base_init (gpointer g_class)
|
||||
gst_audio_sink_base_init (gpointer g_class)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
gst_audiosink_class_init (GstAudioSinkClass * klass)
|
||||
gst_audio_sink_class_init (GstAudioSinkClass * klass)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstElementClass *gstelement_class;
|
||||
|
@ -397,21 +398,21 @@ gst_audiosink_class_init (GstAudioSinkClass * klass)
|
|||
gstbaseaudiosink_class = (GstBaseAudioSinkClass *) klass;
|
||||
|
||||
gstbaseaudiosink_class->create_ringbuffer =
|
||||
GST_DEBUG_FUNCPTR (gst_audiosink_create_ringbuffer);
|
||||
GST_DEBUG_FUNCPTR (gst_audio_sink_create_ringbuffer);
|
||||
}
|
||||
|
||||
static void
|
||||
gst_audiosink_init (GstAudioSink * audiosink)
|
||||
gst_audio_sink_init (GstAudioSink * audiosink)
|
||||
{
|
||||
}
|
||||
|
||||
static GstRingBuffer *
|
||||
gst_audiosink_create_ringbuffer (GstBaseAudioSink * sink)
|
||||
gst_audio_sink_create_ringbuffer (GstBaseAudioSink * sink)
|
||||
{
|
||||
GstRingBuffer *buffer;
|
||||
|
||||
GST_DEBUG ("creating ringbuffer");
|
||||
buffer = g_object_new (GST_TYPE_AUDIORINGBUFFER, NULL);
|
||||
buffer = g_object_new (GST_TYPE_AUDIORING_BUFFER, NULL);
|
||||
GST_DEBUG ("created ringbuffer @%p", buffer);
|
||||
|
||||
return buffer;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
|
||||
* 2005 Wim Taymans <wim@fluendo.com>
|
||||
*
|
||||
* gstaudiosink.h:
|
||||
* gstaudiosink.h:
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
|
@ -32,30 +32,30 @@
|
|||
* - reset: unblock a write to the device and reset.
|
||||
*
|
||||
* All scheduling of samples and timestamps is done in this
|
||||
* base class together with the GstBaseAudioSink using a
|
||||
* base class together with the GstBaseAudioSink using a
|
||||
* default implementation of a ringbuffer that uses threads.
|
||||
*/
|
||||
|
||||
#ifndef __GST_AUDIOSINK_H__
|
||||
#define __GST_AUDIOSINK_H__
|
||||
#ifndef __GST_AUDIO_SINK_H__
|
||||
#define __GST_AUDIO_SINK_H__
|
||||
|
||||
#include <gst/gst.h>
|
||||
#include "gstbaseaudiosink.h"
|
||||
#include <gst/audio/gstbaseaudiosink.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GST_TYPE_AUDIOSINK (gst_audiosink_get_type())
|
||||
#define GST_AUDIOSINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIOSINK,GstAudioSink))
|
||||
#define GST_AUDIOSINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIOSINK,GstAudioSinkClass))
|
||||
#define GST_AUDIOSINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),GST_TYPE_AUDIOSINK,GstAudioSinkClass))
|
||||
#define GST_IS_AUDIOSINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIOSINK))
|
||||
#define GST_IS_AUDIOSINK_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIOSINK))
|
||||
#define GST_TYPE_AUDIO_SINK (gst_audio_sink_get_type())
|
||||
#define GST_AUDIO_SINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIO_SINK,GstAudioSink))
|
||||
#define GST_AUDIO_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIO_SINK,GstAudioSinkClass))
|
||||
#define GST_AUDIO_SINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),GST_TYPE_AUDIO_SINK,GstAudioSinkClass))
|
||||
#define GST_IS_AUDIO_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIO_SINK))
|
||||
#define GST_IS_AUDIO_SINK_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIO_SINK))
|
||||
|
||||
typedef struct _GstAudioSink GstAudioSink;
|
||||
typedef struct _GstAudioSinkClass GstAudioSinkClass;
|
||||
|
||||
struct _GstAudioSink {
|
||||
GstBaseAudioSink element;
|
||||
GstBaseAudioSink element;
|
||||
|
||||
/*< private >*/ /* with LOCK */
|
||||
GThread *thread;
|
||||
|
@ -78,8 +78,8 @@ struct _GstAudioSinkClass {
|
|||
void (*reset) (GstAudioSink *sink);
|
||||
};
|
||||
|
||||
GType gst_audiosink_get_type(void);
|
||||
GType gst_audio_sink_get_type(void);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GST_AUDIOSINK_H__ */
|
||||
#endif /* __GST_AUDIO_SINK_H__ */
|
||||
|
|
|
@ -24,29 +24,29 @@
|
|||
|
||||
#include "gstaudiosrc.h"
|
||||
|
||||
GST_DEBUG_CATEGORY_STATIC (gst_audiosrc_debug);
|
||||
#define GST_CAT_DEFAULT gst_audiosrc_debug
|
||||
GST_DEBUG_CATEGORY_STATIC (gst_audio_src_debug);
|
||||
#define GST_CAT_DEFAULT gst_audio_src_debug
|
||||
|
||||
#define GST_TYPE_AUDIORINGBUFFER \
|
||||
#define GST_TYPE_AUDIORING_BUFFER \
|
||||
(gst_audioringbuffer_get_type())
|
||||
#define GST_AUDIORINGBUFFER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIORINGBUFFER,GstAudioRingBuffer))
|
||||
#define GST_AUDIORINGBUFFER_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIORINGBUFFER,GstAudioRingBufferClass))
|
||||
#define GST_AUDIORINGBUFFER_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_AUDIORINGBUFFER, GstAudioRingBufferClass))
|
||||
#define GST_IS_AUDIORINGBUFFER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIORINGBUFFER))
|
||||
#define GST_IS_AUDIORINGBUFFER_CLASS(obj)\
|
||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIORINGBUFFER))
|
||||
#define GST_AUDIORING_BUFFER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIORING_BUFFER,GstAudioRingBuffer))
|
||||
#define GST_AUDIORING_BUFFER_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIORING_BUFFER,GstAudioRingBufferClass))
|
||||
#define GST_AUDIORING_BUFFER_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_AUDIORING_BUFFER, GstAudioRingBufferClass))
|
||||
#define GST_IS_AUDIORING_BUFFER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIORING_BUFFER))
|
||||
#define GST_IS_AUDIORING_BUFFER_CLASS(obj)\
|
||||
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIORING_BUFFER))
|
||||
|
||||
typedef struct _GstAudioRingBuffer GstAudioRingBuffer;
|
||||
typedef struct _GstAudioRingBufferClass GstAudioRingBufferClass;
|
||||
|
||||
#define GST_AUDIORINGBUFFER_GET_COND(buf) (((GstAudioRingBuffer *)buf)->cond)
|
||||
#define GST_AUDIORINGBUFFER_WAIT(buf) (g_cond_wait (GST_AUDIORINGBUFFER_GET_COND (buf), GST_GET_LOCK (buf)))
|
||||
#define GST_AUDIORINGBUFFER_SIGNAL(buf) (g_cond_signal (GST_AUDIORINGBUFFER_GET_COND (buf)))
|
||||
#define GST_AUDIORINGBUFFER_BROADCAST(buf)(g_cond_broadcast (GST_AUDIORINGBUFFER_GET_COND (buf)))
|
||||
#define GST_AUDIORING_BUFFER_GET_COND(buf) (((GstAudioRingBuffer *)buf)->cond)
|
||||
#define GST_AUDIORING_BUFFER_WAIT(buf) (g_cond_wait (GST_AUDIORING_BUFFER_GET_COND (buf), GST_GET_LOCK (buf)))
|
||||
#define GST_AUDIORING_BUFFER_SIGNAL(buf) (g_cond_signal (GST_AUDIORING_BUFFER_GET_COND (buf)))
|
||||
#define GST_AUDIORING_BUFFER_BROADCAST(buf)(g_cond_broadcast (GST_AUDIORING_BUFFER_GET_COND (buf)))
|
||||
|
||||
struct _GstAudioRingBuffer
|
||||
{
|
||||
|
@ -98,7 +98,7 @@ gst_audioringbuffer_get_type (void)
|
|||
};
|
||||
|
||||
ringbuffer_type =
|
||||
g_type_register_static (GST_TYPE_RINGBUFFER, "GstAudioSrcRingBuffer",
|
||||
g_type_register_static (GST_TYPE_RING_BUFFER, "GstAudioSrcRingBuffer",
|
||||
&ringbuffer_info, 0);
|
||||
}
|
||||
return ringbuffer_type;
|
||||
|
@ -115,7 +115,7 @@ gst_audioringbuffer_class_init (GstAudioRingBufferClass * klass)
|
|||
gstobject_class = (GstObjectClass *) klass;
|
||||
gstringbuffer_class = (GstRingBufferClass *) klass;
|
||||
|
||||
ring_parent_class = g_type_class_ref (GST_TYPE_RINGBUFFER);
|
||||
ring_parent_class = g_type_class_ref (GST_TYPE_RING_BUFFER);
|
||||
|
||||
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_audioringbuffer_dispose);
|
||||
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_audioringbuffer_finalize);
|
||||
|
@ -143,11 +143,11 @@ audioringbuffer_thread_func (GstRingBuffer * buf)
|
|||
{
|
||||
GstAudioSrc *src;
|
||||
GstAudioSrcClass *csrc;
|
||||
GstAudioRingBuffer *abuf = GST_AUDIORINGBUFFER (buf);
|
||||
GstAudioRingBuffer *abuf = GST_AUDIORING_BUFFER (buf);
|
||||
ReadFunc readfunc;
|
||||
|
||||
src = GST_AUDIOSRC (GST_OBJECT_PARENT (buf));
|
||||
csrc = GST_AUDIOSRC_GET_CLASS (src);
|
||||
src = GST_AUDIO_SRC (GST_OBJECT_PARENT (buf));
|
||||
csrc = GST_AUDIO_SRC_GET_CLASS (src);
|
||||
|
||||
GST_DEBUG ("enter thread");
|
||||
|
||||
|
@ -160,7 +160,7 @@ audioringbuffer_thread_func (GstRingBuffer * buf)
|
|||
guint8 *readptr;
|
||||
gint readseg;
|
||||
|
||||
if (gst_ringbuffer_prepare_read (buf, &readseg, &readptr, &len)) {
|
||||
if (gst_ring_buffer_prepare_read (buf, &readseg, &readptr, &len)) {
|
||||
gint read = 0;
|
||||
|
||||
left = len;
|
||||
|
@ -177,15 +177,15 @@ audioringbuffer_thread_func (GstRingBuffer * buf)
|
|||
} while (left > 0);
|
||||
|
||||
/* we read one segment */
|
||||
gst_ringbuffer_advance (buf, 1);
|
||||
gst_ring_buffer_advance (buf, 1);
|
||||
} else {
|
||||
GST_LOCK (abuf);
|
||||
if (!abuf->running)
|
||||
goto stop_running;
|
||||
GST_DEBUG ("signal wait");
|
||||
GST_AUDIORINGBUFFER_SIGNAL (buf);
|
||||
GST_AUDIORING_BUFFER_SIGNAL (buf);
|
||||
GST_DEBUG ("wait for action");
|
||||
GST_AUDIORINGBUFFER_WAIT (buf);
|
||||
GST_AUDIORING_BUFFER_WAIT (buf);
|
||||
GST_DEBUG ("got signal");
|
||||
if (!abuf->running)
|
||||
goto stop_running;
|
||||
|
@ -240,8 +240,8 @@ gst_audioringbuffer_acquire (GstRingBuffer * buf, GstRingBufferSpec * spec)
|
|||
GstAudioRingBuffer *abuf;
|
||||
gboolean result = FALSE;
|
||||
|
||||
src = GST_AUDIOSRC (GST_OBJECT_PARENT (buf));
|
||||
csrc = GST_AUDIOSRC_GET_CLASS (src);
|
||||
src = GST_AUDIO_SRC (GST_OBJECT_PARENT (buf));
|
||||
csrc = GST_AUDIO_SRC_GET_CLASS (src);
|
||||
|
||||
if (csrc->open)
|
||||
result = csrc->open (src, spec);
|
||||
|
@ -255,13 +255,13 @@ gst_audioringbuffer_acquire (GstRingBuffer * buf, GstRingBufferSpec * spec)
|
|||
buf->data = gst_buffer_new_and_alloc (spec->segtotal * spec->segsize);
|
||||
memset (GST_BUFFER_DATA (buf->data), 0, GST_BUFFER_SIZE (buf->data));
|
||||
|
||||
abuf = GST_AUDIORINGBUFFER (buf);
|
||||
abuf = GST_AUDIORING_BUFFER (buf);
|
||||
abuf->running = TRUE;
|
||||
|
||||
src->thread =
|
||||
g_thread_create ((GThreadFunc) audioringbuffer_thread_func, buf, TRUE,
|
||||
NULL);
|
||||
GST_AUDIORINGBUFFER_WAIT (buf);
|
||||
GST_AUDIORING_BUFFER_WAIT (buf);
|
||||
|
||||
return result;
|
||||
|
||||
|
@ -280,12 +280,12 @@ gst_audioringbuffer_release (GstRingBuffer * buf)
|
|||
GstAudioRingBuffer *abuf;
|
||||
gboolean result = FALSE;
|
||||
|
||||
src = GST_AUDIOSRC (GST_OBJECT_PARENT (buf));
|
||||
csrc = GST_AUDIOSRC_GET_CLASS (src);
|
||||
abuf = GST_AUDIORINGBUFFER (buf);
|
||||
src = GST_AUDIO_SRC (GST_OBJECT_PARENT (buf));
|
||||
csrc = GST_AUDIO_SRC_GET_CLASS (src);
|
||||
abuf = GST_AUDIORING_BUFFER (buf);
|
||||
|
||||
abuf->running = FALSE;
|
||||
GST_AUDIORINGBUFFER_SIGNAL (buf);
|
||||
GST_AUDIORING_BUFFER_SIGNAL (buf);
|
||||
GST_UNLOCK (buf);
|
||||
|
||||
/* join the thread */
|
||||
|
@ -308,10 +308,10 @@ gst_audioringbuffer_start (GstRingBuffer * buf)
|
|||
{
|
||||
GstAudioSrc *src;
|
||||
|
||||
src = GST_AUDIOSRC (GST_OBJECT_PARENT (buf));
|
||||
src = GST_AUDIO_SRC (GST_OBJECT_PARENT (buf));
|
||||
|
||||
GST_DEBUG ("start, sending signal");
|
||||
GST_AUDIORINGBUFFER_SIGNAL (buf);
|
||||
GST_AUDIORING_BUFFER_SIGNAL (buf);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -322,8 +322,8 @@ gst_audioringbuffer_stop (GstRingBuffer * buf)
|
|||
GstAudioSrc *src;
|
||||
GstAudioSrcClass *csrc;
|
||||
|
||||
src = GST_AUDIOSRC (GST_OBJECT_PARENT (buf));
|
||||
csrc = GST_AUDIOSRC_GET_CLASS (src);
|
||||
src = GST_AUDIO_SRC (GST_OBJECT_PARENT (buf));
|
||||
csrc = GST_AUDIO_SRC_GET_CLASS (src);
|
||||
|
||||
/* unblock any pending writes to the audio device */
|
||||
if (csrc->reset) {
|
||||
|
@ -333,7 +333,7 @@ gst_audioringbuffer_stop (GstRingBuffer * buf)
|
|||
}
|
||||
|
||||
GST_DEBUG ("stop, waiting...");
|
||||
GST_AUDIORINGBUFFER_WAIT (buf);
|
||||
GST_AUDIORING_BUFFER_WAIT (buf);
|
||||
GST_DEBUG ("stoped");
|
||||
|
||||
return TRUE;
|
||||
|
@ -346,8 +346,8 @@ gst_audioringbuffer_delay (GstRingBuffer * buf)
|
|||
GstAudioSrcClass *csrc;
|
||||
guint res = 0;
|
||||
|
||||
src = GST_AUDIOSRC (GST_OBJECT_PARENT (buf));
|
||||
csrc = GST_AUDIOSRC_GET_CLASS (src);
|
||||
src = GST_AUDIO_SRC (GST_OBJECT_PARENT (buf));
|
||||
csrc = GST_AUDIO_SRC_GET_CLASS (src);
|
||||
|
||||
if (csrc->delay)
|
||||
res = csrc->delay (src);
|
||||
|
@ -368,20 +368,20 @@ enum
|
|||
};
|
||||
|
||||
#define _do_init(bla) \
|
||||
GST_DEBUG_CATEGORY_INIT (gst_audiosrc_debug, "audiosrc", 0, "audiosrc element");
|
||||
GST_DEBUG_CATEGORY_INIT (gst_audio_src_debug, "audiosrc", 0, "audiosrc element");
|
||||
|
||||
GST_BOILERPLATE_FULL (GstAudioSrc, gst_audiosrc, GstBaseAudioSrc,
|
||||
GST_TYPE_BASEAUDIOSRC, _do_init);
|
||||
GST_BOILERPLATE_FULL (GstAudioSrc, gst_audio_src, GstBaseAudioSrc,
|
||||
GST_TYPE_BASE_AUDIO_SRC, _do_init);
|
||||
|
||||
static GstRingBuffer *gst_audiosrc_create_ringbuffer (GstBaseAudioSrc * src);
|
||||
static GstRingBuffer *gst_audio_src_create_ringbuffer (GstBaseAudioSrc * src);
|
||||
|
||||
static void
|
||||
gst_audiosrc_base_init (gpointer g_class)
|
||||
gst_audio_src_base_init (gpointer g_class)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
gst_audiosrc_class_init (GstAudioSrcClass * klass)
|
||||
gst_audio_src_class_init (GstAudioSrcClass * klass)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstElementClass *gstelement_class;
|
||||
|
@ -396,22 +396,22 @@ gst_audiosrc_class_init (GstAudioSrcClass * klass)
|
|||
gstbaseaudiosrc_class = (GstBaseAudioSrcClass *) klass;
|
||||
|
||||
gstbaseaudiosrc_class->create_ringbuffer =
|
||||
GST_DEBUG_FUNCPTR (gst_audiosrc_create_ringbuffer);
|
||||
GST_DEBUG_FUNCPTR (gst_audio_src_create_ringbuffer);
|
||||
}
|
||||
|
||||
static void
|
||||
gst_audiosrc_init (GstAudioSrc * audiosrc)
|
||||
gst_audio_src_init (GstAudioSrc * audiosrc)
|
||||
{
|
||||
gst_base_src_set_live (GST_BASE_SRC (audiosrc), TRUE);
|
||||
}
|
||||
|
||||
static GstRingBuffer *
|
||||
gst_audiosrc_create_ringbuffer (GstBaseAudioSrc * src)
|
||||
gst_audio_src_create_ringbuffer (GstBaseAudioSrc * src)
|
||||
{
|
||||
GstRingBuffer *buffer;
|
||||
|
||||
GST_DEBUG ("creating ringbuffer");
|
||||
buffer = g_object_new (GST_TYPE_AUDIORINGBUFFER, NULL);
|
||||
buffer = g_object_new (GST_TYPE_AUDIORING_BUFFER, NULL);
|
||||
GST_DEBUG ("created ringbuffer @%p", buffer);
|
||||
|
||||
return buffer;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
|
||||
* 2005 Wim Taymans <wim@fluendo.com>
|
||||
*
|
||||
* gstaudiosrc.h:
|
||||
* gstaudiosrc.h:
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
|
@ -35,26 +35,26 @@
|
|||
* base class.
|
||||
*/
|
||||
|
||||
#ifndef __GST_AUDIOSRC_H__
|
||||
#define __GST_AUDIOSRC_H__
|
||||
#ifndef __GST_AUDIO_SRC_H__
|
||||
#define __GST_AUDIO_SRC_H__
|
||||
|
||||
#include <gst/gst.h>
|
||||
#include <gst/audio/gstbaseaudiosrc.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GST_TYPE_AUDIOSRC (gst_audiosrc_get_type())
|
||||
#define GST_AUDIOSRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIOSRC,GstAudioSrc))
|
||||
#define GST_AUDIOSRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIOSRC,GstAudioSrcClass))
|
||||
#define GST_AUDIOSRC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),GST_TYPE_AUDIOSRC,GstAudioSrcClass))
|
||||
#define GST_IS_AUDIOSRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIOSRC))
|
||||
#define GST_IS_AUDIOSRC_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIOSRC))
|
||||
#define GST_TYPE_AUDIO_SRC (gst_audio_src_get_type())
|
||||
#define GST_AUDIO_SRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIO_SRC,GstAudioSrc))
|
||||
#define GST_AUDIO_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIO_SRC,GstAudioSrcClass))
|
||||
#define GST_AUDIO_SRC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),GST_TYPE_AUDIO_SRC,GstAudioSrcClass))
|
||||
#define GST_IS_AUDIO_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIO_SRC))
|
||||
#define GST_IS_AUDIO_SRC_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIO_SRC))
|
||||
|
||||
typedef struct _GstAudioSrc GstAudioSrc;
|
||||
typedef struct _GstAudioSrcClass GstAudioSrcClass;
|
||||
|
||||
struct _GstAudioSrc {
|
||||
GstBaseAudioSrc element;
|
||||
GstBaseAudioSrc element;
|
||||
|
||||
/*< private >*/ /* with LOCK */
|
||||
GThread *thread;
|
||||
|
@ -77,8 +77,8 @@ struct _GstAudioSrcClass {
|
|||
void (*reset) (GstAudioSrc *src);
|
||||
};
|
||||
|
||||
GType gst_audiosrc_get_type(void);
|
||||
GType gst_audio_src_get_type(void);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GST_AUDIOSRC_H__ */
|
||||
#endif /* __GST_AUDIO_SRC_H__ */
|
||||
|
|
|
@ -24,8 +24,8 @@
|
|||
|
||||
#include "gstbaseaudiosink.h"
|
||||
|
||||
GST_DEBUG_CATEGORY_STATIC (gst_baseaudiosink_debug);
|
||||
#define GST_CAT_DEFAULT gst_baseaudiosink_debug
|
||||
GST_DEBUG_CATEGORY_STATIC (gst_base_audio_sink_debug);
|
||||
#define GST_CAT_DEFAULT gst_base_audio_sink_debug
|
||||
|
||||
/* BaseAudioSink signals and args */
|
||||
enum
|
||||
|
@ -44,43 +44,45 @@ enum
|
|||
};
|
||||
|
||||
#define _do_init(bla) \
|
||||
GST_DEBUG_CATEGORY_INIT (gst_baseaudiosink_debug, "baseaudiosink", 0, "baseaudiosink element");
|
||||
GST_DEBUG_CATEGORY_INIT (gst_base_audio_sink_debug, "baseaudiosink", 0, "baseaudiosink element");
|
||||
|
||||
GST_BOILERPLATE_FULL (GstBaseAudioSink, gst_baseaudiosink, GstBaseSink,
|
||||
GST_TYPE_BASESINK, _do_init);
|
||||
GST_BOILERPLATE_FULL (GstBaseAudioSink, gst_base_audio_sink, GstBaseSink,
|
||||
GST_TYPE_BASE_SINK, _do_init);
|
||||
|
||||
static void gst_baseaudiosink_dispose (GObject * object);
|
||||
static void gst_base_audio_sink_dispose (GObject * object);
|
||||
|
||||
static void gst_baseaudiosink_set_property (GObject * object, guint prop_id,
|
||||
static void gst_base_audio_sink_set_property (GObject * object, guint prop_id,
|
||||
const GValue * value, GParamSpec * pspec);
|
||||
static void gst_baseaudiosink_get_property (GObject * object, guint prop_id,
|
||||
static void gst_base_audio_sink_get_property (GObject * object, guint prop_id,
|
||||
GValue * value, GParamSpec * pspec);
|
||||
|
||||
static GstElementStateReturn gst_baseaudiosink_change_state (GstElement *
|
||||
static GstElementStateReturn gst_base_audio_sink_change_state (GstElement *
|
||||
element);
|
||||
|
||||
static GstClock *gst_baseaudiosink_get_clock (GstElement * elem);
|
||||
static GstClockTime gst_baseaudiosink_get_time (GstClock * clock,
|
||||
static GstClock *gst_base_audio_sink_get_clock (GstElement * elem);
|
||||
static GstClockTime gst_base_audio_sink_get_time (GstClock * clock,
|
||||
GstBaseAudioSink * sink);
|
||||
|
||||
static GstFlowReturn gst_baseaudiosink_preroll (GstBaseSink * bsink,
|
||||
static GstFlowReturn gst_base_audio_sink_preroll (GstBaseSink * bsink,
|
||||
GstBuffer * buffer);
|
||||
static GstFlowReturn gst_baseaudiosink_render (GstBaseSink * bsink,
|
||||
static GstFlowReturn gst_base_audio_sink_render (GstBaseSink * bsink,
|
||||
GstBuffer * buffer);
|
||||
static gboolean gst_baseaudiosink_event (GstBaseSink * bsink, GstEvent * event);
|
||||
static void gst_baseaudiosink_get_times (GstBaseSink * bsink,
|
||||
static gboolean gst_base_audio_sink_event (GstBaseSink * bsink,
|
||||
GstEvent * event);
|
||||
static void gst_base_audio_sink_get_times (GstBaseSink * bsink,
|
||||
GstBuffer * buffer, GstClockTime * start, GstClockTime * end);
|
||||
static gboolean gst_baseaudiosink_setcaps (GstBaseSink * bsink, GstCaps * caps);
|
||||
static gboolean gst_base_audio_sink_setcaps (GstBaseSink * bsink,
|
||||
GstCaps * caps);
|
||||
|
||||
//static guint gst_baseaudiosink_signals[LAST_SIGNAL] = { 0 };
|
||||
//static guint gst_base_audio_sink_signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
static void
|
||||
gst_baseaudiosink_base_init (gpointer g_class)
|
||||
gst_base_audio_sink_base_init (gpointer g_class)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
gst_baseaudiosink_class_init (GstBaseAudioSinkClass * klass)
|
||||
gst_base_audio_sink_class_init (GstBaseAudioSinkClass * klass)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstElementClass *gstelement_class;
|
||||
|
@ -91,10 +93,10 @@ gst_baseaudiosink_class_init (GstBaseAudioSinkClass * klass)
|
|||
gstbasesink_class = (GstBaseSinkClass *) klass;
|
||||
|
||||
gobject_class->set_property =
|
||||
GST_DEBUG_FUNCPTR (gst_baseaudiosink_set_property);
|
||||
GST_DEBUG_FUNCPTR (gst_base_audio_sink_set_property);
|
||||
gobject_class->get_property =
|
||||
GST_DEBUG_FUNCPTR (gst_baseaudiosink_get_property);
|
||||
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_baseaudiosink_dispose);
|
||||
GST_DEBUG_FUNCPTR (gst_base_audio_sink_get_property);
|
||||
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_base_audio_sink_dispose);
|
||||
|
||||
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_BUFFER_TIME,
|
||||
g_param_spec_int64 ("buffer-time", "Buffer Time",
|
||||
|
@ -106,33 +108,34 @@ gst_baseaudiosink_class_init (GstBaseAudioSinkClass * klass)
|
|||
-1, G_MAXINT64, DEFAULT_LATENCY_TIME, G_PARAM_READWRITE));
|
||||
|
||||
gstelement_class->change_state =
|
||||
GST_DEBUG_FUNCPTR (gst_baseaudiosink_change_state);
|
||||
gstelement_class->get_clock = GST_DEBUG_FUNCPTR (gst_baseaudiosink_get_clock);
|
||||
GST_DEBUG_FUNCPTR (gst_base_audio_sink_change_state);
|
||||
gstelement_class->get_clock =
|
||||
GST_DEBUG_FUNCPTR (gst_base_audio_sink_get_clock);
|
||||
|
||||
gstbasesink_class->event = GST_DEBUG_FUNCPTR (gst_baseaudiosink_event);
|
||||
gstbasesink_class->preroll = GST_DEBUG_FUNCPTR (gst_baseaudiosink_preroll);
|
||||
gstbasesink_class->render = GST_DEBUG_FUNCPTR (gst_baseaudiosink_render);
|
||||
gstbasesink_class->event = GST_DEBUG_FUNCPTR (gst_base_audio_sink_event);
|
||||
gstbasesink_class->preroll = GST_DEBUG_FUNCPTR (gst_base_audio_sink_preroll);
|
||||
gstbasesink_class->render = GST_DEBUG_FUNCPTR (gst_base_audio_sink_render);
|
||||
gstbasesink_class->get_times =
|
||||
GST_DEBUG_FUNCPTR (gst_baseaudiosink_get_times);
|
||||
gstbasesink_class->set_caps = GST_DEBUG_FUNCPTR (gst_baseaudiosink_setcaps);
|
||||
GST_DEBUG_FUNCPTR (gst_base_audio_sink_get_times);
|
||||
gstbasesink_class->set_caps = GST_DEBUG_FUNCPTR (gst_base_audio_sink_setcaps);
|
||||
}
|
||||
|
||||
static void
|
||||
gst_baseaudiosink_init (GstBaseAudioSink * baseaudiosink)
|
||||
gst_base_audio_sink_init (GstBaseAudioSink * baseaudiosink)
|
||||
{
|
||||
baseaudiosink->buffer_time = DEFAULT_BUFFER_TIME;
|
||||
baseaudiosink->latency_time = DEFAULT_LATENCY_TIME;
|
||||
|
||||
baseaudiosink->clock = gst_audio_clock_new ("clock",
|
||||
(GstAudioClockGetTimeFunc) gst_baseaudiosink_get_time, baseaudiosink);
|
||||
(GstAudioClockGetTimeFunc) gst_base_audio_sink_get_time, baseaudiosink);
|
||||
}
|
||||
|
||||
static void
|
||||
gst_baseaudiosink_dispose (GObject * object)
|
||||
gst_base_audio_sink_dispose (GObject * object)
|
||||
{
|
||||
GstBaseAudioSink *sink;
|
||||
|
||||
sink = GST_BASEAUDIOSINK (object);
|
||||
sink = GST_BASE_AUDIO_SINK (object);
|
||||
|
||||
if (sink->clock)
|
||||
gst_object_unref (sink->clock);
|
||||
|
@ -142,17 +145,17 @@ gst_baseaudiosink_dispose (GObject * object)
|
|||
}
|
||||
|
||||
static GstClock *
|
||||
gst_baseaudiosink_get_clock (GstElement * elem)
|
||||
gst_base_audio_sink_get_clock (GstElement * elem)
|
||||
{
|
||||
GstBaseAudioSink *sink;
|
||||
|
||||
sink = GST_BASEAUDIOSINK (elem);
|
||||
sink = GST_BASE_AUDIO_SINK (elem);
|
||||
|
||||
return GST_CLOCK (gst_object_ref (sink->clock));
|
||||
}
|
||||
|
||||
static GstClockTime
|
||||
gst_baseaudiosink_get_time (GstClock * clock, GstBaseAudioSink * sink)
|
||||
gst_base_audio_sink_get_time (GstClock * clock, GstBaseAudioSink * sink)
|
||||
{
|
||||
guint64 samples;
|
||||
GstClockTime result;
|
||||
|
@ -160,7 +163,7 @@ gst_baseaudiosink_get_time (GstClock * clock, GstBaseAudioSink * sink)
|
|||
if (sink->ringbuffer == NULL || sink->ringbuffer->spec.rate == 0)
|
||||
return 0;
|
||||
|
||||
samples = gst_ringbuffer_samples_done (sink->ringbuffer);
|
||||
samples = gst_ring_buffer_samples_done (sink->ringbuffer);
|
||||
|
||||
result = samples * GST_SECOND / sink->ringbuffer->spec.rate;
|
||||
result += GST_ELEMENT (sink)->base_time;
|
||||
|
@ -169,12 +172,12 @@ gst_baseaudiosink_get_time (GstClock * clock, GstBaseAudioSink * sink)
|
|||
}
|
||||
|
||||
static void
|
||||
gst_baseaudiosink_set_property (GObject * object, guint prop_id,
|
||||
gst_base_audio_sink_set_property (GObject * object, guint prop_id,
|
||||
const GValue * value, GParamSpec * pspec)
|
||||
{
|
||||
GstBaseAudioSink *sink;
|
||||
|
||||
sink = GST_BASEAUDIOSINK (object);
|
||||
sink = GST_BASE_AUDIO_SINK (object);
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_BUFFER_TIME:
|
||||
|
@ -190,12 +193,12 @@ gst_baseaudiosink_set_property (GObject * object, guint prop_id,
|
|||
}
|
||||
|
||||
static void
|
||||
gst_baseaudiosink_get_property (GObject * object, guint prop_id, GValue * value,
|
||||
GParamSpec * pspec)
|
||||
gst_base_audio_sink_get_property (GObject * object, guint prop_id,
|
||||
GValue * value, GParamSpec * pspec)
|
||||
{
|
||||
GstBaseAudioSink *sink;
|
||||
|
||||
sink = GST_BASEAUDIOSINK (object);
|
||||
sink = GST_BASE_AUDIO_SINK (object);
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_BUFFER_TIME:
|
||||
|
@ -211,9 +214,9 @@ gst_baseaudiosink_get_property (GObject * object, guint prop_id, GValue * value,
|
|||
}
|
||||
|
||||
static gboolean
|
||||
gst_baseaudiosink_setcaps (GstBaseSink * bsink, GstCaps * caps)
|
||||
gst_base_audio_sink_setcaps (GstBaseSink * bsink, GstCaps * caps)
|
||||
{
|
||||
GstBaseAudioSink *sink = GST_BASEAUDIOSINK (bsink);
|
||||
GstBaseAudioSink *sink = GST_BASE_AUDIO_SINK (bsink);
|
||||
GstRingBufferSpec *spec;
|
||||
|
||||
spec = &sink->ringbuffer->spec;
|
||||
|
@ -221,7 +224,7 @@ gst_baseaudiosink_setcaps (GstBaseSink * bsink, GstCaps * caps)
|
|||
GST_DEBUG ("release old ringbuffer");
|
||||
|
||||
/* release old ringbuffer */
|
||||
gst_ringbuffer_release (sink->ringbuffer);
|
||||
gst_ring_buffer_release (sink->ringbuffer);
|
||||
|
||||
GST_DEBUG ("parse caps");
|
||||
|
||||
|
@ -229,14 +232,14 @@ gst_baseaudiosink_setcaps (GstBaseSink * bsink, GstCaps * caps)
|
|||
spec->latency_time = sink->latency_time;
|
||||
|
||||
/* parse new caps */
|
||||
if (!gst_ringbuffer_parse_caps (spec, caps))
|
||||
if (!gst_ring_buffer_parse_caps (spec, caps))
|
||||
goto parse_error;
|
||||
|
||||
gst_ringbuffer_debug_spec_buff (spec);
|
||||
gst_ring_buffer_debug_spec_buff (spec);
|
||||
|
||||
GST_DEBUG ("acquire new ringbuffer");
|
||||
|
||||
if (!gst_ringbuffer_acquire (sink->ringbuffer, spec))
|
||||
if (!gst_ring_buffer_acquire (sink->ringbuffer, spec))
|
||||
goto acquire_error;
|
||||
|
||||
/* calculate actual latency and buffer times */
|
||||
|
@ -246,7 +249,7 @@ gst_baseaudiosink_setcaps (GstBaseSink * bsink, GstCaps * caps)
|
|||
spec->segtotal * spec->segsize * GST_MSECOND / (spec->rate *
|
||||
spec->bytes_per_sample);
|
||||
|
||||
gst_ringbuffer_debug_spec_buff (spec);
|
||||
gst_ring_buffer_debug_spec_buff (spec);
|
||||
|
||||
return TRUE;
|
||||
|
||||
|
@ -264,7 +267,7 @@ acquire_error:
|
|||
}
|
||||
|
||||
static void
|
||||
gst_baseaudiosink_get_times (GstBaseSink * bsink, GstBuffer * buffer,
|
||||
gst_base_audio_sink_get_times (GstBaseSink * bsink, GstBuffer * buffer,
|
||||
GstClockTime * start, GstClockTime * end)
|
||||
{
|
||||
/* ne need to sync to a clock here, we schedule the samples based
|
||||
|
@ -275,15 +278,15 @@ gst_baseaudiosink_get_times (GstBaseSink * bsink, GstBuffer * buffer,
|
|||
}
|
||||
|
||||
static gboolean
|
||||
gst_baseaudiosink_event (GstBaseSink * bsink, GstEvent * event)
|
||||
gst_base_audio_sink_event (GstBaseSink * bsink, GstEvent * event)
|
||||
{
|
||||
GstBaseAudioSink *sink = GST_BASEAUDIOSINK (bsink);
|
||||
GstBaseAudioSink *sink = GST_BASE_AUDIO_SINK (bsink);
|
||||
|
||||
switch (GST_EVENT_TYPE (event)) {
|
||||
case GST_EVENT_FLUSH:
|
||||
if (GST_EVENT_FLUSH_DONE (event)) {
|
||||
} else {
|
||||
gst_ringbuffer_pause (sink->ringbuffer);
|
||||
gst_ring_buffer_pause (sink->ringbuffer);
|
||||
}
|
||||
break;
|
||||
case GST_EVENT_DISCONTINUOUS:
|
||||
|
@ -302,7 +305,7 @@ gst_baseaudiosink_event (GstBaseSink * bsink, GstEvent * event)
|
|||
|
||||
have_value:
|
||||
GST_DEBUG ("discont now at %lld", sample);
|
||||
gst_ringbuffer_set_sample (sink->ringbuffer, sample);
|
||||
gst_ring_buffer_set_sample (sink->ringbuffer, sample);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
@ -312,11 +315,11 @@ gst_baseaudiosink_event (GstBaseSink * bsink, GstEvent * event)
|
|||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_baseaudiosink_preroll (GstBaseSink * bsink, GstBuffer * buffer)
|
||||
gst_base_audio_sink_preroll (GstBaseSink * bsink, GstBuffer * buffer)
|
||||
{
|
||||
GstBaseAudioSink *sink = GST_BASEAUDIOSINK (bsink);
|
||||
GstBaseAudioSink *sink = GST_BASE_AUDIO_SINK (bsink);
|
||||
|
||||
if (!gst_ringbuffer_is_acquired (sink->ringbuffer))
|
||||
if (!gst_ring_buffer_is_acquired (sink->ringbuffer))
|
||||
goto wrong_state;
|
||||
|
||||
/* we don't really do anything when prerolling. We could make a
|
||||
|
@ -334,19 +337,19 @@ wrong_state:
|
|||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_baseaudiosink_render (GstBaseSink * bsink, GstBuffer * buf)
|
||||
gst_base_audio_sink_render (GstBaseSink * bsink, GstBuffer * buf)
|
||||
{
|
||||
guint64 offset;
|
||||
GstBaseAudioSink *sink = GST_BASEAUDIOSINK (bsink);
|
||||
GstBaseAudioSink *sink = GST_BASE_AUDIO_SINK (bsink);
|
||||
|
||||
offset = GST_BUFFER_OFFSET (buf);
|
||||
|
||||
GST_DEBUG ("in offset %llu, time %" GST_TIME_FORMAT, offset,
|
||||
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
|
||||
if (!gst_ringbuffer_is_acquired (sink->ringbuffer))
|
||||
if (!gst_ring_buffer_is_acquired (sink->ringbuffer))
|
||||
goto wrong_state;
|
||||
|
||||
gst_ringbuffer_commit (sink->ringbuffer, offset,
|
||||
gst_ring_buffer_commit (sink->ringbuffer, offset,
|
||||
GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
|
||||
|
||||
return GST_FLOW_OK;
|
||||
|
@ -361,12 +364,12 @@ wrong_state:
|
|||
}
|
||||
|
||||
GstRingBuffer *
|
||||
gst_baseaudiosink_create_ringbuffer (GstBaseAudioSink * sink)
|
||||
gst_base_audio_sink_create_ringbuffer (GstBaseAudioSink * sink)
|
||||
{
|
||||
GstBaseAudioSinkClass *bclass;
|
||||
GstRingBuffer *buffer = NULL;
|
||||
|
||||
bclass = GST_BASEAUDIOSINK_GET_CLASS (sink);
|
||||
bclass = GST_BASE_AUDIO_SINK_GET_CLASS (sink);
|
||||
if (bclass->create_ringbuffer)
|
||||
buffer = bclass->create_ringbuffer (sink);
|
||||
|
||||
|
@ -378,26 +381,26 @@ gst_baseaudiosink_create_ringbuffer (GstBaseAudioSink * sink)
|
|||
}
|
||||
|
||||
void
|
||||
gst_baseaudiosink_callback (GstRingBuffer * rbuf, guint8 * data, guint len,
|
||||
gst_base_audio_sink_callback (GstRingBuffer * rbuf, guint8 * data, guint len,
|
||||
gpointer user_data)
|
||||
{
|
||||
//GstBaseAudioSink *sink = GST_BASEAUDIOSINK (data);
|
||||
//GstBaseAudioSink *sink = GST_BASE_AUDIO_SINK (data);
|
||||
}
|
||||
|
||||
static GstElementStateReturn
|
||||
gst_baseaudiosink_change_state (GstElement * element)
|
||||
gst_base_audio_sink_change_state (GstElement * element)
|
||||
{
|
||||
GstElementStateReturn ret = GST_STATE_SUCCESS;
|
||||
GstBaseAudioSink *sink = GST_BASEAUDIOSINK (element);
|
||||
GstBaseAudioSink *sink = GST_BASE_AUDIO_SINK (element);
|
||||
GstElementState transition = GST_STATE_TRANSITION (element);
|
||||
|
||||
switch (transition) {
|
||||
case GST_STATE_NULL_TO_READY:
|
||||
break;
|
||||
case GST_STATE_READY_TO_PAUSED:
|
||||
sink->ringbuffer = gst_baseaudiosink_create_ringbuffer (sink);
|
||||
gst_ringbuffer_set_callback (sink->ringbuffer, gst_baseaudiosink_callback,
|
||||
sink);
|
||||
sink->ringbuffer = gst_base_audio_sink_create_ringbuffer (sink);
|
||||
gst_ring_buffer_set_callback (sink->ringbuffer,
|
||||
gst_base_audio_sink_callback, sink);
|
||||
break;
|
||||
case GST_STATE_PAUSED_TO_PLAYING:
|
||||
break;
|
||||
|
@ -409,14 +412,14 @@ gst_baseaudiosink_change_state (GstElement * element)
|
|||
|
||||
switch (transition) {
|
||||
case GST_STATE_PLAYING_TO_PAUSED:
|
||||
gst_ringbuffer_pause (sink->ringbuffer);
|
||||
gst_ring_buffer_pause (sink->ringbuffer);
|
||||
break;
|
||||
case GST_STATE_PAUSED_TO_READY:
|
||||
gst_ringbuffer_stop (sink->ringbuffer);
|
||||
gst_ringbuffer_release (sink->ringbuffer);
|
||||
gst_ring_buffer_stop (sink->ringbuffer);
|
||||
gst_ring_buffer_release (sink->ringbuffer);
|
||||
gst_object_unref (sink->ringbuffer);
|
||||
sink->ringbuffer = NULL;
|
||||
gst_pad_set_caps (GST_BASESINK_PAD (sink), NULL);
|
||||
gst_pad_set_caps (GST_BASE_SINK_PAD (sink), NULL);
|
||||
break;
|
||||
case GST_STATE_READY_TO_NULL:
|
||||
break;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
|
||||
* 2005 Wim Taymans <wim@fluendo.com>
|
||||
*
|
||||
* gstbaseaudiosink.h:
|
||||
* gstbaseaudiosink.h:
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
|
@ -23,7 +23,7 @@
|
|||
/* a base class for audio sinks.
|
||||
*
|
||||
* It uses a ringbuffer to schedule playback of samples. This makes
|
||||
* it very easy to drop or insert samples to align incomming
|
||||
* it very easy to drop or insert samples to align incoming
|
||||
* buffers to the exact playback timestamp.
|
||||
*
|
||||
* Subclasses must provide a ringbuffer pointing to either DMA
|
||||
|
@ -37,7 +37,7 @@
|
|||
* The available space is calculated in the callback function.
|
||||
*
|
||||
* The pull mode will pull_range() a new buffer of N samples with a
|
||||
* configurable latency. This allows for high-end real time
|
||||
* configurable latency. This allows for high-end real time
|
||||
* audio processing pipelines driven by the audiosink. The callback
|
||||
* function will be used to perform a pull_range() on the sinkpad.
|
||||
* The thread scheduling the callback can be a real-time thread.
|
||||
|
@ -46,8 +46,8 @@
|
|||
* the methods in GstBaseSink and this class.
|
||||
*/
|
||||
|
||||
#ifndef __GST_BASEAUDIOSINK_H__
|
||||
#define __GST_BASEAUDIOSINK_H__
|
||||
#ifndef __GST_BASE_AUDIO_SINK_H__
|
||||
#define __GST_BASE_AUDIO_SINK_H__
|
||||
|
||||
#include <gst/gst.h>
|
||||
#include <gst/base/gstbasesink.h>
|
||||
|
@ -56,21 +56,21 @@
|
|||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GST_TYPE_BASEAUDIOSINK (gst_baseaudiosink_get_type())
|
||||
#define GST_BASEAUDIOSINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BASEAUDIOSINK,GstBaseAudioSink))
|
||||
#define GST_BASEAUDIOSINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_BASEAUDIOSINK,GstBaseAudioSinkClass))
|
||||
#define GST_BASEAUDIOSINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_BASEAUDIOSINK, GstBaseAudioSinkClass))
|
||||
#define GST_IS_BASEAUDIOSINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASEAUDIOSINK))
|
||||
#define GST_IS_BASEAUDIOSINK_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BASEAUDIOSINK))
|
||||
#define GST_TYPE_BASE_AUDIO_SINK (gst_base_audio_sink_get_type())
|
||||
#define GST_BASE_AUDIO_SINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BASE_AUDIO_SINK,GstBaseAudioSink))
|
||||
#define GST_BASE_AUDIO_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_BASE_AUDIO_SINK,GstBaseAudioSinkClass))
|
||||
#define GST_BASE_AUDIO_SINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_BASE_AUDIO_SINK, GstBaseAudioSinkClass))
|
||||
#define GST_IS_BASE_AUDIO_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASE_AUDIO_SINK))
|
||||
#define GST_IS_BASE_AUDIO_SINK_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BASE_AUDIO_SINK))
|
||||
|
||||
#define GST_BASEAUDIOSINK_CLOCK(obj) (GST_BASEAUDIOSINK (obj)->clock)
|
||||
#define GST_BASEAUDIOSINK_PAD(obj) (GST_BASESINK (obj)->sinkpad)
|
||||
#define GST_BASE_AUDIO_SINK_CLOCK(obj) (GST_BASE_AUDIO_SINK (obj)->clock)
|
||||
#define GST_BASE_AUDIO_SINK_PAD(obj) (GST_BASE_SINK (obj)->sinkpad)
|
||||
|
||||
typedef struct _GstBaseAudioSink GstBaseAudioSink;
|
||||
typedef struct _GstBaseAudioSinkClass GstBaseAudioSinkClass;
|
||||
|
||||
struct _GstBaseAudioSink {
|
||||
GstBaseSink element;
|
||||
GstBaseSink element;
|
||||
|
||||
/*< protected >*/ /* with LOCK */
|
||||
/* our ringbuffer */
|
||||
|
@ -91,10 +91,10 @@ struct _GstBaseAudioSinkClass {
|
|||
GstRingBuffer* (*create_ringbuffer) (GstBaseAudioSink *sink);
|
||||
};
|
||||
|
||||
GType gst_baseaudiosink_get_type(void);
|
||||
GType gst_base_audio_sink_get_type(void);
|
||||
|
||||
GstRingBuffer *gst_baseaudiosink_create_ringbuffer (GstBaseAudioSink *sink);
|
||||
GstRingBuffer *gst_base_audio_sink_create_ringbuffer (GstBaseAudioSink *sink);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GST_BASEAUDIOSINK_H__ */
|
||||
#endif /* __GST_BASE_AUDIO_SINK_H__ */
|
||||
|
|
|
@ -24,8 +24,8 @@
|
|||
|
||||
#include "gstbaseaudiosrc.h"
|
||||
|
||||
GST_DEBUG_CATEGORY_STATIC (gst_baseaudiosrc_debug);
|
||||
#define GST_CAT_DEFAULT gst_baseaudiosrc_debug
|
||||
GST_DEBUG_CATEGORY_STATIC (gst_base_audio_src_debug);
|
||||
#define GST_CAT_DEFAULT gst_base_audio_src_debug
|
||||
|
||||
/* BaseAudioSrc signals and args */
|
||||
enum
|
||||
|
@ -44,42 +44,42 @@ enum
|
|||
};
|
||||
|
||||
#define _do_init(bla) \
|
||||
GST_DEBUG_CATEGORY_INIT (gst_baseaudiosrc_debug, "baseaudiosrc", 0, "baseaudiosrc element");
|
||||
GST_DEBUG_CATEGORY_INIT (gst_base_audio_src_debug, "baseaudiosrc", 0, "baseaudiosrc element");
|
||||
|
||||
GST_BOILERPLATE_FULL (GstBaseAudioSrc, gst_baseaudiosrc, GstPushSrc,
|
||||
GST_BOILERPLATE_FULL (GstBaseAudioSrc, gst_base_audio_src, GstPushSrc,
|
||||
GST_TYPE_PUSHSRC, _do_init);
|
||||
|
||||
static void gst_baseaudiosrc_set_property (GObject * object, guint prop_id,
|
||||
static void gst_base_audio_src_set_property (GObject * object, guint prop_id,
|
||||
const GValue * value, GParamSpec * pspec);
|
||||
static void gst_baseaudiosrc_get_property (GObject * object, guint prop_id,
|
||||
static void gst_base_audio_src_get_property (GObject * object, guint prop_id,
|
||||
GValue * value, GParamSpec * pspec);
|
||||
|
||||
static void gst_baseaudiosrc_fixate (GstPad * pad, GstCaps * caps);
|
||||
static void gst_base_audio_src_fixate (GstPad * pad, GstCaps * caps);
|
||||
|
||||
static GstElementStateReturn gst_baseaudiosrc_change_state (GstElement *
|
||||
static GstElementStateReturn gst_base_audio_src_change_state (GstElement *
|
||||
element);
|
||||
|
||||
static GstClock *gst_baseaudiosrc_get_clock (GstElement * elem);
|
||||
static GstClockTime gst_baseaudiosrc_get_time (GstClock * clock,
|
||||
static GstClock *gst_base_audio_src_get_clock (GstElement * elem);
|
||||
static GstClockTime gst_base_audio_src_get_time (GstClock * clock,
|
||||
GstBaseAudioSrc * src);
|
||||
|
||||
static GstFlowReturn gst_baseaudiosrc_create (GstPushSrc * psrc,
|
||||
static GstFlowReturn gst_base_audio_src_create (GstPushSrc * psrc,
|
||||
GstBuffer ** buf);
|
||||
|
||||
static gboolean gst_baseaudiosrc_event (GstBaseSrc * bsrc, GstEvent * event);
|
||||
static void gst_baseaudiosrc_get_times (GstBaseSrc * bsrc,
|
||||
static gboolean gst_base_audio_src_event (GstBaseSrc * bsrc, GstEvent * event);
|
||||
static void gst_base_audio_src_get_times (GstBaseSrc * bsrc,
|
||||
GstBuffer * buffer, GstClockTime * start, GstClockTime * end);
|
||||
static gboolean gst_baseaudiosrc_setcaps (GstBaseSrc * bsrc, GstCaps * caps);
|
||||
static gboolean gst_base_audio_src_setcaps (GstBaseSrc * bsrc, GstCaps * caps);
|
||||
|
||||
//static guint gst_baseaudiosrc_signals[LAST_SIGNAL] = { 0 };
|
||||
//static guint gst_base_audio_src_signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
static void
|
||||
gst_baseaudiosrc_base_init (gpointer g_class)
|
||||
gst_base_audio_src_base_init (gpointer g_class)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
gst_baseaudiosrc_class_init (GstBaseAudioSrcClass * klass)
|
||||
gst_base_audio_src_class_init (GstBaseAudioSrcClass * klass)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstElementClass *gstelement_class;
|
||||
|
@ -92,9 +92,9 @@ gst_baseaudiosrc_class_init (GstBaseAudioSrcClass * klass)
|
|||
gstpushsrc_class = (GstPushSrcClass *) klass;
|
||||
|
||||
gobject_class->set_property =
|
||||
GST_DEBUG_FUNCPTR (gst_baseaudiosrc_set_property);
|
||||
GST_DEBUG_FUNCPTR (gst_base_audio_src_set_property);
|
||||
gobject_class->get_property =
|
||||
GST_DEBUG_FUNCPTR (gst_baseaudiosrc_get_property);
|
||||
GST_DEBUG_FUNCPTR (gst_base_audio_src_get_property);
|
||||
|
||||
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_BUFFER_TIME,
|
||||
g_param_spec_int64 ("buffer-time", "Buffer Time",
|
||||
|
@ -106,41 +106,43 @@ gst_baseaudiosrc_class_init (GstBaseAudioSrcClass * klass)
|
|||
-1, G_MAXINT64, DEFAULT_LATENCY_TIME, G_PARAM_READWRITE));
|
||||
|
||||
gstelement_class->change_state =
|
||||
GST_DEBUG_FUNCPTR (gst_baseaudiosrc_change_state);
|
||||
gstelement_class->get_clock = GST_DEBUG_FUNCPTR (gst_baseaudiosrc_get_clock);
|
||||
GST_DEBUG_FUNCPTR (gst_base_audio_src_change_state);
|
||||
gstelement_class->get_clock =
|
||||
GST_DEBUG_FUNCPTR (gst_base_audio_src_get_clock);
|
||||
|
||||
gstbasesrc_class->set_caps = GST_DEBUG_FUNCPTR (gst_baseaudiosrc_setcaps);
|
||||
gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_baseaudiosrc_event);
|
||||
gstbasesrc_class->get_times = GST_DEBUG_FUNCPTR (gst_baseaudiosrc_get_times);
|
||||
gstbasesrc_class->set_caps = GST_DEBUG_FUNCPTR (gst_base_audio_src_setcaps);
|
||||
gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_base_audio_src_event);
|
||||
gstbasesrc_class->get_times =
|
||||
GST_DEBUG_FUNCPTR (gst_base_audio_src_get_times);
|
||||
|
||||
gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_baseaudiosrc_create);
|
||||
gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_base_audio_src_create);
|
||||
}
|
||||
|
||||
static void
|
||||
gst_baseaudiosrc_init (GstBaseAudioSrc * baseaudiosrc)
|
||||
gst_base_audio_src_init (GstBaseAudioSrc * baseaudiosrc)
|
||||
{
|
||||
baseaudiosrc->buffer_time = DEFAULT_BUFFER_TIME;
|
||||
baseaudiosrc->latency_time = DEFAULT_LATENCY_TIME;
|
||||
|
||||
baseaudiosrc->clock = gst_audio_clock_new ("clock",
|
||||
(GstAudioClockGetTimeFunc) gst_baseaudiosrc_get_time, baseaudiosrc);
|
||||
(GstAudioClockGetTimeFunc) gst_base_audio_src_get_time, baseaudiosrc);
|
||||
|
||||
gst_pad_set_fixatecaps_function (GST_BASE_SRC_PAD (baseaudiosrc),
|
||||
gst_baseaudiosrc_fixate);
|
||||
gst_base_audio_src_fixate);
|
||||
}
|
||||
|
||||
static GstClock *
|
||||
gst_baseaudiosrc_get_clock (GstElement * elem)
|
||||
gst_base_audio_src_get_clock (GstElement * elem)
|
||||
{
|
||||
GstBaseAudioSrc *src;
|
||||
|
||||
src = GST_BASEAUDIOSRC (elem);
|
||||
src = GST_BASE_AUDIO_SRC (elem);
|
||||
|
||||
return GST_CLOCK (gst_object_ref (GST_OBJECT (src->clock)));
|
||||
}
|
||||
|
||||
static GstClockTime
|
||||
gst_baseaudiosrc_get_time (GstClock * clock, GstBaseAudioSrc * src)
|
||||
gst_base_audio_src_get_time (GstClock * clock, GstBaseAudioSrc * src)
|
||||
{
|
||||
guint64 samples;
|
||||
GstClockTime result;
|
||||
|
@ -148,7 +150,7 @@ gst_baseaudiosrc_get_time (GstClock * clock, GstBaseAudioSrc * src)
|
|||
if (src->ringbuffer == NULL || src->ringbuffer->spec.rate == 0)
|
||||
return 0;
|
||||
|
||||
samples = gst_ringbuffer_samples_done (src->ringbuffer);
|
||||
samples = gst_ring_buffer_samples_done (src->ringbuffer);
|
||||
|
||||
result = samples * GST_SECOND / src->ringbuffer->spec.rate;
|
||||
result += GST_ELEMENT (src)->base_time;
|
||||
|
@ -157,12 +159,12 @@ gst_baseaudiosrc_get_time (GstClock * clock, GstBaseAudioSrc * src)
|
|||
}
|
||||
|
||||
static void
|
||||
gst_baseaudiosrc_set_property (GObject * object, guint prop_id,
|
||||
gst_base_audio_src_set_property (GObject * object, guint prop_id,
|
||||
const GValue * value, GParamSpec * pspec)
|
||||
{
|
||||
GstBaseAudioSrc *src;
|
||||
|
||||
src = GST_BASEAUDIOSRC (object);
|
||||
src = GST_BASE_AUDIO_SRC (object);
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_BUFFER_TIME:
|
||||
|
@ -178,12 +180,12 @@ gst_baseaudiosrc_set_property (GObject * object, guint prop_id,
|
|||
}
|
||||
|
||||
static void
|
||||
gst_baseaudiosrc_get_property (GObject * object, guint prop_id, GValue * value,
|
||||
GParamSpec * pspec)
|
||||
gst_base_audio_src_get_property (GObject * object, guint prop_id,
|
||||
GValue * value, GParamSpec * pspec)
|
||||
{
|
||||
GstBaseAudioSrc *src;
|
||||
|
||||
src = GST_BASEAUDIOSRC (object);
|
||||
src = GST_BASE_AUDIO_SRC (object);
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_BUFFER_TIME:
|
||||
|
@ -199,7 +201,7 @@ gst_baseaudiosrc_get_property (GObject * object, guint prop_id, GValue * value,
|
|||
}
|
||||
|
||||
static void
|
||||
gst_baseaudiosrc_fixate (GstPad * pad, GstCaps * caps)
|
||||
gst_base_audio_src_fixate (GstPad * pad, GstCaps * caps)
|
||||
{
|
||||
GstStructure *s;
|
||||
|
||||
|
@ -214,9 +216,9 @@ gst_baseaudiosrc_fixate (GstPad * pad, GstCaps * caps)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
gst_baseaudiosrc_setcaps (GstBaseSrc * bsrc, GstCaps * caps)
|
||||
gst_base_audio_src_setcaps (GstBaseSrc * bsrc, GstCaps * caps)
|
||||
{
|
||||
GstBaseAudioSrc *src = GST_BASEAUDIOSRC (bsrc);
|
||||
GstBaseAudioSrc *src = GST_BASE_AUDIO_SRC (bsrc);
|
||||
GstRingBufferSpec *spec;
|
||||
|
||||
spec = &src->ringbuffer->spec;
|
||||
|
@ -224,7 +226,7 @@ gst_baseaudiosrc_setcaps (GstBaseSrc * bsrc, GstCaps * caps)
|
|||
spec->buffer_time = src->buffer_time;
|
||||
spec->latency_time = src->latency_time;
|
||||
|
||||
if (!gst_ringbuffer_parse_caps (spec, caps))
|
||||
if (!gst_ring_buffer_parse_caps (spec, caps))
|
||||
goto parse_error;
|
||||
|
||||
/* calculate suggested segsize and segtotal */
|
||||
|
@ -234,13 +236,13 @@ gst_baseaudiosrc_setcaps (GstBaseSrc * bsrc, GstCaps * caps)
|
|||
|
||||
GST_DEBUG ("release old ringbuffer");
|
||||
|
||||
gst_ringbuffer_release (src->ringbuffer);
|
||||
gst_ring_buffer_release (src->ringbuffer);
|
||||
|
||||
gst_ringbuffer_debug_spec_buff (spec);
|
||||
gst_ring_buffer_debug_spec_buff (spec);
|
||||
|
||||
GST_DEBUG ("acquire new ringbuffer");
|
||||
|
||||
if (!gst_ringbuffer_acquire (src->ringbuffer, spec))
|
||||
if (!gst_ring_buffer_acquire (src->ringbuffer, spec))
|
||||
goto acquire_error;
|
||||
|
||||
/* calculate actual latency and buffer times */
|
||||
|
@ -250,7 +252,7 @@ gst_baseaudiosrc_setcaps (GstBaseSrc * bsrc, GstCaps * caps)
|
|||
spec->segtotal * spec->segsize * GST_MSECOND / (spec->rate *
|
||||
spec->bytes_per_sample);
|
||||
|
||||
gst_ringbuffer_debug_spec_buff (spec);
|
||||
gst_ring_buffer_debug_spec_buff (spec);
|
||||
|
||||
return TRUE;
|
||||
|
||||
|
@ -268,7 +270,7 @@ acquire_error:
|
|||
}
|
||||
|
||||
static void
|
||||
gst_baseaudiosrc_get_times (GstBaseSrc * bsrc, GstBuffer * buffer,
|
||||
gst_base_audio_src_get_times (GstBaseSrc * bsrc, GstBuffer * buffer,
|
||||
GstClockTime * start, GstClockTime * end)
|
||||
{
|
||||
/* ne need to sync to a clock here, we schedule the samples based
|
||||
|
@ -279,15 +281,15 @@ gst_baseaudiosrc_get_times (GstBaseSrc * bsrc, GstBuffer * buffer,
|
|||
}
|
||||
|
||||
static gboolean
|
||||
gst_baseaudiosrc_event (GstBaseSrc * bsrc, GstEvent * event)
|
||||
gst_base_audio_src_event (GstBaseSrc * bsrc, GstEvent * event)
|
||||
{
|
||||
GstBaseAudioSrc *src = GST_BASEAUDIOSRC (bsrc);
|
||||
GstBaseAudioSrc *src = GST_BASE_AUDIO_SRC (bsrc);
|
||||
|
||||
switch (GST_EVENT_TYPE (event)) {
|
||||
case GST_EVENT_FLUSH:
|
||||
if (GST_EVENT_FLUSH_DONE (event)) {
|
||||
} else {
|
||||
gst_ringbuffer_pause (src->ringbuffer);
|
||||
gst_ring_buffer_pause (src->ringbuffer);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@ -297,15 +299,15 @@ gst_baseaudiosrc_event (GstBaseSrc * bsrc, GstEvent * event)
|
|||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_baseaudiosrc_create (GstPushSrc * psrc, GstBuffer ** outbuf)
|
||||
gst_base_audio_src_create (GstPushSrc * psrc, GstBuffer ** outbuf)
|
||||
{
|
||||
GstBaseAudioSrc *src = GST_BASEAUDIOSRC (psrc);
|
||||
GstBaseAudioSrc *src = GST_BASE_AUDIO_SRC (psrc);
|
||||
GstBuffer *buf;
|
||||
guchar *data;
|
||||
guint len;
|
||||
guint res;
|
||||
|
||||
if (!gst_ringbuffer_is_acquired (src->ringbuffer))
|
||||
if (!gst_ring_buffer_is_acquired (src->ringbuffer))
|
||||
goto wrong_state;
|
||||
|
||||
buf = gst_buffer_new_and_alloc (src->ringbuffer->spec.segsize);
|
||||
|
@ -313,7 +315,7 @@ gst_baseaudiosrc_create (GstPushSrc * psrc, GstBuffer ** outbuf)
|
|||
data = GST_BUFFER_DATA (buf);
|
||||
len = GST_BUFFER_SIZE (buf);
|
||||
|
||||
res = gst_ringbuffer_read (src->ringbuffer, -1, data, len);
|
||||
res = gst_ring_buffer_read (src->ringbuffer, -1, data, len);
|
||||
if (res == -1)
|
||||
goto stopped;
|
||||
|
||||
|
@ -337,12 +339,12 @@ stopped:
|
|||
}
|
||||
|
||||
GstRingBuffer *
|
||||
gst_baseaudiosrc_create_ringbuffer (GstBaseAudioSrc * src)
|
||||
gst_base_audio_src_create_ringbuffer (GstBaseAudioSrc * src)
|
||||
{
|
||||
GstBaseAudioSrcClass *bclass;
|
||||
GstRingBuffer *buffer = NULL;
|
||||
|
||||
bclass = GST_BASEAUDIOSRC_GET_CLASS (src);
|
||||
bclass = GST_BASE_AUDIO_SRC_GET_CLASS (src);
|
||||
if (bclass->create_ringbuffer)
|
||||
buffer = bclass->create_ringbuffer (src);
|
||||
|
||||
|
@ -354,26 +356,26 @@ gst_baseaudiosrc_create_ringbuffer (GstBaseAudioSrc * src)
|
|||
}
|
||||
|
||||
void
|
||||
gst_baseaudiosrc_callback (GstRingBuffer * rbuf, guint8 * data, guint len,
|
||||
gst_base_audio_src_callback (GstRingBuffer * rbuf, guint8 * data, guint len,
|
||||
gpointer user_data)
|
||||
{
|
||||
//GstBaseAudioSrc *src = GST_BASEAUDIOSRC (data);
|
||||
//GstBaseAudioSrc *src = GST_BASE_AUDIO_SRC (data);
|
||||
}
|
||||
|
||||
static GstElementStateReturn
|
||||
gst_baseaudiosrc_change_state (GstElement * element)
|
||||
gst_base_audio_src_change_state (GstElement * element)
|
||||
{
|
||||
GstElementStateReturn ret = GST_STATE_SUCCESS;
|
||||
GstBaseAudioSrc *src = GST_BASEAUDIOSRC (element);
|
||||
GstBaseAudioSrc *src = GST_BASE_AUDIO_SRC (element);
|
||||
GstElementState transition = GST_STATE_TRANSITION (element);
|
||||
|
||||
switch (transition) {
|
||||
case GST_STATE_NULL_TO_READY:
|
||||
break;
|
||||
case GST_STATE_READY_TO_PAUSED:
|
||||
src->ringbuffer = gst_baseaudiosrc_create_ringbuffer (src);
|
||||
gst_ringbuffer_set_callback (src->ringbuffer, gst_baseaudiosrc_callback,
|
||||
src);
|
||||
src->ringbuffer = gst_base_audio_src_create_ringbuffer (src);
|
||||
gst_ring_buffer_set_callback (src->ringbuffer,
|
||||
gst_base_audio_src_callback, src);
|
||||
break;
|
||||
case GST_STATE_PAUSED_TO_PLAYING:
|
||||
break;
|
||||
|
@ -385,11 +387,11 @@ gst_baseaudiosrc_change_state (GstElement * element)
|
|||
|
||||
switch (transition) {
|
||||
case GST_STATE_PLAYING_TO_PAUSED:
|
||||
gst_ringbuffer_pause (src->ringbuffer);
|
||||
gst_ring_buffer_pause (src->ringbuffer);
|
||||
break;
|
||||
case GST_STATE_PAUSED_TO_READY:
|
||||
gst_ringbuffer_stop (src->ringbuffer);
|
||||
gst_ringbuffer_release (src->ringbuffer);
|
||||
gst_ring_buffer_stop (src->ringbuffer);
|
||||
gst_ring_buffer_release (src->ringbuffer);
|
||||
gst_object_unref (GST_OBJECT (src->ringbuffer));
|
||||
src->ringbuffer = NULL;
|
||||
break;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
|
||||
* 2005 Wim Taymans <wim@fluendo.com>
|
||||
*
|
||||
* gstbaseaudiosrc.h:
|
||||
* gstbaseaudiosrc.h:
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
|
@ -23,8 +23,8 @@
|
|||
/* a base class for audio sources.
|
||||
*/
|
||||
|
||||
#ifndef __GST_BASEAUDIOSRC_H__
|
||||
#define __GST_BASEAUDIOSRC_H__
|
||||
#ifndef __GST_BASE_AUDIO_SRC_H__
|
||||
#define __GST_BASE_AUDIO_SRC_H__
|
||||
|
||||
#include <gst/gst.h>
|
||||
#include <gst/base/gstpushsrc.h>
|
||||
|
@ -33,21 +33,21 @@
|
|||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GST_TYPE_BASEAUDIOSRC (gst_baseaudiosrc_get_type())
|
||||
#define GST_BASEAUDIOSRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BASEAUDIOSRC,GstBaseAudioSrc))
|
||||
#define GST_BASEAUDIOSRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_BASEAUDIOSRC,GstBaseAudioSrcClass))
|
||||
#define GST_BASEAUDIOSRC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_BASEAUDIOSRC, GstBaseAudioSrcClass))
|
||||
#define GST_IS_BASEAUDIOSRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASEAUDIOSRC))
|
||||
#define GST_IS_BASEAUDIOSRC_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BASEAUDIOSRC))
|
||||
#define GST_TYPE_BASE_AUDIO_SRC (gst_base_audio_src_get_type())
|
||||
#define GST_BASE_AUDIO_SRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_BASE_AUDIO_SRC,GstBaseAudioSrc))
|
||||
#define GST_BASE_AUDIO_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_BASE_AUDIO_SRC,GstBaseAudioSrcClass))
|
||||
#define GST_BASE_AUDIO_SRC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_BASE_AUDIO_SRC, GstBaseAudioSrcClass))
|
||||
#define GST_IS_BASE_AUDIO_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_BASE_AUDIO_SRC))
|
||||
#define GST_IS_BASE_AUDIO_SRC_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_BASE_AUDIO_SRC))
|
||||
|
||||
#define GST_BASEAUDIOSRC_CLOCK(obj) (GST_BASEAUDIOSRC (obj)->clock)
|
||||
#define GST_BASEAUDIOSRC_PAD(obj) (GST_BASESRC (obj)->srcpad)
|
||||
#define GST_BASE_AUDIO_SRC_CLOCK(obj) (GST_BASE_AUDIO_SRC (obj)->clock)
|
||||
#define GST_BASE_AUDIO_SRC_PAD(obj) (GST_BASE_SRC (obj)->srcpad)
|
||||
|
||||
typedef struct _GstBaseAudioSrc GstBaseAudioSrc;
|
||||
typedef struct _GstBaseAudioSrcClass GstBaseAudioSrcClass;
|
||||
|
||||
struct _GstBaseAudioSrc {
|
||||
GstPushSrc element;
|
||||
GstPushSrc element;
|
||||
|
||||
/*< protected >*/ /* with LOCK */
|
||||
/* our ringbuffer */
|
||||
|
@ -68,10 +68,10 @@ struct _GstBaseAudioSrcClass {
|
|||
GstRingBuffer* (*create_ringbuffer) (GstBaseAudioSrc *src);
|
||||
};
|
||||
|
||||
GType gst_baseaudiosrc_get_type(void);
|
||||
GType gst_base_audio_src_get_type(void);
|
||||
|
||||
GstRingBuffer *gst_baseaudiosrc_create_ringbuffer (GstBaseAudioSrc *src);
|
||||
GstRingBuffer *gst_base_audio_src_create_ringbuffer (GstBaseAudioSrc *src);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GST_BASEAUDIOSRC_H__ */
|
||||
#endif /* __GST_BASE_AUDIO_SRC_H__ */
|
||||
|
|
|
@ -23,19 +23,19 @@
|
|||
|
||||
#include "gstringbuffer.h"
|
||||
|
||||
GST_DEBUG_CATEGORY_STATIC (gst_ringbuffer_debug);
|
||||
#define GST_CAT_DEFAULT gst_ringbuffer_debug
|
||||
GST_DEBUG_CATEGORY_STATIC (gst_ring_buffer_debug);
|
||||
#define GST_CAT_DEFAULT gst_ring_buffer_debug
|
||||
|
||||
static void gst_ringbuffer_class_init (GstRingBufferClass * klass);
|
||||
static void gst_ringbuffer_init (GstRingBuffer * ringbuffer);
|
||||
static void gst_ringbuffer_dispose (GObject * object);
|
||||
static void gst_ringbuffer_finalize (GObject * object);
|
||||
static void gst_ring_buffer_class_init (GstRingBufferClass * klass);
|
||||
static void gst_ring_buffer_init (GstRingBuffer * ringbuffer);
|
||||
static void gst_ring_buffer_dispose (GObject * object);
|
||||
static void gst_ring_buffer_finalize (GObject * object);
|
||||
|
||||
static GstObjectClass *parent_class = NULL;
|
||||
|
||||
/* ringbuffer abstract base class */
|
||||
GType
|
||||
gst_ringbuffer_get_type (void)
|
||||
gst_ring_buffer_get_type (void)
|
||||
{
|
||||
static GType ringbuffer_type = 0;
|
||||
|
||||
|
@ -44,26 +44,26 @@ gst_ringbuffer_get_type (void)
|
|||
sizeof (GstRingBufferClass),
|
||||
NULL,
|
||||
NULL,
|
||||
(GClassInitFunc) gst_ringbuffer_class_init,
|
||||
(GClassInitFunc) gst_ring_buffer_class_init,
|
||||
NULL,
|
||||
NULL,
|
||||
sizeof (GstRingBuffer),
|
||||
0,
|
||||
(GInstanceInitFunc) gst_ringbuffer_init,
|
||||
(GInstanceInitFunc) gst_ring_buffer_init,
|
||||
NULL
|
||||
};
|
||||
|
||||
ringbuffer_type = g_type_register_static (GST_TYPE_OBJECT, "GstRingBuffer",
|
||||
&ringbuffer_info, G_TYPE_FLAG_ABSTRACT);
|
||||
|
||||
GST_DEBUG_CATEGORY_INIT (gst_ringbuffer_debug, "ringbuffer", 0,
|
||||
GST_DEBUG_CATEGORY_INIT (gst_ring_buffer_debug, "ringbuffer", 0,
|
||||
"ringbuffer class");
|
||||
}
|
||||
return ringbuffer_type;
|
||||
}
|
||||
|
||||
static void
|
||||
gst_ringbuffer_class_init (GstRingBufferClass * klass)
|
||||
gst_ring_buffer_class_init (GstRingBufferClass * klass)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstObjectClass *gstobject_class;
|
||||
|
@ -73,32 +73,32 @@ gst_ringbuffer_class_init (GstRingBufferClass * klass)
|
|||
|
||||
parent_class = g_type_class_ref (GST_TYPE_OBJECT);
|
||||
|
||||
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_ringbuffer_dispose);
|
||||
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_ringbuffer_finalize);
|
||||
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_ring_buffer_dispose);
|
||||
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_ring_buffer_finalize);
|
||||
}
|
||||
|
||||
static void
|
||||
gst_ringbuffer_init (GstRingBuffer * ringbuffer)
|
||||
gst_ring_buffer_init (GstRingBuffer * ringbuffer)
|
||||
{
|
||||
ringbuffer->acquired = FALSE;
|
||||
ringbuffer->state = GST_RINGBUFFER_STATE_STOPPED;
|
||||
ringbuffer->state = GST_RING_BUFFER_STATE_STOPPED;
|
||||
ringbuffer->cond = g_cond_new ();
|
||||
ringbuffer->waiting = 0;
|
||||
ringbuffer->empty_seg = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
gst_ringbuffer_dispose (GObject * object)
|
||||
gst_ring_buffer_dispose (GObject * object)
|
||||
{
|
||||
GstRingBuffer *ringbuffer = GST_RINGBUFFER (object);
|
||||
GstRingBuffer *ringbuffer = GST_RING_BUFFER (object);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->dispose (G_OBJECT (ringbuffer));
|
||||
}
|
||||
|
||||
static void
|
||||
gst_ringbuffer_finalize (GObject * object)
|
||||
gst_ring_buffer_finalize (GObject * object)
|
||||
{
|
||||
GstRingBuffer *ringbuffer = GST_RINGBUFFER (object);
|
||||
GstRingBuffer *ringbuffer = GST_RING_BUFFER (object);
|
||||
|
||||
g_cond_free (ringbuffer->cond);
|
||||
g_free (ringbuffer->empty_seg);
|
||||
|
@ -180,7 +180,7 @@ build_linear_format (int depth, int width, int unsignd, int big_endian)
|
|||
}
|
||||
|
||||
void
|
||||
gst_ringbuffer_debug_spec_caps (GstRingBufferSpec * spec)
|
||||
gst_ring_buffer_debug_spec_caps (GstRingBufferSpec * spec)
|
||||
{
|
||||
GST_DEBUG ("spec caps: %p %" GST_PTR_FORMAT, spec->caps, spec->caps);
|
||||
GST_DEBUG ("parsed caps: type: %d", spec->type);
|
||||
|
@ -195,7 +195,7 @@ gst_ringbuffer_debug_spec_caps (GstRingBufferSpec * spec)
|
|||
}
|
||||
|
||||
void
|
||||
gst_ringbuffer_debug_spec_buff (GstRingBufferSpec * spec)
|
||||
gst_ring_buffer_debug_spec_buff (GstRingBufferSpec * spec)
|
||||
{
|
||||
GST_DEBUG ("acquire ringbuffer: buffer time: %" G_GINT64_FORMAT " usec",
|
||||
spec->buffer_time);
|
||||
|
@ -210,7 +210,7 @@ gst_ringbuffer_debug_spec_buff (GstRingBufferSpec * spec)
|
|||
}
|
||||
|
||||
gboolean
|
||||
gst_ringbuffer_parse_caps (GstRingBufferSpec * spec, GstCaps * caps)
|
||||
gst_ring_buffer_parse_caps (GstRingBufferSpec * spec, GstCaps * caps)
|
||||
{
|
||||
const gchar *mimetype;
|
||||
GstStructure *structure;
|
||||
|
@ -291,8 +291,8 @@ gst_ringbuffer_parse_caps (GstRingBufferSpec * spec, GstCaps * caps)
|
|||
spec->rate * spec->bytes_per_sample * spec->latency_time / GST_MSECOND;
|
||||
spec->segtotal = spec->buffer_time / spec->latency_time;
|
||||
|
||||
gst_ringbuffer_debug_spec_caps (spec);
|
||||
gst_ringbuffer_debug_spec_buff (spec);
|
||||
gst_ring_buffer_debug_spec_caps (spec);
|
||||
gst_ring_buffer_debug_spec_buff (spec);
|
||||
|
||||
return TRUE;
|
||||
|
||||
|
@ -305,7 +305,7 @@ parse_error:
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_set_callback:
|
||||
* gst_ring_buffer_set_callback:
|
||||
* @buf: the #GstRingBuffer to set the callback on
|
||||
* @cb: the callback to set
|
||||
* @user_data: user data passed to the callback
|
||||
|
@ -316,7 +316,7 @@ parse_error:
|
|||
* MT safe.
|
||||
*/
|
||||
void
|
||||
gst_ringbuffer_set_callback (GstRingBuffer * buf, GstRingBufferCallback cb,
|
||||
gst_ring_buffer_set_callback (GstRingBuffer * buf, GstRingBufferCallback cb,
|
||||
gpointer user_data)
|
||||
{
|
||||
g_return_if_fail (buf != NULL);
|
||||
|
@ -328,7 +328,7 @@ gst_ringbuffer_set_callback (GstRingBuffer * buf, GstRingBufferCallback cb,
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_acquire:
|
||||
* gst_ring_buffer_acquire:
|
||||
* @buf: the #GstRingBuffer to acquire
|
||||
* @spec: the specs of the buffer
|
||||
*
|
||||
|
@ -341,7 +341,7 @@ gst_ringbuffer_set_callback (GstRingBuffer * buf, GstRingBufferCallback cb,
|
|||
* MT safe.
|
||||
*/
|
||||
gboolean
|
||||
gst_ringbuffer_acquire (GstRingBuffer * buf, GstRingBufferSpec * spec)
|
||||
gst_ring_buffer_acquire (GstRingBuffer * buf, GstRingBufferSpec * spec)
|
||||
{
|
||||
gboolean res = FALSE;
|
||||
GstRingBufferClass *rclass;
|
||||
|
@ -355,7 +355,7 @@ gst_ringbuffer_acquire (GstRingBuffer * buf, GstRingBufferSpec * spec)
|
|||
}
|
||||
buf->acquired = TRUE;
|
||||
|
||||
rclass = GST_RINGBUFFER_GET_CLASS (buf);
|
||||
rclass = GST_RING_BUFFER_GET_CLASS (buf);
|
||||
if (rclass->acquire)
|
||||
res = rclass->acquire (buf, spec);
|
||||
|
||||
|
@ -375,7 +375,7 @@ gst_ringbuffer_acquire (GstRingBuffer * buf, GstRingBufferSpec * spec)
|
|||
j = (j + 1) % buf->spec.bytes_per_sample;
|
||||
}
|
||||
/* set sample position to 0 */
|
||||
gst_ringbuffer_set_sample (buf, 0);
|
||||
gst_ring_buffer_set_sample (buf, 0);
|
||||
} else {
|
||||
g_warning
|
||||
("invalid bytes_per_sample from acquire ringbuffer, fix the element");
|
||||
|
@ -390,7 +390,7 @@ done:
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_release:
|
||||
* gst_ring_buffer_release:
|
||||
* @buf: the #GstRingBuffer to release
|
||||
*
|
||||
* Free the resources of the ringbuffer.
|
||||
|
@ -400,14 +400,14 @@ done:
|
|||
* MT safe.
|
||||
*/
|
||||
gboolean
|
||||
gst_ringbuffer_release (GstRingBuffer * buf)
|
||||
gst_ring_buffer_release (GstRingBuffer * buf)
|
||||
{
|
||||
gboolean res = FALSE;
|
||||
GstRingBufferClass *rclass;
|
||||
|
||||
g_return_val_if_fail (buf != NULL, FALSE);
|
||||
|
||||
gst_ringbuffer_stop (buf);
|
||||
gst_ring_buffer_stop (buf);
|
||||
|
||||
GST_LOCK (buf);
|
||||
if (!buf->acquired) {
|
||||
|
@ -416,12 +416,12 @@ gst_ringbuffer_release (GstRingBuffer * buf)
|
|||
}
|
||||
buf->acquired = FALSE;
|
||||
|
||||
rclass = GST_RINGBUFFER_GET_CLASS (buf);
|
||||
rclass = GST_RING_BUFFER_GET_CLASS (buf);
|
||||
if (rclass->release)
|
||||
res = rclass->release (buf);
|
||||
|
||||
/* signal any waiters */
|
||||
GST_RINGBUFFER_SIGNAL (buf);
|
||||
GST_RING_BUFFER_SIGNAL (buf);
|
||||
|
||||
if (!res) {
|
||||
buf->acquired = TRUE;
|
||||
|
@ -437,7 +437,7 @@ done:
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_is_acquired:
|
||||
* gst_ring_buffer_is_acquired:
|
||||
* @buf: the #GstRingBuffer to check
|
||||
*
|
||||
* Check if the ringbuffer is acquired and ready to use.
|
||||
|
@ -447,7 +447,7 @@ done:
|
|||
* MT safe.
|
||||
*/
|
||||
gboolean
|
||||
gst_ringbuffer_is_acquired (GstRingBuffer * buf)
|
||||
gst_ring_buffer_is_acquired (GstRingBuffer * buf)
|
||||
{
|
||||
gboolean res;
|
||||
|
||||
|
@ -462,7 +462,7 @@ gst_ringbuffer_is_acquired (GstRingBuffer * buf)
|
|||
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_start:
|
||||
* gst_ring_buffer_start:
|
||||
* @buf: the #GstRingBuffer to start
|
||||
*
|
||||
* Start processing samples from the ringbuffer.
|
||||
|
@ -472,7 +472,7 @@ gst_ringbuffer_is_acquired (GstRingBuffer * buf)
|
|||
* MT safe.
|
||||
*/
|
||||
gboolean
|
||||
gst_ringbuffer_start (GstRingBuffer * buf)
|
||||
gst_ring_buffer_start (GstRingBuffer * buf)
|
||||
{
|
||||
gboolean res = FALSE;
|
||||
GstRingBufferClass *rclass;
|
||||
|
@ -483,12 +483,12 @@ gst_ringbuffer_start (GstRingBuffer * buf)
|
|||
GST_LOCK (buf);
|
||||
/* if stopped, set to started */
|
||||
res = g_atomic_int_compare_and_exchange (&buf->state,
|
||||
GST_RINGBUFFER_STATE_STOPPED, GST_RINGBUFFER_STATE_STARTED);
|
||||
GST_RING_BUFFER_STATE_STOPPED, GST_RING_BUFFER_STATE_STARTED);
|
||||
|
||||
if (!res) {
|
||||
/* was not stopped, try from paused */
|
||||
res = g_atomic_int_compare_and_exchange (&buf->state,
|
||||
GST_RINGBUFFER_STATE_PAUSED, GST_RINGBUFFER_STATE_STARTED);
|
||||
GST_RING_BUFFER_STATE_PAUSED, GST_RING_BUFFER_STATE_STARTED);
|
||||
if (!res) {
|
||||
/* was not paused either, must be started then */
|
||||
res = TRUE;
|
||||
|
@ -497,7 +497,7 @@ gst_ringbuffer_start (GstRingBuffer * buf)
|
|||
resume = TRUE;
|
||||
}
|
||||
|
||||
rclass = GST_RINGBUFFER_GET_CLASS (buf);
|
||||
rclass = GST_RING_BUFFER_GET_CLASS (buf);
|
||||
if (resume) {
|
||||
if (rclass->resume)
|
||||
res = rclass->resume (buf);
|
||||
|
@ -507,7 +507,7 @@ gst_ringbuffer_start (GstRingBuffer * buf)
|
|||
}
|
||||
|
||||
if (!res) {
|
||||
buf->state = GST_RINGBUFFER_STATE_PAUSED;
|
||||
buf->state = GST_RING_BUFFER_STATE_PAUSED;
|
||||
}
|
||||
|
||||
done:
|
||||
|
@ -517,7 +517,7 @@ done:
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_pause:
|
||||
* gst_ring_buffer_pause:
|
||||
* @buf: the #GstRingBuffer to pause
|
||||
*
|
||||
* Pause processing samples from the ringbuffer.
|
||||
|
@ -527,7 +527,7 @@ done:
|
|||
* MT safe.
|
||||
*/
|
||||
gboolean
|
||||
gst_ringbuffer_pause (GstRingBuffer * buf)
|
||||
gst_ring_buffer_pause (GstRingBuffer * buf)
|
||||
{
|
||||
gboolean res = FALSE;
|
||||
GstRingBufferClass *rclass;
|
||||
|
@ -537,7 +537,7 @@ gst_ringbuffer_pause (GstRingBuffer * buf)
|
|||
GST_LOCK (buf);
|
||||
/* if started, set to paused */
|
||||
res = g_atomic_int_compare_and_exchange (&buf->state,
|
||||
GST_RINGBUFFER_STATE_STARTED, GST_RINGBUFFER_STATE_PAUSED);
|
||||
GST_RING_BUFFER_STATE_STARTED, GST_RING_BUFFER_STATE_PAUSED);
|
||||
|
||||
if (!res) {
|
||||
/* was not started */
|
||||
|
@ -546,14 +546,14 @@ gst_ringbuffer_pause (GstRingBuffer * buf)
|
|||
}
|
||||
|
||||
/* signal any waiters */
|
||||
GST_RINGBUFFER_SIGNAL (buf);
|
||||
GST_RING_BUFFER_SIGNAL (buf);
|
||||
|
||||
rclass = GST_RINGBUFFER_GET_CLASS (buf);
|
||||
rclass = GST_RING_BUFFER_GET_CLASS (buf);
|
||||
if (rclass->pause)
|
||||
res = rclass->pause (buf);
|
||||
|
||||
if (!res) {
|
||||
buf->state = GST_RINGBUFFER_STATE_STARTED;
|
||||
buf->state = GST_RING_BUFFER_STATE_STARTED;
|
||||
}
|
||||
done:
|
||||
GST_UNLOCK (buf);
|
||||
|
@ -562,7 +562,7 @@ done:
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_stop:
|
||||
* gst_ring_buffer_stop:
|
||||
* @buf: the #GstRingBuffer to stop
|
||||
*
|
||||
* Stop processing samples from the ringbuffer.
|
||||
|
@ -572,7 +572,7 @@ done:
|
|||
* MT safe.
|
||||
*/
|
||||
gboolean
|
||||
gst_ringbuffer_stop (GstRingBuffer * buf)
|
||||
gst_ring_buffer_stop (GstRingBuffer * buf)
|
||||
{
|
||||
gboolean res = FALSE;
|
||||
GstRingBufferClass *rclass;
|
||||
|
@ -582,7 +582,7 @@ gst_ringbuffer_stop (GstRingBuffer * buf)
|
|||
GST_LOCK (buf);
|
||||
/* if started, set to stopped */
|
||||
res = g_atomic_int_compare_and_exchange (&buf->state,
|
||||
GST_RINGBUFFER_STATE_STARTED, GST_RINGBUFFER_STATE_STOPPED);
|
||||
GST_RING_BUFFER_STATE_STARTED, GST_RING_BUFFER_STATE_STOPPED);
|
||||
|
||||
if (!res) {
|
||||
/* was not started, must be stopped then */
|
||||
|
@ -591,16 +591,16 @@ gst_ringbuffer_stop (GstRingBuffer * buf)
|
|||
}
|
||||
|
||||
/* signal any waiters */
|
||||
GST_RINGBUFFER_SIGNAL (buf);
|
||||
GST_RING_BUFFER_SIGNAL (buf);
|
||||
|
||||
rclass = GST_RINGBUFFER_GET_CLASS (buf);
|
||||
rclass = GST_RING_BUFFER_GET_CLASS (buf);
|
||||
if (rclass->stop)
|
||||
res = rclass->stop (buf);
|
||||
|
||||
if (!res) {
|
||||
buf->state = GST_RINGBUFFER_STATE_STARTED;
|
||||
buf->state = GST_RING_BUFFER_STATE_STARTED;
|
||||
} else {
|
||||
gst_ringbuffer_set_sample (buf, 0);
|
||||
gst_ring_buffer_set_sample (buf, 0);
|
||||
}
|
||||
done:
|
||||
GST_UNLOCK (buf);
|
||||
|
@ -609,7 +609,7 @@ done:
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_delay:
|
||||
* gst_ring_buffer_delay:
|
||||
* @buf: the #GstRingBuffer to query
|
||||
*
|
||||
* Get the number of samples queued in the audio device. This is
|
||||
|
@ -622,17 +622,17 @@ done:
|
|||
* MT safe.
|
||||
*/
|
||||
guint
|
||||
gst_ringbuffer_delay (GstRingBuffer * buf)
|
||||
gst_ring_buffer_delay (GstRingBuffer * buf)
|
||||
{
|
||||
GstRingBufferClass *rclass;
|
||||
guint res = 0;
|
||||
|
||||
g_return_val_if_fail (buf != NULL, 0);
|
||||
|
||||
if (!gst_ringbuffer_is_acquired (buf))
|
||||
if (!gst_ring_buffer_is_acquired (buf))
|
||||
return 0;
|
||||
|
||||
rclass = GST_RINGBUFFER_GET_CLASS (buf);
|
||||
rclass = GST_RING_BUFFER_GET_CLASS (buf);
|
||||
if (rclass->delay)
|
||||
res = rclass->delay (buf);
|
||||
|
||||
|
@ -640,7 +640,7 @@ gst_ringbuffer_delay (GstRingBuffer * buf)
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_samples_done:
|
||||
* gst_ring_buffer_samples_done:
|
||||
* @buf: the #GstRingBuffer to query
|
||||
*
|
||||
* Get the number of samples that were processed by the ringbuffer
|
||||
|
@ -651,7 +651,7 @@ gst_ringbuffer_delay (GstRingBuffer * buf)
|
|||
* MT safe.
|
||||
*/
|
||||
guint64
|
||||
gst_ringbuffer_samples_done (GstRingBuffer * buf)
|
||||
gst_ring_buffer_samples_done (GstRingBuffer * buf)
|
||||
{
|
||||
gint segdone;
|
||||
guint64 raw, samples;
|
||||
|
@ -663,7 +663,7 @@ gst_ringbuffer_samples_done (GstRingBuffer * buf)
|
|||
segdone = g_atomic_int_get (&buf->segdone);
|
||||
|
||||
/* and the number of samples not yet processed */
|
||||
delay = gst_ringbuffer_delay (buf);
|
||||
delay = gst_ring_buffer_delay (buf);
|
||||
|
||||
samples = (segdone * buf->samples_per_seg);
|
||||
raw = samples;
|
||||
|
@ -678,7 +678,7 @@ gst_ringbuffer_samples_done (GstRingBuffer * buf)
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_set_sample:
|
||||
* gst_ring_buffer_set_sample:
|
||||
* @buf: the #GstRingBuffer to use
|
||||
* @sample: the sample number to set
|
||||
*
|
||||
|
@ -692,7 +692,7 @@ gst_ringbuffer_samples_done (GstRingBuffer * buf)
|
|||
* MT safe.
|
||||
*/
|
||||
void
|
||||
gst_ringbuffer_set_sample (GstRingBuffer * buf, guint64 sample)
|
||||
gst_ring_buffer_set_sample (GstRingBuffer * buf, guint64 sample)
|
||||
{
|
||||
gint i;
|
||||
|
||||
|
@ -708,7 +708,7 @@ gst_ringbuffer_set_sample (GstRingBuffer * buf, guint64 sample)
|
|||
buf->next_sample = sample;
|
||||
|
||||
for (i = 0; i < buf->spec.segtotal; i++) {
|
||||
gst_ringbuffer_clear (buf, i);
|
||||
gst_ring_buffer_clear (buf, i);
|
||||
}
|
||||
|
||||
GST_DEBUG ("setting sample to %llu, segdone %d", sample, buf->segdone);
|
||||
|
@ -718,21 +718,21 @@ static gboolean
|
|||
wait_segment (GstRingBuffer * buf)
|
||||
{
|
||||
/* buffer must be started now or we deadlock since nobody is reading */
|
||||
if (g_atomic_int_get (&buf->state) != GST_RINGBUFFER_STATE_STARTED) {
|
||||
if (g_atomic_int_get (&buf->state) != GST_RING_BUFFER_STATE_STARTED) {
|
||||
GST_DEBUG ("start!");
|
||||
gst_ringbuffer_start (buf);
|
||||
gst_ring_buffer_start (buf);
|
||||
}
|
||||
|
||||
/* take lock first, then update our waiting flag */
|
||||
GST_LOCK (buf);
|
||||
if (g_atomic_int_compare_and_exchange (&buf->waiting, 0, 1)) {
|
||||
GST_DEBUG ("waiting..");
|
||||
if (g_atomic_int_get (&buf->state) != GST_RINGBUFFER_STATE_STARTED)
|
||||
if (g_atomic_int_get (&buf->state) != GST_RING_BUFFER_STATE_STARTED)
|
||||
goto not_started;
|
||||
|
||||
GST_RINGBUFFER_WAIT (buf);
|
||||
GST_RING_BUFFER_WAIT (buf);
|
||||
|
||||
if (g_atomic_int_get (&buf->state) != GST_RINGBUFFER_STATE_STARTED)
|
||||
if (g_atomic_int_get (&buf->state) != GST_RING_BUFFER_STATE_STARTED)
|
||||
goto not_started;
|
||||
}
|
||||
GST_UNLOCK (buf);
|
||||
|
@ -749,7 +749,7 @@ not_started:
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_commit:
|
||||
* gst_ring_buffer_commit:
|
||||
* @buf: the #GstRingBuffer to commit
|
||||
* @sample: the sample position of the data
|
||||
* @data: the data to commit
|
||||
|
@ -768,7 +768,7 @@ not_started:
|
|||
* MT safe.
|
||||
*/
|
||||
guint
|
||||
gst_ringbuffer_commit (GstRingBuffer * buf, guint64 sample, guchar * data,
|
||||
gst_ring_buffer_commit (GstRingBuffer * buf, guint64 sample, guchar * data,
|
||||
guint len)
|
||||
{
|
||||
gint segdone;
|
||||
|
@ -866,7 +866,7 @@ not_started:
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_read:
|
||||
* gst_ring_buffer_read:
|
||||
* @buf: the #GstRingBuffer to read from
|
||||
* @sample: the sample position of the data
|
||||
* @data: where the data should be read
|
||||
|
@ -886,7 +886,7 @@ not_started:
|
|||
* MT safe.
|
||||
*/
|
||||
guint
|
||||
gst_ringbuffer_read (GstRingBuffer * buf, guint64 sample, guchar * data,
|
||||
gst_ring_buffer_read (GstRingBuffer * buf, guint64 sample, guchar * data,
|
||||
guint len)
|
||||
{
|
||||
gint segdone;
|
||||
|
@ -984,7 +984,7 @@ not_started:
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_prepare_read:
|
||||
* gst_ring_buffer_prepare_read:
|
||||
* @buf: the #GstRingBuffer to read from
|
||||
* @segment: the segment to read
|
||||
* @readptr: the pointer to the memory where samples can be read
|
||||
|
@ -998,14 +998,14 @@ not_started:
|
|||
* MT safe.
|
||||
*/
|
||||
gboolean
|
||||
gst_ringbuffer_prepare_read (GstRingBuffer * buf, gint * segment,
|
||||
gst_ring_buffer_prepare_read (GstRingBuffer * buf, gint * segment,
|
||||
guint8 ** readptr, gint * len)
|
||||
{
|
||||
guint8 *data;
|
||||
gint segdone;
|
||||
|
||||
/* buffer must be started */
|
||||
if (g_atomic_int_get (&buf->state) != GST_RINGBUFFER_STATE_STARTED)
|
||||
if (g_atomic_int_get (&buf->state) != GST_RING_BUFFER_STATE_STARTED)
|
||||
return FALSE;
|
||||
|
||||
g_return_val_if_fail (buf != NULL, FALSE);
|
||||
|
@ -1034,7 +1034,7 @@ gst_ringbuffer_prepare_read (GstRingBuffer * buf, gint * segment,
|
|||
}
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_advance:
|
||||
* gst_ring_buffer_advance:
|
||||
* @buf: the #GstRingBuffer to advance
|
||||
* @advance: the number of segments written
|
||||
*
|
||||
|
@ -1044,7 +1044,7 @@ gst_ringbuffer_prepare_read (GstRingBuffer * buf, gint * segment,
|
|||
* MT safe.
|
||||
*/
|
||||
void
|
||||
gst_ringbuffer_advance (GstRingBuffer * buf, guint advance)
|
||||
gst_ring_buffer_advance (GstRingBuffer * buf, guint advance)
|
||||
{
|
||||
g_return_if_fail (buf != NULL);
|
||||
|
||||
|
@ -1057,13 +1057,13 @@ gst_ringbuffer_advance (GstRingBuffer * buf, guint advance)
|
|||
if (g_atomic_int_compare_and_exchange (&buf->waiting, 1, 0)) {
|
||||
GST_LOCK (buf);
|
||||
GST_DEBUG ("signal waiter");
|
||||
GST_RINGBUFFER_SIGNAL (buf);
|
||||
GST_RING_BUFFER_SIGNAL (buf);
|
||||
GST_UNLOCK (buf);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gst_ringbuffer_clear:
|
||||
* gst_ring_buffer_clear:
|
||||
* @buf: the #GstRingBuffer to clear
|
||||
* @segment: the segment to clear
|
||||
*
|
||||
|
@ -1073,7 +1073,7 @@ gst_ringbuffer_advance (GstRingBuffer * buf, guint advance)
|
|||
* MT safe.
|
||||
*/
|
||||
void
|
||||
gst_ringbuffer_clear (GstRingBuffer * buf, gint segment)
|
||||
gst_ring_buffer_clear (GstRingBuffer * buf, gint segment)
|
||||
{
|
||||
guint8 *data;
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
|
||||
* 2005 Wim Taymans <wim@fluendo.com>
|
||||
*
|
||||
* gstringbuffer.h:
|
||||
* gstringbuffer.h:
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
|
@ -20,19 +20,19 @@
|
|||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GST_RINGBUFFER_H__
|
||||
#define __GST_RINGBUFFER_H__
|
||||
#ifndef __GST_RING_BUFFER_H__
|
||||
#define __GST_RING_BUFFER_H__
|
||||
|
||||
#include <gst/gst.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GST_TYPE_RINGBUFFER (gst_ringbuffer_get_type())
|
||||
#define GST_RINGBUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RINGBUFFER,GstRingBuffer))
|
||||
#define GST_RINGBUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RINGBUFFER,GstRingBufferClass))
|
||||
#define GST_RINGBUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_RINGBUFFER, GstRingBufferClass))
|
||||
#define GST_IS_RINGBUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RINGBUFFER))
|
||||
#define GST_IS_RINGBUFFER_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RINGBUFFER))
|
||||
#define GST_TYPE_RING_BUFFER (gst_ring_buffer_get_type())
|
||||
#define GST_RING_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RING_BUFFER,GstRingBuffer))
|
||||
#define GST_RING_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RING_BUFFER,GstRingBufferClass))
|
||||
#define GST_RING_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_RING_BUFFER, GstRingBufferClass))
|
||||
#define GST_IS_RING_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RING_BUFFER))
|
||||
#define GST_IS_RING_BUFFER_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RING_BUFFER))
|
||||
|
||||
typedef struct _GstRingBuffer GstRingBuffer;
|
||||
typedef struct _GstRingBufferClass GstRingBufferClass;
|
||||
|
@ -42,9 +42,9 @@ typedef struct _GstRingBufferSpec GstRingBufferSpec;
|
|||
typedef void (*GstRingBufferCallback) (GstRingBuffer *rbuf, guint8* data, guint len, gpointer user_data);
|
||||
|
||||
typedef enum {
|
||||
GST_RINGBUFFER_STATE_STOPPED,
|
||||
GST_RINGBUFFER_STATE_PAUSED,
|
||||
GST_RINGBUFFER_STATE_STARTED,
|
||||
GST_RING_BUFFER_STATE_STOPPED,
|
||||
GST_RING_BUFFER_STATE_PAUSED,
|
||||
GST_RING_BUFFER_STATE_STARTED,
|
||||
} GstRingBufferState;
|
||||
|
||||
typedef enum {
|
||||
|
@ -141,10 +141,10 @@ struct _GstRingBufferSpec
|
|||
guint8 silence_sample[32]; /* bytes representing silence */
|
||||
};
|
||||
|
||||
#define GST_RINGBUFFER_GET_COND(buf) (((GstRingBuffer *)buf)->cond)
|
||||
#define GST_RINGBUFFER_WAIT(buf) (g_cond_wait (GST_RINGBUFFER_GET_COND (buf), GST_GET_LOCK (buf)))
|
||||
#define GST_RINGBUFFER_SIGNAL(buf) (g_cond_signal (GST_RINGBUFFER_GET_COND (buf)))
|
||||
#define GST_RINGBUFFER_BROADCAST(buf)(g_cond_broadcast (GST_RINGBUFFER_GET_COND (buf)))
|
||||
#define GST_RING_BUFFER_GET_COND(buf) (((GstRingBuffer *)buf)->cond)
|
||||
#define GST_RING_BUFFER_WAIT(buf) (g_cond_wait (GST_RING_BUFFER_GET_COND (buf), GST_GET_LOCK (buf)))
|
||||
#define GST_RING_BUFFER_SIGNAL(buf) (g_cond_signal (GST_RING_BUFFER_GET_COND (buf)))
|
||||
#define GST_RING_BUFFER_BROADCAST(buf)(g_cond_broadcast (GST_RING_BUFFER_GET_COND (buf)))
|
||||
|
||||
struct _GstRingBuffer {
|
||||
GstObject object;
|
||||
|
@ -188,46 +188,46 @@ struct _GstRingBufferClass {
|
|||
guint (*delay) (GstRingBuffer *buf);
|
||||
};
|
||||
|
||||
GType gst_ringbuffer_get_type(void);
|
||||
GType gst_ring_buffer_get_type(void);
|
||||
|
||||
/* callback stuff */
|
||||
void gst_ringbuffer_set_callback (GstRingBuffer *buf, GstRingBufferCallback cb,
|
||||
void gst_ring_buffer_set_callback (GstRingBuffer *buf, GstRingBufferCallback cb,
|
||||
gpointer user_data);
|
||||
|
||||
gboolean gst_ringbuffer_parse_caps (GstRingBufferSpec *spec, GstCaps *caps);
|
||||
void gst_ringbuffer_debug_spec_caps (GstRingBufferSpec *spec);
|
||||
void gst_ringbuffer_debug_spec_buff (GstRingBufferSpec *spec);
|
||||
gboolean gst_ring_buffer_parse_caps (GstRingBufferSpec *spec, GstCaps *caps);
|
||||
void gst_ring_buffer_debug_spec_caps (GstRingBufferSpec *spec);
|
||||
void gst_ring_buffer_debug_spec_buff (GstRingBufferSpec *spec);
|
||||
|
||||
/* allocate resources */
|
||||
gboolean gst_ringbuffer_acquire (GstRingBuffer *buf, GstRingBufferSpec *spec);
|
||||
gboolean gst_ringbuffer_release (GstRingBuffer *buf);
|
||||
gboolean gst_ring_buffer_acquire (GstRingBuffer *buf, GstRingBufferSpec *spec);
|
||||
gboolean gst_ring_buffer_release (GstRingBuffer *buf);
|
||||
|
||||
gboolean gst_ringbuffer_is_acquired (GstRingBuffer *buf);
|
||||
gboolean gst_ring_buffer_is_acquired (GstRingBuffer *buf);
|
||||
|
||||
/* playback/pause */
|
||||
gboolean gst_ringbuffer_start (GstRingBuffer *buf);
|
||||
gboolean gst_ringbuffer_pause (GstRingBuffer *buf);
|
||||
gboolean gst_ringbuffer_stop (GstRingBuffer *buf);
|
||||
gboolean gst_ring_buffer_start (GstRingBuffer *buf);
|
||||
gboolean gst_ring_buffer_pause (GstRingBuffer *buf);
|
||||
gboolean gst_ring_buffer_stop (GstRingBuffer *buf);
|
||||
|
||||
/* get status */
|
||||
guint gst_ringbuffer_delay (GstRingBuffer *buf);
|
||||
guint64 gst_ringbuffer_samples_done (GstRingBuffer *buf);
|
||||
guint gst_ring_buffer_delay (GstRingBuffer *buf);
|
||||
guint64 gst_ring_buffer_samples_done (GstRingBuffer *buf);
|
||||
|
||||
void gst_ringbuffer_set_sample (GstRingBuffer *buf, guint64 sample);
|
||||
void gst_ring_buffer_set_sample (GstRingBuffer *buf, guint64 sample);
|
||||
|
||||
/* commit samples */
|
||||
guint gst_ringbuffer_commit (GstRingBuffer *buf, guint64 sample,
|
||||
guint gst_ring_buffer_commit (GstRingBuffer *buf, guint64 sample,
|
||||
guchar *data, guint len);
|
||||
/* read samples */
|
||||
guint gst_ringbuffer_read (GstRingBuffer *buf, guint64 sample,
|
||||
guint gst_ring_buffer_read (GstRingBuffer *buf, guint64 sample,
|
||||
guchar *data, guint len);
|
||||
|
||||
/* mostly protected */
|
||||
gboolean gst_ringbuffer_prepare_write (GstRingBuffer *buf, gint *segment, guint8 **writeptr, gint *len);
|
||||
gboolean gst_ringbuffer_prepare_read (GstRingBuffer *buf, gint *segment, guint8 **readptr, gint *len);
|
||||
void gst_ringbuffer_clear (GstRingBuffer *buf, gint segment);
|
||||
void gst_ringbuffer_advance (GstRingBuffer *buf, guint advance);
|
||||
gboolean gst_ring_buffer_prepare_write (GstRingBuffer *buf, gint *segment, guint8 **writeptr, gint *len);
|
||||
gboolean gst_ring_buffer_prepare_read (GstRingBuffer *buf, gint *segment, guint8 **readptr, gint *len);
|
||||
void gst_ring_buffer_clear (GstRingBuffer *buf, gint segment);
|
||||
void gst_ring_buffer_advance (GstRingBuffer *buf, guint advance);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GST_RINGBUFFER_H__ */
|
||||
#endif /* __GST_RING_BUFFER_H__ */
|
||||
|
|
|
@ -31,14 +31,14 @@ static GstElementClass *parent_class = NULL;
|
|||
/* Initing stuff */
|
||||
|
||||
static void
|
||||
gst_videosink_init (GstVideoSink * videosink)
|
||||
gst_video_sink_init (GstVideoSink * videosink)
|
||||
{
|
||||
videosink->width = 0;
|
||||
videosink->height = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
gst_videosink_class_init (GstVideoSinkClass * klass)
|
||||
gst_video_sink_class_init (GstVideoSinkClass * klass)
|
||||
{
|
||||
GObjectClass *gobject_class;
|
||||
GstElementClass *gstelement_class;
|
||||
|
@ -52,7 +52,7 @@ gst_videosink_class_init (GstVideoSinkClass * klass)
|
|||
/* Public methods */
|
||||
|
||||
GType
|
||||
gst_videosink_get_type (void)
|
||||
gst_video_sink_get_type (void)
|
||||
{
|
||||
static GType videosink_type = 0;
|
||||
|
||||
|
@ -61,15 +61,15 @@ gst_videosink_get_type (void)
|
|||
sizeof (GstVideoSinkClass),
|
||||
NULL,
|
||||
NULL,
|
||||
(GClassInitFunc) gst_videosink_class_init,
|
||||
(GClassInitFunc) gst_video_sink_class_init,
|
||||
NULL,
|
||||
NULL,
|
||||
sizeof (GstVideoSink),
|
||||
0,
|
||||
(GInstanceInitFunc) gst_videosink_init,
|
||||
(GInstanceInitFunc) gst_video_sink_init,
|
||||
};
|
||||
|
||||
videosink_type = g_type_register_static (GST_TYPE_BASESINK,
|
||||
videosink_type = g_type_register_static (GST_TYPE_BASE_SINK,
|
||||
"GstVideoSink", &videosink_info, 0);
|
||||
}
|
||||
|
||||
|
|
|
@ -19,30 +19,30 @@
|
|||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GST_VIDEOSINK_H__
|
||||
#define __GST_VIDEOSINK_H__
|
||||
#ifndef __GST_VIDEO_SINK_H__
|
||||
#define __GST_VIDEO_SINK_H__
|
||||
|
||||
#include <gst/gst.h>
|
||||
#include <gst/base/gstbasesink.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GST_TYPE_VIDEOSINK (gst_videosink_get_type())
|
||||
#define GST_VIDEOSINK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_VIDEOSINK, GstVideoSink))
|
||||
#define GST_VIDEOSINK_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_VIDEOSINK, GstVideoSink))
|
||||
#define GST_IS_VIDEOSINK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_VIDEOSINK))
|
||||
#define GST_IS_VIDEOSINK_CLASS(obj) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_VIDEOSINK))
|
||||
#define GST_VIDEOSINK_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_VIDEOSINK, GstVideoSinkClass))
|
||||
#define GST_TYPE_VIDEO_SINK (gst_video_sink_get_type())
|
||||
#define GST_VIDEO_SINK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_VIDEO_SINK, GstVideoSink))
|
||||
#define GST_VIDEO_SINK_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_VIDEO_SINK, GstVideoSink))
|
||||
#define GST_IS_VIDEO_SINK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_VIDEO_SINK))
|
||||
#define GST_IS_VIDEO_SINK_CLASS(obj) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_VIDEO_SINK))
|
||||
#define GST_VIDEO_SINK_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_VIDEO_SINK, GstVideoSinkClass))
|
||||
|
||||
#define GST_VIDEOSINK_PAD GST_BASESINK_PAD
|
||||
#define GST_VIDEOSINK_CLOCK GST_BASESINK_CLOCK
|
||||
#define GST_VIDEOSINK_WIDTH(obj) (GST_VIDEOSINK (obj)->width)
|
||||
#define GST_VIDEOSINK_HEIGHT(obj) (GST_VIDEOSINK (obj)->height)
|
||||
#define GST_VIDEO_SINK_PAD GST_BASE_SINK_PAD
|
||||
#define GST_VIDEO_SINK_CLOCK GST_BASE_SINK_CLOCK
|
||||
#define GST_VIDEO_SINK_WIDTH(obj) (GST_VIDEO_SINK (obj)->width)
|
||||
#define GST_VIDEO_SINK_HEIGHT(obj) (GST_VIDEO_SINK (obj)->height)
|
||||
|
||||
typedef struct _GstVideoSink GstVideoSink;
|
||||
typedef struct _GstVideoSinkClass GstVideoSinkClass;
|
||||
|
@ -61,8 +61,8 @@ struct _GstVideoSinkClass {
|
|||
gpointer _gst_reserved[GST_PADDING];
|
||||
};
|
||||
|
||||
GType gst_videosink_get_type (void);
|
||||
GType gst_video_sink_get_type (void);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GST_VIDEOSINK_H__ */
|
||||
#endif /* __GST_VIDEO_SINK_H__ */
|
||||
|
|
|
@ -19,30 +19,30 @@
|
|||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GST_VIDEOSINK_H__
|
||||
#define __GST_VIDEOSINK_H__
|
||||
#ifndef __GST_VIDEO_SINK_H__
|
||||
#define __GST_VIDEO_SINK_H__
|
||||
|
||||
#include <gst/gst.h>
|
||||
#include <gst/base/gstbasesink.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GST_TYPE_VIDEOSINK (gst_videosink_get_type())
|
||||
#define GST_VIDEOSINK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_VIDEOSINK, GstVideoSink))
|
||||
#define GST_VIDEOSINK_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_VIDEOSINK, GstVideoSink))
|
||||
#define GST_IS_VIDEOSINK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_VIDEOSINK))
|
||||
#define GST_IS_VIDEOSINK_CLASS(obj) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_VIDEOSINK))
|
||||
#define GST_VIDEOSINK_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_VIDEOSINK, GstVideoSinkClass))
|
||||
#define GST_TYPE_VIDEO_SINK (gst_video_sink_get_type())
|
||||
#define GST_VIDEO_SINK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_VIDEO_SINK, GstVideoSink))
|
||||
#define GST_VIDEO_SINK_CLASS(klass) \
|
||||
(G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_VIDEO_SINK, GstVideoSink))
|
||||
#define GST_IS_VIDEO_SINK(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_VIDEO_SINK))
|
||||
#define GST_IS_VIDEO_SINK_CLASS(obj) \
|
||||
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_VIDEO_SINK))
|
||||
#define GST_VIDEO_SINK_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_VIDEO_SINK, GstVideoSinkClass))
|
||||
|
||||
#define GST_VIDEOSINK_PAD GST_BASESINK_PAD
|
||||
#define GST_VIDEOSINK_CLOCK GST_BASESINK_CLOCK
|
||||
#define GST_VIDEOSINK_WIDTH(obj) (GST_VIDEOSINK (obj)->width)
|
||||
#define GST_VIDEOSINK_HEIGHT(obj) (GST_VIDEOSINK (obj)->height)
|
||||
#define GST_VIDEO_SINK_PAD GST_BASE_SINK_PAD
|
||||
#define GST_VIDEO_SINK_CLOCK GST_BASE_SINK_CLOCK
|
||||
#define GST_VIDEO_SINK_WIDTH(obj) (GST_VIDEO_SINK (obj)->width)
|
||||
#define GST_VIDEO_SINK_HEIGHT(obj) (GST_VIDEO_SINK (obj)->height)
|
||||
|
||||
typedef struct _GstVideoSink GstVideoSink;
|
||||
typedef struct _GstVideoSinkClass GstVideoSinkClass;
|
||||
|
@ -61,8 +61,8 @@ struct _GstVideoSinkClass {
|
|||
gpointer _gst_reserved[GST_PADDING];
|
||||
};
|
||||
|
||||
GType gst_videosink_get_type (void);
|
||||
GType gst_video_sink_get_type (void);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GST_VIDEOSINK_H__ */
|
||||
#endif /* __GST_VIDEO_SINK_H__ */
|
||||
|
|
|
@ -256,7 +256,7 @@ gst_multifdsink_get_type (void)
|
|||
};
|
||||
|
||||
multifdsink_type =
|
||||
g_type_register_static (GST_TYPE_BASESINK, "GstMultiFdSink",
|
||||
g_type_register_static (GST_TYPE_BASE_SINK, "GstMultiFdSink",
|
||||
&multifdsink_info, 0);
|
||||
}
|
||||
return multifdsink_type;
|
||||
|
@ -284,7 +284,7 @@ gst_multifdsink_class_init (GstMultiFdSinkClass * klass)
|
|||
gstelement_class = (GstElementClass *) klass;
|
||||
gstbasesink_class = (GstBaseSinkClass *) klass;
|
||||
|
||||
parent_class = g_type_class_ref (GST_TYPE_BASESINK);
|
||||
parent_class = g_type_class_ref (GST_TYPE_BASE_SINK);
|
||||
|
||||
gobject_class->set_property = gst_multifdsink_set_property;
|
||||
gobject_class->get_property = gst_multifdsink_get_property;
|
||||
|
@ -943,7 +943,7 @@ gst_multifdsink_handle_client_write (GstMultiFdSink * sink,
|
|||
if (sink->protocol == GST_TCP_PROTOCOL_TYPE_GDP) {
|
||||
if (!client->caps_sent) {
|
||||
const GstCaps *caps =
|
||||
GST_PAD_CAPS (GST_PAD_PEER (GST_BASESINK_PAD (sink)));
|
||||
GST_PAD_CAPS (GST_PAD_PEER (GST_BASE_SINK_PAD (sink)));
|
||||
|
||||
/* queue caps for sending */
|
||||
res = gst_multifdsink_client_queue_caps (sink, client, caps);
|
||||
|
@ -1738,7 +1738,7 @@ gst_multifdsink_change_state (GstElement * element)
|
|||
|
||||
switch (transition) {
|
||||
case GST_STATE_NULL_TO_READY:
|
||||
if (!gst_multifdsink_start (GST_BASESINK (sink)))
|
||||
if (!gst_multifdsink_start (GST_BASE_SINK (sink)))
|
||||
goto start_failed;
|
||||
break;
|
||||
case GST_STATE_READY_TO_PAUSED:
|
||||
|
@ -1757,7 +1757,7 @@ gst_multifdsink_change_state (GstElement * element)
|
|||
case GST_STATE_PAUSED_TO_READY:
|
||||
break;
|
||||
case GST_STATE_READY_TO_NULL:
|
||||
gst_multifdsink_stop (GST_BASESINK (sink));
|
||||
gst_multifdsink_stop (GST_BASE_SINK (sink));
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
|
|
|
@ -120,7 +120,7 @@ gst_tcpclientsink_class_init (GstTCPClientSink * klass)
|
|||
gstelement_class = (GstElementClass *) klass;
|
||||
gstbasesink_class = (GstBaseSinkClass *) klass;
|
||||
|
||||
parent_class = g_type_class_ref (GST_TYPE_BASESINK);
|
||||
parent_class = g_type_class_ref (GST_TYPE_BASE_SINK);
|
||||
|
||||
gobject_class->set_property = gst_tcpclientsink_set_property;
|
||||
gobject_class->get_property = gst_tcpclientsink_get_property;
|
||||
|
@ -182,7 +182,7 @@ gst_tcpclientsink_setcaps (GstBaseSink * bsink, GstCaps * caps)
|
|||
const GstCaps *caps;
|
||||
gchar *string;
|
||||
|
||||
caps = GST_PAD_CAPS (GST_PAD_PEER (GST_BASESINK_PAD (bsink)));
|
||||
caps = GST_PAD_CAPS (GST_PAD_PEER (GST_BASE_SINK_PAD (bsink)));
|
||||
string = gst_caps_to_string (caps);
|
||||
GST_DEBUG_OBJECT (sink, "Sending caps %s through GDP", string);
|
||||
g_free (string);
|
||||
|
|
|
@ -627,8 +627,8 @@ gst_ximagesink_renegotiate_size (GstXImageSink * ximagesink)
|
|||
scaler to fit that new size only if size of the window differs from our
|
||||
size. */
|
||||
|
||||
if (GST_VIDEOSINK_WIDTH (ximagesink) != ximagesink->xwindow->width ||
|
||||
GST_VIDEOSINK_HEIGHT (ximagesink) != ximagesink->xwindow->height) {
|
||||
if (GST_VIDEO_SINK_WIDTH (ximagesink) != ximagesink->xwindow->width ||
|
||||
GST_VIDEO_SINK_HEIGHT (ximagesink) != ximagesink->xwindow->height) {
|
||||
GstCaps *caps;
|
||||
|
||||
caps = gst_caps_new_simple ("video/x-raw-rgb",
|
||||
|
@ -651,10 +651,10 @@ gst_ximagesink_renegotiate_size (GstXImageSink * ximagesink)
|
|||
nom, den, NULL);
|
||||
}
|
||||
|
||||
if (gst_pad_peer_accept_caps (GST_VIDEOSINK_PAD (ximagesink), caps)) {
|
||||
if (gst_pad_peer_accept_caps (GST_VIDEO_SINK_PAD (ximagesink), caps)) {
|
||||
gst_caps_replace (&ximagesink->desired_caps, caps);
|
||||
GST_VIDEOSINK_WIDTH (ximagesink) = ximagesink->xwindow->width;
|
||||
GST_VIDEOSINK_HEIGHT (ximagesink) = ximagesink->xwindow->height;
|
||||
GST_VIDEO_SINK_WIDTH (ximagesink) = ximagesink->xwindow->width;
|
||||
GST_VIDEO_SINK_HEIGHT (ximagesink) = ximagesink->xwindow->height;
|
||||
|
||||
if (ximagesink->ximage) {
|
||||
GST_DEBUG_OBJECT (ximagesink, "destroying and recreating our ximage");
|
||||
|
@ -1026,7 +1026,7 @@ gst_ximagesink_getcaps (GstBaseSink * bsink)
|
|||
|
||||
/* get a template copy and add the pixel aspect ratio */
|
||||
caps =
|
||||
gst_caps_copy (gst_pad_get_pad_template_caps (GST_BASESINK (ximagesink)->
|
||||
gst_caps_copy (gst_pad_get_pad_template_caps (GST_BASE_SINK (ximagesink)->
|
||||
sinkpad));
|
||||
for (i = 0; i < gst_caps_get_size (caps); ++i) {
|
||||
GstStructure *structure = gst_caps_get_structure (caps, i);
|
||||
|
@ -1061,11 +1061,11 @@ gst_ximagesink_setcaps (GstBaseSink * bsink, GstCaps * caps)
|
|||
GST_PTR_FORMAT, ximagesink->xcontext->caps, caps);
|
||||
|
||||
structure = gst_caps_get_structure (caps, 0);
|
||||
if (GST_VIDEOSINK_WIDTH (ximagesink) == 0) {
|
||||
if (GST_VIDEO_SINK_WIDTH (ximagesink) == 0) {
|
||||
ret &= gst_structure_get_int (structure, "width",
|
||||
&(GST_VIDEOSINK_WIDTH (ximagesink)));
|
||||
&(GST_VIDEO_SINK_WIDTH (ximagesink)));
|
||||
ret &= gst_structure_get_int (structure, "height",
|
||||
&(GST_VIDEOSINK_HEIGHT (ximagesink)));
|
||||
&(GST_VIDEO_SINK_HEIGHT (ximagesink)));
|
||||
}
|
||||
ret &= gst_structure_get_double (structure,
|
||||
"framerate", &ximagesink->framerate);
|
||||
|
@ -1081,23 +1081,24 @@ gst_ximagesink_setcaps (GstBaseSink * bsink, GstCaps * caps)
|
|||
goto wrong_aspect;
|
||||
|
||||
/* Creating our window and our image */
|
||||
g_assert (GST_VIDEOSINK_WIDTH (ximagesink) > 0);
|
||||
g_assert (GST_VIDEOSINK_HEIGHT (ximagesink) > 0);
|
||||
g_assert (GST_VIDEO_SINK_WIDTH (ximagesink) > 0);
|
||||
g_assert (GST_VIDEO_SINK_HEIGHT (ximagesink) > 0);
|
||||
if (!ximagesink->xwindow) {
|
||||
ximagesink->xwindow = gst_ximagesink_xwindow_new (ximagesink,
|
||||
GST_VIDEOSINK_WIDTH (ximagesink), GST_VIDEOSINK_HEIGHT (ximagesink));
|
||||
GST_VIDEO_SINK_WIDTH (ximagesink), GST_VIDEO_SINK_HEIGHT (ximagesink));
|
||||
} else {
|
||||
if (ximagesink->xwindow->internal) {
|
||||
gst_ximagesink_xwindow_resize (ximagesink, ximagesink->xwindow,
|
||||
GST_VIDEOSINK_WIDTH (ximagesink), GST_VIDEOSINK_HEIGHT (ximagesink));
|
||||
GST_VIDEO_SINK_WIDTH (ximagesink),
|
||||
GST_VIDEO_SINK_HEIGHT (ximagesink));
|
||||
}
|
||||
}
|
||||
|
||||
/* If our ximage has changed we destroy it, next chain iteration will create
|
||||
a new one */
|
||||
if ((ximagesink->ximage) &&
|
||||
((GST_VIDEOSINK_WIDTH (ximagesink) != ximagesink->ximage->width) ||
|
||||
(GST_VIDEOSINK_HEIGHT (ximagesink) != ximagesink->ximage->height))) {
|
||||
((GST_VIDEO_SINK_WIDTH (ximagesink) != ximagesink->ximage->width) ||
|
||||
(GST_VIDEO_SINK_HEIGHT (ximagesink) != ximagesink->ximage->height))) {
|
||||
gst_ximagesink_ximage_destroy (ximagesink, ximagesink->ximage);
|
||||
ximagesink->ximage = NULL;
|
||||
}
|
||||
|
@ -1105,7 +1106,7 @@ gst_ximagesink_setcaps (GstBaseSink * bsink, GstCaps * caps)
|
|||
g_mutex_unlock (ximagesink->stream_lock);
|
||||
|
||||
gst_x_overlay_got_desired_size (GST_X_OVERLAY (ximagesink),
|
||||
GST_VIDEOSINK_WIDTH (ximagesink), GST_VIDEOSINK_HEIGHT (ximagesink));
|
||||
GST_VIDEO_SINK_WIDTH (ximagesink), GST_VIDEO_SINK_HEIGHT (ximagesink));
|
||||
|
||||
return TRUE;
|
||||
|
||||
|
@ -1152,8 +1153,8 @@ gst_ximagesink_change_state (GstElement * element)
|
|||
gst_ximagesink_xwindow_clear (ximagesink, ximagesink->xwindow);
|
||||
ximagesink->framerate = 0;
|
||||
ximagesink->sw_scaling_failed = FALSE;
|
||||
GST_VIDEOSINK_WIDTH (ximagesink) = 0;
|
||||
GST_VIDEOSINK_HEIGHT (ximagesink) = 0;
|
||||
GST_VIDEO_SINK_WIDTH (ximagesink) = 0;
|
||||
GST_VIDEO_SINK_HEIGHT (ximagesink) = 0;
|
||||
g_mutex_unlock (ximagesink->stream_lock);
|
||||
break;
|
||||
case GST_STATE_READY_TO_NULL:
|
||||
|
@ -1231,7 +1232,8 @@ gst_ximagesink_show_frame (GstBaseSink * bsink, GstBuffer * buf)
|
|||
if (!ximagesink->ximage) {
|
||||
GST_DEBUG_OBJECT (ximagesink, "creating our ximage");
|
||||
ximagesink->ximage = gst_ximagesink_ximage_new (ximagesink,
|
||||
GST_VIDEOSINK_WIDTH (ximagesink), GST_VIDEOSINK_HEIGHT (ximagesink));
|
||||
GST_VIDEO_SINK_WIDTH (ximagesink),
|
||||
GST_VIDEO_SINK_HEIGHT (ximagesink));
|
||||
if (!ximagesink->ximage) {
|
||||
/* No image available. That's very bad ! */
|
||||
gst_buffer_unref (buf);
|
||||
|
@ -1271,8 +1273,8 @@ gst_ximagesink_buffer_free (GstBuffer * buffer)
|
|||
ximagesink = ximage->ximagesink;
|
||||
|
||||
/* If our geometry changed we can't reuse that image. */
|
||||
if ((ximage->width != GST_VIDEOSINK_WIDTH (ximagesink)) ||
|
||||
(ximage->height != GST_VIDEOSINK_HEIGHT (ximagesink)))
|
||||
if ((ximage->width != GST_VIDEO_SINK_WIDTH (ximagesink)) ||
|
||||
(ximage->height != GST_VIDEO_SINK_HEIGHT (ximagesink)))
|
||||
gst_ximagesink_ximage_destroy (ximagesink, ximage);
|
||||
else {
|
||||
/* In that case we can reuse the image and add it to our image pool. */
|
||||
|
@ -1295,7 +1297,7 @@ gst_ximagesink_buffer_alloc (GstBaseSink * bsink, guint64 offset, guint size,
|
|||
|
||||
/* FIXME, we should just parse the caps, and provide a buffer in this format,
|
||||
* we should not just reconfigure ourselves yet */
|
||||
if (caps && !GST_PAD_CAPS (GST_VIDEOSINK_PAD (ximagesink))) {
|
||||
if (caps && !GST_PAD_CAPS (GST_VIDEO_SINK_PAD (ximagesink))) {
|
||||
if (!gst_ximagesink_setcaps (bsink, caps)) {
|
||||
return GST_FLOW_NOT_NEGOTIATED;
|
||||
}
|
||||
|
@ -1313,8 +1315,8 @@ gst_ximagesink_buffer_alloc (GstBaseSink * bsink, guint64 offset, guint size,
|
|||
ximagesink->image_pool = g_slist_delete_link (ximagesink->image_pool,
|
||||
ximagesink->image_pool);
|
||||
|
||||
if ((ximage->width != GST_VIDEOSINK_WIDTH (ximagesink)) ||
|
||||
(ximage->height != GST_VIDEOSINK_HEIGHT (ximagesink))) {
|
||||
if ((ximage->width != GST_VIDEO_SINK_WIDTH (ximagesink)) ||
|
||||
(ximage->height != GST_VIDEO_SINK_HEIGHT (ximagesink))) {
|
||||
/* This image is unusable. Destroying... */
|
||||
gst_ximagesink_ximage_destroy (ximagesink, ximage);
|
||||
ximage = NULL;
|
||||
|
@ -1337,8 +1339,8 @@ gst_ximagesink_buffer_alloc (GstBaseSink * bsink, guint64 offset, guint size,
|
|||
gst_structure_get_int (s, "width", &width);
|
||||
gst_structure_get_int (s, "height", &height);
|
||||
} else {
|
||||
width = GST_VIDEOSINK_WIDTH (ximagesink);
|
||||
height = GST_VIDEOSINK_HEIGHT (ximagesink);
|
||||
width = GST_VIDEO_SINK_WIDTH (ximagesink);
|
||||
height = GST_VIDEO_SINK_HEIGHT (ximagesink);
|
||||
}
|
||||
|
||||
GST_DEBUG_OBJECT (ximagesink, "no usable image in pool, creating ximage");
|
||||
|
@ -1395,7 +1397,7 @@ gst_ximagesink_send_pending_navigation (GstXImageSink * ximagesink)
|
|||
if (event) {
|
||||
structure = event->event_data.structure.structure;
|
||||
|
||||
if (!GST_PAD_PEER (GST_VIDEOSINK_PAD (ximagesink))) {
|
||||
if (!GST_PAD_PEER (GST_VIDEO_SINK_PAD (ximagesink))) {
|
||||
gst_event_unref (event);
|
||||
cur = g_slist_next (cur);
|
||||
continue;
|
||||
|
@ -1407,9 +1409,9 @@ gst_ximagesink_send_pending_navigation (GstXImageSink * ximagesink)
|
|||
to match the applied scaling. So here we just add the offset if the image
|
||||
is centered in the window. */
|
||||
|
||||
x_offset = ximagesink->xwindow->width - GST_VIDEOSINK_WIDTH (ximagesink);
|
||||
x_offset = ximagesink->xwindow->width - GST_VIDEO_SINK_WIDTH (ximagesink);
|
||||
y_offset =
|
||||
ximagesink->xwindow->height - GST_VIDEOSINK_HEIGHT (ximagesink);
|
||||
ximagesink->xwindow->height - GST_VIDEO_SINK_HEIGHT (ximagesink);
|
||||
|
||||
if (gst_structure_get_double (structure, "pointer_x", &x)) {
|
||||
x -= x_offset / 2;
|
||||
|
@ -1420,7 +1422,7 @@ gst_ximagesink_send_pending_navigation (GstXImageSink * ximagesink)
|
|||
gst_structure_set (structure, "pointer_y", G_TYPE_DOUBLE, y, NULL);
|
||||
}
|
||||
|
||||
gst_pad_send_event (gst_pad_get_peer (GST_VIDEOSINK_PAD (ximagesink)),
|
||||
gst_pad_send_event (gst_pad_get_peer (GST_VIDEO_SINK_PAD (ximagesink)),
|
||||
event);
|
||||
}
|
||||
cur = g_slist_next (cur);
|
||||
|
@ -1498,9 +1500,10 @@ gst_ximagesink_set_xwindow_id (GstXOverlay * overlay, XID xwindow_id)
|
|||
if (xwindow_id == 0) {
|
||||
/* If no width/height caps nego did not happen window will be created
|
||||
during caps nego then */
|
||||
if (GST_VIDEOSINK_WIDTH (ximagesink) && GST_VIDEOSINK_HEIGHT (ximagesink)) {
|
||||
if (GST_VIDEO_SINK_WIDTH (ximagesink) && GST_VIDEO_SINK_HEIGHT (ximagesink)) {
|
||||
xwindow = gst_ximagesink_xwindow_new (ximagesink,
|
||||
GST_VIDEOSINK_WIDTH (ximagesink), GST_VIDEOSINK_HEIGHT (ximagesink));
|
||||
GST_VIDEO_SINK_WIDTH (ximagesink),
|
||||
GST_VIDEO_SINK_HEIGHT (ximagesink));
|
||||
}
|
||||
} else {
|
||||
xwindow = g_new0 (GstXWindow, 1);
|
||||
|
@ -1524,9 +1527,9 @@ gst_ximagesink_set_xwindow_id (GstXOverlay * overlay, XID xwindow_id)
|
|||
#if 0
|
||||
/* If that new window geometry differs from our one we try to
|
||||
renegotiate caps */
|
||||
if (gst_pad_is_negotiated (GST_VIDEOSINK_PAD (ximagesink)) &&
|
||||
(xwindow->width != GST_VIDEOSINK_WIDTH (ximagesink) ||
|
||||
xwindow->height != GST_VIDEOSINK_HEIGHT (ximagesink))) {
|
||||
if (gst_pad_is_negotiated (GST_VIDEO_SINK_PAD (ximagesink)) &&
|
||||
(xwindow->width != GST_VIDEO_SINK_WIDTH (ximagesink) ||
|
||||
xwindow->height != GST_VIDEO_SINK_HEIGHT (ximagesink))) {
|
||||
GstPadLinkReturn r;
|
||||
GstCaps *caps;
|
||||
|
||||
|
@ -1551,12 +1554,12 @@ gst_ximagesink_set_xwindow_id (GstXOverlay * overlay, XID xwindow_id)
|
|||
gst_caps_set_simple (caps, "pixel-aspect-ratio", GST_TYPE_FRACTION,
|
||||
nom, den, NULL);
|
||||
}
|
||||
r = gst_pad_try_set_caps (GST_VIDEOSINK_PAD (ximagesink), caps);
|
||||
r = gst_pad_try_set_caps (GST_VIDEO_SINK_PAD (ximagesink), caps);
|
||||
|
||||
/* If caps nego succeded updating our size */
|
||||
if ((r == GST_PAD_LINK_OK) || (r == GST_PAD_LINK_DONE)) {
|
||||
GST_VIDEOSINK_WIDTH (ximagesink) = xwindow->width;
|
||||
GST_VIDEOSINK_HEIGHT (ximagesink) = xwindow->height;
|
||||
GST_VIDEO_SINK_WIDTH (ximagesink) = xwindow->width;
|
||||
GST_VIDEO_SINK_HEIGHT (ximagesink) = xwindow->height;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -1574,8 +1577,8 @@ gst_ximagesink_get_desired_size (GstXOverlay * overlay,
|
|||
{
|
||||
GstXImageSink *ximagesink = GST_XIMAGESINK (overlay);
|
||||
|
||||
*width = GST_VIDEOSINK_WIDTH (ximagesink);
|
||||
*height = GST_VIDEOSINK_HEIGHT (ximagesink);
|
||||
*width = GST_VIDEO_SINK_WIDTH (ximagesink);
|
||||
*height = GST_VIDEO_SINK_HEIGHT (ximagesink);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1786,7 +1789,7 @@ gst_ximagesink_class_init (GstXImageSinkClass * klass)
|
|||
gstelement_class = (GstElementClass *) klass;
|
||||
gstbasesink_class = (GstBaseSinkClass *) klass;
|
||||
|
||||
parent_class = g_type_class_ref (GST_TYPE_VIDEOSINK);
|
||||
parent_class = g_type_class_ref (GST_TYPE_VIDEO_SINK);
|
||||
|
||||
gobject_class->finalize = gst_ximagesink_finalize;
|
||||
gobject_class->set_property = gst_ximagesink_set_property;
|
||||
|
@ -1858,7 +1861,7 @@ gst_ximagesink_get_type (void)
|
|||
NULL,
|
||||
};
|
||||
|
||||
ximagesink_type = g_type_register_static (GST_TYPE_VIDEOSINK,
|
||||
ximagesink_type = g_type_register_static (GST_TYPE_VIDEO_SINK,
|
||||
"GstXImageSink", &ximagesink_info, 0);
|
||||
|
||||
g_type_add_interface_static (ximagesink_type, GST_TYPE_IMPLEMENTS_INTERFACE,
|
||||
|
|
|
@ -1289,7 +1289,7 @@ gst_xvimagesink_getcaps (GstBaseSink * bsink)
|
|||
return gst_caps_ref (xvimagesink->xcontext->caps);
|
||||
|
||||
return
|
||||
gst_caps_copy (gst_pad_get_pad_template_caps (GST_VIDEOSINK_PAD
|
||||
gst_caps_copy (gst_pad_get_pad_template_caps (GST_VIDEO_SINK_PAD
|
||||
(xvimagesink)));
|
||||
}
|
||||
|
||||
|
@ -1374,31 +1374,32 @@ gst_xvimagesink_setcaps (GstBaseSink * bsink, GstCaps * caps)
|
|||
/* check hd / den is an integer scale factor, and scale wd with the PAR */
|
||||
if (video_height % den == 0) {
|
||||
GST_DEBUG_OBJECT (xvimagesink, "keeping video height");
|
||||
GST_VIDEOSINK_WIDTH (xvimagesink) = video_height * num / den;
|
||||
GST_VIDEOSINK_HEIGHT (xvimagesink) = video_height;
|
||||
GST_VIDEO_SINK_WIDTH (xvimagesink) = video_height * num / den;
|
||||
GST_VIDEO_SINK_HEIGHT (xvimagesink) = video_height;
|
||||
} else if (video_width % num == 0) {
|
||||
GST_DEBUG_OBJECT (xvimagesink, "keeping video width");
|
||||
GST_VIDEOSINK_WIDTH (xvimagesink) = video_width;
|
||||
GST_VIDEOSINK_HEIGHT (xvimagesink) = video_width * den / num;
|
||||
GST_VIDEO_SINK_WIDTH (xvimagesink) = video_width;
|
||||
GST_VIDEO_SINK_HEIGHT (xvimagesink) = video_width * den / num;
|
||||
} else {
|
||||
GST_DEBUG_OBJECT (xvimagesink, "approximating while keeping video height");
|
||||
GST_VIDEOSINK_WIDTH (xvimagesink) = video_height * num / den;
|
||||
GST_VIDEOSINK_HEIGHT (xvimagesink) = video_height;
|
||||
GST_VIDEO_SINK_WIDTH (xvimagesink) = video_height * num / den;
|
||||
GST_VIDEO_SINK_HEIGHT (xvimagesink) = video_height;
|
||||
}
|
||||
GST_DEBUG_OBJECT (xvimagesink, "scaling to %dx%d",
|
||||
GST_VIDEOSINK_WIDTH (xvimagesink), GST_VIDEOSINK_HEIGHT (xvimagesink));
|
||||
GST_VIDEO_SINK_WIDTH (xvimagesink), GST_VIDEO_SINK_HEIGHT (xvimagesink));
|
||||
|
||||
/* Creating our window and our image with the display size in pixels */
|
||||
g_assert (GST_VIDEOSINK_WIDTH (xvimagesink) > 0);
|
||||
g_assert (GST_VIDEOSINK_HEIGHT (xvimagesink) > 0);
|
||||
g_assert (GST_VIDEO_SINK_WIDTH (xvimagesink) > 0);
|
||||
g_assert (GST_VIDEO_SINK_HEIGHT (xvimagesink) > 0);
|
||||
if (!xvimagesink->xwindow)
|
||||
xvimagesink->xwindow = gst_xvimagesink_xwindow_new (xvimagesink,
|
||||
GST_VIDEOSINK_WIDTH (xvimagesink), GST_VIDEOSINK_HEIGHT (xvimagesink));
|
||||
GST_VIDEO_SINK_WIDTH (xvimagesink),
|
||||
GST_VIDEO_SINK_HEIGHT (xvimagesink));
|
||||
else {
|
||||
if (xvimagesink->xwindow->internal)
|
||||
gst_xvimagesink_xwindow_resize (xvimagesink, xvimagesink->xwindow,
|
||||
GST_VIDEOSINK_WIDTH (xvimagesink),
|
||||
GST_VIDEOSINK_HEIGHT (xvimagesink));
|
||||
GST_VIDEO_SINK_WIDTH (xvimagesink),
|
||||
GST_VIDEO_SINK_HEIGHT (xvimagesink));
|
||||
}
|
||||
|
||||
/* We renew our xvimage only if size or format changed;
|
||||
|
@ -1419,7 +1420,7 @@ gst_xvimagesink_setcaps (GstBaseSink * bsink, GstCaps * caps)
|
|||
xvimagesink->xcontext->im_format = im_format;
|
||||
|
||||
gst_x_overlay_got_desired_size (GST_X_OVERLAY (xvimagesink),
|
||||
GST_VIDEOSINK_WIDTH (xvimagesink), GST_VIDEOSINK_HEIGHT (xvimagesink));
|
||||
GST_VIDEO_SINK_WIDTH (xvimagesink), GST_VIDEO_SINK_HEIGHT (xvimagesink));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1459,8 +1460,8 @@ gst_xvimagesink_change_state (GstElement * element)
|
|||
break;
|
||||
case GST_STATE_PAUSED_TO_READY:
|
||||
xvimagesink->framerate = 0;
|
||||
GST_VIDEOSINK_WIDTH (xvimagesink) = 0;
|
||||
GST_VIDEOSINK_HEIGHT (xvimagesink) = 0;
|
||||
GST_VIDEO_SINK_WIDTH (xvimagesink) = 0;
|
||||
GST_VIDEO_SINK_HEIGHT (xvimagesink) = 0;
|
||||
break;
|
||||
case GST_STATE_READY_TO_NULL:
|
||||
if (xvimagesink->xvimage) {
|
||||
|
@ -1539,7 +1540,8 @@ gst_xvimagesink_show_frame (GstBaseSink * bsink, GstBuffer * buf)
|
|||
gst_xvimagesink_xvimage_put (xvimagesink, xvimagesink->xvimage);
|
||||
}
|
||||
|
||||
gst_xvimagesink_handle_xevents (xvimagesink, GST_VIDEOSINK_PAD (xvimagesink));
|
||||
gst_xvimagesink_handle_xevents (xvimagesink,
|
||||
GST_VIDEO_SINK_PAD (xvimagesink));
|
||||
|
||||
return GST_FLOW_OK;
|
||||
|
||||
|
@ -1575,7 +1577,7 @@ gst_xvimagesink_buffer_alloc (GstBaseSink * bsink, guint64 offset, guint size,
|
|||
|
||||
/* FIXME, we should just parse the caps, and provide a buffer in this format,
|
||||
* we should not just reconfigure ourselves yet */
|
||||
if (caps && caps != GST_PAD_CAPS (GST_VIDEOSINK_PAD (xvimagesink))) {
|
||||
if (caps && caps != GST_PAD_CAPS (GST_VIDEO_SINK_PAD (xvimagesink))) {
|
||||
if (!gst_xvimagesink_setcaps (bsink, caps)) {
|
||||
return GST_FLOW_NOT_NEGOTIATED;
|
||||
}
|
||||
|
@ -1664,7 +1666,7 @@ gst_xvimagesink_send_pending_navigation (GstXvImageSink * xvimagesink)
|
|||
if (event) {
|
||||
structure = event->event_data.structure.structure;
|
||||
|
||||
if (!GST_PAD_PEER (GST_VIDEOSINK_PAD (xvimagesink))) {
|
||||
if (!GST_PAD_PEER (GST_VIDEO_SINK_PAD (xvimagesink))) {
|
||||
gst_event_unref (event);
|
||||
cur = g_slist_next (cur);
|
||||
continue;
|
||||
|
@ -1682,7 +1684,7 @@ gst_xvimagesink_send_pending_navigation (GstXvImageSink * xvimagesink)
|
|||
gst_structure_set (structure, "pointer_y", G_TYPE_DOUBLE, y, NULL);
|
||||
}
|
||||
|
||||
gst_pad_send_event (gst_pad_get_peer (GST_VIDEOSINK_PAD (xvimagesink)),
|
||||
gst_pad_send_event (gst_pad_get_peer (GST_VIDEO_SINK_PAD (xvimagesink)),
|
||||
event);
|
||||
}
|
||||
cur = g_slist_next (cur);
|
||||
|
@ -1705,17 +1707,17 @@ gst_xvimagesink_navigation_send_event (GstNavigation * navigation,
|
|||
|
||||
/* Converting pointer coordinates to the non scaled geometry */
|
||||
if (gst_structure_get_double (structure, "pointer_x", &x)) {
|
||||
x *= GST_VIDEOSINK_WIDTH (xvimagesink);
|
||||
x *= GST_VIDEO_SINK_WIDTH (xvimagesink);
|
||||
x /= xvimagesink->xwindow->width;
|
||||
gst_structure_set (structure, "pointer_x", G_TYPE_DOUBLE, x, NULL);
|
||||
}
|
||||
if (gst_structure_get_double (structure, "pointer_y", &y)) {
|
||||
y *= GST_VIDEOSINK_HEIGHT (xvimagesink);
|
||||
y *= GST_VIDEO_SINK_HEIGHT (xvimagesink);
|
||||
y /= xvimagesink->xwindow->height;
|
||||
gst_structure_set (structure, "pointer_y", G_TYPE_DOUBLE, y, NULL);
|
||||
}
|
||||
|
||||
gst_pad_send_event (gst_pad_get_peer (GST_VIDEOSINK_PAD (xvimagesink)),
|
||||
gst_pad_send_event (gst_pad_get_peer (GST_VIDEO_SINK_PAD (xvimagesink)),
|
||||
event);
|
||||
}
|
||||
|
||||
|
@ -1765,10 +1767,12 @@ gst_xvimagesink_set_xwindow_id (GstXOverlay * overlay, XID xwindow_id)
|
|||
if (xwindow_id == 0) {
|
||||
/* If no width/height caps nego did not happen window will be created
|
||||
during caps nego then */
|
||||
if (GST_VIDEOSINK_WIDTH (xvimagesink) && GST_VIDEOSINK_HEIGHT (xvimagesink)) {
|
||||
xwindow = gst_xvimagesink_xwindow_new (xvimagesink,
|
||||
GST_VIDEOSINK_WIDTH (xvimagesink),
|
||||
GST_VIDEOSINK_HEIGHT (xvimagesink));
|
||||
if (GST_VIDEO_SINK_WIDTH (xvimagesink)
|
||||
&& GST_VIDEO_SINK_HEIGHT (xvimagesink)) {
|
||||
xwindow =
|
||||
gst_xvimagesink_xwindow_new (xvimagesink,
|
||||
GST_VIDEO_SINK_WIDTH (xvimagesink),
|
||||
GST_VIDEO_SINK_HEIGHT (xvimagesink));
|
||||
}
|
||||
} else {
|
||||
xwindow = g_new0 (GstXWindow, 1);
|
||||
|
@ -1801,8 +1805,8 @@ gst_xvimagesink_get_desired_size (GstXOverlay * overlay,
|
|||
{
|
||||
GstXvImageSink *xvimagesink = GST_XVIMAGESINK (overlay);
|
||||
|
||||
*width = GST_VIDEOSINK_WIDTH (xvimagesink);
|
||||
*height = GST_VIDEOSINK_HEIGHT (xvimagesink);
|
||||
*width = GST_VIDEO_SINK_WIDTH (xvimagesink);
|
||||
*height = GST_VIDEO_SINK_HEIGHT (xvimagesink);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -2102,7 +2106,7 @@ gst_xvimagesink_class_init (GstXvImageSinkClass * klass)
|
|||
gstelement_class = (GstElementClass *) klass;
|
||||
gstbasesink_class = (GstBaseSinkClass *) klass;
|
||||
|
||||
parent_class = g_type_class_ref (GST_TYPE_VIDEOSINK);
|
||||
parent_class = g_type_class_ref (GST_TYPE_VIDEO_SINK);
|
||||
|
||||
gobject_class->set_property = gst_xvimagesink_set_property;
|
||||
gobject_class->get_property = gst_xvimagesink_get_property;
|
||||
|
@ -2196,7 +2200,7 @@ gst_xvimagesink_get_type (void)
|
|||
NULL,
|
||||
};
|
||||
|
||||
xvimagesink_type = g_type_register_static (GST_TYPE_VIDEOSINK,
|
||||
xvimagesink_type = g_type_register_static (GST_TYPE_VIDEO_SINK,
|
||||
"GstXvImageSink", &xvimagesink_info, 0);
|
||||
|
||||
g_type_add_interface_static (xvimagesink_type,
|
||||
|
|
Loading…
Reference in a new issue