Commit graph

5052 commits

Author SHA1 Message Date
Wim Taymans
6c611baadf gst/base/gstbasesink.c: Fix preroll lockup.
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_basesink_change_state):
Fix preroll lockup.
2005-03-10 17:43:48 +00:00
Wim Taymans
bd9cd13058 Doc updates,
Original commit message from CVS:
* REQUIREMENTS:
* docs/design/part-MT-refcounting.txt:
* docs/design/part-clocks.txt:
* docs/design/part-conventions.txt:
* docs/design/part-gstobject.txt:
* docs/design/part-relations.txt:
* docs/design/part-standards.txt:
* libs/gst/control/dparam.c: (gst_dparam_attach):
* libs/gst/control/dparam.h:
* libs/gst/control/dparammanager.c:
(gst_dpman_add_required_dparam_callback),
(gst_dpman_add_required_dparam_direct),
(gst_dpman_add_required_dparam_array), (gst_dpman_attach_dparam),
(gst_dpman_get_dparam), (gst_dpman_get_dparam_type),
(gst_dpman_get_manager), (gst_dpman_bypass_dparam),
(gst_dpman_preprocess_asynchronous),
(gst_dpman_process_asynchronous), (gst_dpman_process_noop):
* libs/gst/control/dparammanager.h:
* testsuite/clock/clock2.c: (gst_clock_debug), (element_wait),
(main):
* testsuite/threads/signals.c: (run_thread), (main):
* testsuite/threads/thread.c: (main):
* tools/gst-launch.c: (fault_handler_sighandler),
(fault_handler_sigaction), (fault_spin):
Doc updates,
Head backporting.
Fix some testcases.
2005-03-10 12:53:16 +00:00
Wim Taymans
fdcf9acd4b Fix pad_get_direction wrt ghostpads.
Original commit message from CVS:
* gst/gstpad.c: (gst_pad_get_direction):
* gst/gstpad.h:
* testsuite/bins/interface.c: (main):
* testsuite/refcounting/bin.c: (add_remove_test1),
(add_remove_test2), (main):
* testsuite/refcounting/element.c: (main):
* testsuite/refcounting/element_pad.c: (main):
* testsuite/refcounting/pad.c: (main):
Fix pad_get_direction wrt ghostpads.
Fix some more testsuites.
2005-03-09 17:30:43 +00:00
Wim Taymans
5d498183bc Clean up gstelement.h
Original commit message from CVS:
Clean up gstelement.h
GstBin cleanups, fix bug where iterator was freed.
GstElement cleanups.
Backport gstinfo from HEAD.
Fix GstIterator comparison bug.
Fix clock tests.
2005-03-09 16:24:52 +00:00
Wim Taymans
b43d8f1006 gst/: Backport HEAD changes, mostly docs.
Original commit message from CVS:
* gst/gst_private.h:
* gst/gstbin.c: (gst_bin_get_by_name_recurse_up):
* gst/gstbuffer.h:
* gst/gstclock.c: (gst_clock_id_ref), (gst_clock_id_unref),
(gst_clock_id_compare_func), (gst_clock_id_wait),
(gst_clock_id_wait_async), (gst_clock_init),
(gst_clock_adjust_unlocked), (gst_clock_get_time):
* gst/gstclock.h:
* gst/gstelement.c: (gst_element_class_init),
(gst_element_get_random_pad), (gst_element_get_state_func),
(gst_element_lost_state):
* gst/gstelement.h:
* gst/gstelementfactory.c: (gst_element_register):
* gst/gstiterator.c:
* gst/gstobject.c: (gst_object_set_parent):
* gst/gstobject.h:
* gst/gstpad.c: (gst_pad_push), (gst_pad_pull_range),
(gst_pad_query):
* gst/gstpad.h:
* gst/gstplugin.h:
* gst/gstprobe.h:
* gst/parse/parse.l:
* gst/registries/gstxmlregistry.c: (gst_xml_registry_load):
Backport HEAD changes, mostly docs.
Fix possible deadlock in _get_random_pad.
2005-03-09 11:05:00 +00:00
Wim Taymans
c10560ebec Backporting some HEAD changes, mostly docs and stuff.
Original commit message from CVS:
Backporting some HEAD changes, mostly docs and stuff.
2005-03-08 14:27:43 +00:00
Andy Wingo
eb6c9dd801 check/gst/gstobject.c (test_fake_object_name): The object *does* have a name after g_object_new.
Original commit message from CVS:
2005-03-07  Andy Wingo  <wingo@pobox.com>

* check/gst/gstobject.c (test_fake_object_name): The object *does*
have a name after g_object_new.

* gst/base/gstbasesink.c: Change "arguments" to "properties" in
the code. Die GtkObject die!
(GstBaseSink::preroll-queue-len): New object property, the number
of buffers to queue in preroll. By default, does not queue any
buffers. Set to a higher number if you have a one-threaded
demuxer.
(gst_basesink_preroll_queue_push)
(gst_basesink_preroll_queue_empty)
(gst_basesink_preroll_queue_flush): Implement a queue of buffers
for preroll. All must be called with PREROLL_LOCK.
(gst_basesink_finish_preroll): Instead of always blocking, push
the buffer onto the queue. preroll_queue_push will block if the
queue is full.
(gst_basesink_event): Make sure the preroll queue is emptied on
eos and flushed on flush.
(gst_basesink_handle_buffer): Does the work of chain_unlocked, but
without going into finish_preroll.
(gst_basesink_change_state): Handle setting up the queue and
flushing it in READY<->PAUSED transitions.
2005-03-07 10:35:12 +00:00
Wim Taymans
6a480f3c7c Preparing for merge to HEAD.
Original commit message from CVS:
* docs/design/part-MT-refcounting.txt:
* gst/elements/gstidentity.c: (gst_identity_event):
* gst/gstobject.c: (gst_object_get_type), (gst_object_class_init),
(gst_object_init), (gst_object_ref), (gst_object_unref),
(gst_object_sink), (gst_object_dispose),
(gst_object_dispatch_properties_changed),
(gst_object_set_name_default), (gst_object_set_name),
(gst_object_set_name_prefix), (gst_object_set_parent),
(gst_object_unparent), (gst_object_check_uniqueness):
* gst/gstobject.h:
Preparing for merge to HEAD.
Backported some HEAD changes to the set_name_default
method.
Updated refcounting docs.
2005-03-03 18:18:06 +00:00
Andy Wingo
bffbacfaae gst/gstiterator.c (gst_iterator_find_custom)
Original commit message from CVS:
2005-03-03  Andy Wingo  <wingo@pobox.com>

* gst/gstiterator.c (gst_iterator_find_custom)
(gst_iterator_foreach, gst_iterator_fold): Never free the
iterator.

* gst/elements/gsttee.c (gst_tee_handle_buffer):
* gst/gstutils.c (gst_pad_proxy_setcaps, gst_pad_proxy_getcaps):
Always free the iterator.

* check/gst/gstbus.c (pull_messages): Use public
gst_message_get_structure().
2005-03-03 15:58:42 +00:00
Andy Wingo
9a14160bee tools/gst-launch.c: Update to use the new message-parsing API.
Original commit message from CVS:
2005-03-03  Andy Wingo  <wingo@pobox.com>

* tools/gst-launch.c: Update to use the new message-parsing API.

* tools/gst-md5sum.c: Update to new spiffy poll API. Not that
md5sum is ported though!

* gst/gstmessage.c:
* gst/gstmessage.h (struct _GstMessage): Changed so the message
data is just a GstStructure, not a union.
(gst_message_get_structure): New function, gets the structure
backing the message. Owned by the message.
(gst_message_parse_tag, gst_message_parse_state_changed)
(gst_message_parse_error, gst_message_parse_warning): New
functions, parse the message into their components. Return values
are copies, and so must be freed by the caller.
2005-03-03 15:37:39 +00:00
Andy Wingo
70d2a801d9 tests/complexity.c: Adjust to lack of gst_bin_iterate, boolean link return values.
Original commit message from CVS:
2005-03-01  Andy Wingo  <wingo@pobox.com>

* tests/complexity.c: Adjust to lack of gst_bin_iterate, boolean
link return values.

* gst/elements/gsttee.c, gst/elements/gsttee.h: I am the master of
do-nothing plugins! Fear the dev-zero!

* gst/elements/gstelements.c
* gst/elements/Makefile.am: Add tee back to gstelements.

* gst/gstutils.h
* gst/gstutils.c (gst_pad_proxy_getcaps, gst_pad_proxy_setcaps):
Resurrect from the dead. Use gst_iterator_fold to be threadsafe.

* gst/gstiterator.h (GstIteratorFoldFunction): Return a bool.

* gst/gstiterator.c (gst_iterator_fold): Only continue folding as
long as the fold function returns TRUE. Add a bunch o docs.
(gst_iterator_foreach): Add docs about when the iterator will be
freed.
(gst_iterator_find_custom): Make more efficient because of the
bool-return-value thing.

* check/gst/gstiterator.c (add_fold_func): Adapt to new
fold-funcs-returning-bool policy.

* gst/gstutils.h:
* gst/gstutils.c (gst_element_link, gst_element_link_many)
(gst_element_link_filtered, gst_element_link_pads)
(gst_element_link_pads_filtered): It seems Wim changed the return
type to booleans internally. Assume he knows what he's doing and
change the prototypes as well.
2005-03-01 16:51:11 +00:00
Andy Wingo
c32ed239dd tests/: Merge in complexity tests from HEAD.
Original commit message from CVS:
2005-03-01  Andy Wingo  <wingo@pobox.com>

* tests/Makefile.am, tests/complexity.c:
* tests/complexity.gnuplot, tests/bench-complexity.scm: Merge in
complexity tests from HEAD.
2005-03-01 12:57:51 +00:00
Andy Wingo
b56662cf97 gst/gstpipeline.c: Fix element details.
Original commit message from CVS:
2005-03-01  Andy Wingo  <wingo@pobox.com>

* gst/gstpipeline.c: Fix element details.
(gst_pipeline_set_property, gst_pipeline_get_property): Lock
around the whole get/set properties.

* gst/gstpad.c (gst_real_pad_set_property): Add a FIXME, the
::active property doesn't make sense any more.
(gst_pad_set_active): Check to see if the pad has the right
functions to be activated in this mode.
(gst_pad_event_default): Handle EOS specially, pausing the task on
the pad if necessary.

* gst/gstbin.c: Adapt callers of gst_iterator_foreach and
gst_iterator_filter to new argument order.

* gst/gstiterator.c (gst_iterator_find_custom)
(gst_iterator_foreach): Implement on top of gst_iterator_fold
instead of using the filter_next internals. A bit cleaner this
way.

* gst/gstiterator.h:
(gst_iterator_filter, gst_iterator_find_custom): Switch the
argument order so user_data is last.
(gst_iterator_foreach): Return the GstIteratorResult so the caller
knows if all elements were called, or if an error or resync
happened.
(gst_iterator_fold): New procedure.

* check/Makefile.am (TESTS):
* check/gst/gstiterator.c: New test suite for GstIterator. Checks
that iterating through a list hits all members in order, that
resync works correctly, and that fold works.

* gst/base/gstbasesink.c (gst_basesink_event): Fix Waymans bug.
2005-03-01 12:55:32 +00:00
Wim Taymans
82a12763e8 gst/base/: Added small README for base classes.
Original commit message from CVS:
* gst/base/README:
* gst/base/gstbasesink.c: (gst_basesink_get_template),
(gst_basesink_base_init), (gst_basesink_pad_getcaps),
(gst_basesink_pad_setcaps), (gst_basesink_pad_buffer_alloc),
(gst_basesink_init), (gst_base_sink_get_template),
(gst_base_sink_get_caps), (gst_base_sink_set_caps),
(gst_base_sink_buffer_alloc), (gst_basesink_finish_preroll),
(gst_basesink_event), (gst_basesink_get_times),
(gst_basesink_do_sync), (gst_basesink_change_state):
Added small README for base classes.
Make default getcaps function in the base class return a
copy of the padtemplate caps if nothing else.
2005-02-24 16:04:20 +00:00
Wim Taymans
47eb83ff1c gst/: Convert timeout value in _get_state() to absolute time as required by the _cond_wait().
Original commit message from CVS:
* gst/elements/gstfakesrc.c: (gst_fakesrc_get_range_unlocked):
* gst/elements/gstidentity.c: (gst_identity_handle_buffer):
* gst/gstelement.c: (gst_element_get_state_func),
(gst_element_lost_state):
* gst/gstelement.h:
* gst/gstpipeline.c: (gst_pipeline_class_init),
(gst_pipeline_init), (gst_pipeline_set_property),
(gst_pipeline_get_property), (is_eos), (pipeline_bus_handler),
(gst_pipeline_change_state):
* gst/gstpipeline.h:
Convert timeout value in _get_state() to absolute time as
required by the _cond_wait().
Add _lost_state() to GstElement when elements in PAUSED loose
the preroll after a flush.
Add properties to GstPipeline, one to adjust clock times and
another to configure a timeout for a possibly blocking operation.
Removed some old methods.
2005-02-24 14:27:54 +00:00
Andy Wingo
cea03c1e53 tests/bench-mass_elements.scm, tests/mass_elements.gnuplot: Merged from HEAD.
Original commit message from CVS:
2005-02-24  Andy Wingo  <wingo@pobox.com>

* tests/bench-mass_elements.scm, tests/mass_elements.gnuplot:
Merged from HEAD.
2005-02-24 12:45:11 +00:00
Wim Taymans
918a75789e gst/: Only call the item function in the iterator if there is an item.
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_basesink_get_template),
(gst_basesink_base_init), (gst_basesink_class_init),
(gst_basesink_pad_getcaps), (gst_basesink_pad_setcaps),
(gst_basesink_pad_buffer_alloc), (gst_basesink_init),
(gst_base_sink_get_template), (gst_base_sink_get_caps),
(gst_base_sink_set_caps), (gst_base_sink_buffer_alloc),
(gst_basesink_finish_preroll), (gst_basesink_event),
(gst_basesink_get_times), (gst_basesink_do_sync),
(gst_basesink_change_state):
* gst/base/gstbasesink.h:
* gst/gstiterator.c: (gst_iterator_init), (gst_iterator_new),
(gst_list_iterator_next), (gst_list_iterator_free),
(gst_iterator_new_list), (gst_iterator_pop), (gst_iterator_next),
(gst_iterator_push):
Only call the item function in the iterator if there is an item.
Add capsnego stuff and buffer_alloc to the basesink class.
Cleanups in the preroll code.
2005-02-23 17:32:37 +00:00
Andy Wingo
0f9e1490b7 Benjamin's mass_elements works now, but for other reasons. It's a lot faster than 0.8 :-)
Original commit message from CVS:
Benjamin's mass_elements works now, but for other reasons. It's a lot faster than 0.8 :-)

2005-02-23  Andy Wingo  <wingo@pobox.com>

* gst/elements/gstidentity.c (gst_identity_event): Pause the sink
task, if any, during EOS. Don't need to take the stream lock, we
already have it.
2005-02-23 17:24:26 +00:00
Andy Wingo
5e8e74f37a add missing file
Original commit message from CVS:
add missing file
2005-02-23 16:09:59 +00:00
Andy Wingo
0d557a7bc2 gst/gstmessage.h gst/gstmessage.c (_gst_message_free)
Original commit message from CVS:
2005-02-23  Andy Wingo  <wingo@pobox.com>

* gst/gstmessage.h
* gst/gstmessage.c (_gst_message_free)
(gst_message_new_application): New message type, APPLICATION,
explicitly for use by applications.

* gst/gstbus.c (gst_bus_post): Only write a byte to the wakeup
socket if the queue is coming from an empty state. Fixes a bug
where posting a message could block, waiting for someone to read
out bytes from the socket.
(bus_watch_callback): Renamed from bus_callback, let gst_bus_pop
handle the socket read.
(bus_watch_destroy): Renamed from bus_destroy.

* check/Makefile.am: Re-enable the gst-register test so we can
deal with elements here. Add the gstbus tests.

* check/gst/gstbus.c: New check, spawns off a bunch of threads all
posting messages to a bus, then reads to see if they are in the
right order.

* check/pipelines/simple_launch_lines.c: Add some tests, and make
sure to pop the message off the bus after the poll.

* gst/gstbus.c (gst_bus_pop): Read off the control byte if the
queue becomes empty.
2005-02-23 16:08:21 +00:00
Wim Taymans
b152bc1c9c Add clock and sync handling to the base sink class.
Original commit message from CVS:
* docs/design/part-states.txt:
* gst/base/gstbasesink.c: (gst_basesink_get_template),
(gst_basesink_base_init), (gst_basesink_class_init),
(gst_basesink_init), (gst_base_sink_get_template),
(gst_base_sink_get_caps), (gst_base_sink_set_caps),
(gst_base_sink_alloc_buffer), (gst_basesink_finish_preroll),
(gst_basesink_event), (gst_basesink_get_times),
(gst_basesink_do_sync), (gst_basesink_chain_unlocked),
(gst_basesink_activate), (gst_basesink_change_state):
* gst/base/gstbasesink.h:
* gst/elements/gstfakesink.c: (gst_fakesink_class_init),
(gst_fakesink_get_times), (gst_fakesink_event),
(gst_fakesink_preroll), (gst_fakesink_render):
Add clock and sync handling to the base sink class.
Make fakesink extend the base sink class.
Fix some typos.
2005-02-23 14:47:08 +00:00
Andy Wingo
5b676004db check/Makefile.am (TESTS): Add pipelines/simple_launch_lines.
Original commit message from CVS:
2005-02-23  Andy Wingo  <wingo@pobox.com>

* check/Makefile.am (TESTS): Add pipelines/simple_launch_lines.

* check/pipelines/simple_launch_lines.c: New test suite for simple
gst-launch lines. Just a beginning right now.
2005-02-23 12:15:46 +00:00
Wim Taymans
ba3534f315 Add sink base class to abstract locking and preroll.
Original commit message from CVS:
* configure.ac:
* docs/design/part-states.txt:
* gst/Makefile.am:
* gst/base/Makefile.am:
* gst/base/gstbasesink.c: (gst_basesink_get_template),
(gst_basesink_base_init), (gst_basesink_class_init),
(gst_basesink_init), (gst_basesink_set_pad_functions),
(gst_basesink_set_all_pad_functions), (gst_basesink_set_clock),
(gst_basesink_set_property), (gst_basesink_get_property),
(gst_base_sink_get_template), (gst_base_sink_get_caps),
(gst_base_sink_set_caps), (gst_base_sink_alloc_buffer),
(gst_basesink_finish_preroll), (gst_basesink_event),
(gst_basesink_chain_unlocked), (gst_basesink_chain),
(gst_basesink_loop), (gst_basesink_activate),
(gst_basesink_change_state):
* gst/base/gstbasesink.h:
* gst/elements/Makefile.am:
* gst/elements/gstfakesink.c: (gst_fakesink_base_init),
(gst_fakesink_class_init), (gst_fakesink_init),
(gst_fakesink_set_property), (gst_fakesink_get_property),
(gst_fakesink_event), (gst_fakesink_preroll),
(gst_fakesink_render), (gst_fakesink_change_state):
* gst/elements/gstfakesink.h:
* gst/gstelement.c: (gst_element_get_random_pad):
* gst/gstevent.h:
* gst/gstiterator.c: (gst_iterator_init), (gst_iterator_new),
(gst_list_iterator_next), (gst_list_iterator_free),
(gst_iterator_new_list), (gst_iterator_pop), (gst_iterator_next),
(gst_iterator_push), (filter_next):
* gst/gstmessage.h:
* gst/gsttrashstack.h:
Add sink base class to abstract locking and preroll.
Make fakesink use the base class.
Some doc fixes.
Fix missing breaks.
2005-02-23 11:22:43 +00:00
Andy Wingo
7ba6b8b6b7 gst/elements/gstidentity.h
Original commit message from CVS:
2005-02-22  Andy Wingo  <wingo@pobox.com>

* gst/elements/gstidentity.h
* gst/elements/gstidentity.c (gst_identity_handle_buffer): New
proc, factored out of the old chain func.
(gst_identity_chain): Use handle_buffer. Lock the stream.
(gst_identity_getrange): Lock the stream. Still doesn't do any
reporting tho.
(gst_identity_event): Handle flush events in the loop-based and
decoupled cases.
(identity_queue_flush, identity_queue_pop, identity_queue_push):
New procs, implement a 1-data buffer pen between threads in
decoupled operation.
(gst_identity_class_init, gst_identity_get_property)
(gst_identity_set_property): Use PROP_FOO instead of ARG_FOO. It's
not null if we get it, but I might remove five year old code. Add
has-src-loop, has-sink-loop, has-chain, has-getrange properties,
remove loop-based.
(gst_identity_finalize): Free mutex and cond.
(gst_identity_init): Alloc mutex and cond.
(gst_identity_sink_loop, gst_identity_src_loop): New procs.
(gst_identity_set_dataflow_funcs): New proc.
2005-02-22 17:23:33 +00:00
Thomas Vander Stichele
d8e1a84a7c let's see if this builds
Original commit message from CVS:
let's see if this builds
2005-02-22 10:42:52 +00:00
Thomas Vander Stichele
0943d19b8c let's see if this builds
Original commit message from CVS:
let's see if this builds
2005-02-22 10:31:57 +00:00
Thomas Vander Stichele
fed8f6d708 testing bot
Original commit message from CVS:
testing bot
2005-02-22 10:18:03 +00:00
Thomas Vander Stichele
74b36aebd1 README
Original commit message from CVS:
README
2005-02-22 10:10:43 +00:00
Thomas Vander Stichele
42ce618b0c README
Original commit message from CVS:
README
2005-02-22 10:09:55 +00:00
Thomas Vander Stichele
b49d01c957 README
Original commit message from CVS:
README
2005-02-22 10:07:12 +00:00
Thomas Vander Stichele
9dc2274e4c we really need to update the readme
Original commit message from CVS:
we really need to update the readme
2005-02-21 19:08:15 +00:00
Wim Taymans
3c40ee95e8 gst/elements/gstfakesink.c: Fix properties.
Original commit message from CVS:
* gst/elements/gstfakesink.c: (gst_fakesink_get_property),
(gst_fakesink_finish_preroll), (gst_fakesink_event),
(gst_fakesink_change_state):
Fix properties.
2005-02-21 19:00:32 +00:00
Thomas Vander Stichele
9ee25280f5 we get paid per whitespace
Original commit message from CVS:
we get paid per whitespace
2005-02-21 18:55:54 +00:00
Wim Taymans
ed1664fbaf Add finalize method to RealPad.
Original commit message from CVS:
Add finalize method to RealPad.
Add new lock to correctly do the preroll, should probably not
be put here.
Make fakesink do preroll correctly. Emit a message when the
preroll sample is queued.
Add more info in gst-launch regarding state changes.
2005-02-21 18:49:19 +00:00
Andy Wingo
6664bebb6d gst/elements/: (gst_fakesink_loop, gst_fakesrc_loop, gst_fakesink_chain)
Original commit message from CVS:
2005-02-21  Andy Wingo  <wingo@pobox.com>

* gst/elements/gstfakesink.c:
* gst/elements/gstfakesrc.c:
(gst_fakesink_loop, gst_fakesrc_loop, gst_fakesink_chain)
(gst_fakesrc_get_range): Assert the pad has been activated in the
proper mode. This will fail right now for fakesrc ! identity !
fakesink.
(gst_fakesrc_activate, gst_fakesink_activate): Record the pad
activation mode.

* gst/elements/gstfakesrc.h: Add a pad_mode instance variable.
2005-02-21 15:27:23 +00:00
Thomas Vander Stichele
8479cbc3fa some idiot added a newline here
Original commit message from CVS:
some idiot added a newline here
2005-02-21 14:31:49 +00:00
Andy Wingo
aafa4f7570 gst/gstpad.c (gst_real_pad_dispose): Free the stream lock (it wasn't being freed before).
Original commit message from CVS:
2005-02-21  Andy Wingo  <wingo@pobox.com>

* gst/gstpad.c (gst_real_pad_dispose): Free the stream lock (it
wasn't being freed before).
(gst_real_pad_init): Allocate and initialize the stream lock.

* gst/gstpad.h (GstRealPad): Change the stream lock to be
recursive, so that if an event comes while a loop-based sink is
pulling, the stream lock can be had by both the sink's loop
function and the sink's event function.
(GST_STREAM_GET_LOCK, GST_STREAM_LOCK, GST_STREAM_TRYLOCK)
(GST_STREAM_UNLOCK): Updated accordingly.
2005-02-21 14:11:26 +00:00
Thomas Vander Stichele
ae2cc6d30f oh oh
Original commit message from CVS:
oh oh
2005-02-21 14:10:02 +00:00
Andy Wingo
d94be30f9b fix waymans bug
Original commit message from CVS:
fix waymans bug
2005-02-21 11:56:50 +00:00
Andy Wingo
1a5201826c gst/gstmessage.h (GstMessageType): Turned into flags. Added
Original commit message from CVS:
2005-02-21  Andy Wingo  <wingo@pobox.com>

* gst/gstmessage.h (GstMessageType): Turned into flags. Added
GST_MESSAGE_ANY as an OR of all flags.
(GST_MESSAGE_PARSE_STATE_CHANGED): New terrible macro. Will be
made into a function soon.
(GstMessage): Add a state_changed structure to the union. The
union will die soon in favor of a single GstStructure tho.
(gst_message_new_state_changed): New API.

* gst/gstmessage.c (gst_message_new_state_changed): New API.

* tools/gst-launch.c (check_intr): Set the state of the pipeline
to PAUSED here; the poll will catch the state change.
(event_loop): New function, polls the pipeline bus for events. Can
block until eos/error/state change, or just handle the pending
events.
(main): Changed to use event_loop instead of running a main loop.

* gst/gstbus.h (gst_bus_poll): Added.
(gst_bus_peek): Return non-const; the message is refcounted
anyway.

* gst/gstbus.c (gst_bus_init): Replace the GAsyncQueue with a
GQueue+mutex to allow for _peek. (The wake-up functionality
provided by GAsyncQueue is already done by our socketpair.) All
queue users changed to lock, operate, and unlock.
(gst_bus_post): Check the retval of write(2) and handle errno.
(gst_bus_peek): Implemented.
(gst_bus_pop, gst_bus_peek, bus_callback): Because the socketpair
is used to wake up the GSource, read off the character in the
GSource handler and not in pop/peek. This is because a peek will
require a pop in the future, and you can't read off the char
twice. Deal with errno in the read.
(bus_callback): Interpret the handler return value as whether or
not to pop the message from the bus.
(poll_handler, poll_timeout, gst_bus_poll): New API. gst_bus_poll
is meant to replace the while(gst_bin_iterate()) idiom.
2005-02-21 11:54:55 +00:00
Andy Wingo
69e9ca3e5f gst/elements/gstfakesrc.c (gst_fakesrc_class_init): Add HAS_LOOP and HAS_GETRANGE properties, readwrite + construct.
Original commit message from CVS:
2005-02-18  Andy Wingo  <wingo@pobox.com>

* gst/elements/gstfakesrc.c (gst_fakesrc_class_init): Add HAS_LOOP
and HAS_GETRANGE properties, readwrite + construct.
(gst_fakesrc_set_pad_functions)
(gst_fakesrc_set_all_pad_functions): New procs, like in fakesrc.
(gst_fakesrc_set_property, gst_fakesrc_get_property): Same as
fakesrc.
(gst_fakesrc_get_range_unlocked): New proc, factored out of the
core of _loop.
(gst_fakesrc_get_range): Getrange implementation for fakesink.
(gst_fakesrc_loop): Interface with get_range_unlocked.
(gst_fakesrc_activate): Add support for both activation modes,
with assertions.

* gst/elements/gstfakesink.h:
* gst/elements/gstfakesrc.h: Add has_loop and has_chain instance
variables.

* gst/elements/gstfakesink.c (gst_fakesink_class_init): Add
HAS_LOOP and HAS_CHAIN object properties, readwrite but also set
on construction.
(gst_fakesink_set_pad_functions): New proc, sets the functions on
one pad, setting the loop and chain functions properly.
(gst_fakesink_set_all_pad_functions): New proc, does
set_pad_functions on all pads.
(gst_fakesink_request_new_pad): Call set_pad_functions.
(gst_fakesink_set_property, gst_fakesink_get_property): When the
HAS_LOOP and HAS_CHAIN properties are set, reset the functions on
all pads.
(gst_fakesink_activate): Assert that the appropriate functions are
available for the activation mode.
(gst_fakesink_loop): Don't unref the buffer, chain_unlocked does
it for us.
2005-02-18 11:21:50 +00:00
Thomas Vander Stichele
325219ea1a threadsafe pad link/unlink
Original commit message from CVS:
threadsafe pad link/unlink
2005-02-16 18:31:45 +00:00
Wim Taymans
8263719f64 gst/elements/: Fix fakesink.
Original commit message from CVS:
* gst/elements/gstfakesink.c: (gst_fakesink_activate),
(gst_fakesink_loop):
* gst/elements/gstfakesrc.c: (gst_fakesrc_activate):
Fix fakesink.
2005-02-16 18:06:52 +00:00
Andy Wingo
531fd6af0d gst/elements/gstfakesink.c (gst_fakesink_loop)
Original commit message from CVS:
2005-02-16  Andy Wingo  <wingo@pobox.com>

* gst/elements/gstfakesink.c (gst_fakesink_loop)
(gst_fakesink_chain_unlocked, gst_fakesink_activate): New
functions.
(gst_fakesink_chain): Use chain_unlock.
2005-02-16 17:47:05 +00:00
Thomas Vander Stichele
a0845b59e6 add pad tests
Original commit message from CVS:
add pad tests
2005-02-16 17:34:32 +00:00
Wim Taymans
dc44130c0e add gst_caps_copy_nth as a more general replacement for copy_1.
Original commit message from CVS:
* docs/design/part-TODO.txt:
* gst/elements/gstfakesink.c: (gst_fakesink_event),
(gst_fakesink_chain):
* gst/elements/gstfakesink.h:
* gst/elements/gstfakesrc.c: (gst_fakesrc_loop),
(gst_fakesrc_activate):
* gst/elements/gstfilesrc.c: (gst_filesrc_getrange),
(gst_filesrc_open_file), (gst_filesrc_loop),
(gst_filesrc_activate), (gst_filesrc_change_state),
(filesrc_find_peek), (gst_filesrc_type_find):
* gst/gstcaps.c: (gst_caps_copy_nth):
* gst/gstcaps.h:
* gst/gstelement.c: (gst_element_add_pad),
(gst_element_remove_pad), (iterate_pad),
(gst_element_get_state_func), (gst_element_commit_state),
(gst_element_set_state), (gst_element_pads_activate),
(gst_element_change_state), (gst_element_dispose):
* gst/gstutils.c: (gst_element_finish_preroll):
* gst/gstutils.h:
* tools/gst-launch.c: (check_intr):
add gst_caps_copy_nth as a more general replacement for
copy_1.
Slightly change the finish_preroll helper function to
include pad flush/active.
Small cleanups in fakesrc.
Add STREAM_LOCK in filesrc.
2005-02-16 15:18:18 +00:00
Thomas Vander Stichele
2af759f2b5 make now works nicely
Original commit message from CVS:
make now works nicely
2005-02-11 17:14:16 +00:00
Thomas Vander Stichele
d2d601e447 sprinkle enters over emacs
Original commit message from CVS:
sprinkle enters over emacs
2005-02-11 16:59:22 +00:00
Andy Wingo
5c30d4e66c tools/gst-launch.c (check_intr): New timeout to check the interrupt flag and stop the pipeline properly. Bling!
Original commit message from CVS:
2005-02-11  Andy Wingo  <wingo@pobox.com>

* tools/gst-launch.c (check_intr): New timeout to check the
interrupt flag and stop the pipeline properly. Bling!
2005-02-11 16:56:31 +00:00
Wim Taymans
f30a7e5ea8 gst/gstevent.c: stop time can be -1.
Original commit message from CVS:
* gst/gstevent.c: (gst_event_new_discontinuous_valist),
(gst_event_discont_get_value), (gst_event_new_segment_seek):
stop time can be -1.
2005-02-11 16:44:57 +00:00