diff options
author | Andy Wingo <wingo@pobox.com> | 2003-07-16 16:08:14 +0000 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2003-07-16 16:08:14 +0000 |
commit | 6f06c87c1255c45d0fd020ff30a41b9a7e83a7d9 (patch) | |
tree | decbc26bb22fa79998cee2d5fa15642c250397ae /sys/oss/gstossclock.c | |
parent | 4418ea96599cdac151f62689269f88055b3d7edf (diff) |
actually recurse into sndfile if we are able big ladspa cleanups, mainly to comply with the buffer-frames caps proper...
Original commit message from CVS:
* actually recurse into sndfile if we are able
* big ladspa cleanups, mainly to comply with the buffer-frames caps property, but also general
cleanups
- the samplerate prop is gone, if you want to set it explicitly (as in for get-based plugins)
you need to use a filtered connection, just like with buffer-frames
* big float2int and int2float changes for buffer-frames compatibility - I think it's quite a bit
simpler
* make the ossclock general, add it to gstaudio, and use it in sndfile as well
i need to update mimetypes, but that's coming soon. there are some other plugins that don't
support buffer-frames, i guess i need to get around to fixing them as well.
Diffstat (limited to 'sys/oss/gstossclock.c')
-rw-r--r-- | sys/oss/gstossclock.c | 191 |
1 files changed, 0 insertions, 191 deletions
diff --git a/sys/oss/gstossclock.c b/sys/oss/gstossclock.c deleted file mode 100644 index a6249f03..00000000 --- a/sys/oss/gstossclock.c +++ /dev/null @@ -1,191 +0,0 @@ -/* GStreamer - * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> - * 2000 Wim Taymans <wtay@chello.be> - * - * gstclock.c: Clock subsystem for maintaining time sync - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include "gstossclock.h" - -static void gst_oss_clock_class_init (GstOssClockClass *klass); -static void gst_oss_clock_init (GstOssClock *clock); - -static GstClockTime gst_oss_clock_get_internal_time (GstClock *clock); -static GstClockReturn gst_oss_clock_id_wait_async (GstClock *clock, - GstClockEntry *entry); -static void gst_oss_clock_id_unschedule (GstClock *clock, - GstClockEntry *entry); - -static GstSystemClockClass *parent_class = NULL; -/* static guint gst_oss_clock_signals[LAST_SIGNAL] = { 0 }; */ - -GType -gst_oss_clock_get_type (void) -{ - static GType clock_type = 0; - - if (!clock_type) { - static const GTypeInfo clock_info = { - sizeof (GstOssClockClass), - NULL, - NULL, - (GClassInitFunc) gst_oss_clock_class_init, - NULL, - NULL, - sizeof (GstOssClock), - 4, - (GInstanceInitFunc) gst_oss_clock_init, - NULL - }; - clock_type = g_type_register_static (GST_TYPE_SYSTEM_CLOCK, "GstOssClock", - &clock_info, 0); - } - return clock_type; -} - - -static void -gst_oss_clock_class_init (GstOssClockClass *klass) -{ - GObjectClass *gobject_class; - GstObjectClass *gstobject_class; - GstClockClass *gstclock_class; - - gobject_class = (GObjectClass*) klass; - gstobject_class = (GstObjectClass*) klass; - gstclock_class = (GstClockClass*) klass; - - parent_class = g_type_class_ref (GST_TYPE_SYSTEM_CLOCK); - - gstclock_class->get_internal_time = gst_oss_clock_get_internal_time; - gstclock_class->wait_async = gst_oss_clock_id_wait_async; - gstclock_class->unschedule = gst_oss_clock_id_unschedule; -} - -static void -gst_oss_clock_init (GstOssClock *clock) -{ - gst_object_set_name (GST_OBJECT (clock), "GstOssClock"); - - clock->prev1 = 0; - clock->prev2 = 0; -} - -GstOssClock* -gst_oss_clock_new (gchar *name, GstOssClockGetTimeFunc func, gpointer user_data) -{ - GstOssClock *oss_clock = GST_OSS_CLOCK (g_object_new (GST_TYPE_OSS_CLOCK, NULL)); - - oss_clock->func = func; - oss_clock->user_data = user_data; - oss_clock->adjust = 0; - - return oss_clock; -} - -void -gst_oss_clock_set_active (GstClock *clock, gboolean active) -{ - GstOssClock *oss_clock = GST_OSS_CLOCK (clock); - GTimeVal timeval; - GstClockTime time; - GstClockTime osstime; - - g_get_current_time (&timeval); - time = GST_TIMEVAL_TO_TIME (timeval); - osstime = oss_clock->func (clock, oss_clock->user_data); - - if (active) { - oss_clock->adjust = time - osstime; - } - else { - oss_clock->adjust = osstime - time; - } - - oss_clock->active = active; -} - -static GstClockTime -gst_oss_clock_get_internal_time (GstClock *clock) -{ - GstOssClock *oss_clock = GST_OSS_CLOCK (clock); - - if (oss_clock->active) { - GstClockTime osstime; - - osstime = oss_clock->func (clock, oss_clock->user_data) + oss_clock->adjust; - - return osstime; - } - else { - GstClockTime time; - GTimeVal timeval; - - g_get_current_time (&timeval); - time = GST_TIMEVAL_TO_TIME (timeval); - - return time; - } -} - -void -gst_oss_clock_update_time (GstClock *clock, GstClockTime time) -{ - GstOssClock *oss_clock = (GstOssClock*)clock; - - while (oss_clock->async_entries) { - GstClockEntry *entry = (GstClockEntry*)oss_clock->async_entries->data; - - if (entry->time > time) - break; - - entry->func (clock, time, entry, entry->user_data); - - oss_clock->async_entries = g_slist_delete_link (oss_clock->async_entries, - oss_clock->async_entries); - /* do I need to free the entry? */ - } -} - -static gint -compare_clock_entries (GstClockEntry *entry1, GstClockEntry *entry2) -{ - return entry1->time - entry2->time; -} - -static GstClockReturn -gst_oss_clock_id_wait_async (GstClock *clock, GstClockEntry *entry) -{ - GstOssClock *oss_clock = (GstOssClock*)clock; - - oss_clock->async_entries = g_slist_insert_sorted (oss_clock->async_entries, - entry, - (GCompareFunc)compare_clock_entries); - - /* is this the proper return val? */ - return GST_CLOCK_EARLY; -} - -static void -gst_oss_clock_id_unschedule (GstClock *clock, GstClockEntry *entry) -{ - GstOssClock *oss_clock = (GstOssClock*)clock; - - oss_clock->async_entries = g_slist_remove (oss_clock->async_entries, - entry); -} |