Original commit message from CVS:
* gst/base/gstbasetransform.c: (gst_base_transform_setcaps),
(gst_base_transform_handle_buffer):
Passthrough elements don't need the caps as they don't care.
Original commit message from CVS:
* gst/base/gstbasetransform.c: (gst_base_transform_setcaps),
(gst_base_transform_handle_buffer), (gst_base_transform_chain):
Don't leak refcounts on buffers.
Original commit message from CVS:
* gst/base/gstbasetransform.c: (gst_base_transform_configure_caps),
(gst_base_transform_setcaps), (gst_base_transform_handle_buffer),
(gst_base_transform_chain), (gst_base_transform_change_state):
* gst/base/gstbasetransform.h:
Handle the case where we are not negotiated more gracefully.
Original commit message from CVS:
* gst/base/gstbasetransform.c: (gst_base_transform_handle_buffer):
passthrough elements can even do inplace on non writable
buffers (as they don't touch them).
Original commit message from CVS:
* gst/base/gstadapter.c: (gst_adapter_flush):
Flushing out 0 bytes is ok for this function.
* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
no newsegment gives a warning and sets the start/stop to
invalid.
* gst/base/gstbasetransform.c: (gst_base_transform_change_state),
(gst_base_transform_set_passthrough):
Some debug info.
* gst/gstminiobject.c: (gst_mini_object_ref):
Check refcount here too.
* gst/gstpad.c: (gst_pad_init):
Pads are initially flushing and refusing data.
* gst/gstutils.c: (gst_element_link_pads_filtered):
When adding a capsfilter element make sure it has the
same state as the parent bin.
Original commit message from CVS:
2005-08-28 Andy Wingo <wingo@pobox.com>
* gst/gstutils.h (GST_BOILERPLATE_FULL): Prototype instance_init
as having two arguments instead of just one. Allows superclasses
to access information on subclasses -- see the terrible for() loop
in gtype.c:g_type_create_instance for the reason why. All callers
changed.
Original commit message from CVS:
2005-08-26 Andy Wingo <wingo@pobox.com>
* check/pipelines/simple_launch_lines.c (run_pipeline): Check
element_set_state's return val.
(test_2_elements): Add test that's been disabled for months.
* gst/elements/gstfakesink.c: Cleanups. Add can-activate-push and
can-activate-pull properties.
* gst/elements/gstfakesrc.c: Cleanups. Add can-activate-push and
can-activate-pull properties. Implement is_seekable so fakesrc can
operate in pull mode.
* gst/base/gstbasesink.c (GstBaseSink): Remove has-loop, has-chain
properties.
(gst_base_sink_activate, gst_base_sink_activate_pull)
(gst_base_sink_activate_push): Make activation mode choosing work.
Cleanups.
(gst_base_sink_chain, gst_base_sink_loop): Assert activation mode
is right. Make pull mode work. Post an eos before pausing in pull
mode.
(gst_base_sink_change_state): Pay attention to the core's
change_state() return val.
* gst/base/gstbasesrc.c (GstBaseSrc): Remove has-loop,
has-getrange properties. Cleanups.
* gst/base/gstbasesrc.h (GstBaseSrc): Remove has_loop,
has_getrange and replace with can_activate_pull and
can_activate_push.
* gst/base/gstbasesink.h (GstBaseSink): Rearrange fields, add
locking comments. Remove has_loop, has_chain and replace with
can_activate_pull and can_activate_push.
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
* gst/base/gstbasetransform.c: (gst_base_transform_transform_size),
fix up some debugging
(gst_base_transform_get_unit_size),
(gst_base_transform_buffer_alloc), (gst_base_transform_event),
(gst_base_transform_handle_buffer):
* gst/base/gstbasetransform.h:
handle and store timed NEWSEGMENT events so that subclasses that
calculate time by counting samples have a segment_start time they
need to add to their timestamps - see audioresample
Original commit message from CVS:
* gst/base/gstbasetransform.c: (gst_base_transform_init),
(gst_base_transform_transform_size),
(gst_base_transform_configure_caps),
(gst_base_transform_get_unit_size),
(gst_base_transform_buffer_alloc),
(gst_base_transform_change_state):
* gst/base/gstbasetransform.h:
Cache caps unit_size.
Make sure we cannot negotiate up and downstream at the
same time.
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
(gst_base_sink_get_times), (gst_base_sink_do_sync),
(gst_base_sink_handle_buffer), (gst_base_sink_change_state):
* gst/base/gstbasesink.h:
Handle newsegment events correctly.
Drop buffers out of the segment range.
Original commit message from CVS:
* gst/base/gstbasetransform.c: (gst_base_transform_transform_caps),
(gst_base_transform_transform_size), (gst_base_transform_getcaps),
(gst_base_transform_setcaps), (gst_base_transform_get_unit_size),
(gst_base_transform_buffer_alloc),
(gst_base_transform_handle_buffer):
use gboolean return values and pointers to size so we can use the
full GST_BUFFER_SIZE range (guint) for buffer sizes
use GstPadDirection for transform_caps
* gst/base/gstbasetransform.h:
rename get_size to get_unit_size since that's what it is
* gst/elements/gstcapsfilter.c: (gst_capsfilter_transform_caps):
use GstPadDirection for transform_caps
* gst/gstbuffer.c: (gst_buffer_new_and_alloc):
* gst/gstutils.h:
cleanup and debugging
Original commit message from CVS:
* gst/base/gstbasetransform.c: (gst_base_transform_init),
(gst_base_transform_transform_caps),
(gst_base_transform_transform_size),
(gst_base_transform_configure_caps), (gst_base_transform_setcaps),
(gst_base_transform_get_size), (gst_base_transform_buffer_alloc),
(gst_base_transform_handle_buffer):
* gst/base/gstbasetransform.h:
Many fixes and new features added by Thomas. Can now also do
transforms with variable sizes and a custom fixate_caps function.
Original commit message from CVS:
* check/gst-libs/controller.c: (GST_START_TEST),
(gst_controller_suite):
* docs/gst/tmpl/gstcaps.sgml:
* docs/gst/tmpl/gstghostpad.sgml:
* docs/gst/tmpl/gstquery.sgml:
* docs/gst/tmpl/gstutils.sgml:
* libs/gst/controller/gst-helper.c: (gst_object_set_controller),
(gst_object_sink_values), (gst_object_get_value_arrays),
(gst_object_get_value_array):
gracefully handle helper method calls to objects that are not beeing
controlled, added test case for that
Original commit message from CVS:
* gst/base/gstbasetransform.c: (gst_base_transform_transform_caps),
(gst_base_transform_handle_buffer):
Also call the transform function if we have ANY caps.
* gst/gstpipeline.c: (gst_pipeline_set_new_stream_time):
Fix debug info.
Original commit message from CVS:
* gst/base/gstbasesrc.c: (gst_base_src_event_handler)
Don't pretend to handle seek events if the source is not seekable
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
Remove extra parameter to debug output
* gst/base/gstbasesrc.c: (gst_base_src_send_discont),
(gst_base_src_do_seek), (gst_base_src_activate_push):
Fix seek event handling.
* gst/gstpipeline.c: (gst_pipeline_change_state):
* gst/gstqueue.c: (gst_queue_handle_sink_event),
(gst_queue_src_activate_push):
Don't start the src pad task on FLUSH_STOP if the pad
isn't linked.
Debug changes.
Original commit message from CVS:
* check/gst/gstbin.c: (GST_START_TEST):
since we don't know when preroll is done, use refcount range
check for the sink
* gst/check/gstcheck.h:
add macro for checking refcount range
Original commit message from CVS:
* check/Makefile.am:
clean up environment for when registry gets built versus
when actual tests are run; valgrind seems to not report
leaks if GST_PLUGIN_PATH is set to some specific values
* check/gst/gstbin.c: (GST_START_TEST):
add more refcounting checks; maybe this exposes a
preroll lock bug ?
* common/check.mak:
* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
* gst/check/gstcheck.h:
* gst/gstbin.c: (bin_element_is_semi_sink), (gst_bin_get_state),
(gst_bin_change_state):
* gst/gstpad.c: (gst_pad_activate_push), (gst_pad_chain):
add/fix debugging/whitespace
Original commit message from CVS:
* check/Makefile.am:
Use CHECK_CFLAGS and CHECK_LIBS
* check/gst/gstevent.c: (event_probe), (test_event),
(GST_START_TEST):
Don't leak events.
* gst/base/gstbasesrc.c: (gst_base_src_send_discont),
(gst_base_src_start), (gst_base_src_stop),
(gst_base_src_activate_push), (gst_base_src_activate_pull),
(gst_base_src_change_state):
Sprinkle gst_base_src_stop liberally around error paths to fix
problems reusing a source after failed state changes.
* gst/base/gsttypefindhelper.c: (helper_find_peek),
(helper_find_suggest), (gst_type_find_helper):
Extra debug output. Don't segfault on GST_PAD_GETRANGEFUNC = NULL
* gst/gstevent.h:
* docs/gst/tmpl/gstevent.sgml:
Migrate part of the docs from the SGML file. Wait for ensonic to
tell me how I did it wrong ;)
* tools/gst-typefind.c: (main):
Extra robustness to state changes between files.
Original commit message from CVS:
* check/Makefile.am:
don't valgrind the controller test - it's leaking - Stefan, HELP
* gst/check/gstcheck.c: (gst_check_message_error),
(gst_check_chain_func), (gst_check_setup_element),
(gst_check_teardown_element), (gst_check_setup_src_pad),
(gst_check_teardown_src_pad), (gst_check_setup_sink_pad),
(gst_check_teardown_sink_pad):
* gst/check/gstcheck.h:
add a bunch of methods to set up elements, and src and sink pads
* check/elements/fakesrc.c: (setup_fakesrc), (cleanup_fakesrc):
* check/elements/identity.c: (setup_identity), (cleanup_identity),
(GST_START_TEST):
use them
* gst/gstmessage.c:
* gst/gsttag.h:
whitespace/doc fixes
Original commit message from CVS:
* check/Makefile.am:
set GST_TOOLS_DIR
* gst/check/gstcheck.c: (gst_check_message_error):
* gst/check/gstcheck.h:
add a fail_unless_equals_int
add fail_unless for error messages
Original commit message from CVS:
2005-08-18 Andy Wingo <wingo@pobox.com>
Make sure that when a pipeline goes to PLAYING, that data has
actually hit the sink.
* check/states/sinks.c (test_sink): A sink that doesn't get any
data shouldn't return SUCCESS for going to either PLAYING or
PAUSED. Test also the return values on the way back down.
* gst/gstelement.c (gst_element_set_state): When changing the
state of an element currently changing state asynchronously, go to
lost-state after commiting the pending state. Makes future calls
to get_state continue to return ASYNC.
* gst/base/gstbasesink.c (gst_base_sink_change_state): Return
ASYNC when going to PLAYING if we still don't have preroll, as can
happen with live sources.
Original commit message from CVS:
* check/Makefile.am:
* check/gst/gstevents.c: (GST_START_TEST), (event_probe),
(test_event), (timediff), (gstevents_suite), (main):
I wrote a test!
* docs/design/part-seeking.txt:
Spelling correction
* docs/gst/tmpl/gstevent.sgml:
Docs updates.
* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
Treat a buffer-without-newsegment the same as a receiving
a newsegment not in time format, and disable syncing to the clock
with a warning.
* gst/gstbus.c: (gst_bus_set_sync_handler):
Assert if anyone tries to replace the existing sync_handler for bus,
as only the owner should be setting it.
* gst/gstevent.h:
Have a fixed set of custom event enums with events identified by
their structure name (as in 0.8), rather than a free-for-all
allowing collisions between enum values from different plugins.
* gst/gstpad.c: (gst_pad_class_init):
Docs change.
* gst/gstqueue.c: (gst_queue_handle_sink_event):
Handle out-of-band downstream events from the sending thread.
Original commit message from CVS:
2005-08-17 Andy Wingo <wingo@pobox.com>
* gst/base/gstbasetransform.c: Debug changes.
* gst/gstutils.h:
* gst/gstutils.c (gst_bin_watch_for_state_change): Add function to
ensure bins post state change messages. A bit of a hack but I can't
think of a way to avoid it.
* check/gst/gstbin.c (test_watch_for_state_change): Added test.
Original commit message from CVS:
2005-08-16 Andy Wingo <wingo@pobox.com>
* gst/base/gstadapter.h:
* gst/base/gstadapter.c (gst_adapter_take): New function, like
peek() but you own the data. Not terribly efficient atm.
Original commit message from CVS:
* gst/base/gsttypefindhelper.c: (helper_find_peek),
(gst_type_find_helper):
The memory returned by gst_type_find_peek() needs to
stay valid until the end of a typefind function, and
typefind functions may keep results from different
offsets around, so we can't just unref the buffer from
the previous _peek(), but have to save all buffers
returned by _peek() until typefinding is done and only
free them then.
Original commit message from CVS:
* gst/base/gstadapter.h:
* gst/base/gstbasesink.h:
* gst/base/gstbasesrc.h:
* gst/base/gstbasetransform.h:
* gst/base/gstcollectpads.h:
* gst/base/gstpushsrc.h:
* gst/gstiterator.h:
Add padding to our base elements' class and instance structs and
to GstIterator (you will need to rebuild all plugins and apps!)
Original commit message from CVS:
added long/short desc for controller docs
added collectpads base class docs
added correct includes to base-class docs
Original commit message from CVS:
2005-08-04 Andy Wingo <wingo@pobox.com>
* gst/elements/gstcapsfilter.c: Reimplement using basetransform,
fixes buffer_alloc proxying among other things.
* gst/base/gstbasetransform.c:
* gst/base/gstbasetransform.h:
Revert patch to gstbasetransform from 7-28 removing
delay_configure.
* gst/base/gstbasetransform.h (GstBaseTransformClass.get_size):
* gst/base/gstbasetransform.c (gst_base_transform_get_size):
Semantics changed, should return not the size of the output buffer
but the byte size of a buffer with a given caps.
* gst/base/gstbasetransform.c (gst_base_transform_getcaps): Better
debug object.
(gst_base_transform_configure_caps): Don't set out_size here: (in,
out) are not the pad caps until setcaps finishes.
(gst_base_transform_buffer_alloc): Proxy the buffer_alloc for the
not-in-place case as well. Deal with changing from in-place to
not-in-place within calling pad_alloc_buffer. Still a bit
concerned about the overhead here...
Original commit message from CVS:
* gst/base/gstcollectpads.c: (gst_collectpads_finalize),
(gst_collectpads_stop):
Broadcast the condition when shutting down, to make sure we wake all
threads up. Shut down pads on finalize, for safety.
Original commit message from CVS:
2005-08-01 Jan Schmidt <thaytan@mad.scientist.com>
* gst/base/gstbasetransform.c: (gst_base_transform_init),
(gst_base_transform_handle_buffer),
(gst_base_transform_change_state):
Handle PAUSED->READY->PAUSED transition after negotiation
occurred already.
* gst/gstmessage.c: (gst_message_init):
Extra piece of debug for new messages.
Original commit message from CVS:
* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_packet_from_event),
(gst_dp_event_from_packet):
Fix serialization of seek events.
Original commit message from CVS:
* docs/design/part-seeking.txt:
Some small additions.
* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
(gst_base_sink_get_times), (gst_base_sink_do_sync),
(gst_base_sink_activate_push), (gst_base_sink_activate_pull):
* gst/base/gstbasesink.h:
discont values are gint64, handle the math correctly.
* gst/base/gstbasesrc.c: (gst_base_src_loop):
Make the basesrc report error if the source pad is not linked.
* gst/gstqueue.c: (gst_queue_link_src), (gst_queue_chain),
(gst_queue_loop), (gst_queue_handle_src_query),
(gst_queue_src_activate_push):
Make queue collect data even if the srcpad is not linked.
Start pushing out data as soon as it is linked.
* gst/gstutils.c: (gst_element_unlink), (gst_flow_get_name):
* gst/gstutils.h:
Added gst_flow_get_name() to ease error reporting.
Original commit message from CVS:
* gst/base/gstbasesrc.c: (gst_base_src_init),
(gst_base_src_do_seek), (gst_base_src_loop), (gst_base_src_start):
* gst/base/gstbasesrc.h:
Add a gboolean to decide when to push out a discont.
* gst/gstqueue.c: (gst_queue_handle_sink_event), (gst_queue_chain),
(gst_queue_loop), (gst_queue_handle_src_query),
(gst_queue_sink_activate_push), (gst_queue_src_activate_push),
(gst_queue_set_property), (gst_queue_get_property):
Some cleanups.
* tests/threadstate/threadstate1.c: (main):
Make a thread test compile and run... very silly..
Original commit message from CVS:
* gst/base/gstbasesrc.c: (gst_base_src_get_range):
Make sure we never call the create function is we
got deactivated.
Original commit message from CVS:
* docs/design/part-clocks.txt:
* docs/design/part-events.txt:
* gst/base/gstbasesrc.c: (gst_base_src_do_seek):
Small docs updates.
Only update the seeking values when we are not
busy streaming.
Original commit message from CVS:
* gst/base/gstbasesrc.c: (gst_base_src_loop),
(gst_base_src_activate_push):
Send discont event from the loop function, as pads
aren't activated yet in the activate_push handler.
* gst/gstbin.c: (bin_bus_handler):
Don't leak element name.
Original commit message from CVS:
Removed plugable schedulers.
Removed Scheduler/Manager from elements.
Removed gsttypes.h, rearranged includes.
Removed dependency pad<->element, element<>pipeline, and
various others, fix includes.
implement gst_pad_get_parent() with gst_object_get_parent()
Make GstTask sefcontained.
Fix _get_state() on GstBin, it did not return ASYNC with a 0
timeout.
Fix endless loop in iterator_fold_with_resync.
Original commit message from CVS:
* docs/design/part-dynamic.txt:
* docs/design/part-events.txt:
* docs/design/part-seeking.txt:
Some more docs in the works.
* gst/base/gstbasetransform.c: (gst_base_transform_transform_caps),
(gst_base_transform_getcaps), (gst_base_transform_configure_caps),
(gst_base_transform_setcaps), (gst_base_transform_get_size),
(gst_base_transform_buffer_alloc), (gst_base_transform_event),
(gst_base_transform_handle_buffer),
(gst_base_transform_sink_activate_push),
(gst_base_transform_src_activate_pull),
(gst_base_transform_set_passthrough),
(gst_base_transform_is_passthrough):
Refcounting fixes.
* gst/gstbus.c: (gst_bus_source_dispatch), (gst_bus_poll):
Cleanups.
* gst/gstevent.c: (gst_event_finalize):
Set SRC to NULL.
* gst/gstutils.c: (gst_element_unlink),
(gst_pad_get_parent_element), (gst_pad_proxy_getcaps),
(gst_pad_proxy_setcaps):
* gst/gstutils.h:
Add _get_parent_element() to get a pads parent as an element.
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
(gst_base_sink_event), (gst_base_sink_get_times),
(gst_base_sink_do_sync), (gst_base_sink_change_state):
* gst/base/gstbasesink.h:
Store and use discont values when syncing buffers as described
in design docs.
* gst/base/gstbasesrc.c: (gst_base_src_send_discont),
(gst_base_src_do_seek), (gst_base_src_loop), (gst_base_src_start),
(gst_base_src_activate_push):
Push discont event when starting.
* gst/elements/gstidentity.c: (gst_identity_transform):
Small cleanups.
* gst/gstbin.c: (gst_bin_change_state):
Small cleanups in base_time distribution.
* gst/gstelement.c: (gst_element_set_base_time),
(gst_element_get_base_time), (gst_element_change_state):
* gst/gstelement.h:
Added methods for the base_time of the element.
Some MT fixes.
* gst/gstpipeline.c: (gst_pipeline_send_event),
(gst_pipeline_change_state), (gst_pipeline_set_new_stream_time),
(gst_pipeline_get_last_stream_time):
* gst/gstpipeline.h:
MT fixes.
Handle seeking as described in design doc, remove stream_time
hack.
Cleanups clock and stream_time selection code. Added accessors
for the stream_time.
Original commit message from CVS:
* gst/base/gstbasesrc.c: (gst_base_src_default_negotiate):
Don't unref the caps we passed to gst_caps_make_writable() after
passing them. gst_caps_make_writable() will do that for us.
Original commit message from CVS:
2005-07-15 Andy Wingo <wingo@pobox.com>
* tools/gst-typefind.c: Update, add copyright block.
* gst/base/gstbasesrc.c (gst_base_src_default_negotiate):
Normalize and truncate caps before fixation.
* gst/gstcaps.h:
* gst/gstcaps.c (gst_caps_truncate): New function, destructively
discards all but the first structure from its argument.
Original commit message from CVS:
* gst/base/gstbasetransform.c: (gst_base_transform_init),
(gst_base_transform_transform_caps), (gst_base_transform_getcaps),
(gst_base_transform_configure_caps), (gst_base_transform_setcaps),
(gst_base_transform_get_size), (gst_base_transform_buffer_alloc),
(gst_base_transform_handle_buffer), (gst_base_transform_getrange),
(gst_base_transform_chain), (gst_base_transform_change_state),
(gst_base_transform_set_passthrough),
(gst_base_transform_is_passthrough):
* gst/base/gstbasetransform.h:
Make passthrough work using the bufferpools.
Changed API a bit, subclasses have to write into a buffer
provided by the base class.
More debug info in nego functions.
* gst/elements/gstidentity.c: (gst_identity_init),
(gst_identity_transform):
Port to new base class.
Original commit message from CVS:
2005-07-13 Andy Wingo <wingo@pobox.com>
* gst/base/gstbasesrc.c (gst_base_src_start): Post an error if the
source couldn't negotiate.
Original commit message from CVS:
* gst/base/gstbasetransform.c: (gst_base_transform_setcaps):
Added more debug info in the negotiate process.
* gst/gstmessage.h:
Prepare for segment playback.
* gst/gstpad.c: (gst_pad_accept_caps), (gst_pad_set_caps):
Better debugging.
* gst/gstutils.c:
Some more docs.
* tools/gst-launch.c: (main):
NULL pipeline on errors.
Original commit message from CVS:
* gst/base/gstbasesrc.c: (gst_base_src_get_range),
(gst_base_src_default_negotiate), (gst_base_src_negotiate):
Allow subclasses to implement their own negotiation.
Original commit message from CVS:
* examples/Makefile.am:
* examples/helloworld/helloworld.c: (event_loop), (main):
* examples/queue/queue.c: (event_loop), (main):
* examples/queue2/queue2.c: (main):
Update a couple of the examples to work again.
* gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_empty),
(gst_base_sink_preroll_queue_flush), (gst_base_sink_handle_event):
Spelling corrections and extra debug.
* gst/gstbin.c: (gst_bin_class_init), (gst_bin_init), (is_eos),
(gst_bin_add_func), (bin_element_is_sink), (gst_bin_get_state),
(gst_bin_change_state), (gst_bin_dispose), (bin_bus_handler):
* gst/gstbin.h:
* gst/gstpipeline.c: (gst_pipeline_init), (gst_pipeline_dispose),
(gst_pipeline_change_state):
* gst/gstpipeline.h:
Move the bus handler for children to the GstBin, and create a
separate bus for receiving messages from children to the one the
bus sends 'upwards' on.
Original commit message from CVS:
2005-07-05 Andy Wingo <wingo@pobox.com>
* gst/base/gstbasetransform.c (gst_base_transform_setcaps):
Default to returning TRUE for the case when tranform_caps returns
a fixed caps, like for identity or volume.
Original commit message from CVS:
2005-07-05 Andy Wingo <wingo@pobox.com>
* check/gst/gstbus.c (pound_bus_with_messages):
* check/gst/gstmessage.c (START_TEST):
* check/pipelines/simple_launch_lines.c (got_handoff): Application
message API change.
* gst/base/gstbasetransform.c (gst_base_transform_setcaps): More
logic weaks here: always run transform_caps, trying passthrough
operation only if the original caps intersects with the transform.
* gst/gstpad.c (gst_pad_link_check_compatible_unlocked): Debug
source and sink caps.
* gst/base/gstbasetransform.c (gst_base_transform_getcaps):
Intersect the peer caps with the pad template before going into
transform_caps.
(gst_base_transform_transform_caps): More debugging.
* gst/gstmessage.h (gst_message_new_application): Take a GstObject
src argument.
Original commit message from CVS:
2005-07-01 Andy Wingo <wingo@pobox.com>
* tests/network-clock.scm: Commentary update.
* gst/elements/gstidentity.c (PROP_DUPLICATE): Gone daddy gone.
Didn't really make sense, not implementable with basetransform,
etc.
(gst_identity_transform): Unref inbuf via make_writable. Feeble
attempt at implementing the sync property, needs an unlock method.
* gst/base/gstbasetransform.c (gst_base_transform_transform_caps):
New func, by default returns the same caps (the identity
transformation).
(gst_base_transform_getcaps): Uses transform_caps to return
something sensible.
(gst_base_transform_setcaps): Complicated logic to get caps on
both pads, even if they are different, and to call set_caps once
for every time both pads get their caps set.
(gst_base_transform_handle_buffer): Give the ref to the transform
function. Allows in-place modification of the buffer.
* gst/base/gstbasetransform.h (transform_caps): New class method.
Given caps on one side, what can I do on the other.
(set_caps): Take two caps, one for each side of the element.
* gst/gstpad.h:
* gst/gstpad.c (gst_pad_fixate_caps): Change prototype to modify
caps in place. This is safe because we can check the mutability of
the caps, and a good idea because fixate functions are just called
as a matter of last resort. (Not actually implemented.)
(gst_pad_set_caps): If the caps we're setting is actually the same
as the existing pad caps, just update the pointer without calling
setcaps. Assert that caps is either NULL or fixed, as per the
docs.
* gst/gstghostpad.c: Update for fixate changes.
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_empty),
(gst_base_sink_preroll_queue_flush), (gst_base_sink_handle_object),
(gst_base_sink_change_state):
* gst/base/gstbasesink.h:
Some tweaks, only EOS and a buffer complete a preroll.
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_base_sink_handle_object),
(gst_base_sink_change_state):
Small debug line.
* gst/gstclock.h:
map SIGNAL and BROADCAST to the right function.
* gst/gstobject.h:
Remove redundant braces.
* gst/gstpad.c: (gst_pad_set_caps):
Don't call setcaps function when reseting caps to NULL.
* gst/gstsystemclock.c: (gst_system_clock_dispose),
(gst_system_clock_async_thread), (gst_system_clock_id_wait_async),
(gst_system_clock_id_unschedule):
Use BROADCAST as this is what we do.
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
We are actually prerolling before commiting the state
change.
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_basesink_preroll_queue_flush),
(gst_basesink_event), (gst_basesink_deactivate):
Flushing the preroll queue always needs to unlock the waiters.
Original commit message from CVS:
2005-06-27 Andy Wingo <wingo@pobox.com>
* gst/base/gsttypefindhelper.c (gst_type_find_helper): Unref any
remaining buffer.
* gst/gsttrace.c (gst_alloc_trace_list_sorted): New helper,
returns a sorted copy of the trace list.
(gst_alloc_trace_print_live): New API, only prints traces with
live objects. Sort the list.
(gst_alloc_trace_print_all): Sort the list.
(gst_alloc_trace_print): Align columns.
* gst/elements/gstttypefindelement.c:
* gst/elements/gsttee.c:
* gst/base/gstbasesrc.c:
* gst/base/gstbasesink.c:
* gst/base/gstbasetransform.c:
* gst/gstqueue.c: Adapt for pad activation changes.
* gst/gstpipeline.c (gst_pipeline_init): Unref after parenting
sched.
(gst_pipeline_dispose): Drop ref on sched.
* gst/gstpad.c (gst_pad_init): Set the default activate func.
(gst_pad_activate_default): Push mode by default.
(pre_activate_switch, post_activate_switch): New stubs, things to
do before and after switching activation modes on pads.
(gst_pad_set_active): Take a boolean and not a mode, dispatch to
the pad's activate function to choose which mode to activate.
Shortcut on deactivation and call the right function directly.
(gst_pad_activate_pull): New API, (de)activates a pad in pull
mode.
(gst_pad_activate_push): New API, same for push mode.
(gst_pad_set_activate_function)
(gst_pad_set_activatepull_function)
(gst_pad_set_activatepush_function): Setters for new API.
* gst/gstminiobject.c (gst_mini_object_new, gst_mini_object_free):
Trace all miniobjects.
(gst_mini_object_make_writable): Unref the arg if we copy, like
gst_caps_make_writable.
* gst/gstmessage.c (_gst_message_initialize): No trace init.
* gst/gstghostpad.c (gst_proxy_pad_do_activate)
(gst_proxy_pad_do_activatepull, gst_proxy_pad_do_activatepush):
Adapt for new pad API.
* gst/gstevent.c (_gst_event_initialize): Don't initialize trace.
* gst/gstelement.h:
* gst/gstelement.c (gst_element_iterate_src_pads)
(gst_element_iterate_sink_pads): New API functions.
* gst/gstelement.c (iterator_fold_with_resync): New utility,
should fold into gstiterator.c in some form.
(gst_element_pads_activate): Simplified via use of fold and
delegation of decisions to gstpad->activate.
* gst/gstbus.c (gst_bus_source_finalize): Set the bus to NULL,
help in debugging.
* gst/gstbuffer.c (_gst_buffer_initialize): Ref the buffer type
class once in init, like gstmessage. Didn't run into this issue
but it seems correct. Don't initialize a trace, gstminiobject does
that.
* check/pipelines/simple_launch_lines.c (test_stop_from_app): New
test, runs fakesrc ! fakesink, stopping on ::handoff via a message
to the bus.
(assert_live_count): New util function, uses alloc traces to check
cleanup.
* check/gst/gstghostpad.c (test_ghost_pads): More refcount checks.
To be modified when unlink drops the internal pad.
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_basesink_preroll_queue_empty),
(gst_basesink_handle_object), (gst_basesink_event),
(gst_basesink_do_sync), (gst_basesink_handle_event),
(gst_basesink_change_state):
* gst/gsttask.h:
Right, two problems here: ghostpads don't take locks and
glib _rec_mutex_lock_full() with depth==0 still locks.
Catch illegal locking and g_warn them.
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_basesink_set_property),
(gst_basesink_preroll_queue_empty),
(gst_basesink_preroll_queue_flush), (gst_basesink_handle_object),
(gst_basesink_event), (gst_basesink_do_sync),
(gst_basesink_handle_event), (gst_basesink_handle_buffer),
(gst_basesink_chain), (gst_basesink_loop), (gst_basesink_activate),
(gst_basesink_change_state):
Reworked the base sink, handle event and buffer serialisation
correctly and removed possible deadlock.
Handle EOS correctly.
Original commit message from CVS:
2005-06-23 Andy Wingo <wingo@pobox.com>
* gst/base/gstbasesrc.c (gst_basesrc_get_range): Check if the
offset is greater than the file's size.