[gst-devel] Wim's week 2 progress mail

Andy Wingo wingo at pobox.com
Tue Mar 29 01:41:23 CEST 2005


Hey all,

For some reason wim's smtp server is being blocked by sf.net. So here's
his week 2 status mail in all its glory.

Cheers,

Wingo.

>From wim at fluendo.com Tue Mar 29 11:39:18 2005
Subject: HEAD merging week2

Hi fellows,

A little summary of the merging done last week. This week will fix HEAD
again so we can start on porting over plugins.

Wim


Week2 summary
-------------

  Second week THREADED->HEAD porting is focussing on adding the new
  subsystems and removing old ones. This all in preparation for the
  final week where the branch should start working again.

  Removed GstThread
  Reworked GstQueue
  Removed schedulers
  Removed cothreads

  Added GstBus, GstMessage
  Added GstTask as simple thread wrapper.


 - Documentation updates 
    - GstBus design
    - GstBin design
    - events design
    - pipeline design

 - general

   - state changes not yet implemented.
   - Added GstBus subsystem. Plugged in element error handling.
   - Added GstMessage for sending over the bus
   - Changed GstPipeline to distribute the clock.

 - HEAD status

   - compiles.
   - testcases in check directory work
   - pad linking thread safe now, negotiation removed.
   - running a pipeline does not work because the state changes are not
implemented yet.
   - plugin/pluginfeatures/elementfactory etc still expose Glists in the
API
     and are generally not threadsafe.
     

 - removed function
    
    - GstBin Flags removed: GST_BIN_FLAG_MANAGER,
GST_BIN_SELF_SCHEDULABLE,
      GST_BIN_STATE_LOCKED. No more manager bin or self schedulable bins
      concepts exist. The STATE_LOCKED flag was a workaround for
recursive
      state changes.
    - gst_bin_iterate(): removed, scheduling will happen automatically
now.
      The "iterate" signal was removed too.
    - gst_bin_sync_children_state(): removed, useless since 
      gst_element_set_state() will do exactly this.
    - gst_bin_child_state_change(): internal useless function.

    - GstElement Flags removed: GST_ELEMENT_DECOUPLED,
GST_ELEMENT_INFINITE_LOOP,
      GST_ELEMENT_NEW_LOOPFUNC, GST_ELEMENT_EVENT_AWARE: does not matter
anymore,
      Elements don't have a loop function anymore, ELEMENT_AWARE is a
pad thing.
    - GST_ELEMENT_IN_ERROR: deprecated.
    - "error", "eos", "found-tags" signals removed as they are now
performed with
      messages on the bus.
    - gst_element_clock_wait(), gst_element_get_time(),
gst_element_wait(), 
      gst_element_set_time(), gst_element_set_time_delay(), 
      gst_element_adjust_time(): old clock functions, elements should
use the
      clock directly for now. Some helper function could be implemented
in 
      gstutils.c later.
    - gst_element_set_loop_function(): no more loop function on an
element.
    - gst_element_release_locks(), gst_element_yield(),
gst_element_interrupt():
      old scheduler hooks.
    - gst_element_get_managing_bin(): deprecated, no bin is manager
anymore.
    - gst_element_default_error(): errors reported on the bus now.
    - gst_element_wait_state_change(): removed, gst_element_get_state()
can
      perform a blocking wait.
    - gst_element_set_eos(): deprecated, use the bus to post an EOS
message.
    - gst_element_found_tags(): removed, post a tag message on the bus.
    - gst_element_found_tags_for_pad(): post on the bus and push_event
the
      tags.
    - gst_element_factory_can_src/sink_caps(): deprecated. appeared
unused
      and is something for gstutils.c

    - GST_EVENT_EMPTY: not needed.
    - GST_EVENT_SEEK_SEGMENT: all seeks have endposition now.
    - GST_EVENT_SEGMENT_DONE: posted on the bus.
    - GST_EVENT_FILLER: not needed with new scheduling.
    - GST_EVENT_TS_OFFSET: not needed.
    - GST_EVENT_INTERRUPT: not needed with new scheduling.
    - gst_event_new_filler_stamped(), gst_event_filler_get_duration():
      not needed with new scheduling.
    
    - gst_pad_proxy_getcaps(), gst_pad_proxy_fixate(): moved to utils.
    - gst_pad_set_explicit_caps(), gst_pad_use_explicit_caps: utils
    - gst_pad_renegotiate(), gst_pad_unnegotiate(): deprecated.
    - gst_pad_try_relink_filtered(), gst_pad_try_set_caps(),
      gst_pad_try_set_caps_nonfixed(): no more trying.
    - gst_pad_caps_change_notify(): deprecated
    - gst_pad_recover_caps_error(): deprecated
    - gst_pad_check_compatibility: utils.
    - gst_pad_is_negotiated(): deprecated.
    - gst_pad_collectv(), gst_pad_collect(), gst_pad_collect_valist():
      removed, might end up in equivalent utils.
    - gst_pad_call_chain_function(), gst_pad_call_get_function():
deprecated.

    - gstscheduler.c: most function removed as the scheduler is not
needed
      anymore.


 - changed functions
   
    - gst_element_get_state(): signature changed to atomically get
current
      and pending state with timeout.
      
    - gst_event_new_flush(): requires a boolean now to indicate if the
flush
      starts or ends.

    - GstPadChainFunction and GstPadGetRangeFunction return a
GstFlowReturn
      so that data elements know when to stop pushing data.
    - GstPadLinkReturn returns a wider range of errors, not only related
to
      capsnego.
    - GstPadLinkFunction: is now called when a pad is linked. This has
nothing
      to do with capsnego.
    - GstPadBufferAllocFunction: requires a GstCaps as an arg so that
the peer
      knows the suggested format of the buffer.
    - gst_pad_link(), gst_pad_link_filtered(), gst_pad_relink_filtered()
return
      a GstPadLinkReturn
    - gst_pad_unlink() returns a gboolean to indicated success.


 - replaced functions

    - gst_element_error_full() -> gst_element_message_full(): more
general.
    - gst_element_default_deep_notify() ->
gst_object_default_deep_notify():
      more general.
     
    - GstPadGetFunction -> GstPadGetRangeFunction: only support ranges
when
      pulling in data. This simplifies scheduling, makes things harder
when
      they don't make sense and make things faster when they make sense.
      gst_pad_set_get_function() -> gst_pad_set_getrange_function()
      gst_pad_pull() -> gst_pad_pull_range()
    - GstPadFixateFunction -> GstPadFixateCapsFunction: changed name for
      consistency. 
      also gst_pad_set_fixate_function() ->
gst_pad_set_fixatecaps_function()


 - new functions

    - gst_element_get/set_manager(): get/set manager on an element
    - gst_element_get/set_bus(): get/set bus on an element.
    - gst_element_post_message(): post a message on the bus of this
element. 
    - gst_element_abort_state(), gst_element_commit_state(), 
      gst_element_lost_state(): function for ASYNC element state
changes.

    - GstPadSetCapsFunction: explicitly make a pad use caps. This used
to
      be the linkfunction. also gst_pad_set_setcaps_function()
    - GstPadAcceptCapsFunction: check if a pad can accept a given caps.
      also gst_pad_set_acceptcaps_function()
    - gst_pad_set_blocked(), gst_pad_set_blocked_async(),
gst_pad_is_blocked()
      to block dataflow on a pad.
    - gst_pad_set_activate_function(): called when a pad becomes active.
    - GstPadLoopFunction: the loopfunction is now attached to a pad.
    - gst_pad_set_loop_function(): to set the loopfunction on a pad.
    - gst_pad_get_filter_caps(): get the filtercaps on a pad link.
    - gst_pad_push_event(): for plugins to send an event to the peer.
    - gst_pad_peer_accept_caps(): check if the peer accepts a caps.

    - gst_pipeline_get_scheduler(), gst_pipeline_get_bus(): convenience
      function for getting scheduler and bus of a pipeline. Might be
      removed in the future as gst_element_get_*() has equivalent
behaviour.







More information about the gstreamer-devel mailing list