Commit graph

263 commits

Author SHA1 Message Date
David Schleef 7e89cbf5ba gst/Makefile.am: Remove as-libtool stuff. It's likely not and hard to carry around.
Original commit message from CVS:
* gst/Makefile.am: Remove as-libtool stuff.  It's likely not
needed with new versions of libtool (nobody will confirm this),
and hard to carry around.
* gst/autoplug/Makefile.am:
* gst/base/Makefile.am:
* gst/elements/Makefile.am:
* gst/indexers/Makefile.am:
* gst/schedulers/Makefile.am:
* libs/gst/bytestream/Makefile.am:
* libs/gst/control/Makefile.am:
* libs/gst/dataprotocol/Makefile.am:
* libs/gst/getbits/Makefile.am:
2005-04-23 23:25:08 +00:00
Wim Taymans c2f41a8906 Next big merge.
Original commit message from CVS:
Next big merge.
Added GstBus for mainloop integration.
Added GstMessage for sending notifications on the bus.
Added GstTask as an abstraction for pipeline entry points.
Removed GstThread.
Removed Schedulers.
Simplified GstQueue for multithreaded core.
Made _link threadsafe, removed old capsnego.
Added STREAM_LOCK and PREROLL_LOCK in GstPad.
Added pad blocking functions.
Reworked scheduling functions in GstPad to prepare for
scheduling updates soon.
Moved events out of data stream.
Simplified GstEvent types.
Added return values to push/pull.
Removed clocking from GstElement.
Added prototypes for state change function for next merge.
Removed iterate from bins and state change management.
Fixed some elements, disabled others for now.
Fixed -inspect and -launch.
Added check for GstBus.
2005-03-21 17:34:02 +00:00
Wim Taymans 6cacf76cd9 Added GstBin test.
Original commit message from CVS:
Added GstBin test.
Added GstSystemClock test.
Implemented clock distribution code in GstBin.
Implemented iterate sinks method for future use.
Rearranged gstelement.h
Fix GstIterator comparison bug.
Moved some code to GstPipeline, mostly clocking related.
2005-03-09 16:10:59 +00:00
Wim Taymans 9e24b85a9d Remove threadsafe properties. Fix elements because GObject complains when installing a property before declaring a se...
Original commit message from CVS:
Remove threadsafe properties. Fix elements because GObject
complains when installing a property before declaring a
set/get_property handler.
Rearrange gstelement.h file, use STATE macros for state locks.
Free mutexes in the finalize method instead of dispose.
2005-03-08 17:42:29 +00:00
Wim Taymans c47dc4d853 First THREADED backport attempt, focusing on adding locks and making sure the API is threadsafe. Needs more work. Mor...
Original commit message from CVS:
First THREADED backport attempt, focusing on adding locks and
making sure the API is threadsafe. Needs more work. More docs
follow this week.
2005-03-07 18:27:42 +00:00
Thomas Vander Stichele a32a305d1a disable debug build fix
Original commit message from CVS:
disable debug build fix
2005-02-24 23:41:57 +00:00
Thomas Vander Stichele b02973d212 one more fix
Original commit message from CVS:
one more fix
2005-02-23 15:14:01 +00:00
Thomas Vander Stichele b9adc22e24 compile with debug disabled
Original commit message from CVS:
compile with debug disabled
2005-02-23 15:06:36 +00:00
Wim Taymans 186d11b516 gst/schedulers/gstoptimalscheduler.c: Remove some FIXMEs after analysing and commenting why they are not issues.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (remove_decoupled),
(schedule_chain), (get_invalid_call), (chain_invalid_call),
(loop_group_schedule_function), (gst_opt_scheduler_iterate):
Remove some FIXMEs after analysing and commenting why they
are not issues.
2005-02-02 16:15:18 +00:00
Wim Taymans f8114cc178 gst/schedulers/gstoptimalscheduler.c: Added lock to protect scheduler data structures.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c:
(gst_opt_scheduler_class_init), (gst_opt_scheduler_init),
(gst_opt_scheduler_finalize), (remove_decoupled), (schedule_chain),
(get_invalid_call), (chain_invalid_call),
(get_group_schedule_function), (loop_group_schedule_function),
(gst_opt_scheduler_loop_wrapper), (gst_opt_scheduler_get_wrapper),
(gst_opt_scheduler_state_transition),
(gst_opt_scheduler_add_element),
(gst_opt_scheduler_remove_element), (gst_opt_scheduler_interrupt),
(gst_opt_scheduler_error), (gst_opt_scheduler_pad_link),
(gst_opt_scheduler_pad_unlink), (gst_opt_scheduler_iterate),
(gst_opt_scheduler_show):
Added lock to protect scheduler data structures.
2005-02-02 15:31:06 +00:00
Ronald S. Bultje 34d1219213 gst/schedulers/gstoptimalscheduler.c: Try to work with the threading mess that queue_link is.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c:
(get_group_schedule_function):
Try to work with the threading mess that queue_link is.
2005-02-01 00:38:05 +00:00
Ronald S. Bultje a410bdd96f gst/schedulers/faircothreads.c: Fix build without debug enabled.
Original commit message from CVS:
Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
* gst/schedulers/faircothreads.c:
(gst_fair_scheduler_cothread_queue_show):
Fix build without debug enabled.
2005-01-27 10:00:00 +00:00
Ronald S. Bultje defab93002 gst/schedulers/gstoptimalscheduler.c: Only unref entry if there is an entry.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (schedule_group):
Only unref entry if there is an entry.
2005-01-18 11:29:12 +00:00
Wim Taymans c6b82b338b gst/schedulers/gstoptimalscheduler.c: Also ref/unref decoupled elements before iterating the group since they are not...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
(remove_from_group), (schedule_group), (normalize_group),
(gst_opt_scheduler_iterate):
Also ref/unref decoupled elements before iterating the
group since they are not added to the list of elements.
2005-01-17 16:30:42 +00:00
Wim Taymans d960f7f99e gst/schedulers/gstoptimalscheduler.c: Fix bug where a flag was not updated on a decoupled entry point because we were...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
(remove_from_group), (group_elements_set_visited),
(normalize_group), (gst_opt_scheduler_iterate):
Fix bug where a flag was not updated on a decoupled entry point
because we were just checking the group element list and decoupled
elements are not in that list..
2004-12-15 10:34:29 +00:00
Ronald S. Bultje 474d0415aa gst/schedulers/gstoptimalscheduler.c: When we're recursing into a chain run, only run the directly related group, not...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c:
(gst_opt_scheduler_schedule_run_queue), (schedule_chain),
(gst_opt_scheduler_get_wrapper):
When we're recursing into a chain run, only run the directly
related group, not all queued ones. This will fix a possible
deadlock in chains with more than two groups.
2004-12-09 11:48:28 +00:00
Christian Schaller 4f8aa88b14 fix build after commit of fair :)
Original commit message from CVS:
fix build after commit of fair :)
2004-11-08 18:51:12 +00:00
Martin Soto 727725d959 gst/schedulers/: New cothread based scheduler: Fair scheduler.
Original commit message from CVS:
2004-11-07  Martin Soto  <martinsoto@users.sourceforge.net>

* gst/schedulers/fairscheduler.c:
* gst/schedulers/faircothreads.c:
* gst/schedulers/faircothreads.h:
New cothread based scheduler: Fair scheduler.
* gst/schedulers/gthread-cothreads.h:
Add the standard #if around the whole file.
Defining symbol GTHREAD_COTHREADS_NO_DEFINITIONS will now prevent
compilation of the functions defined in this file. This is
necessary to be able to use this file as a normal header.
* gst/schedulers/Makefile.am: Add compiling support for fair
scheduler.
* docs/gst/Makefile.am (IGNORE_HFILES): Exclude internal fair
scheduler cothreads layer from documentation generation.
2004-11-07 19:31:39 +00:00
Wim Taymans df7f3e4161 Added testcase for schduler segfault.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
(remove_from_group), (normalize_group), (group_migrate_connected),
(gst_opt_scheduler_iterate):
* testsuite/schedulers/.cvsignore:
* testsuite/schedulers/Makefile.am:
* testsuite/schedulers/queue_link.c: (main):
Added testcase for schduler segfault.
Fix scheduler segfault when removing a decoupled
entry point as the last element from a group.
2004-11-04 11:03:48 +00:00
Wim Taymans 6d42edd550 gst/: Aplied part of patch #157127: Cleanup of issues reported by sparse.
Original commit message from CVS:
reviewed by: Wim Taymans, Ronald Bultje.

* gst/cothreads.c: (cothread_create):
* gst/gstbin.c: (gst_bin_add_func), (gst_bin_remove_func),
(gst_bin_child_state_change_func):
* gst/gstbuffer.c: (gst_buffer_span):
* gst/gstelement.c: (gst_element_get_index),
(gst_element_get_event_masks), (gst_element_get_query_types),
(gst_element_get_formats):
* gst/gsterror.c: (_gst_core_errors_init),
(_gst_library_errors_init), (_gst_resource_errors_init),
(_gst_stream_errors_init):
* gst/gstobject.c: (gst_object_default_deep_notify):
* gst/gstpad.c: (gst_pad_get_event_masks),
(gst_pad_get_internal_links_default):
* gst/gstplugin.c: (gst_plugin_register_func),
(gst_plugin_get_module):
* gst/gststructure.c: (gst_structure_get_string),
(gst_structure_get_abbrs), (gst_structure_from_abbr),
(gst_structure_to_abbr):
* gst/gstutils.c: (gst_print_element_args):
* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
(setup_group_scheduler), (gst_opt_scheduler_iterate):
Aplied part of patch #157127: Cleanup of issues reported by
sparse.
Also do not try to use cothreads when there is no cothread
context yet.
2004-11-02 15:02:12 +00:00
Wim Taymans 6a110e062f gst/schedulers/gstoptimalscheduler.c: Aplied patch #154061. Running a pipeline in which an element calls GST_ELEMENT_...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
(gst_opt_scheduler_iterate):
Aplied patch #154061. Running a pipeline in which an element
calls GST_ELEMENT_ERROR in the chain function, the opt
scheduler doesn't unref the chain so it never gets freed.
2004-11-02 13:08:41 +00:00
Wim Taymans 6ff129d07d gst/schedulers/gstoptimalscheduler.c: Some more debug info.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
(remove_from_group):
Some more debug info.
2004-09-06 14:55:57 +00:00
Benjamin Otte 6e15cb6ce9 add gst_scheduler_register shortcut similar to gst_element_register
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gstscheduler.c: (gst_scheduler_register):
* gst/gstscheduler.h:
add gst_scheduler_register shortcut similar to gst_element_register
* gst/schedulers/entryscheduler.c: (plugin_init):
* gst/schedulers/gstbasicscheduler.c: (plugin_init):
* gst/schedulers/gstoptimalscheduler.c: (plugin_init):
use it
2004-08-11 09:54:52 +00:00
Thomas Vander Stichele b31eed4b70 docs/faq/gst-uninstalled: fix PKG_CONFIG_PATH and PYTHONPATH
Original commit message from CVS:
* docs/faq/gst-uninstalled:
fix PKG_CONFIG_PATH and PYTHONPATH
* gst/schedulers/Makefile.am:
cleanup
* libs/gst/bytestream/bytestream.c:
remove newline
* po/LINGUAS:
* po/sq.po:
adding Albanian translation (Laurent Dhima)
* po/cs.po:
updated
2004-08-09 09:20:06 +00:00
Benjamin Otte f1472b4ed2 gst/schedulers/entryscheduler.c: fix for GST_DISABLE_DEBUG
Original commit message from CVS:
* gst/schedulers/entryscheduler.c:
(gst_entry_scheduler_remove_element):
fix for GST_DISABLE_DEBUG
* tools/gst-launch.c: (print_tag):
fixes for G_DISABLE_ASSERT
2004-08-03 14:29:31 +00:00
Brian Cameron c0aa2ff498 Correcting some debug messages so that they don't core dump on Solaris by passing in NULL values as strings.
Original commit message from CVS:
Correcting some debug messages so that they don't core dump on Solaris
by passing in NULL values as strings.
2004-07-28 20:12:49 +00:00
Wim Taymans d5f0f798ac gst/schedulers/gstoptimalscheduler.c: fix 147894-2 and the group_link problem.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (remove_from_group),
(gst_opt_scheduler_pad_link):
fix 147894-2 and the group_link problem.
2004-07-22 09:43:40 +00:00
Benjamin Otte 04ec1a2ad9 gst/schedulers/entryscheduler.c: reset the state when the cothread starts, so we don't get assertion failures on rest...
Original commit message from CVS:
* gst/schedulers/entryscheduler.c:
(gst_entry_scheduler_loop_wrapper),
(gst_entry_scheduler_chain_wrapper),
(gst_entry_scheduler_get_wrapper):
reset the state when the cothread starts, so we don't get assertion
failures on restarting of cothreads
2004-07-21 19:41:52 +00:00
Thomas Vander Stichele 050631f63b fix for #142813 - deadlock in opt
Original commit message from CVS:
fix for #142813 - deadlock in opt
2004-07-20 10:57:38 +00:00
Thomas Vander Stichele add97dd1ce fix for #147819 (Add some checks in the opt scheduler)
Original commit message from CVS:
fix for #147819 (Add some checks in the opt scheduler)
2004-07-20 10:40:09 +00:00
Thomas Vander Stichele b515b8a729 fix for #147894 (opt scheduler decoupled elements mismanagement)
Original commit message from CVS:
fix for #147894 (opt scheduler decoupled elements mismanagement)
2004-07-20 09:55:13 +00:00
Wim Taymans 74060a4ff6 gst/schedulers/gstoptimalscheduler.c: Call group_inc_link with the proper src->sink ordering -- break this, and we br...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (gst_opt_scheduler_init),
(create_chain), (destroy_chain), (create_group), (destroy_group),
(add_to_group), (merge_groups), (group_elements), (group_inc_link),
(group_dec_link), (gst_opt_scheduler_pad_link),
(group_inc_links_for_element), (group_migrate_connected):
Call group_inc_link with the proper src->sink ordering --
break this, and we break sort_chain. patch from wingo for bug
147713.
Partially revert patch 1.89. When adding a loop based element to
the scheduler, the links to other groups are automatically followed
and incremented. This should not happen because the bin will call
pad_link explicitly for those connection, resulting in them counted
twice. Results in assertion failure on pipeline cleanup.
2004-07-16 16:02:12 +00:00
Wim Taymans 99c3c397ca gst/schedulers/gstoptimalscheduler.c: Fix stupid warning when an element is to be migrated but is already migrated.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (group_dec_link),
(gst_opt_scheduler_pad_link), (group_migrate_connected):
Fix stupid warning when an element is to be migrated but
is already migrated.
2004-07-14 15:10:09 +00:00
Wim Taymans d7ec4cb787 gst/schedulers/gstoptimalscheduler.c: Make sure that a single non-loop-based element does not end up in a group. This...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (group_dec_link),
(gst_opt_scheduler_pad_link), (group_migrate_connected):
Make sure that a single non-loop-based element does not
end up in a group. This fixes the testsuite again.
2004-07-14 14:52:49 +00:00
Wim Taymans b997eae215 gst/schedulers/gstoptimalscheduler.c: move isolated groups to a new chain.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (create_group),
(add_to_group), (merge_groups), (schedule_group),
(gst_opt_scheduler_get_wrapper), (group_elements),
(group_dec_link), (gst_opt_scheduler_pad_link),
(group_migrate_connected), (gst_opt_scheduler_pad_unlink),
(gst_opt_scheduler_iterate):
move isolated groups to a new chain.
Emit a warning instead of segfaulting in some error cases.
Fix a bug where the link count between groups was not calculated
correctly. Fixes #144510.
2004-07-14 14:25:04 +00:00
Thomas Vander Stichele 14e4ff51de set PENDING on bin correctly for special case. fixes testsuite again.
Original commit message from CVS:
set PENDING on bin correctly for special case. fixes testsuite again.
2004-07-12 10:03:04 +00:00
Wim Taymans 19fac086bf gst/schedulers/gstoptimalscheduler.c: Do not try to migrate decoupled elements to a new group since they are not adde...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c:
(gst_opt_scheduler_pad_link), (group_elements_set_visited),
(element_get_reachables_func), (element_get_reachables),
(debug_element), (rechain_group), (group_migrate_connected),
(gst_opt_scheduler_pad_unlink):
Do not try to migrate decoupled elements to a new group since
they are not added to groups.
2004-07-09 08:25:42 +00:00
Wim Taymans 40a0fb9794 Implemented group splitting and rechaining.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c:
(chain_recursively_migrate_group), (create_group),
(schedule_group), (gst_opt_scheduler_pad_link),
(group_elements_set_visited), (element_get_reachables_func),
(element_get_reachables), (group_can_reach_group), (debug_element),
(rechain_group), (group_migrate_connected),
(gst_opt_scheduler_pad_unlink):
* testsuite/schedulers/Makefile.am:
Implemented group splitting and rechaining.
Fixes 143777 and 143777-2 in the testsuite.
2004-07-08 15:24:20 +00:00
Thomas Vander Stichele e7a32237d4 gst/autoplug/gstspideridentity.c: extra debugging
Original commit message from CVS:
* gst/autoplug/gstspideridentity.c: (gst_spider_identity_chain):
extra debugging
* gst/gstevent.h:
* gst/gstinfo.c: (gst_debug_log_default):
print time nicely.  add thread pointer until someone figures out
a completely portable way of getting at thread id's.
* gst/gstpad.c: (gst_pad_set_active), (gst_pad_link_try),
(_invent_event), (gst_pad_pull), (gst_pad_event_default_dispatch),
(gst_pad_call_chain_function):
extra debugging
* gst/schedulers/gstoptimalscheduler.c:
(get_group_schedule_function), (loop_group_schedule_function),
(gst_opt_scheduler_loop_wrapper), (gst_opt_scheduler_get_wrapper),
(pad_clear_queued), (gst_opt_scheduler_iterate):
rename BUFPEN and friends to DATAPEN since that's what they are.
2004-07-08 13:49:14 +00:00
Thomas Vander Stichele 56e7e557ae debugging fixes
Original commit message from CVS:
debugging fixes
2004-07-07 16:50:30 +00:00
Thomas Vander Stichele ccd846b74a debug fix
Original commit message from CVS:
debug fix
2004-07-07 15:06:26 +00:00
Thomas Vander Stichele d1e3457acf debug fix
Original commit message from CVS:
debug fix
2004-07-07 15:04:44 +00:00
Thomas Vander Stichele 915be2e2c7 fix SIGBUS on opt, #145338
Original commit message from CVS:
fix SIGBUS on opt, #145338
2004-07-06 11:44:26 +00:00
Stéphane Loeuillet 55cd61de48 - removing some trailing commas in enums to please C90 only compilers (AIX, Forte, ...) ('should' fix #143290) should...
Original commit message from CVS:
- removing some trailing commas in enums to please C90 only compilers (AIX, Forte, ...)
('should' fix #143290)

should/could we compile gst with -ansi -pedantic to catch those in the build-bots ?
2004-05-28 05:01:05 +00:00
Wim Taymans b8ff3d3d63 gst/schedulers/gstoptimalscheduler.c: Don't try to follow the pad connections with other groups when a loop based ele...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (remove_from_chain),
(chain_group_set_enabled), (create_group), (add_to_group),
(merge_groups), (setup_group_scheduler), (group_elements),
(gst_opt_scheduler_iterate), (gst_opt_scheduler_show):
Don't try to follow the pad connections with other groups
when a loop based element is added to the scheduler because
the bin will inform the scheduler about the pad links a little
later.
2004-05-27 15:38:49 +00:00
Wim Taymans d738f23c6a gst/schedulers/gstoptimalscheduler.c: Elements without a group can do a state change as well, just wait with the setu...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_chain),
(remove_from_chain), (chain_group_set_enabled),
(setup_group_scheduler), (group_element_set_enabled),
(gst_opt_scheduler_state_transition), (gst_opt_scheduler_iterate),
(gst_opt_scheduler_show):
Elements without a group can do a state change as well, just wait
with the setup of the scheduling function when it is added to a
chain.
2004-05-27 11:29:18 +00:00
Wim Taymans 6187bf80e7 gst/schedulers/gstoptimalscheduler.c: Fixes to maintain internal consistency of the scheduler data structures.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_chain),
(remove_from_chain), (chain_group_set_enabled), (add_to_group),
(merge_groups), (setup_group_scheduler),
(group_inc_links_for_element), (gst_opt_scheduler_iterate),
(gst_opt_scheduler_show):
Fixes to maintain internal consistency of the scheduler data
structures.
- adding an enabled group to a chain should increment the
number of enabled elements in that chain.
- removing an enabled group from a chain could disable the
chain.
- removing a disabled group from a chain could enable the
chain.
- add g_assert when internal inconsistency is detected.
- adding an element to a group could increase the number of
links this group has with other groups.
- merging two groups also merges the chains.
- also show group links in the _show method.

Please report regressions ASAP, so I can fix them.
2004-05-27 09:33:29 +00:00
Benjamin Otte 05c2afa7f9 gst/gstbin.c: don't
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_iterate_func), (gst_bin_iterate):
don't
* gst/schedulers/entryscheduler.c: (safe_cothread_switch),
(safe_cothread_destroy),
(gst_entry_scheduler_remove_all_cothreads),
(gst_entry_scheduler_reset), (_remove_cothread),
(gst_entry_scheduler_state_transition):
hold off cothread destruction if we're not in main cothread
* configure.ac:
* testsuite/Makefile.am:
add new test dir
* testsuite/schedulers/.cvsignore:
* testsuite/schedulers/Makefile.am:
add tests
* testsuite/schedulers/relink.c: (cb_handoff), (main):
check relinking and adding/removing elements from a running pipeline
* testsuite/schedulers/unlink.c: (cb_handoff), (main):
check unlinking in a running pipeline
* testsuite/schedulers/unref.c: (cb_handoff), (main):
check unreffing a running pipeline
* testsuite/schedulers/useless_iteration.c: (main):
check iterating a pipeline that contains running threads works
2004-05-18 21:18:43 +00:00
Wim Taymans 49342d34fc gst/schedulers/gstoptimalscheduler.c: Fixed an error introduced with patch for 1.63. When setting a get based element...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (remove_from_group),
(setup_group_scheduler), (gst_opt_scheduler_pad_link):
Fixed an error introduced with patch for 1.63. When setting
a get based element as the entry point in a group, make sure
to mark the group as GET based.
2004-05-18 17:03:41 +00:00
Wim Taymans 53dc1b170e gst/schedulers/gstoptimalscheduler.c: Added some more debug info and fixed a bug where the group type was set to LOOP...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (create_group),
(setup_group_scheduler), (loop_group_schedule_function),
(gst_opt_scheduler_pad_link):
Added some more debug info and fixed a bug where the group
type was set to LOOP but it was in fact unknown.
2004-05-18 16:44:44 +00:00