Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init),
(gst_base_src_wait), (gst_base_src_update_length),
(gst_base_src_get_range), (gst_base_src_default_check_get_range),
(gst_base_src_check_get_range), (gst_base_src_pad_check_get_range),
(gst_base_src_loop), (gst_base_src_start),
(gst_base_src_activate_pull):
Update docs.
blocksize == 0 now means the default blocksize when working in push
based mode.
Remove some pointless asserts in _wait function.
Fix offset/length calculations and EOS handling. We can now pull 0
bytes as well, which is allowed.
use _check_get_range() to decide if we can operate in _pull based
mode.
Fix refcounting leak when check_get_range function was not
implemented.
API GstBaseSrc::blocksize range can be 0 too now (default)
* tests/check/elements/filesrc.c: (GST_START_TEST),
(filesrc_suite):
Added check to test _get_range() behaviour.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_preroll_object),
(gst_base_sink_loop), (gst_base_sink_get_position):
When operating in pull mode update the offset so that we
read sequentially.
Original commit message from CVS:
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_prepare_output_buffer),
(gst_base_transform_buffer_alloc),
(gst_base_transform_handle_buffer):
Make sure the buffer we pass to transform_ip has a refcount of
1 and thus is writable. Fixes#343196
Original commit message from CVS:
* configure.ac:
set CFLAGS and friends to -O0 if gcov is being used
add GCOV LIBS
* gst/Makefile.am:
* libs/gst/base/Makefile.am:
* libs/gst/check/Makefile.am:
* libs/gst/controller/Makefile.am:
* libs/gst/dataprotocol/Makefile.am:
* libs/gst/net/Makefile.am:
* plugins/elements/Makefile.am:
* plugins/indexers/Makefile.am:
add makefile rules to generate gcov data and clean up
* tests/check/Makefile.am:
add a coverage target that generates an html overview
of coverage data
Original commit message from CVS:
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_buffer_alloc):
Forgot to remove two unneeded unrefs.
Simplify a check _is_equal allready checks the obvious case.
Original commit message from CVS:
* gst/gstcaps.c: (gst_caps_replace):
Fix crasher when passed NULL. Doc clarification.
Optimize for the trivial case.
* gst/gstpipeline.c: (gst_pipeline_change_state):
Small cleanups.
* libs/gst/base/gstbasesrc.c: (gst_base_src_loop):
Small documentation cleanup.
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_buffer_alloc):
Don't use silly gst_pad_get_negotiated_caps, GST_PAD_CAPS
is what we need and it avoids a whole lot of redundant
refcount operations.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_configure_segment),
(gst_base_sink_preroll_object), (gst_base_sink_get_position):
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_sink_eventfunc):
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_event):
Don't randomly and silently reset a segment when the format
changes as this is a bug somewhere upstream. Fixes#330379.
Original commit message from CVS:
Patch by: Alessandro Decina <alessandro at nnva dot org>
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_stop):
Make sure the EOS flag is cleared from pads after a flush
or stop. Fixes#343538.
* tests/check/libs/collectpads.c: (GST_START_TEST),
(gst_collect_pads_suite):
Added test for collectpads reusage after EOS.
Original commit message from CVS:
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_remove_pad),
(gst_collect_pads_chain):
Handle the case where a pad is removed from the collection
that could cause the other pads to become collectable.
Original commit message from CVS:
* gst/gstelement.c:
Clarify the use of _release_request_pad() and
_get_request_pad() a bit better.
* libs/gst/base/gstadapter.c: (gst_adapter_peek),
(gst_adapter_take_buffer):
Fix some doc and comment typos.
Original commit message from CVS:
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_check_pads):
When rebuilding the pad list, don't leak the previous list.
Original commit message from CVS:
Patch by: Lutz Mueller <lutz at topfrose dot de>
* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init),
(gst_base_src_get_query_types), (gst_base_src_update_length):
Publish supported query types.
Update last_stop field in get_range mode so the position
query works. Fixes#342321.
Original commit message from CVS:
Patch by: Alessandro Decina <alessandro at nnva dot org>
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_remove_pad):
Unlock mutex when removing an unknown pad.
Fixes#343334.
* tests/check/Makefile.am:
* tests/check/libs/collectpads.c: (collected_cb), (push_buffer),
(push_event), (setup), (teardown), (GST_START_TEST),
(gst_collect_pads_suite), (main):
Added collecpads check, disabled for now as check crashes for
some reason.
Original commit message from CVS:
* docs/libs/gstreamer-libs-sections.txt:
* libs/gst/base/gstcollectpads.c:
(gst_collect_pads_set_flushing_unlocked),
(gst_collect_pads_set_flushing), (gst_collect_pads_start),
(gst_collect_pads_stop):
* libs/gst/base/gstcollectpads.h:
API: gst_collect_pads_set_flushing
Added api to set the pads to flushing, usefull for seeking
code in elements using collectpads.
Clear segment when receiving a flush.
Original commit message from CVS:
* libs/gst/base/gsttypefindhelper.c: (buf_helper_find_peek):
Fix off-by-one bug that would only allow peeks of N-1 bytes
from the start even if the buffer to typefind on contains
in fact N bytes of data (makes vorbis typefinding from a
vorbis identification header buffer work).
* tests/check/Makefile.am:
* tests/check/libs/.cvsignore:
* tests/check/libs/typefindhelper.c: (GST_START_TEST),
(gst_typefindhelper_suite), (main), (foobar_typefind),
(plugin_init):
Add very basic unit test for gst_type_find_helper_for_buffer()
that checks for the problem fixed above.
Original commit message from CVS:
Patch by: Mark Nauwelaerts <manauw at skynet dot be>
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_remove_pad),
(gst_collect_pads_event):
clear/reset segment info in FLUSH_STOP.
Fixes#336929.
Original commit message from CVS:
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_stop),
(gst_collect_pads_check_collected):
Flush queued buffer on _stop(), fixes playing again (#342454)
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_get_position):
Don't report POSITION based on clock time if sync is
disabled in a sink.
Original commit message from CVS:
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_finalize),
(gst_collect_pads_add_pad), (gst_collect_pads_remove_pad),
(gst_collect_pads_set_flushing), (gst_collect_pads_start),
(gst_collect_pads_stop):
* libs/gst/base/gstcollectpads.h:
No need to call _stop in _finalize.
Iterate the main pad list in _finalize.
Added some more debug.
Free lists and data in the right order.
Also free data whem doing _remove_pad when stopped for
backward compatibility protect ::started with PAD_LOCK as
well.
Original commit message from CVS:
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_collect),
(gst_collect_pads_collect_range), (gst_collect_pads_available),
(gst_collect_pads_check_pads), (gst_collect_pads_check_collected),
(gst_collect_pads_event), (gst_collect_pads_chain):
Update docs.
Better debug info.
Catch and return errors from the collect function
Refuse data on eos pads.
Original commit message from CVS:
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_init),
(gst_collect_pads_finalize), (gst_collect_pads_add_pad),
(gst_collect_pads_remove_pad), (gst_collect_pads_set_flushing),
(gst_collect_pads_start), (gst_collect_pads_stop),
(gst_collect_pads_peek), (gst_collect_pads_pop),
(gst_collect_pads_available), (gst_collect_pads_read),
(gst_collect_pads_flush), (gst_collect_pads_check_pads),
(gst_collect_pads_is_collected), (gst_collect_pads_event),
(gst_collect_pads_chain):
* libs/gst/base/gstcollectpads.h:
Clean up the mess that is collectpads, add comments and
FIXMEs where needed.
Maintain a separate pad list so we can add pads while
collecting the other ones. For this we need a new separate
lock (see comics).
Fix memory leak in finalize.
Refactor some weird code to set/unset pad flushing flags, mark
with comments.
Don't crash in _available, _read, _flush when we're EOS.
* tests/check/libs/.cvsignore:
Ignore adapter check binary.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek),
(gst_base_src_loop), (gst_base_src_change_state):
Always push non-flushing serialized events in the streaming
thread.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_configure_segment):
Add applied_rate to the debug
* libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek):
Copy applied_rate into the outgoing NEWSEGMENT event
Original commit message from CVS:
Patch by: Philippe Rouquier <philippero at libertysurf dot fr>
* libs/gst/base/gstbasesink.c: (gst_base_sink_set_flushing),
(gst_base_sink_change_state):
call ::unlock before taking the PREROLL_LOCK so we can safely
handle elements that lock in ::render.
Fixes#340174.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_loop):
Unify error handling, don't post an error message
when a push() returns EOS but perform our normal EOS
handling code. Fixes#340772.
Original commit message from CVS:
* docs/design/part-overview.txt:
Make upsteam/downstream concepts more clear.
Give an example of serialized/non-serialized events.
* docs/design/part-events.txt:
* docs/design/part-streams.txt:
Mention applied_rate.
* docs/design/part-trickmodes.txt:
Mention applied rate, flesh out some more use cases.
* gst/gstevent.c: (gst_event_new_new_segment),
(gst_event_parse_new_segment), (gst_event_new_new_segment_full),
(gst_event_parse_new_segment_full), (gst_event_new_tag),
(gst_event_parse_tag), (gst_event_new_buffer_size),
(gst_event_parse_buffer_size), (gst_event_new_qos),
(gst_event_parse_qos), (gst_event_parse_seek),
(gst_event_new_navigation):
* gst/gstevent.h:
Add applied_rate field to NEWSEGMENT event.
API: gst_event_new_new_segment_full()
API: gst_event_parse_new_segment_full()
* gst/gstsegment.c: (gst_segment_init), (gst_segment_set_seek),
(gst_segment_set_newsegment), (gst_segment_set_newsegment_full),
(gst_segment_to_stream_time), (gst_segment_to_running_time):
* gst/gstsegment.h:
Add applied_rate to GstSegment structure.
Make calculation of stream_time and running_time more correct
wrt rate/applied_rate.
Add some more docs.
API: GstSegment::applied_rate field
API: gst_segment_set_newsegment_full();
* libs/gst/base/gstbasesink.c: (gst_base_sink_configure_segment),
(gst_base_sink_get_sync_times), (gst_base_sink_get_position):
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_sink_eventfunc),
(gst_base_transform_handle_buffer):
Parse and use applied_rate in the GstSegment field.
* tests/check/gst/gstevent.c: (GST_START_TEST):
Add check for applied_rate field.
* tests/check/gst/gstsegment.c: (GST_START_TEST),
(gstsegments_suite):
Add more checks for various GstSegment operations.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times),
(gst_base_sink_do_sync), (gst_base_sink_chain_unlocked),
(gst_base_sink_get_position), (gst_base_sink_change_state):
Store the sync time of the buffer end position separatly in a
new variable eos_rtime so we can properly sync the EOS event.
Fixes#340697.
Fix the docs for gst_base_sink_set_qos_enabled().
Don't set segment start to invalid value when we receive a
non TIME newsegment.
get closer to handling position reporting for negative rates
correctly.
Original commit message from CVS:
Patch by: James Andrewartha <trs80 at tartarus uwa edu au>
* gst/gst.c:
* gst/gstbus.c:
* gst/gstclock.c:
* gst/gstevent.c:
* gst/gstformat.c:
* gst/gstmessage.c:
* gst/gstparse.c:
* gst/gstquery.c:
* gst/gstutils.c:
* gst/parse/Makefile.am:
* libs/gst/base/gstadapter.c:
* libs/gst/base/gstbasesrc.c:
* libs/gst/base/gstpushsrc.c:
* libs/gst/base/gsttypefindhelper.c:
* plugins/elements/gstfakesrc.c:
* plugins/elements/gstidentity.c:
Make sure gstprivate.h and/or config.h are
always included first, otherwise some of our
defines (like _FILE_OFFSET_BITS) might be
redefined in the system headers. Fixes build
on opensolaris (#340016).
Original commit message from CVS:
* docs/libs/gstreamer-libs-sections.txt:
API: addition: gst_adapter_take_buffer()
* libs/gst/base/gstadapter.c: (gst_adapter_push),
(gst_adapter_peek), (gst_adapter_take), (gst_adapter_take_buffer),
(gst_adapter_available_fast):
* libs/gst/base/gstadapter.h:
Prepare for optimizing the hell out of this hugely inefficient
piece of code.
Added gst_adapter_take_buffer() so we can at least start thinking
about subbuffering and merging.
Added some comments.
* tests/check/Makefile.am:
* tests/check/libs/adapter.c: (GST_START_TEST),
(gst_adapter_suite), (main):
Added GstAdapter check.
Original commit message from CVS:
* docs/libs/gstreamer-libs-sections.txt:
make sure GstBaseTransformClass shows up in the docs
* libs/gst/base/gstbasetransform.c:
* libs/gst/base/gstbasetransform.h:
move docs so gtk-doc picks it up now
Original commit message from CVS:
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_event):
back out the newsegment handling change, see #340060 for ongoing
discussion
Original commit message from CVS:
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_event):
fix changelog entry about last collectpads change,
add notes about proper fix
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_event):
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_base_init),
(gst_collect_pads_is_collected), (gst_collect_pads_event):
more detailed debug and formatting cleanup
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_is_too_late),
(gst_base_sink_do_render_stats), (gst_base_sink_render_object),
(gst_base_sink_get_position), (gst_base_sink_change_state):
When frame dropping is enabled, we should not ignore frames
without a duration.
Update some documentation.
Original commit message from CVS:
* gst/gstsegment.c:
Added some more docs.
* libs/gst/base/gstbasesink.c: (gst_base_sink_perform_qos),
(gst_base_sink_reset_qos):
Calculate more accurate rate values.
Original commit message from CVS:
* gst/gst_private.h:
add a new #ifdef to use __declspec(dllimport) only for
other modules and not for gstreamer core
* gst/gstbasesink.c: (gst_base_sink_perform_qos):
use gst_guint64_to_gdouble for conversion
* win32/common/libgstreamer.def:
add new exported functions
* win32/vs6/gst_inspect.dsp:
* win32/vs6/gst_launch.dsp:
* win32/vs6/libgstbase.dsp:
* win32/vs6/libgstcontroller.dsp:
* win32/vs6/libgstcoreelements.dsp:
* win32/vs6/libgstdataprotocol.dsp:
* win32/vs6/libgstnet.dsp:
update project files
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times):
Be a bit nicer to badly behaving upstream elements that expect
us to deal with non TIME segments and timestamps (such as fakesrc
in the testsuite).
Original commit message from CVS:
* gst/gstbus.c:
Small documentation clarification about the signal watch.
* libs/gst/base/gstbasesink.c: (gst_base_sink_get_sync_times),
(gst_base_sink_wait_clock), (gst_base_sink_do_sync),
(gst_base_sink_perform_qos), (gst_base_sink_reset_qos),
(gst_base_sink_do_render_stats), (gst_base_sink_render_object),
(gst_base_sink_get_position_last),
(gst_base_sink_get_position_paused), (gst_base_sink_change_state):
Convert and store timestamps in stream time and running time, the
raw timestamps are not usefull, also document this better.
Use different window sizes for good and bad QoS observations so
we react to badness a little quicker.
Keep track of the amount of rendered and dropped buffers.
Send QoS timestamps in running time.
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_sink_eventfunc),
(gst_base_transform_handle_buffer):
Compare QoS timestamps against running time.
Original commit message from CVS:
2006-04-05 Andy Wingo <wingo@pobox.com>
* gst/gstpad.c (gst_pad_set_blocked_async): More debug.
* libs/gst/base/gstbasetransform.c
(gst_base_transform_sink_eventfunc): When resetting our segment on
FLUSH_STOP, also update the flag saying we haven't seen a
newsegment.