#include "gstinfo.h"
#include "gstregistrypool.h"
-static void gst_scheduler_class_init (GstSchedulerClass *klass);
-static void gst_scheduler_init (GstScheduler *sched);
-static void gst_scheduler_dispose (GObject *object);
+static void gst_scheduler_class_init (GstSchedulerClass * klass);
+static void gst_scheduler_init (GstScheduler * sched);
+static void gst_scheduler_dispose (GObject * object);
static GstObjectClass *parent_class = NULL;
NULL
};
- _gst_scheduler_type = g_type_register_static (GST_TYPE_OBJECT, "GstScheduler",
- &scheduler_info, G_TYPE_FLAG_ABSTRACT);
+ _gst_scheduler_type =
+ g_type_register_static (GST_TYPE_OBJECT, "GstScheduler",
+ &scheduler_info, G_TYPE_FLAG_ABSTRACT);
}
return _gst_scheduler_type;
}
static void
-gst_scheduler_class_init (GstSchedulerClass *klass)
+gst_scheduler_class_init (GstSchedulerClass * klass)
{
GObjectClass *gobject_class;
-
- gobject_class = (GObjectClass*) klass;
-
+
+ gobject_class = (GObjectClass *) klass;
+
parent_class = g_type_class_ref (GST_TYPE_OBJECT);
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_scheduler_dispose);
}
static void
-gst_scheduler_init (GstScheduler *sched)
+gst_scheduler_init (GstScheduler * sched)
{
sched->clock_providers = NULL;
sched->clock_receivers = NULL;
}
static void
-gst_scheduler_dispose (GObject *object)
+gst_scheduler_dispose (GObject * object)
{
GstScheduler *sched = GST_SCHEDULER (object);
/* thse lists should all be NULL */
- GST_DEBUG ( "scheduler %p dispose %p %p %p",
- object,
- sched->clock_providers,
- sched->clock_receivers,
- sched->schedulers);
+ GST_DEBUG ("scheduler %p dispose %p %p %p",
+ object,
+ sched->clock_providers, sched->clock_receivers, sched->schedulers);
- gst_object_replace ((GstObject **)&sched->current_clock, NULL);
- gst_object_replace ((GstObject **)&sched->clock, NULL);
+ gst_object_replace ((GstObject **) & sched->current_clock, NULL);
+ gst_object_replace ((GstObject **) & sched->clock, NULL);
G_OBJECT_CLASS (parent_class)->dispose (object);
}
* Prepare the scheduler.
*/
void
-gst_scheduler_setup (GstScheduler *sched)
+gst_scheduler_setup (GstScheduler * sched)
{
GstSchedulerClass *sclass;
* Reset the schedulers.
*/
void
-gst_scheduler_reset (GstScheduler *sched)
+gst_scheduler_reset (GstScheduler * sched)
{
GstSchedulerClass *sclass;
* Links the srcpad to the given sinkpad.
*/
void
-gst_scheduler_pad_link (GstScheduler *sched, GstPad *srcpad, GstPad *sinkpad)
+gst_scheduler_pad_link (GstScheduler * sched, GstPad * srcpad, GstPad * sinkpad)
{
GstSchedulerClass *sclass;
* Unlinks the srcpad from the given sinkpad.
*/
void
-gst_scheduler_pad_unlink (GstScheduler *sched, GstPad *srcpad, GstPad *sinkpad)
+gst_scheduler_pad_unlink (GstScheduler * sched, GstPad * srcpad,
+ GstPad * sinkpad)
{
GstSchedulerClass *sclass;
* Returns: the pad which received a buffer.
*/
GstPad *
-gst_scheduler_pad_select (GstScheduler *sched, GList *padlist)
+gst_scheduler_pad_select (GstScheduler * sched, GList * padlist)
{
GstSchedulerClass *sclass;
* Add an element to the scheduler.
*/
void
-gst_scheduler_add_element (GstScheduler *sched, GstElement *element)
+gst_scheduler_add_element (GstScheduler * sched, GstElement * element)
{
GstSchedulerClass *sclass;
/* if it's already in this scheduler, don't bother doing anything */
if (GST_ELEMENT_SCHED (element) == sched) {
- GST_CAT_DEBUG (GST_CAT_SCHEDULING, "element %s already in scheduler %p",
- GST_ELEMENT_NAME (element), sched);
+ GST_CAT_DEBUG (GST_CAT_SCHEDULING, "element %s already in scheduler %p",
+ GST_ELEMENT_NAME (element), sched);
return;
}
if (gst_element_provides_clock (element)) {
sched->clock_providers = g_list_prepend (sched->clock_providers, element);
- GST_CAT_DEBUG (GST_CAT_CLOCK, "added clock provider %s", GST_ELEMENT_NAME (element));
+ GST_CAT_DEBUG (GST_CAT_CLOCK, "added clock provider %s",
+ GST_ELEMENT_NAME (element));
}
if (gst_element_requires_clock (element)) {
sched->clock_receivers = g_list_prepend (sched->clock_receivers, element);
- GST_CAT_DEBUG (GST_CAT_CLOCK, "added clock receiver %s", GST_ELEMENT_NAME (element));
+ GST_CAT_DEBUG (GST_CAT_CLOCK, "added clock receiver %s",
+ GST_ELEMENT_NAME (element));
}
gst_element_set_scheduler (element, sched);
* Remove an element from the scheduler.
*/
void
-gst_scheduler_remove_element (GstScheduler *sched, GstElement *element)
+gst_scheduler_remove_element (GstScheduler * sched, GstElement * element)
{
GstSchedulerClass *sclass;
if (sclass->remove_element)
sclass->remove_element (sched, element);
- gst_element_set_scheduler (element, NULL);
+ gst_element_set_scheduler (element, NULL);
}
/**
* of the state transition.
*/
GstElementStateReturn
-gst_scheduler_state_transition (GstScheduler *sched, GstElement *element, gint transition)
+gst_scheduler_state_transition (GstScheduler * sched, GstElement * element,
+ gint transition)
{
GstSchedulerClass *sclass;
switch (transition) {
case GST_STATE_READY_TO_PAUSED:
{
- GstClock *clock = gst_scheduler_get_clock (sched);
- GST_CAT_DEBUG (GST_CAT_CLOCK, "scheduler READY to PAUSED clock is %p (%s)", clock,
- (clock ? GST_OBJECT_NAME (clock) : "nil"));
+ GstClock *clock = gst_scheduler_get_clock (sched);
+
+ GST_CAT_DEBUG (GST_CAT_CLOCK,
+ "scheduler READY to PAUSED clock is %p (%s)", clock,
+ (clock ? GST_OBJECT_NAME (clock) : "nil"));
gst_scheduler_set_clock (sched, clock);
- break;
+ break;
}
}
}
* from a loop based element to a chain based element.
*/
void
-gst_scheduler_scheduling_change (GstScheduler *sched, GstElement *element)
+gst_scheduler_scheduling_change (GstScheduler * sched, GstElement * element)
{
GstSchedulerClass *sclass;
* Notifies the scheduler that it has to monitor this scheduler.
*/
void
-gst_scheduler_add_scheduler (GstScheduler *sched, GstScheduler *sched2)
+gst_scheduler_add_scheduler (GstScheduler * sched, GstScheduler * sched2)
{
GstSchedulerClass *sclass;
a Notifies the scheduler that it can stop monitoring this scheduler.
*/
void
-gst_scheduler_remove_scheduler (GstScheduler *sched, GstScheduler *sched2)
+gst_scheduler_remove_scheduler (GstScheduler * sched, GstScheduler * sched2)
{
GstSchedulerClass *sclass;
* Acquire a lock on the given element in the given scheduler.
*/
void
-gst_scheduler_lock_element (GstScheduler *sched, GstElement *element)
+gst_scheduler_lock_element (GstScheduler * sched, GstElement * element)
{
GstSchedulerClass *sclass;
* Release the lock on the given element in the given scheduler.
*/
void
-gst_scheduler_unlock_element (GstScheduler *sched, GstElement *element)
+gst_scheduler_unlock_element (GstScheduler * sched, GstElement * element)
{
GstSchedulerClass *sclass;
* Tell the scheduler an element was in error
*/
void
-gst_scheduler_error (GstScheduler *sched, GstElement *element)
+gst_scheduler_error (GstScheduler * sched, GstElement * element)
{
GstSchedulerClass *sclass;
* if the scheduler can perform this action itself.
*/
gboolean
-gst_scheduler_yield (GstScheduler *sched, GstElement *element)
+gst_scheduler_yield (GstScheduler * sched, GstElement * element)
{
GstSchedulerClass *sclass;
* function.
*/
gboolean
-gst_scheduler_interrupt (GstScheduler *sched, GstElement *element)
+gst_scheduler_interrupt (GstScheduler * sched, GstElement * element)
{
GstSchedulerClass *sclass;
*
* Returns: a GstClock
*/
-GstClock*
-gst_scheduler_get_clock (GstScheduler *sched)
+GstClock *
+gst_scheduler_get_clock (GstScheduler * sched)
{
GstClock *clock = NULL;
-
+
/* if we have a fixed clock, use that one */
if (GST_FLAG_IS_SET (sched, GST_SCHEDULER_FLAG_FIXED_CLOCK)) {
- clock = sched->clock;
+ clock = sched->clock;
- GST_CAT_DEBUG (GST_CAT_CLOCK, "scheduler using fixed clock %p (%s)", clock,
- (clock ? GST_OBJECT_NAME (clock) : "nil"));
- }
- else {
+ GST_CAT_DEBUG (GST_CAT_CLOCK, "scheduler using fixed clock %p (%s)", clock,
+ (clock ? GST_OBJECT_NAME (clock) : "nil"));
+ } else {
GList *schedulers = sched->schedulers;
GList *providers = sched->clock_providers;
/* try to get a clock from one of the schedulers we manage first */
while (schedulers) {
GstScheduler *scheduler = GST_SCHEDULER (schedulers->data);
-
+
clock = gst_scheduler_get_clock (scheduler);
if (clock)
- break;
+ break;
schedulers = g_list_next (schedulers);
}
clock = gst_system_clock_obtain ();
}
}
- GST_CAT_LOG_OBJECT (GST_CAT_CLOCK, sched, "scheduler selected clock %p (%s)", clock,
- clock ? GST_STR_NULL (GST_OBJECT_NAME (clock)) : "-");
+ GST_CAT_LOG_OBJECT (GST_CAT_CLOCK, sched, "scheduler selected clock %p (%s)",
+ clock, clock ? GST_STR_NULL (GST_OBJECT_NAME (clock)) : "-");
return clock;
}
* to this scheduler.
*/
void
-gst_scheduler_use_clock (GstScheduler *sched, GstClock *clock)
+gst_scheduler_use_clock (GstScheduler * sched, GstClock * clock)
{
g_return_if_fail (sched != NULL);
g_return_if_fail (GST_IS_SCHEDULER (sched));
GST_FLAG_SET (sched, GST_SCHEDULER_FLAG_FIXED_CLOCK);
- gst_object_replace ((GstObject **)&sched->clock, (GstObject *)clock);
+ gst_object_replace ((GstObject **) & sched->clock, (GstObject *) clock);
- GST_CAT_DEBUG (GST_CAT_CLOCK, "scheduler using fixed clock %p (%s)", clock,
- (clock ? GST_OBJECT_NAME (clock) : "nil"));
+ GST_CAT_DEBUG (GST_CAT_CLOCK, "scheduler using fixed clock %p (%s)", clock,
+ (clock ? GST_OBJECT_NAME (clock) : "nil"));
}
/**
* to all the elements managed by the scheduler.
*/
void
-gst_scheduler_set_clock (GstScheduler *sched, GstClock *clock)
+gst_scheduler_set_clock (GstScheduler * sched, GstClock * clock)
{
GList *receivers;
GList *schedulers;
receivers = sched->clock_receivers;
schedulers = sched->schedulers;
- gst_object_replace ((GstObject **)&sched->current_clock, (GstObject *)clock);
+ gst_object_replace ((GstObject **) & sched->current_clock,
+ (GstObject *) clock);
while (receivers) {
GstElement *element = GST_ELEMENT (receivers->data);
- GST_CAT_DEBUG (GST_CAT_CLOCK, "scheduler setting clock %p (%s) on element %s", clock,
- (clock ? GST_OBJECT_NAME (clock) : "nil"), GST_ELEMENT_NAME (element));
-
+ GST_CAT_DEBUG (GST_CAT_CLOCK,
+ "scheduler setting clock %p (%s) on element %s", clock,
+ (clock ? GST_OBJECT_NAME (clock) : "nil"), GST_ELEMENT_NAME (element));
+
gst_element_set_clock (element, clock);
receivers = g_list_next (receivers);
}
while (schedulers) {
GstScheduler *scheduler = GST_SCHEDULER (schedulers->data);
- GST_CAT_DEBUG (GST_CAT_CLOCK, "scheduler setting clock %p (%s) on scheduler %p", clock,
- (clock ? GST_OBJECT_NAME (clock) : "nil"), scheduler);
+ GST_CAT_DEBUG (GST_CAT_CLOCK,
+ "scheduler setting clock %p (%s) on scheduler %p", clock,
+ (clock ? GST_OBJECT_NAME (clock) : "nil"), scheduler);
gst_scheduler_set_clock (scheduler, clock);
schedulers = g_list_next (schedulers);
}
* Let the scheduler select a clock automatically.
*/
void
-gst_scheduler_auto_clock (GstScheduler *sched)
+gst_scheduler_auto_clock (GstScheduler * sched)
{
g_return_if_fail (sched != NULL);
g_return_if_fail (GST_IS_SCHEDULER (sched));
GST_FLAG_UNSET (sched, GST_SCHEDULER_FLAG_FIXED_CLOCK);
- gst_object_replace ((GstObject **)&sched->clock, NULL);
+ gst_object_replace ((GstObject **) & sched->clock, NULL);
GST_CAT_DEBUG (GST_CAT_CLOCK, "scheduler using automatic clock");
}
-GstClockReturn gst_clock_id_wait (GstClockID id,
- GstClockTimeDiff *jitter);
+GstClockReturn gst_clock_id_wait (GstClockID id, GstClockTimeDiff * jitter);
+
/**
* gst_scheduler_clock_wait:
* @sched: the scheduler
* Returns: the status of the operation
*/
GstClockReturn
-gst_scheduler_clock_wait (GstScheduler *sched, GstElement *element,
- GstClockID id, GstClockTimeDiff *jitter)
+gst_scheduler_clock_wait (GstScheduler * sched, GstElement * element,
+ GstClockID id, GstClockTimeDiff * jitter)
{
GstSchedulerClass *sclass;
if (sclass->clock_wait)
return sclass->clock_wait (sched, element, id, jitter);
- else
+ else
return gst_clock_id_wait (id, jitter);
}
* Returns: a boolean indicating something usefull has happened.
*/
gboolean
-gst_scheduler_iterate (GstScheduler *sched)
+gst_scheduler_iterate (GstScheduler * sched)
{
GstSchedulerClass *sclass;
gboolean res = FALSE;
* Dump the state of the scheduler
*/
void
-gst_scheduler_show (GstScheduler *sched)
+gst_scheduler_show (GstScheduler * sched)
{
GstSchedulerClass *sclass;
* Factory stuff starts here
*
*/
-static void gst_scheduler_factory_class_init (GstSchedulerFactoryClass *klass);
-static void gst_scheduler_factory_init (GstSchedulerFactory *factory);
+static void gst_scheduler_factory_class_init (GstSchedulerFactoryClass * klass);
+static void gst_scheduler_factory_init (GstSchedulerFactory * factory);
static GstPluginFeatureClass *factory_parent_class = NULL;
+
/* static guint gst_scheduler_factory_signals[LAST_SIGNAL] = { 0 }; */
-GType
-gst_scheduler_factory_get_type (void)
+GType
+gst_scheduler_factory_get_type (void)
{
static GType schedulerfactory_type = 0;
(GClassInitFunc) gst_scheduler_factory_class_init,
NULL,
NULL,
- sizeof(GstSchedulerFactory),
+ sizeof (GstSchedulerFactory),
0,
(GInstanceInitFunc) gst_scheduler_factory_init,
NULL
};
- schedulerfactory_type = g_type_register_static (GST_TYPE_PLUGIN_FEATURE,
- "GstSchedulerFactory", &schedulerfactory_info, 0);
+ schedulerfactory_type = g_type_register_static (GST_TYPE_PLUGIN_FEATURE,
+ "GstSchedulerFactory", &schedulerfactory_info, 0);
}
return schedulerfactory_type;
}
static void
-gst_scheduler_factory_class_init (GstSchedulerFactoryClass *klass)
+gst_scheduler_factory_class_init (GstSchedulerFactoryClass * klass)
{
GObjectClass *gobject_class;
GstObjectClass *gstobject_class;
GstPluginFeatureClass *gstpluginfeature_class;
- gobject_class = (GObjectClass*)klass;
- gstobject_class = (GstObjectClass*)klass;
- gstpluginfeature_class = (GstPluginFeatureClass*) klass;
+ gobject_class = (GObjectClass *) klass;
+ gstobject_class = (GstObjectClass *) klass;
+ gstpluginfeature_class = (GstPluginFeatureClass *) klass;
factory_parent_class = g_type_class_ref (GST_TYPE_PLUGIN_FEATURE);
}
static void
-gst_scheduler_factory_init (GstSchedulerFactory *factory)
+gst_scheduler_factory_init (GstSchedulerFactory * factory)
{
}
-
+
/**
* gst_scheduler_factory_new:
*
* Returns: a new #GstSchedulerFactory.
*/
-GstSchedulerFactory*
-gst_scheduler_factory_new (const gchar *name, const gchar *longdesc, GType type)
+GstSchedulerFactory *
+gst_scheduler_factory_new (const gchar * name, const gchar * longdesc,
+ GType type)
{
GstSchedulerFactory *factory;
factory = gst_scheduler_factory_find (name);
if (!factory) {
- factory = GST_SCHEDULER_FACTORY (g_object_new (GST_TYPE_SCHEDULER_FACTORY, NULL));
+ factory =
+ GST_SCHEDULER_FACTORY (g_object_new (GST_TYPE_SCHEDULER_FACTORY, NULL));
GST_PLUGIN_FEATURE_NAME (factory) = g_strdup (name);
- }
- else {
+ } else {
g_free (factory->longdesc);
}
* Removes the scheduler from the global list.
*/
void
-gst_scheduler_factory_destroy (GstSchedulerFactory *factory)
+gst_scheduler_factory_destroy (GstSchedulerFactory * factory)
{
g_return_if_fail (factory != NULL);
*
* Returns: #GstSchedulerFactory if found, NULL otherwise
*/
-GstSchedulerFactory*
-gst_scheduler_factory_find (const gchar *name)
+GstSchedulerFactory *
+gst_scheduler_factory_find (const gchar * name)
{
GstPluginFeature *feature;
*
* Returns: A new #GstScheduler instance with a reference count of %1.
*/
-GstScheduler*
-gst_scheduler_factory_create (GstSchedulerFactory *factory, GstElement *parent)
+GstScheduler *
+gst_scheduler_factory_create (GstSchedulerFactory * factory,
+ GstElement * parent)
{
GstScheduler *sched = NULL;
*
* Returns: A new #GstScheduler instance with a reference count of %1.
*/
-GstScheduler*
-gst_scheduler_factory_make (const gchar *name, GstElement *parent)
+GstScheduler *
+gst_scheduler_factory_make (const gchar * name, GstElement * parent)
{
GstSchedulerFactory *factory;
const gchar *default_name = gst_scheduler_factory_get_default_name ();
if (name)
factory = gst_scheduler_factory_find (name);
- else
- {
+ else {
/* FIXME: do better error handling */
if (default_name == NULL)
g_error ("No default scheduler name - do you have a registry ?");
* Set the default schedulerfactory name.
*/
void
-gst_scheduler_factory_set_default_name (const gchar* name)
+gst_scheduler_factory_set_default_name (const gchar * name)
{
g_free (_default_name);
*
* Returns: the name of the default scheduler.
*/
-const gchar*
+const gchar *
gst_scheduler_factory_get_default_name (void)
{
return _default_name;