1. 17 Sep, 2007 1 commit
    • Jan Schmidt's avatar
      Fix minor compilation warnings shown with Forte. · 04757dd2
      Jan Schmidt authored
      Original commit message from CVS:
      * gst/gstbin.c: (gst_bin_continue_func):
      * libs/gst/base/gstbasesrc.c: (gst_base_src_do_sync):
      * libs/gst/base/gstcollectpads.c: (gst_collect_pads_add_pad_full):
      * plugins/elements/gstmultiqueue.c: (gst_multi_queue_loop):
      Fix minor compilation warnings shown with Forte.
      04757dd2
  2. 05 Jul, 2007 1 commit
    • Mark Nauwelaerts's avatar
      plugins/elements/gstmultiqueue.c: Implement non-default GstPadIntLinkFunction... · fc70188d
      Mark Nauwelaerts authored
      plugins/elements/gstmultiqueue.c: Implement non-default GstPadIntLinkFunction for multiqueue pads so that the pipelin...
      
      Original commit message from CVS:
      Patch by: Mark Nauwelaerts <manauw at skynet be>
      * plugins/elements/gstmultiqueue.c:
      (gst_multi_queue_get_internal_links), (apply_buffer),
      (single_queue_overrun_cb), (gst_single_queue_new):
      Implement non-default GstPadIntLinkFunction for multiqueue pads so that
      the pipeline layout can be tracked correctly. Fixes #453732.
      fc70188d
  3. 28 Jun, 2007 1 commit
    • Wim Taymans's avatar
      plugins/elements/gstmultiqueue.c: When figuring out when a queue is filled,... · 45bed69a
      Wim Taymans authored
      plugins/elements/gstmultiqueue.c: When figuring out when a queue is filled, use our internal time estimate based on s...
      
      Original commit message from CVS:
      * plugins/elements/gstmultiqueue.c: (apply_buffer),
      (single_queue_overrun_cb):
      When figuring out when a queue is filled, use our internal time estimate
      based on segments, just like check_full does.
      45bed69a
  4. 26 Jun, 2007 1 commit
    • Jan Schmidt's avatar
      plugins/elements/gstmultiqueue.*: Take the multiqueue lock when updating the... · afebd394
      Jan Schmidt authored
      plugins/elements/gstmultiqueue.*: Take the multiqueue lock when updating the fill level so we don't get confused.
      
      Original commit message from CVS:
      * plugins/elements/gstmultiqueue.c: (gst_multi_queue_init),
      (gst_single_queue_flush), (apply_segment), (apply_buffer),
      (gst_single_queue_push_one), (gst_multi_queue_loop),
      (gst_multi_queue_sink_activate_push), (gst_multi_queue_sink_event),
      (gst_multi_queue_src_activate_push), (wake_up_next_non_linked),
      (compute_high_id), (gst_single_queue_new):
      * plugins/elements/gstmultiqueue.h:
      Take the multiqueue lock when updating the fill level so we don't get
      confused.
      After applying a buffer or event on the src pad segment, make sure to
      call gst_data_queue_limits_changed() to get the data queue to unblock
      and check the filled state again.
      Rework the not-linked pad handling so the logic is that not-linked
      pads can push as fast as they like, but only so they never get
      ahead of any linked pads.
      * tests/check/elements/multiqueue.c: (mq_sinkpad_to_srcpad),
      (mq_dummypad_getcaps), (mq_dummypad_chain), (mq_dummypad_event),
      (run_output_order_test), (GST_START_TEST), (multiqueue_suite):
      Add a test to check that not-linked pads always stay behind
      linked pads.
      afebd394
  5. 21 Jun, 2007 2 commits
    • Wim Taymans's avatar
      plugins/elements/gstmultiqueue.c: Fix setting max-* properties after adding queues. · a689b50c
      Wim Taymans authored
      Original commit message from CVS:
      * plugins/elements/gstmultiqueue.c: (gst_multi_queue_set_property),
      (update_time_level), (gst_single_queue_push_one),
      (gst_multi_queue_chain), (gst_multi_queue_sink_event),
      (single_queue_overrun_cb), (single_queue_underrun_cb),
      (single_queue_check_full):
      Fix setting max-* properties after adding queues.
      Use IS_FILLED for checking visible items.
      Signal overrun if multiple queues overrun.
      Add extra debug output.
      Patch by: Wim Taymans <wim@fluendo.com>
      a689b50c
    • Stefan Kost's avatar
      Saving relocations for GTypeInfo and GstElementDetails. Fixes #437457. · 9eeb1c8e
      Stefan Kost authored
      Original commit message from CVS:
      * gst/gstelement.c: (gst_element_class_set_details_simple):
      * gst/gstelement.h:
      * gst/gstutils.c: (gst_type_register_static_full):
      * gst/gstutils.h:
      * plugins/elements/gstcapsfilter.c: (gst_capsfilter_base_init):
      * plugins/elements/gstfakesink.c: (gst_fake_sink_base_init):
      * plugins/elements/gstfakesrc.c: (gst_fake_src_base_init):
      * plugins/elements/gstfdsink.c: (gst_fd_sink_base_init):
      * plugins/elements/gstfdsrc.c: (gst_fd_src_base_init):
      * plugins/elements/gstfilesink.c: (gst_file_sink_base_init):
      * plugins/elements/gstfilesrc.c: (gst_file_src_base_init):
      * plugins/elements/gstidentity.c: (gst_identity_base_init):
      * plugins/elements/gstmultiqueue.c: (gst_multi_queue_base_init):
      * plugins/elements/gstqueue.c: (gst_queue_base_init),
      (apply_buffer), (gst_queue_chain):
      * plugins/elements/gsttee.c: (gst_tee_base_init):
      * plugins/elements/gsttypefindelement.c:
      (gst_type_find_element_base_init),
      (gst_type_find_element_class_init):
      Saving relocations for GTypeInfo and GstElementDetails. Fixes #437457.
      9eeb1c8e
  6. 19 Jun, 2007 1 commit
  7. 18 Jun, 2007 2 commits
    • Wim Taymans's avatar
      plugins/elements/gstmultiqueue.c: Make sure we don't reference the... · d6efd96e
      Wim Taymans authored
      plugins/elements/gstmultiqueue.c: Make sure we don't reference the buffer/event after we have given away ownership in...
      
      Original commit message from CVS:
      * plugins/elements/gstmultiqueue.c: (apply_buffer),
      (gst_single_queue_push_one), (gst_multi_queue_chain),
      (gst_multi_queue_sink_event):
      Make sure we don't reference the buffer/event after we have given away
      ownership in the queue.
      d6efd96e
    • Wim Taymans's avatar
      plugins/elements/gstmultiqueue.c: Update queue state _after_ adding the item... · 8fb71378
      Wim Taymans authored
      plugins/elements/gstmultiqueue.c: Update queue state _after_ adding the item in the queue because else we could end u...
      
      Original commit message from CVS:
      * plugins/elements/gstmultiqueue.c: (gst_single_queue_flush),
      (gst_multi_queue_chain), (gst_multi_queue_sink_event):
      Update queue state _after_ adding the item in the queue because else we
      could end up being full without the element added yet.
      8fb71378
  8. 15 Jun, 2007 3 commits
    • Wim Taymans's avatar
      plugins/elements/gstmultiqueue.c: Don't use GSlice because we don't depend on >= 2.10 yet. · b0801cc9
      Wim Taymans authored
      Original commit message from CVS:
      * plugins/elements/gstmultiqueue.c: (gst_multi_queue_item_destroy),
      (gst_multi_queue_item_new):
      Don't use GSlice because we don't depend on >= 2.10 yet.
      b0801cc9
    • Wim Taymans's avatar
      plugins/elements/gstmultiqueue.c: Remove debug printf. · 7eeb3103
      Wim Taymans authored
      Original commit message from CVS:
      * plugins/elements/gstmultiqueue.c: (gst_single_queue_flush),
      (update_time_level), (apply_segment), (apply_buffer),
      (gst_single_queue_push_one), (gst_multi_queue_item_new),
      (gst_multi_queue_loop), (gst_multi_queue_sink_activate_push),
      (gst_multi_queue_sink_event), (single_queue_overrun_cb),
      (single_queue_underrun_cb), (single_queue_check_full):
      Remove debug printf.
      7eeb3103
    • Wim Taymans's avatar
      libs/gst/base/gstdataqueue.*: Various cleanups. · 0a3da772
      Wim Taymans authored
      Original commit message from CVS:
      * libs/gst/base/gstdataqueue.c: (gst_data_queue_cleanup),
      (gst_data_queue_finalize), (gst_data_queue_locked_is_empty),
      (gst_data_queue_set_flushing), (gst_data_queue_push),
      (gst_data_queue_pop), (gst_data_queue_drop_head),
      (gst_data_queue_limits_changed), (gst_data_queue_get_level):
      * libs/gst/base/gstdataqueue.h:
      Various cleanups.
      Added methods to get the current levels and to inform the queue that the
      'full' limits changed.
      * plugins/elements/gstmultiqueue.c: (gst_multi_queue_init),
      (gst_multi_queue_finalize), (gst_multi_queue_set_property),
      (gst_single_queue_flush), (update_time_level), (apply_segment),
      (apply_buffer), (gst_single_queue_push_one),
      (gst_multi_queue_item_steal_object),
      (gst_multi_queue_item_destroy), (gst_multi_queue_item_new),
      (gst_multi_queue_loop), (gst_multi_queue_chain),
      (gst_multi_queue_sink_activate_push), (gst_multi_queue_sink_event),
      (gst_multi_queue_getcaps), (gst_multi_queue_src_activate_push),
      (gst_multi_queue_src_query), (single_queue_overrun_cb),
      (single_queue_underrun_cb), (single_queue_check_full),
      (gst_single_queue_new):
      Keep track of time in the queue by measuring the difference between
      running_time on input and output. This gives more accurate results and
      can compensate for segments correctly.
      Make a queue by default only 5 buffers deep. We will now increase the
      buffer size depending on the filledness of the other queues.
      Factor out commong flush code.
      Make sure we don't add additional refcounts to buffers when we can avoid
      it.
      Propagate GstFlowReturn differently.
      Use GSlice for intermediate GstMultiQueueItems.
      Keep track of EOS.
      Resize queues on over and underruns based on filled level of other
      queues.
      When checking if the queue is filled, prefer to measure in time if we
      can and fall back to bytes when no time is known.
      * plugins/elements/gstqueue.c:
      Fix return value.
      0a3da772
  9. 06 Jun, 2007 1 commit
    • Tim-Philipp Müller's avatar
      Fix multiqueue leaking buffers and events when downstream or the queue are... · 2a3d26e6
      Tim-Philipp Müller authored
      Fix multiqueue leaking buffers and events when downstream or the queue are flushing. Make refcounting assumptions exp...
      
      Original commit message from CVS:
      * libs/gst/base/gstdataqueue.c:
      * libs/gst/base/gstdataqueue.h:
      * plugins/elements/gstmultiqueue.c: (gst_single_queue_push_one),
      (gst_multi_queue_item_new), (gst_multi_queue_chain),
      (gst_multi_queue_sink_event):
      * tests/check/elements/multiqueue.c: (multiqueue_suite):
      Fix multiqueue leaking buffers and events when downstream or the
      queue are flushing. Make refcounting assumptions explicit and
      document them (shouldn't break existing code that uses it other than
      maybe leak miniobjects, but that already happens anyway). Add unit
      test for the most common flushing case. Fixes #423700.
      2a3d26e6
  10. 13 Apr, 2007 1 commit
    • Jan Schmidt's avatar
      plugins/elements/gstmultiqueue.c: Don't deadlock when releasing a pad -... · 60f4a78b
      Jan Schmidt authored
      plugins/elements/gstmultiqueue.c: Don't deadlock when releasing a pad - gst_pad_set_active may try and take the multi...
      
      Original commit message from CVS:
      * plugins/elements/gstmultiqueue.c: (gst_multi_queue_release_pad):
      Don't deadlock when releasing a pad - gst_pad_set_active may try
      and take the multiqueue lock too.
      60f4a78b
  11. 03 Apr, 2007 1 commit
    • Tommi Myöhänen's avatar
      plugins/elements/gstmultiqueue.c: Deactivate pads and free GstSingleQueue with... · 94e18e22
      Tommi Myöhänen authored
      plugins/elements/gstmultiqueue.c: Deactivate pads and free GstSingleQueue with gst_single_queue_free() when releasing...
      
      Original commit message from CVS:
      Patch by: Tommi Myöhänen <ext-tommi dot myohanen at nokia dot com>
      * plugins/elements/gstmultiqueue.c: (gst_multi_queue_release_pad):
      Deactivate pads and free GstSingleQueue with gst_single_queue_free()
      when releasing sink pad. Fixes #425400.
      94e18e22
  12. 28 Mar, 2007 1 commit
    • Tim-Philipp Müller's avatar
      plugins/elements/gstmultiqueue.c: Don't leak GCond. · df244cef
      Tim-Philipp Müller authored
      Original commit message from CVS:
      * plugins/elements/gstmultiqueue.c: (gst_single_queue_free):
      Don't leak GCond.
      * tests/check/Makefile.am:
      * tests/check/elements/.cvsignore:
      * tests/check/elements/multiqueue.c: (setup_multiqueue),
      (GST_START_TEST), (multiqueue_suite):
      Add some dead simple unit tests for the 'multiqueue' element
      (some bits don't work yet and are disabled for now).
      df244cef
  13. 12 Mar, 2007 1 commit
  14. 24 Jan, 2007 1 commit
    • Edward Hervey's avatar
      plugins/elements/gstmultiqueue.c: Small fix. · a212adfb
      Edward Hervey authored
      Original commit message from CVS:
      * plugins/elements/gstmultiqueue.c:
      (gst_multi_queue_loop):
      Small fix.
      (single_queue_overrun_cb), (single_queue_underrun_cb),
      (single_queue_check_full), (gst_single_queue_new):
      Implement single queue growth system.
      This uses the extra-size properties, and will grow single queues by
      that much if one goes full whereas there are others empty. This is
      called extra-mode in the code.
      When a single queue's levels go back below the initial max-size
      limits, it is no longer in extra-mode. This is to ensure we don't
      consume too much memory.
      Fixes #399875
      a212adfb
  15. 22 Jan, 2007 1 commit
    • Edward Hervey's avatar
      plugins/elements/gstmultiqueue.c: Remove previous hack of unsetting the... · bc3baaa7
      Edward Hervey authored
      plugins/elements/gstmultiqueue.c: Remove previous hack of unsetting the flushing flag for the source pad instead of a...
      
      Original commit message from CVS:
      * plugins/elements/gstmultiqueue.c:
      (gst_multi_queue_src_activate_push), (gst_single_queue_new):
      Remove previous hack of unsetting the flushing flag for the source pad
      instead of activating it. Instead, fix the source pad activate function
      so that it no longer depends on having a parent set or not.
      bc3baaa7
  16. 17 Jan, 2007 1 commit
    • Edward Hervey's avatar
      plugins/elements/gstmultiqueue.c: When dynamically creating single queues,... · 4e07e925
      Edward Hervey authored
      plugins/elements/gstmultiqueue.c: When dynamically creating single queues, activate sinkpad before adding it.
      
      Original commit message from CVS:
      * plugins/elements/gstmultiqueue.c: (gst_single_queue_new):
      When dynamically creating single queues, activate sinkpad before adding
      it.
      We should be doing the same thing for the source pad, but we can't
      since it would call a method which needs the parent to be set in order
      to work propertly. Instead of activating the source pad, we just unset
      the flushing flag, which is the minimal requirement for adding a pad
      to an element in a state greater than READY.
      4e07e925
  17. 28 Nov, 2006 1 commit
    • Edward Hervey's avatar
      libs/gst/base/: New GstDataQueue object for threadsafe queueing. Most useful... · fdb51251
      Edward Hervey authored
      libs/gst/base/: New GstDataQueue object for threadsafe queueing. Most useful for elements that need some queueing fun...
      
      Original commit message from CVS:
      * libs/gst/base/Makefile.am:
      * libs/gst/base/gstdataqueue.c: (gst_data_queue_get_type),
      (gst_data_queue_base_init), (gst_data_queue_class_init),
      (gst_data_queue_init), (gst_data_queue_new),
      (gst_data_queue_cleanup), (gst_data_queue_finalize),
      (gst_data_queue_locked_flush), (gst_data_queue_locked_is_empty),
      (gst_data_queue_locked_is_full), (gst_data_queue_flush),
      (gst_data_queue_is_empty), (gst_data_queue_is_full),
      (gst_data_queue_set_flushing), (gst_data_queue_push),
      (gst_data_queue_pop), (gst_data_queue_drop_head),
      (gst_data_queue_set_property), (gst_data_queue_get_property):
      * libs/gst/base/gstdataqueue.h:
      New GstDataQueue object for threadsafe queueing. Most useful for
      elements that need some queueing functionnality.
      * docs/libs/gstreamer-libs-docs.sgml:
      * docs/libs/gstreamer-libs-sections.txt:
      Insert documentation for GstDataQueue
      * plugins/elements/Makefile.am:
      * plugins/elements/gstelements.c:
      * plugins/elements/gstmultiqueue.c: (gst_multi_queue_base_init),
      (gst_multi_queue_class_init), (gst_multi_queue_init),
      (gst_multi_queue_finalize), (gst_multi_queue_set_property),
      (gst_multi_queue_get_property), (gst_multi_queue_request_new_pad),
      (gst_multi_queue_release_pad), (gst_single_queue_push_one),
      (gst_multi_queue_item_destroy), (gst_multi_queue_item_new),
      (gst_multi_queue_loop), (gst_multi_queue_chain),
      (gst_multi_queue_sink_activate_push), (gst_multi_queue_sink_event),
      (gst_multi_queue_getcaps), (gst_multi_queue_bufferalloc),
      (gst_multi_queue_src_activate_push), (gst_multi_queue_acceptcaps),
      (gst_multi_queue_src_event), (gst_multi_queue_src_query),
      (wake_up_next_non_linked), (compute_next_non_linked),
      (single_queue_overrun_cb), (single_queue_underrun_cb),
      (single_queue_check_full), (gst_single_queue_new):
      * plugins/elements/gstmultiqueue.h:
      New multiqueue element, using GstDataQueue. Used for queuing multiple
      streams.
      Closes #344639 and #347785
      fdb51251