Files
Vocaluxe/gstreamerhelper/VocaluxeClock.cpp
T
2014-05-06 21:40:13 +02:00

80 lines
1.8 KiB
C++

#include "VocaluxeClock.h"
static void vocaluxe_clock_class_init (VocaluxeClockClass * klass);
static void vocaluxe_clock_init (VocaluxeClock * clock);
static GstClockTime vocaluxe_clock_get_internal_time (GstClock * clock);
static GstSystemClockClass *parent_class = NULL;
GType
vocaluxe_clock_get_type (void)
{
static GType clock_type = 0;
if (!clock_type) {
static const GTypeInfo clock_info = {
sizeof (VocaluxeClockClass),
NULL,
NULL,
(GClassInitFunc) vocaluxe_clock_class_init,
NULL,
NULL,
sizeof (VocaluxeClock),
4,
(GInstanceInitFunc) vocaluxe_clock_init,
NULL
};
clock_type = g_type_register_static (GST_TYPE_SYSTEM_CLOCK, "VocaluxeClock",
&clock_info, (GTypeFlags) 0);
}
return clock_type;
}
static void
vocaluxe_clock_class_init (VocaluxeClockClass * klass)
{
GstClockClass *gstclock_class;
gstclock_class = (GstClockClass *) klass;
parent_class = (GstSystemClockClass*) g_type_class_peek_parent (klass);
gstclock_class->get_internal_time = vocaluxe_clock_get_internal_time;
}
static void
vocaluxe_clock_init (VocaluxeClock * clock)
{
clock->last_time = 0;
GST_OBJECT_FLAG_SET (clock, GST_CLOCK_FLAG_CAN_SET_MASTER);
}
VocaluxeClock *
vocaluxe_clock_new (const gchar * name)
{
VocaluxeClock *_vocaluxeclock =
VOCALUXE_CLOCK (g_object_new (GST_TYPE_VOCALUXE_CLOCK, "name", name, NULL));
return _vocaluxeclock;
}
static GstClockTime
vocaluxe_clock_get_internal_time (GstClock * clock)
{
VocaluxeClock *_vocaluxeclock;
GstClockTime result;
_vocaluxeclock = GST_VOCALUXE_CLOCK_CAST (clock);
result = (GstClockTime) _vocaluxeclock->time * GST_SECOND;
return result;
}
void
vocaluxe_clock_set_time (VocaluxeClock * clock, float time)
{
clock->time = time;
}