[gst-devel] HEAD merging
Wim Taymans
wim at fluendo.com
Thu Mar 10 07:57:27 CET 2005
Hi guys,
The week is not over yet but here is already an overview of the current
status of HEAD wrt merging of THREADED.
Wim
Week1 summary
-------------
First week THREADED->HEAD porting is focussing on making the API
threadsafe. This has implications for application programmers as
returned objects and strings need to be freed after usage (see
docs/design/part-standards.txt). Some functions are replaced with
threadsafe equivalents, mostly using GstIterator.
Second focus in on removing functions/flags/macros marked as
deprecated in the 0.8.x stable series. Also a general cleanup of the
header files and flags was performed.
Some additions had to be made (mostly GstStructure) to make the API
safer.
GstClock was backported from THREADED directly and supports all
features now.
Threadsafe properties are removed, simplifying stuff a lot. Elements
should protect their properties using mutexes themselves.
- Move testcases to check framework
- Documentation updates
- threadsafe API guidelines
- object locking
- object relations
- clock design
- general
- updated headers with info about accessing properties and locks.
- rearranged headers, grouping functions according to functionality
- updated functions to use locking for TS access.
- updated function documentation
- GstCaps is refcounted again.
- GstStructure has parent field to check for mutability
- GstClock can do async notifications
- HEAD status
- compiles.
- testcases in check directory work
- pad linking not thread safe (planned in week2 when we replace
capsnego)
- running a pipeline does not work because the _bin_add/remove()
functions
do not add the element to the scheduler anymore.
- plugin/pluginfeatures/elementfactory etc still expose Glists in the
API
and are generally not threadsafe.
- removed function
- gst_use_threads(), gst_has_threads() : deprecated
- gst_main(), gst_main_quit() : use GMainLoop directly
- GST_BIN_FLAG_PREFER_COTHREADS, GST_BIN_FLAG_FIXED_CLOCK, unused
and clock selection moved to gstpipeline
- gst_bin_use_clock(), gst_bin_get_clock(), gst_bin_auto_clock()
clock selection is handled by the pipeline.
- GST_BUFFER_KEY_UNIT: all buffers are key unit by default, the ones
marked with GST_BUFFER_DELTA_UNIT are delta units.
- GST_BUFFER_DONTKEEP: no idea what this was
- gst_caps_is_chained(), gst_caps_is_equal_fixed(),
gst_caps_simplify()
removed deprecated functions.
- gst_clock_set/get_speed(): deprecated
- gst_clock_set_active(), gst_clock_is_active(), gst_clock_reset(),
gst_clock_handle_discont(): clock simplification
- gst_clock_get_event_time(), gst_clock_get_event_time_delay():
clock simplification.
- gst_clock_get_next_id(): internal API, not usefull.
- gst_clock_id_unlock(), gst_clock_id_free(): ClockID is refcounted.
- GstClockEntryStatus enum: moved clock status codes into one enum.
- gstcompat.h: removed deprecated functions, mostly _connect_*()
- GST_ELEMENT_COMPLEX, GST_ELEMENT_THREAD_SUGGESTED: unused
- GST_ELEMENT_USE_THREADSAFE_PROPERTIES, gst_element_se/gett(),
gst_element_set/get_valist(), gst_element_set/get_property(),
gst_element_enable/disable_threadsafe_properties(),
gst_element_set_pending_properties() : elements should lock
their properties themselves.
- gst_element_remove_ghost_pad(): deprecated, use _remove_pad()
- gst_pad_set_active_recursive(): internal use
- gst_pad_add_ghost_pad(), gst_pad_remove_ghost_pad(),
gst_pad_get_ghost_pad_list(): internal functions made static.
- gst_pad_proxy_link(), gst_pad_perform_negotiate(): deprecated
- gst_pad_select*(): deprecated
- gst_pad_template_get_caps_by_name(): deprecated
- changed functions
- gst_bin_add(), gst_bin_remove() returns gboolean as the operation
could fail.
- gst_element_set_locked_state() returns gboolean to indicate
success.
- gst_object_set_name() returns gboolean as the operation could fail
if
the object has a parent.
- gst_object_set_parent() returns gboolean as the operation could
fail
if the object has a parent.
- gst_pad_set_active(): returns boolean as the operation could fail.
- replaced functions
- gst_bin_get_list() -> gst_bin_iterate_elements()
- gst_bin_get_all_by_interface() ->
gst_bin_iterate_all_by_interface()
- gst_caps_split_one(), gst_caps_copy_1() -> gst_caps_copy_nth()
- gst_caps_free() -> gst_caps_unref()
- gst_element_get_pad_list() -> gst_element_iterate_pads()
- gst_format_get_definitions() -> gst_format_iterate_definitions()
- GST_PAD_DISABLED -> GST_PAD_ACTIVE: for additional sanity in
gst_pad_is_active() etc.
- gst_query_type_get_definitions() ->
gst_query_type_iterate_definitions()
- gst_structure_foreach(): takes const GstStructure as you cannot
modify
the structure. see gst_structure_map_in_place() for modifying the
struct.
- new functions
- gst_clock_set_time_adjust(): for subclasses that need to adjust the
clock.
- gst_clock_adjust_unlocked(): for subclasses.
- GST_TIMESPEC_TO_TIME(): to convert a timespec to GstClockTime
- gst_object_set/get_name_prefix(): for debugging purposes.
- gst_pad_realize(): threadsafe realize function.
- gst_pipeline_use_clock(), gst_pipeline_set/get_clock(),
gst_pipeline_auto_clock(): move clock selection to gstpipeline.
- GST_PIPELINE_FLAG_FIXED_CLOCK, for fixed clock in a pipeline.
- gst_structure_set_parent_refcount(): for GstStructure writability
tests.
- gst_structure_map_in_place(): new function to modify the structure.
--
Wim Taymans <wim at fluendo.com>
More information about the gstreamer-devel
mailing list