Commit graph

7 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
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
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
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
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
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