Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gstbus.c:
* gst/gstbus.h:
API: add gst_bus_pop_filtered
API: add gst_bus_timed_pop_filtered
Two new functions for waiting for specific message types on the
bus for a specified amount of time without iterating any main
loops or main contexts.
* tests/check/gst/gstbus.c:
Some tests for the new functions.
Original commit message from CVS:
* libs/gst/check/gstcheck.c:
* libs/gst/check/gstcheck.h:
Allow runtime selection of unit tests to run via the GST_CHECKS
environment variable (test case function names, comma-separated).
Original commit message from CVS:
* gst/gststructure.c:
* tests/check/gst/gststructure.c:
Revert serialisation change and constrain structure-names after
consensus on irc. Update api documentation to reflect the change.
Original commit message from CVS:
* gst/gststructure.c:
Improve serialization and fix tests.
* tests/check/gst/gststructure.c:
Add another test that covers why I actually did the previous structure
change.
Original commit message from CVS:
* tests/check/gst/gststructure.c:
Add unit test for escaping of structure name when serialising
and deserialising to/from strings.
Original commit message from CVS:
* plugins/elements/gstmultiqueue.c: (gst_single_queue_push_one),
(gst_single_queue_new):
* plugins/elements/gstqueue.c: (gst_queue_init),
(gst_queue_push_one):
Fix queue negotiation. If acceptcaps unconditionally returns TRUE,
upstream is tricked into thinking it can suggest a format downstream
while downstream does not support that format. The real problem is that
core calls acceptcaps when pushing a buffer with new caps, for which we
do a little workaround by setting the caps on the srcpad ourselves
before pushing the buffer (until this is figured out). Fixes#486758.
Original commit message from CVS:
* gst/gststructure.c:
* gst/gstvalue.c:
Add some more comments and debug output. Quote structure name to fix
deserialisation of some strings.
Original commit message from CVS:
* gst/gstbuffer.h:
Define GST_BUFFER_FLAG_GAP more strictly to enable optimizations based
on it. Fix docs for GST_BUFFER_MALLOCDATA and GstBuffer.malloc_data.
Original commit message from CVS:
* tools/gst-inspect.c:
Save approx. 400 1 byte allocs when printing. Use API to acces element
details.
* tools/gst-run.c:
Avoid a strdup.
* tools/gst-xmlinspect.c:
Use API to acces element details.
Original commit message from CVS:
* gst/gstbin.c: (bin_handle_async_done):
Correctly set the next state if all of our async children commited their
state. This makes sure we can actually cancel the state change in
progress. Fixes a regression in Rhythmbox when seeking.
Original commit message from CVS:
Patch inspired by: Benoit Fouet <benoit dot fouet at purplelabs dot com>
* libs/gst/base/gstbasesink.c: (gst_base_sink_wait_eos),
(gst_base_sink_event):
* libs/gst/base/gstbasesink.h:
Add function to wait for EOS, subclasses can use this to correctly wait
for devices to drain before performing the EOS logic. Fixes#485343.
API: gst_base_sink_wait_eos()
Original commit message from CVS:
* gst/gstplugin.h:
Cast description string constants in GST_PLUGIN_DEFINE macros
to a (gchar*) to make C++ code using these macros compile
without warning with g++-4.2 (see #462737). Even if slightly
ugly, this seems preferable to putting the description strings
into the GLib quark table or making the structure member a
const gchar * and doing casts in core code that allocs and
frees these strings, or requiring a cast in the C++ code.
Original commit message from CVS:
* gst/gstinfo.h:
Use __FUNCTION__ instead of __PRETTY_FUNCTION__, it's silly
to print the entire class/function signature into the log
file for C++ code. This only affects C++ code, for C code
everything remains the same.
Original commit message from CVS:
* gst/gstbin.c: (remove_from_queue):
Work around a problem with pipelines containing (semi)loops until a
proper, more complicated solution is ready. See #475455.
Original commit message from CVS:
* gst/gstplugin.c:
* gst/gstplugin.h:
* gst/gstregistrybinary.c:
* gst/gstregistryxml.c:
Put more strings into the GLib quark table. No need to keep
a hundred-something copies of identical version strings,
license strings, package name strings and package origin
strings around.
Original commit message from CVS:
* docs/manual/advanced-dataaccess.xml:
Don't imply that it's okay to unconditionally change
buffer data or buffer metadata in a pad probe callback,
and a bunch of other comments. Fixes#430031.
Original commit message from CVS:
* docs/manual/appendix-integration.xml:
* docs/manual/basics-init.xml:
Call g_thread_init() before g_option_context_new() to
avoid warnings. Spotted by Ritesh Khadgaray. Fixes#484225.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_flush),
(gst_base_sink_queue_object_unlocked),
(gst_base_sink_queue_object), (gst_base_sink_event),
(gst_base_sink_needs_preroll), (gst_base_sink_chain_unlocked):
When we received EOS and are waiting for when to post the EOS message,
our state is prerolled and we should not return ASYNC.
Reorganize some code paths to implement this behavior.
* tests/check/generic/sinks.c: (send_eos), (GST_START_TEST),
(gst_sinks_suite):
Add unit test to verify above EOS fix.
Original commit message from CVS:
* plugins/elements/gsttypefindelement.c:
(gst_type_find_element_have_type), (gst_type_find_element_init),
(gst_type_find_element_setcaps), (gst_type_find_element_chain):
Move detecting the input caps of the sinkpad to the setcaps function.
This allows us to update the output caps when we receive new input caps
instead of always using the first detected caps.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_event),
(gst_base_sink_get_position):
Don't try to preroll non-async elements after a flush.
Subtract latency form clock times when reporting position.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_wait_playing),
(gst_base_src_set_live), (gst_base_src_is_live),
(gst_base_src_query_latency), (gst_base_src_perform_seek),
(gst_base_src_default_event), (gst_base_src_wait),
(gst_base_src_do_sync), (gst_base_src_get_range),
(gst_base_src_pad_get_range), (gst_base_src_loop),
(gst_base_src_unlock), (gst_base_src_unlock_stop),
(gst_base_src_set_flushing), (gst_base_src_set_playing),
(gst_base_src_activate_push), (gst_base_src_activate_pull),
(gst_base_src_change_state):
Rework the locking of basesrc in a similar fashion to basesink. We
basically have one lock (LIVE_LOCK) protecting the dataflow. This allows
us to handle live sources and semi live ones much better.
Simplify flushing.
Fix unlocking when seeking, shutting down and pausing in live sources.
Original commit message from CVS:
* gst/gstplugin.c:
Fix docs that mention 'plugin_desc' instead of 'gst_plugin_desc'.
Spotted by Josep Torra Valles <josep@fluendo.com>.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_do_sync),
(gst_base_src_get_range), (gst_base_src_change_state):
Call unlock for live sources so that they can't get stuck in _create and
produce a buffer before they are set back to PLAYING.
Original commit message from CVS:
* plugins/elements/gstqueue.c: (gst_queue_locked_enqueue),
(gst_queue_locked_dequeue):
Comment the segment-related code... in the PROPER function.
See #482147 and my commit from yesterday.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_change_state):
Also initialize the counter that calculates the first timestamp on a
buffer correctly for non-live sources.
Original commit message from CVS:
* plugins/elements/gstqueue.c: (gst_queue_locked_dequeue):
Disable code that's breaking the current-time-level reporting.
See #482147
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
Add M_PI and IMPORT_SYMBOL to the private part of the GstInfo section
as they shouldn't show up. Fixes the docs build.
Original commit message from CVS:
* gst/gstinfo.h:
Add an explicit variable importation needed on VS6 (only for MSC_VER)
Define M_PI which is used in files which are including gstinfo.h.
VS6 includes doesn't define it.
* win32/common/libgstbase.def:
* win32/common/libgstcontroller.def:
* win32/common/libgstreamer.def:
Add new exported functions and variables.
* win32/vs6/libgstcontroller.dsp:
* win32/vs6/libgstreamer.dsp:
Update the list of files to build.
Original commit message from CVS:
Patch by: Felipe Contreras <felipe dot contreras at gmail dot com>
* plugins/elements/gstqueue.c: (gst_queue_handle_sink_event):
First patch of code cleanups, use the macros and right arguments in the
macros to signal and lock the queue. See #480858.
Original commit message from CVS:
* gst/gstbuffer.c: (gst_buffer_finalize):
Make it once again possible to free GstBuffers in the default
build.
The poisoning scribbles on parts of the miniobject we need in
order to free it.
Fixes#480341
Original commit message from CVS:
* gst/gstplugin.c:
* gst/gstplugin.h:
Add the 3-clause BSD license and the MIT/X11 license to the license
list. Fixes#479784.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_query_latency),
(gst_base_sink_event), (gst_base_sink_query),
(gst_base_sink_change_state):
Simplify latency query.
When not synchronizing, we can report latency without querying the peer
element.
Original commit message from CVS:
* plugins/elements/gstfakesink.c:
Add some debug text to error message to indicate that
we errored out on request.
* tools/gst-launch.c:
When the state change to PLAYING fails, check for an
error message on the bus and print it.
Original commit message from CVS:
* gst/gstbin.h:
Move priv to the right place.
* gst/gstsystemclock.c:
Add FIXME: and improve log.
* tests/check/Makefile.am:
* tests/examples/manual/Makefile.am:
Work with all types of registries.
Original commit message from CVS:
* gst/glib-compat-private.h:
Add compatibility macro for g_intern_string() for
GLib-2.8 (any reason we can't just bump the
requirement to at least 2.10?)
* gst/gstpadtemplate.h:
* gst/gstelementfactory.c:
* gst/gstregistryxml.c:
* gst/gstregistrybinary.c:
Make GstStaticPadTemplate's templ_name field a const gchar * and fix
up the internal code accordingly. This shouldn't be a problem, since
there is no reason external code could ever assume the string in such
a structure is dynamically allocated unless it did that itself; the
use of g_strdup() is private to element factories. The new code also
saves some memory by putting pad template name strings into the GLib
quark table instead of allocating them dynamically.
Declaring this field constant fixes warnings with g++-4.2 when using
the GST_STATIC_PAD_TEMPLATE macro in c++ code (#478092).
Original commit message from CVS:
* gst/gstinfo.c:
* gst/gstinfo.h:
Make some internal API take const gchar * instead of just
gchar * to avoid compiler warnings with g++-4.2.2 when
passing string constants (partially fixes#478092).
Original commit message from CVS:
* gst/gstbin.c: (bin_query_latency_fold), (gst_bin_query):
A latency query fails when one of the sinks fail.
* gst/gstelement.c: (gst_element_set_base_time):
Improve debugging.
Original commit message from CVS:
* plugins/elements/gstqueue.c: (apply_buffer),
(gst_queue_locked_enqueue), (gst_queue_locked_dequeue):
Measure queue level based on the diff between head and tail timestamps
even when pushing the first buffer.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_flush),
(gst_base_sink_event), (gst_base_sink_change_state):
Sinks that don't preroll can always be queried for the latency.
Don't post ASYNC start when we are not async.
Original commit message from CVS:
* plugins/elements/gstqueue.c: (gst_queue_locked_enqueue),
(gst_queue_handle_sink_event), (gst_queue_chain),
(gst_queue_push_one), (gst_queue_handle_src_query),
(gst_queue_sink_activate_push), (gst_queue_src_activate_push):
* plugins/elements/gstqueue.h:
When downstream returns UNEXPECTED from pushing a buffer, don't try to
push more buffers but allow pushing of EOS and NEWSEGMENT.
Add some more debug info here and there. Fixes#476514.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_init),
(gst_base_sink_preroll_queue_flush), (gst_base_sink_commit_state),
(gst_base_sink_wait_preroll), (gst_base_sink_needs_preroll),
(gst_base_sink_set_flushing), (gst_base_sink_query),
(gst_base_sink_change_state):
Latency query is allowed after we are prerolled. Introduce a new flag
for this and stop abusing other variables.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_send_event):
Push OOB events downstream when we get them in send_event. This allows
the application to insert events in the pipeline.
Add some more comments.
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_class_init), (clear_queue),
(do_bin_latency), (gst_bin_change_state_func):
* gst/gstpipeline.c: (gst_pipeline_change_state):
Move latency query from GstPipeline to GstBin so that we can also
use it when async-handling is enabled on bins.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_query_latency),
(gst_base_src_do_sync), (gst_base_src_change_state):
Update docs.
Clean up the timestamping and syncing code for pseudo live sources.
Original commit message from CVS:
Patch by: Steve Fink <sphink gmail com>
* docs/manual/appendix-checklist.xml:
Mention less -R switch in the section about debug output (#474055).
Original commit message from CVS:
* plugins/elements/gstqueue.c: (gst_queue_handle_src_query):
Queue can latency to the pipeline up to the configured max size in time.
Report this fact in the latency query.
Original commit message from CVS:
Patch by: Sebastien Moutte <sebastien at moutte dot net>
* libs/gst/controller/gstinterpolation.c:
* libs/gst/controller/gstlfocontrolsource.c:
Use gst_guint64_to_gdouble() when converting from a uint64 or
GstClockTime to double to fix the build on win32. Fixes#474371.
Original commit message from CVS:
* gst/gstbuffer.c: (gst_buffer_finalize):
Implement poisoning for GstBuffer if --enable-poisoning is specified.
When finalizing a buffer the complete struct is filled with 0xff,
thus making a use of the buffer after the final unref impossible.
Original commit message from CVS:
* tests/check/libs/controller.c: (GST_START_TEST):
Use fail_unless_equals_int(a, b) instead of
fail_unless_equals (a == b) to get better output on failures.
Original commit message from CVS:
* gst/gsturi.c: (gst_uri_get_location):
If there's no hostname, we want to return 'c:/foo/bar.txt'
and not '/c:/foo/bar.txt' on Windows. Fixes#469402.
* tests/check/gst/gsturi.c:
Unit test for the above and a few more things.
Original commit message from CVS:
* docs/design/part-live-source.txt:
Add docs on how live sources should timestamp.
* libs/gst/base/gstbasesrc.c: (gst_base_src_do_sync):
Add some more debug info.
For subclasses that are live and like to sync, add aditional startup
latency to sync time and timestamps so that we timstamp according to the
design doc.
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gstpad.c: (gst_pad_peer_query):
* gst/gstpad.h:
Add function to perform a query on the peer of a pad.
API: gst_pad_peer_query()
Original commit message from CVS:
* tests/check/gst/gstsystemclock.c:
Cleanup the test a little (use gst-logging and not g_message). Improve
test to check if a wait reached the target.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init),
(gst_base_src_init), (gst_base_src_set_do_timestamp),
(gst_base_src_get_do_timestamp), (gst_base_src_set_property),
(gst_base_src_get_property), (gst_base_src_do_sync):
* libs/gst/base/gstbasesrc.h:
Add property to make the basesrc timestamp buffers based on the current
running time.
API: GstBaseSrc::do-timestamp
API: gst_base_src_set_do_timestamp()
API: gst_base_src_get_do_timestamp()
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_flush),
(gst_base_sink_wait_preroll), (gst_base_sink_needs_preroll),
(gst_base_sink_query):
Protect eos and have_preroll with the OBJECT lock so we don't need to
take the PREROLL lock when querying the latency. Fixes#473846.
Original commit message from CVS:
* gst/gststructure.c:
(gst_structure_fixate_field_nearest_fraction):
Fix fraction list fixation code. Take the fraction with the smallest
difference with the target instead of the first one in the list.
* tests/check/gst/gststructure.c: (GST_START_TEST),
(gst_structure_suite):
Added test to verify correct fraction list fixation behaviour.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_class_init),
(gst_base_sink_init), (gst_base_sink_set_sync),
(gst_base_sink_get_sync), (gst_base_sink_set_max_lateness),
(gst_base_sink_get_max_lateness), (gst_base_sink_set_qos_enabled),
(gst_base_sink_is_qos_enabled), (gst_base_sink_set_async_enabled),
(gst_base_sink_is_async_enabled), (gst_base_sink_set_property),
(gst_base_sink_get_property), (gst_base_sink_change_state):
* libs/gst/base/gstbasesink.h:
Add async property to instruct the sink never to inform the parent about
ASYNC state changes, update docs.
Check argument with g_return_* for the public functions.
API: GstBaseSink::async property
API: gst_base_sink_set_async_enabled()
API: gst_base_sink_is_async_enabled()
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_loop):
Improve debugging.
* libs/gst/base/gstbasesrc.c: (gst_base_src_query_latency),
(gst_base_src_default_query), (gst_base_src_wait),
(gst_base_src_do_sync), (gst_base_src_change_state):
Rearrange some code so that we can add support for measuring the
startup latency.
Original commit message from CVS:
* docs/random/ensonic/dynlink.txt:
More thoughs on this.
* plugins/elements/gstcapsfilter.c:
Add bugzilla ticket number to FIXME comment.
Original commit message from CVS:
* gst/gst.c:
Don't use GST_INFO before the debug system is actually initialised
(shouldn't do any harm, but won't print anything either, so we can
just as well remove it).
* gst/gstinfo.h:
GST_CAT_LEVEL_LOG_valist(), which is our inline helper function for
compilers that don't support variadic macros (such as MSVC), should
check for debug_level <= __gst_debug_min as well, since that's the
function called from all the level-specific GST_CAT_*_LOG_OBJECT()
inline helper functions. Should improve performance a bit, but also
makes sure uses of GST_INFO et.al are ignored if the debugging
system isn't initialised yet (instead of printing an assertion
failure).
Original commit message from CVS:
* docs/random/release:
The release manager should run 'make download-po' before making a
release to make sure translations are up-to-date.
* po/LINGUAS:
* po/be.po:
* po/pl.po:
* po/rw.po:
Add some new translations.
Original commit message from CVS:
* tools/gst-launch.c: (event_loop), (main):
Don´t try to do any state management when a live pipeline posts
buffering messages.
Also make the buffering string translatable.
Original commit message from CVS:
* gst/gstbin.c: (is_eos), (gst_bin_add_func),
(bin_handle_async_start), (gst_bin_handle_message_func):
Improve debugging.
When adding elements, insert messages into the bus of the newly added
element and make sure the element is the source of the message. This
allows the parent bin to intercept the message and do the
right thing. It also avoids us posting ASYNC_START and CLOCK_PROVIDE
messages to the app (which is not allowed).
Update some docs.
* tests/check/gst/gstghostpad.c: (GST_START_TEST):
Fix testsuite so that is does not work around messages that should not
have been posted in the first place.
Original commit message from CVS:
* gst/gstbin.c: (add_to_queue), (remove_from_queue), (clear_queue),
(update_degree), (gst_bin_sort_iterator_next):
Fix annoying bug in the sorted iterator where a sink that is not really
a sink (when it has downstream links) screwed up the iterator.
* tests/check/gst/gstbin.c: (GST_START_TEST), (gst_bin_suite):
Unit test to verify the fix.
Original commit message from CVS:
* gst/gstmessage.h:
Add some more docs for the messages.
* libs/gst/base/gstbasesink.c: (gst_base_sink_commit_state),
(gst_base_sink_query):
Add some more debugging.
* tools/gst-launch.c: (event_loop):
When interrupting, don't try to set pipeline to PAUSED twice.
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_add_func), (gst_bin_element_set_state),
(bin_handle_async_start), (gst_bin_handle_message_func):
Move ASYNC_START message posting to where it belongs, similar to
async_done.
Don't post ASYNC_START when we are in error.
Post ASYNC_START when we added an async element to a bin.
Original commit message from CVS:
2007-08-14 Julien MOUTTE <julien@moutte.net>
* gst/gstindex.c: (gst_index_add_association): Fix index entry
generation from vargs. Fixes#466595.
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_element_set_state):
Always change the state of a NO_PREROLL element even if it has ASYNC
elements inside (in case of a bin).
* tests/check/generic/sinks.c: (GST_START_TEST), (gst_sinks_suite):
Unit test for this case.
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gststructure.c: (gst_structure_get_uint):
* gst/gststructure.h:
Add function to get uint from a structure.
API: gst_structure_get_uint()
Original commit message from CVS:
* docs/gst/Makefile.am:
* docs/libs/Makefile.am:
Remove cruft and do some cleanups.
* docs/gst/gstreamer-docs.sgml:
* docs/libs/gstreamer-libs-docs.sgml:
Prepare for comming gtkdoc features (rebase against online docs).
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
Add gst_registry_add_path to docs.
Also fix formatting of an older changelog entry
Original commit message from CVS:
* libs/gst/base/gstbasesink.c:
Don't send an async_start message during downwards state change if target
state is less than READY
Original commit message from CVS:
* docs/libs/gstreamer-libs.types:
Don't register the enum type gst_lfo_waveform_get_type() in the
.types file - only GObject derived types belong.
Original commit message from CVS:
Patch by: <arenevier at fdn dot fr>
* gst/gstbuffer.h:
Remove comma from last element in enum to avoid compile errors when
using -pendantic. Fixes#464366.
Original commit message from CVS:
* docs/design/part-TODO.txt:
Add some more TODO items
* gst/gstbin.c: (find_message), (gst_bin_change_state_func):
Improve debugging.
* gst/gstcaps.c: (gst_caps_intersect):
Optimize trivial intersection case between identical caps pointers.
* gst/gstelement.c: (gst_element_continue_state),
(gst_element_set_state_func):
* gst/gstpad.c:
Fix spelling and grammar mistakes.
Original commit message from CVS:
reviewed by: Stefan Kost <ensonic@users.sf.net>
* libs/gst/controller/Makefile.am:
* libs/gst/controller/gstlfocontrolsource.c: (_calculate_pos),
(gst_lfo_waveform_get_type), (gst_lfo_control_source_reset),
(gst_lfo_control_source_new),
(gst_lfo_control_source_set_waveform),
(gst_lfo_control_source_bind), (gst_lfo_control_source_init),
(gst_lfo_control_source_finalize),
(gst_lfo_control_source_dispose),
(gst_lfo_control_source_set_property),
(gst_lfo_control_source_get_property),
(gst_lfo_control_source_class_init):
* libs/gst/controller/gstlfocontrolsource.h:
* libs/gst/controller/gstlfocontrolsourceprivate.h:
API: Add GstLFOControlSource, a control source that gives values
for specific timestamps based on several periodic waveforms.
Fixes#459717.
* tests/check/libs/controller.c: (GST_START_TEST),
(gst_controller_suite):
* docs/libs/gstreamer-libs-docs.sgml:
* docs/libs/gstreamer-libs-sections.txt:
* docs/libs/gstreamer-libs.types:
Add documentation and unit tests for GstLFOControlSource.
Original commit message from CVS:
* gst/gstelement.c: (gst_element_class_set_details_simple):
* gst/gstelement.h:
Make strings passed to gst_element_class_set_details_simple()
constant, as they should be (#462752).
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_change_state_func),
(bin_handle_async_done), (gst_bin_handle_message_func):
Don't forget about the fact that some element went ASYNC even after a
resync. This makes us post the ASYNC_DONE message correctly.
Fixes#462558.
Original commit message from CVS:
* gst/gstregistry.c: (gst_registry_add_feature):
When replacing an existing feature in the registry, make sure to
continue holding a reference until we've replaced the name string
within our feature hash table. Make sure to use g_hash_table_replace
instead of g_hash_table_insert to ensure the new name string is used
as a key instead of the old one that we're about to free.
Fixes: #462085
Original commit message from CVS:
* gst/gstpluginfeature.c: (gst_plugin_feature_finalize),
(gst_plugin_feature_set_name):
Revert patch from #459466 until after the release and we can work
out exactly what the problem is (if any).
Original commit message from CVS:
* docs/libs/Makefile.am:
Include our build-prefix libs and includes before the generic ones to
avoid linking against the installed libs when we want the build-tree
ones.
Original commit message from CVS:
Patch by: Steve Fink <sphink gmail com>
* docs/pwg/building-testapp.xml:
Mention that GST_PLUGIN_PATH or --gst-plugin-path might be needed
if people try to build or install the example from the plugin
template against a GStreamer from package using the configure
defaults.
Original commit message from CVS:
Patch by: Steve Fink <sphink gmail com>
* tools/gst-inspect.1.in:
Document --print-all and --print-plugin-auto-install-info command
line options in man page.
Original commit message from CVS:
* gst/gstelementfactory.c: (gst_element_factory_has_interface):
* gst/gstelementfactory.h:
API: gst_element_factory_has_interface()
Added method to check if an element factory implements a named
interface.
Original commit message from CVS:
* gst/gstregistrybinary.c: (gst_registry_binary_check_magic),
(gst_registry_binary_load_feature),
(gst_registry_binary_load_plugin),
(gst_registry_binary_read_cache):
Print error just once and with additional info.
Original commit message from CVS:
* plugins/elements/gstcapsfilter.c: (gst_capsfilter_class_init),
(gst_capsfilter_transform_size), (gst_capsfilter_prepare_buf):
Fix capsfilter for cases where the caps set on capsfilter will provide
additional information.
Fixes#449197
Original commit message from CVS:
* gst/gstregistry.c: (gst_registry_init), (gst_registry_finalize),
(gst_registry_remove_features_for_plugin_unlocked),
(gst_registry_add_feature), (gst_registry_remove_feature),
(gst_registry_lookup_feature_locked):
* gst/gstregistry.h:
Speed up gst_registry_lookup_feature_locked() by using a hashmap.
Fixes#459501.
Original commit message from CVS:
* gst/gstpad.h:
Small addition to GST_FLOW_IS_FATAL() docs: mention that elements
driving the pipeline may need to explicitly check for NOT_LINKED as
well, since IS_FATAL doesn't cover that.
Original commit message from CVS:
* libs/gst/controller/gstinterpolation.c:
When linearly interpolating integer types, round to the nearest int
by adding 0.5. Don't do it for float/double types.
Fixes the failing controller test on my machine, which is somehow
rounding differently than on the buildbots.
Original commit message from CVS:
* tools/gst-plot-timeline.py:
Better log parsing (categories can have -). Adjust text vs. lines, so
that they span the same y-range.
Original commit message from CVS:
* docs/random/ensonic/audiobaseclasses.txt:
* docs/random/ensonic/dynlink.txt:
* docs/random/ensonic/profiling.txt:
Save my thoughts.
* docs/random/moving-plugins:
Add note to use g_assert type macros.
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_continue_func):
Check that the state_cookie hasn't changed since the continue_func
was scheduled. Avoids problems where the state changes back to
something it shouldn't be because it was changed in the meantime.
Original commit message from CVS:
* gst/gstregistrybinary.c: (gst_registry_binary_save_const_string),
(gst_registry_binary_save_string),
(gst_registry_binary_save_pad_template),
(gst_registry_binary_save_feature),
(gst_registry_binary_save_plugin),
(gst_registry_binary_load_feature),
(gst_registry_binary_load_plugin),
(gst_registry_binary_read_cache):
Fix memory leak. Be less verbose in the log.
Original commit message from CVS:
* tests/check/elements/multiqueue.c: (mq_dummypad_chain),
(mq_dummypad_event), (run_output_order_test):
Use a GStaticMutex to protect all cases where libcheck
fail_if/fail_unless macros might be called from multiple threads
simultaneously to avoid errors like:
"check_pack.c:107: :-1081725400:Bad message type arg"
Original commit message from CVS:
* tests/check/pipelines/stress.c: (GST_START_TEST):
Make sure we set the pipeline back to the NULL state before
dropping our final reference.
Original commit message from CVS:
* tests/check/elements/tee.c: (GST_START_TEST):
Make the tee stress-test a little less stressful so it doesn't just
time out on slow-machines, and remove a small race when it's starting
up by adding a get_state() call.
Original commit message from CVS:
* pkgconfig/gstreamer-check-uninstalled.pc.in:
* pkgconfig/gstreamer-check.pc.in:
Substitute the CFLAGS for libcheck into our .pc file too so that
dependent modules will pick it up properly if libcheck is installed
into some other prefix.
Original commit message from CVS:
* configure.ac:
Revert the pkg-config check for libcheck, since it pulls in the
wrong non-PIC libcheck.a on Ubuntu and probably Fedora too. We need
a proper solution, either from the check project, or something else.
Original commit message from CVS:
* gst/gststructure.c: (gst_structure_parse_value):
When deserialising foo=bar without a type cast, check if it's a
boolean before falling back to a string type, otherwise things like
audiotestsrc ! audio/x-raw-int,signed=true ! fakesink won't work,
because the filtercaps end up having a signed=(string)true field,
which causes problems later when intersection caps.
* tests/check/gst/gststructure.c: (GST_START_TEST):
Add a unit test for this.
Original commit message from CVS:
Reviewed by: Stefan Kost <ensonic@users.sf.net>
* libs/gst/controller/Makefile.am:
* libs/gst/controller/gstcontroller.c:
(gst_controlled_property_add_interpolation_control_source),
(gst_controlled_property_new), (gst_controlled_property_free),
(gst_controller_find_controlled_property),
(gst_controller_new_valist), (gst_controller_new_list),
(gst_controller_new), (gst_controller_remove_properties_valist),
(gst_controller_remove_properties_list),
(gst_controller_remove_properties),
(gst_controller_set_property_disabled),
(gst_controller_set_disabled), (gst_controller_set_control_source),
(gst_controller_get_control_source), (gst_controller_get),
(gst_controller_sync_values), (gst_controller_get_value_array),
(_gst_controller_dispose), (gst_controller_get_type),
(gst_controlled_property_set_interpolation_mode),
(gst_controller_set), (gst_controller_set_from_list),
(gst_controller_unset), (gst_controller_unset_all),
(gst_controller_get_all), (gst_controller_set_interpolation_mode):
* libs/gst/controller/gstcontroller.h:
* libs/gst/controller/gstcontrollerprivate.h:
* libs/gst/controller/gstcontrolsource.c:
(gst_control_source_class_init), (gst_control_source_init),
(gst_control_source_get_value),
(gst_control_source_get_value_array), (gst_control_source_bind):
* libs/gst/controller/gstcontrolsource.h:
* libs/gst/controller/gsthelper.c: (gst_object_set_control_source),
(gst_object_get_control_source):
* libs/gst/controller/gstinterpolation.c:
(gst_interpolation_control_source_find_control_point_node),
(gst_interpolation_control_source_get_first_value),
(_interpolate_none_get), (interpolate_none_get),
(interpolate_none_get_boolean_value_array),
(interpolate_none_get_enum_value_array),
(interpolate_none_get_string_value_array),
(_interpolate_trigger_get), (interpolate_trigger_get),
(interpolate_trigger_get_boolean_value_array),
(interpolate_trigger_get_enum_value_array),
(interpolate_trigger_get_string_value_array):
* libs/gst/controller/gstinterpolationcontrolsource.c:
(gst_control_point_free), (gst_interpolation_control_source_reset),
(gst_interpolation_control_source_new),
(gst_interpolation_control_source_set_interpolation_mode),
(gst_interpolation_control_source_bind),
(gst_control_point_compare), (gst_control_point_find),
(gst_interpolation_control_source_set_internal),
(gst_interpolation_control_source_set),
(gst_interpolation_control_source_set_from_list),
(gst_interpolation_control_source_unset),
(gst_interpolation_control_source_unset_all),
(gst_interpolation_control_source_get_all),
(gst_interpolation_control_source_get_count),
(gst_interpolation_control_source_init),
(gst_interpolation_control_source_finalize),
(gst_interpolation_control_source_dispose),
(gst_interpolation_control_source_class_init):
* libs/gst/controller/gstinterpolationcontrolsource.h:
* libs/gst/controller/gstinterpolationcontrolsourceprivate.h:
API: Refactor GstController into the core controller which can take
a GstControlSource for providing actual values for timestamps.
Implement a interpolation control source and use this for backward
compatibility, deprecate a bunch of functions that are now handled
by GstControlSource or GstInterpolationControlSource.
Make it possible to disable the controller completely or only for
specific properties. Fixes#450711.
* docs/libs/gstreamer-libs-docs.sgml:
* docs/libs/gstreamer-libs-sections.txt:
* docs/libs/gstreamer-libs.types:
Add new functions and classes to the docs.
* tests/check/libs/controller.c: (GST_START_TEST),
(gst_controller_suite):
* tests/examples/controller/audio-example.c: (main):
Port unit test and example to the new API and add some new
unit tests.
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.
Original commit message from CVS:
* plugins/elements/gsttee.c: (gst_tee_base_init),
(gst_tee_request_new_pad), (gst_tee_release_pad),
(gst_tee_find_buffer_alloc), (gst_tee_buffer_alloc),
(gst_tee_do_push), (clear_pads), (gst_tee_handle_buffer),
(gst_tee_chain):
Be a lot smarter when deciding what srcpad to use for proxying
the buffer_alloc. Also handle pad added/removed when doing so.
Fixes#357959.
Keep track of what pads we already pushed on in case we have pads
added/removed while pushing. Fixes#374639
* tests/check/Makefile.am:
* tests/check/elements/tee.c: (handoff), (GST_START_TEST),
(tee_suite):
Added unit test for pad resync.
Original commit message from CVS:
translation by: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>
* po/LINGUAS:
* po/fi.po:
Added new Finnish translation.
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.
Original commit message from CVS:
Patch by: Tim Angus <tim at ngus dot net>
* plugins/elements/gstcapsfilter.c: (gst_capsfilter_class_init),
(gst_capsfilter_set_property):
Take a reference instead of a copy when setting "caps".
Fix documentation to clarify this behaviour. Fixes#449414.
Original commit message from CVS:
* gst/gstindexfactory.c: (gst_index_factory_get_type):
* gst/gstplugin.c: (gst_plugin_init):
* gst/gstpluginfeature.c: (gst_plugin_feature_init):
* gst/gstquery.c: (gst_query_get_type):
* gst/gstregistry.c: (gst_registry_init):
* gst/gsturi.c: (gst_uri_handler_base_init):
Remove empty instance_init() functions to save relocs and lessen the
noise. Remove some of the function prototypes that are doubled by
G_DEFINE_TYPE.
Original commit message from CVS:
Patch by: Étienne Noreau-Hébert <etienne at deepunder dot org>
* gst/gstghostpad.c: (gst_proxy_pad_save_thyself):
Add peer and direction in the XML serialisation of ghostpads.
Fixes#449226.
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.
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gstelement.c:
* gst/gstutils.c: (gst_type_register_static_full):
Beef up and include the docs for gst_type_register_static_full and
gst_element_class_set_details_simple and add the API keyword
in the ChangeLog.
Original commit message from CVS:
2007-06-19 Andy Wingo <wingo@pobox.com>
* tests/check/pipelines/simple-launch-lines.c
(test_state_change_returns): Enable pull-mode tests now that
basesink has been fixed.
* libs/gst/base/gstbasesink.c (gst_base_sink_needs_preroll):
Changed from gst_base_sink_is_prerolled, reversing the sense of
the return value. Returns FALSE also if the sink is in pull mode,
in which case it needs no preroll.
(gst_base_sink_query, gst_base_sink_change_state): Update for
needs_preroll change.
(gst_base_sink_change_state): Add a case for READY_TO_PAUSED after
chaining up, in which we return SUCCESS directly if we activated
in pull mode instead of ASYNC. Involves countering an async_start
message sent before chaining up; not sure if this is correct, in
an ideal world we only send async-start when activating in push
mode.
Original commit message from CVS:
2007-06-19 Andy Wingo <wingo@pobox.com>
* tests/check/pipelines/simple-launch-lines.c
(test_state_change_returns): New test, partially disabled until
basesink is fixed.
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_add_func), (gst_bin_remove_func),
(gst_bin_change_state_func), (bin_push_state_continue),
(bin_handle_async_start), (bin_handle_async_done),
(gst_bin_handle_message_func):
Move the common code for posting state-change messages into
one function.
Broadcast the state signal after we posted the messages.
Mark the bin as busy when it's doing a state-change.
Make sure async-start/done messages don't interfere with the bin's
state when it's busy.
After the state change, let the bin check which elements completed the
state change while it was busy so that it can update its state.
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.
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.
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_init), (gst_bin_add_func),
(gst_bin_remove_func), (gst_bin_get_state_func),
(gst_bin_element_set_state), (gst_bin_continue_func),
(bin_push_state_continue), (bin_handle_async_start),
(bin_handle_async_done), (gst_bin_handle_message_func):
* gst/gstbin.h:
Immediatly commit the toplevel bin state when receiving an async-done
message. This enables us to avoid spawning a thread to commit the state
in some common cases and it also avoids some races.
Avoid spawning a state thread when adding/removing async elements to a
toplevel bin. Instead we immediatly update the bin state.
Get rid of iterating all the children when getting the state in the bin
because it is now always up-to-date.
Fix bug where locked elements would always return _SUCCESS even it they
returned NO_PREROLL before being locked.
Fix the order of the state_change, async-start/done messages that was
sometimes incorrect.
Mark the state_dirty field as deprecated, we don't need it anymore as we
are always up-to-date.
* gst/gstelement.c: (gst_element_get_state_func),
(gst_element_continue_state):
Small debug inprovements.
Return the previous element state return when nothing is pending instead
of blindly returning SUCCESS.
* tests/check/generic/sinks.c: (GST_START_TEST), (pad_blocked_cb),
(gst_sinks_suite):
Add a whole bunch of new testcases.
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.
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.
Original commit message from CVS:
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_sink_event):
Work around the brokenness of the event vmethod in basetransform. Prefer
to return TRUE when the subclass returned FALSE (meaning don't forward
the event).
* libs/gst/base/gstbasetransform.h:
Clarify the docs.
Original commit message from CVS:
* libs/gst/controller/gstcontroller.c:
(gst_controlled_property_set_interpolation_mode):
Fix wrong getter for enums in controller.
Original commit message from CVS:
* libs/gst/check/gstcheck.c: (gst_check_init):
Intercept criticals and warnings in the Gst-Phonon log domain, so
ASSERT_CRITICAL() etc. can be used in gst-phonon's unit tests as
well.
Original commit message from CVS:
* gst/gstparamspecs.c: (_gst_param_fraction_validate):
Since this file doesn't include "gst.h" it will not go through the
macros that disable GST_LOG if debugging was disabled.
Original commit message from CVS:
* libs/gst/check/Makefile.am:
* libs/gst/check/gstcheck.h:
* pkgconfig/gstreamer-check-uninstalled.pc.in:
* pkgconfig/gstreamer-check.pc.in:
Ugly 'fix' for the controller unit test on the p5 bot: in
fail_unless_equals_float() check whether the values are 'almost
equal' by allowing a small absolute error, which should be good
enough for our use cases (normal numbers and values close to 0).
Proper fixage left to floating point arithmetic aficionados.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_reset_qos),
(gst_base_sink_render_object), (gst_base_sink_get_position):
Add two breaks thats where missing.
Original commit message from CVS:
* docs/libs/gstreamer-libs-sections.txt:
* libs/gst/check/gstcheck.h:
API: add fail_unless_equals_float() and assert_equals_float().
Add documentation for some of the macros.
* tests/check/libs/controller.c: (GST_START_TEST):
Use newly-added asserts.
Original commit message from CVS:
* gst/gstpad.c: (gst_pad_alloc_buffer_full), (gst_pad_push):
Show the caps change in the log to help spotting the case of not
exactly matching caps.
Original commit message from CVS:
* docs/plugins/Makefile.am:
* docs/plugins/gstreamer-plugins-docs.sgml:
* docs/plugins/gstreamer-plugins-sections.txt:
Pull fdsink into the docs too.
Original commit message from CVS:
* libs/gst/controller/gstinterpolation.c:
Actually use the new functions with min/max checks for the trigger and
none interpolation modes for get() and get_value_array() instead of
just the latter.
Original commit message from CVS:
* libs/gst/controller/gstcontroller.c:
(gst_controlled_property_free):
Unset the minimum and maximum GValues when freeing the corresponding
GstControllerProperty struct.
Original commit message from CVS:
* libs/gst/controller/gstcontroller.c:
(gst_controlled_property_new):
* libs/gst/controller/gstcontrollerprivate.h:
* libs/gst/controller/gstinterpolation.c:
(gst_controlled_property_find_control_point_node),
(interpolate_none_get), (interpolate_none_get_enum_value_array),
(interpolate_none_get_string_value_array),
(interpolate_trigger_get),
(interpolate_trigger_get_enum_value_array),
(interpolate_trigger_get_string_value_array):
Protect against values larger or smaller than the minimum or maximum
allowed value for the property when using values that can be compared.
Optimize trigger interpolator a bit by taking the last requested value
into account instead of always looping through the complete list.
Fix coding style a bit, everywhere else we use "return foo" instead
of "return (foo)".
* tests/check/libs/controller.c: (GST_START_TEST),
(gst_controller_suite):
Add unit test for the protection against too large or too small
values.
Original commit message from CVS:
* libs/gst/controller/gstinterpolation.c: (DEFINE_CUBIC_GET):
Use gst_util_guint64_to_gdouble for conversions.
* win32/common/libgstreamer.def:
Add new exported functions.
Original commit message from CVS:
* gst/gstbin.c: (find_message), (bin_replace_message), (is_eos),
(gst_bin_remove_func), (gst_bin_element_set_state),
(bin_handle_async_start), (bin_handle_async_done),
(gst_bin_handle_message_func):
Add helper function to find messages.
Generate the async-done messages together with the state change
messages.
Small cleanups in handling toplevel bins.
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.
Original commit message from CVS:
* libs/gst/controller/gstcontroller.c:
Clarify docs: The get_all, get_value_array(s) functions
don't modify the GObject properties.
Original commit message from CVS:
* libs/gst/controller/gstcontroller.c:
(gst_controlled_property_set_interpolation_mode),
(gst_controlled_property_prepend_default),
(gst_controlled_property_new), (gst_controller_set_unlocked),
(gst_controller_set), (gst_controller_set_from_list),
(gst_controller_unset), (gst_controller_unset_all):
* libs/gst/controller/gstcontrollerprivate.h:
* libs/gst/controller/gstinterpolation.c:
Factor out the 'set' logic into gst_controller_set_unlocked for the
gst_controller_set and gst_controller_set_from_list functions.
To make life of the interpolators easier always add a control point
at timestamp zero with the default value.
In the linear interpolator make things more obvious by better variable
naming (slope).
Implement cubic interpolation mode (by using a natural cubic spline)
and map the quadratic interpolation mode to this too (as quadratic
doesn't make much sense, see discussion on the list).
* tests/check/libs/controller.c: (GST_START_TEST),
(gst_controller_suite):
Add unit test for the cubic interpolation mode and check everywhere
if the interpolation mode could be set as expected.
Original commit message from CVS:
* gst/gstparamspecs.c: (gst_param_spec_fraction_get_type):
Don't use GLib-2.10 functions, we still depend on
GLib-how-old-is-it-again-2.8.
Original commit message from CVS:
* gst/gstobject.c: (gst_object_class_init):
Fix signal signature.
* gst/gstsegment.c:
Add small clarification in the api docs.
* plugins/elements/gstfilesrc.c: (gst_file_src_set_location):
States are protected with object lock.
Original commit message from CVS:
* gst/gstbin.c: (bin_handle_async_done):
Make sure that the child bin stops after completing the async state
change so that the parent can continue the state change to PLAYING.
Fixes#441159.
Original commit message from CVS:
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_finalize),
(unref_data), (gst_collect_pads_remove_pad),
(gst_collect_pads_check_pads):
Use additional refcounting to avoid crashes when dynamically adding and
removing pads. Fixes#420206.
Original commit message from CVS:
* tools/gst-launch.c: (event_loop):
When buffering goes from a two digit to a single digit number, make sure
to remove the old second digit by writing a blank over it.
Original commit message from CVS:
* tests/check/gst/gstbin.c: (GST_START_TEST):
Allow refcount of 3 and 4 because some state thread might still be busy
with it.
Original commit message from CVS:
* plugins/elements/Makefile.am:
* plugins/elements/gstmultiqueue.h:
* plugins/elements/gstqueue.h:
These are not installed headers, no need for padding.
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_class_init), (gst_bin_get_state_func),
(gst_bin_continue_func):
Enable latency for next release.
Restore STATE_LOCK around recalc_state that was left out during the
rewrite and could result in racy behaviour when _get_state and
recalc_state are run concurrently. See #440463.
Original commit message from CVS:
* tests/check/gst/gstsystemclock.c: (store_callback),
(GST_START_TEST):
Improve test_async_order to also work when both timers are already
expired when we get scheduled to check it.
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_init), (gst_bin_dispose),
(gst_bin_set_property), (gst_bin_get_property),
(gst_bin_remove_func), (gst_bin_handle_message_func):
* gst/gstbin.h:
'private' is a c++ keyword, let's not use that in header files,
otherwise c++ compilers will throw a tantrum.
Original commit message from CVS:
* plugins/elements/gstelements.c:
* plugins/elements/gstfilesink.c: (gst_file_sink_do_seek),
(gst_file_sink_get_current_offset):
* plugins/indexers/gstindexers.c: (plugin_init):
Use #ifdef for HAVE_XYZ for consistency.
* tests/check/Makefile.am:
* tests/check/elements/.cvsignore:
* tests/check/elements/filesink.c: (setup_filesink),
(cleanup_filesink), (GST_START_TEST), (filesink_suite):
Add some unit tests for filesink.
Original commit message from CVS:
Patch by: Mark Nauwelaerts <manauw at skynet be>
* plugins/elements/gstfilesink.c: (gst_file_sink_open_file),
(gst_file_sink_query), (gst_file_sink_do_seek),
(gst_file_sink_get_current_offset), (gst_file_sink_render):
* plugins/elements/gstfilesink.h:
Fix position reporting; rename data_written member to current_pos to
reflect its real meaning (fixes#412648).
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gstbin.c: (gst_bin_class_init), (gst_bin_init),
(gst_bin_dispose), (gst_bin_set_property), (gst_bin_get_property),
(gst_bin_remove_func), (gst_bin_handle_message_func):
* gst/gstbin.h:
Add a property for bins that handle the state change of their childs.
Fixes#435880
Original commit message from CVS:
* libs/gst/controller/gstinterpolation.c:
Use an array of the correct type when using _get_value_array with
linear interpolation.
Original commit message from CVS:
* libs/gst/controller/gstinterpolation.c:
(interpolate_trigger_get_enum_value_array),
(interpolate_trigger_get_string_value_array):
Add support for retrieving value arrays when using the trigger
interpolation mode.
Original commit message from CVS:
* libs/gst/controller/gstcontroller.c:
(gst_controller_get_value_array):
* libs/gst/controller/gstcontroller.h:
Clarify the docs of gst_controller_get_value_array(): The array where
the values should be written to must be allocated as there seems to be
no way to get the size of a random GType. This doesn't change any
behaviour. Also fix some typos all over the place and remove an unused,
commented function that is not necessary as g_object_set() could be
used instead.
* tests/check/libs/controller.c: (GST_START_TEST),
(gst_controller_suite):
Add unit test for gst_controller_get_value_array().
Original commit message from CVS:
* tests/check/gst/gstbuffer.c: (GST_START_TEST):
Disable part of the gst_buffer_try_new_and_alloc test, because
it can happily succeed on 64-bit systems where there's more address
space available.
Original commit message from CVS:
* tests/check/gst/gstpad.c: (GST_START_TEST), (gst_pad_suite):
Add unit test for the improved caps checking from bug #421543.
Original commit message from CVS:
* gst/gstpad.c: (gst_pad_get_caps_unlocked),
(gst_pad_acceptcaps_default), (gst_pad_configure_sink),
(gst_pad_configure_src):
Added simple version of improved caps checking. It was previously
assumed that a setcaps function would check the validity of the caps but
people prefer us to check caps against the template automatically.
Fixes#421543.
Original commit message from CVS:
* plugins/elements/gstqueue.c: (gst_queue_loop):
Hello, I am Mr Taymans' personal debugger. Today I will introduce a fix
for the subtle art of warning a potentially blocking thread that it
should check the source pad return value, and relay the information
upstream.
Original commit message from CVS:
reviewed by: Stefan Kost <ensonic@users.sf.net>
* libs/gst/controller/gstcontroller.c:
(gst_controller_suggest_next_sync), (gst_controller_sync_values),
(_gst_controller_get_property), (_gst_controller_set_property),
(_gst_controller_init), (_gst_controller_class_init):
* libs/gst/controller/gstcontroller.h:
* libs/gst/controller/gsthelper.c: (gst_object_suggest_next_sync),
(gst_object_get_control_rate), (gst_object_set_control_rate):
API: gst_controller_suggest_next_sync(), gst_object_suggest_next_sync()
Add API that provides sync suggestion timestamps for elements that
call gst_object_sync_values() from which those elements can subdivide
their processing loop to get the best results for the controlled
properties. For now it just suggests last_sync + control_rate as
new timestamp but this will be improved in the future.
While doing that change the control-rate property to a GstClockTime
from guint and change it's meaning from samples to nanoseconds as
the GstController doesn't know anything about sampling rate. Strictly
speaking this breaks ABI but as the control-rate property didn't do
anything in the past and as such couldn't be used this should be no
problem.
Original commit message from CVS:
reviewed by: Stefan Kost <ensonic@users.sf.net>
* libs/gst/controller/gstcontroller.c: (gst_controller_unset),
(gst_controller_unset_all):
* libs/gst/controller/gstcontrollerprivate.h:
* libs/gst/controller/gstinterpolation.c:
(gst_controlled_property_find_control_point_node):
Save last synced value from the list to continue searching from there
in future syncs. This speeds everything up a bit.
Original commit message from CVS:
reviewed by: Stefan Kost <ensonic@users.sf.net>
* libs/gst/controller/gstcontroller.c: (gst_control_point_compare),
(gst_control_point_find), (gst_controlled_property_new),
(gst_control_point_free), (gst_controlled_property_free),
(gst_controller_set), (gst_controller_set_from_list),
(gst_controller_unset), (gst_controller_unset_all),
(gst_controller_sync_values):
* libs/gst/controller/gstcontroller.h:
* libs/gst/controller/gstcontrollerprivate.h:
* libs/gst/controller/gstinterpolation.c:
(gst_controlled_property_find_control_point_node),
(interpolate_none_get), (interpolate_trigger_get):
Add a new private GstControlPoint struct which "inherits" from
GstTimedValue to allow different interpolators to store internal
values next to each control point. From the outside everything is
still a GstControlPoint so we don't loose binary compatibility.
Also fixup all the GValue handling to not leak GValues or list nodes.
* tests/check/libs/controller.c: (GST_START_TEST):
Free the list nodes and GValues in the controller_misc test.
Original commit message from CVS:
* gst/gstplugin.c: (gst_plugin_load_file):
If we fail to load a plugin because of unresolved symbols or missing
libraries and spew a warning to stderr, we may just as well mention
which plugin it was that failed to load.
Original commit message from CVS:
* docs/Makefile.am: the gtk-doc makefile snippet correctly
handles the case when ENABLE_GTK_DOC is false, and installs
the prebuilt documentation. So gtk-doc subdirs are
unconditionally enabled. Fixes: #349099.
Original commit message from CVS:
* gst/gstplugin.c: gst_plugin_register_func() doesn't actually
do anything with the passed "module" parameter, so remove it.
Allows removal of additional vestigal code.
Original commit message from CVS:
* gst/gstplugin.c:
Using sigaction should depend on HAVE_SIGACTION, not HAVE_WIN32.
Switch to using g_stat() because it's more portable.
Original commit message from CVS:
* gst/gst.c:
Add GST_DISABLE_OPTION_PARSING, in order to disable option
parsing for embedded systems.
* gst/gstelementfactory.c:
Allow gst_element_register() to be called with plugin==NULL.
Did nobody notice that static elements were broken?
Original commit message from CVS:
* tools/gst-launch.c: (event_loop):
Give more interesting info when buffering starts and stops.
Fix case where buffering starts but we fail to update the buffering flag
because the target state is not PLAYING.
Original commit message from CVS:
* plugins/elements/gstqueue.c: (gst_queue_init),
(gst_queue_finalize), (update_time_level), (apply_segment),
(apply_buffer), (gst_queue_locked_flush),
(gst_queue_locked_enqueue), (gst_queue_locked_dequeue),
(gst_queue_handle_sink_event), (gst_queue_chain),
(gst_queue_push_one), (gst_queue_loop):
* plugins/elements/gstqueue.h:
Refactor an cleanup queue a bit.
Do better time level calculations that also work when the srcpad is not
yet running.
Remove some unneeded debug lines.
* tests/check/elements/queue.c: (GST_START_TEST), (queue_suite):
Added testcase for time level measurement.
Try to make some stuff more racefree.
Original commit message from CVS:
Patch by: Jeroen Wouters <woutersj at gmail com>
* gst/gsturi.c: (gst_uri_get_protocol), (search_by_entry):
Treat protocol strings in a case-insensitive way (#437563).
Original commit message from CVS:
* gst/gstplugin.c: (gst_plugin_load_file):
* gst/gstregistry.c: (gst_registry_scan_path_level):
Don't print a g_warning for any failure to load a shared object.
Instead, push this down into gstplugin.c, and warn _only_ if we
failed to open the module (i.e. failure to link).
Avoids warnings on normal, working, non-plugin .so files.
Original commit message from CVS:
* gst/gstplugin.c (gst_plugin_load_file):
* gst/gstregistry.c (GST_CAT_DEFAULT,
gst_registry_lookup_feature_locked, gst_registry_scan_path_level):
Print a g_warning if there was an error when loading a plugins during
registry scan. The shuld help beginners starting with gst-plugin
template.
Original commit message from CVS:
* plugins/elements/gstqueue.c: (gst_queue_class_init),
(update_time_level), (gst_queue_locked_flush),
(gst_queue_handle_sink_event), (gst_queue_chain),
(gst_queue_push_one), (gst_queue_loop):
* plugins/elements/gstqueue.h:
Be smarter when calculating the current amount of data in the queue by
measuring the difference between start and end timestamps (in running
time) inside the queue. Fixes#432876.
API: GstQueue::pushing to notify elements that we are pushing data again
since the running signal is rather broken for this purpose.
Original commit message from CVS:
* plugins/elements/gstqueue.c (_do_init, gst_queue_signals,
gst_queue_base_init, gst_queue_init):
use GST_BOILERPLATE
Original commit message from CVS:
* win32/common/libgstreamer.def:
Add new exported functions.
* win32/vs6/grammar.dsp:
Use grammar pre-generated files.
Original commit message from CVS:
Based on patch by: Peter Kjellerstedt <pkj at axis com>
* gst/Makefile.am:
* gst/gstparse.c: (gst_parse_launchv), (gst_parse_launch):
* gst/gstparse.h:
* gst/gstutils.c: (gst_parse_bin_from_description):
* gst/gstutils.h:
Maintain API and ABI when --disable-parse is used. Now that
we have an appropriate error code, we can just return NULL and the
appropriate error when gst_parse_launch() is used despite it having
been disabled (#342564).
* tests/check/Makefile.am:
* tests/check/pipelines/.cvsignore:
* tests/check/pipelines/parse-disabled.c:
Make sure these functions exist and return NULL plus a GError when
--disable-parse is used.
Original commit message from CVS:
* tests/benchmarks/complexity.c: (main):
* tests/benchmarks/mass-elements.c: (main):
Set a good example and don't leak messages.
Original commit message from CVS:
* libs/gst/controller/gstcontroller.c:
(gst_controlled_property_set_interpolation_mode):
* libs/gst/controller/gstinterpolation.c:
Don't crash if someone tries to set an interpolation mode that
is invalid or that isn't supported yet. Fixes#422295.
* tests/check/libs/controller.c: (GST_START_TEST),
(gst_controller_suite):
Add a test case for the above.
Original commit message from CVS:
* libs/gst/base/gstbasetransform.c: (gst_base_transform_chain):
Properly set the last_stop position on GstSegment. This will only happen
if there is a buffer to push out.
Original commit message from CVS:
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_buffer_alloc):
always_in_place does not mean that the sink and source caps are the
same! Make sure we don't blindly proxy the buffer_alloc in this case.
Original commit message from CVS:
* docs/libs/gstreamer-libs-sections.txt:
* libs/gst/base/gstbasesrc.c: (gst_base_src_query_latency),
(gst_base_src_default_query), (gst_base_src_get_range):
* libs/gst/base/gstbasesrc.h:
API: gst_base_src_query_latency(). Added method so that subclasses can
easily get the latency values of the base source class.
Original commit message from CVS:
* tools/Makefile.am:
* tools/gst-launch.1.in:
Don't create a customised man page based on the host architecture,
describe the default registry path generically. That way the man
page is the same for all architectures and packagers have one
multilib issue less to deal with. Fixes#434926.
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gsturi.c: (get_element_factories_from_uri_protocol),
(gst_uri_protocol_is_supported), (gst_element_make_from_uri):
* gst/gsturi.h:
API: Add gst_uri_protocol_is_supported(), which checks if an sink
or src that supports a given URI protocol exists.
Original commit message from CVS:
* plugins/elements/gstfilesink.c: (gst_file_sink_uri_set_uri):
* plugins/elements/gstfilesrc.c: (gst_file_src_uri_set_uri):
Set the location to NULL if "file://" is set as URI. Otherwise
some random previous URI would still be set if "file://" is
set on an already used filesink/filesrc.
Original commit message from CVS:
* plugins/elements/gstfilesink.c: (gst_file_sink_uri_set_uri):
* plugins/elements/gstfilesrc.c: (gst_file_src_uri_set_uri):
Special case the "file://" URI as as this is used by some
applications to test with gst_element_make_from_uri if there's
an element that supports the URI protocol.
Also move the g_path_is_absolute() check for the location part
of the URI to also check this for "file://localhost/bla" URIs.
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gstbuffer.c: (gst_buffer_try_new_and_alloc):
* gst/gstbuffer.h:
* tests/check/gst/gstbuffer.c: (GST_START_TEST),
(gst_buffer_suite):
API: add gst_buffer_try_new_and_alloc() plus unit test (#431940).
Original commit message from CVS:
* gst/gstregistrybinary.c: (gst_registry_binary_write_cache),
(gst_registry_binary_load_pad_template),
(gst_registry_binary_load_plugin),
(gst_registry_binary_read_cache):
* gst/gstregistrybinary.h:
Implement no-mmap alternative for registry reading. Do code cleanups.
Add more comments about avoiding strdups for all text data. Comments
welcome.
Original commit message from CVS:
* gst/gstregistrybinary.h (GstBinaryPluginElement,
GstBinaryPluginFeature, _GstBinaryElementFactory, plugin_feature,
GstBinaryElementFactory, _GstBinaryTypeFindFactory, plugin_feature):
Comment structs and reformat to fix the build (that stuff should go
into a priv. header).
Original commit message from CVS:
* gst/gstregistrybinary.c: (gst_registry_binary_save_feature),
(gst_registry_binary_load_feature):
* gst/gstregistrybinary.h:
Refactor so that we can implement multiple features. Add support for
TypeFindFactory features.
Original commit message from CVS:
Patch by: Peter Kjellerstedt <Peter.Kjellerstedt@axis.com>
* configure.ac:
Fix AM_CONDITIONAL(GST_DISABLE_GST_DEBUG,...) and update comment.
Original commit message from CVS:
* libs/gst/base/gstbasetransform.c: (gst_base_transform_activate):
Make sure streaming has finished before calling the ::stop() vfunc,
since that vfunc might clear state which is being used in the
streaming thread. This fixes a race that caused crashes in
audioresample when shutting down a pipeline (#420106).
Original commit message from CVS:
* configure.ac:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstconfig.h.in:
* gst/gstobject.c: (gst_object_class_init),
(gst_signal_object_class_init):
* gst/gstobject.h:
2nd attempt to have a xml-less build as a joined effort of #413123
and #421480.
Original commit message from CVS:
* gst/parse/Makefile.am:
Now hopefully fix the build failures by setting proper rule
dependencies and moving instead of copying.
Original commit message from CVS:
* tests/benchmarks/complexity.gnuplot:
* tests/benchmarks/complexity.scm:
* tests/benchmarks/mass-elements.gnuplot:
* tests/benchmarks/mass-elements.scm:
Total licensification.
Original commit message from CVS:
* tests/benchmarks/complexity.c:
* tests/benchmarks/mass-elements.c:
Change licence to LGPL as granted by Benjamin and Andy.
Original commit message from CVS:
* gst/parse/Makefile.am:
Fix typo and use outdated sources if the flex/bison sources are newer
than the pregenerated ones but flex is too old. Print a warning in
that case. This should fix the build on the build bot.
Original commit message from CVS:
Patch by: Marc-Andre Lureau <marcandre dot lureau at gmail dot com>
* gst/parse/Makefile.am:
* gst/parse/grammar.y:
* gst/parse/parse.l:
Make the parser reentrant and recursively callable. This requires flex
>= 2.5.31, for older versions pregenerated sources are used as we
can't bump the build dependency. Finally fixes#349180.
* gst/gstparse.c: (gst_parse_launch):
Drop the HAVE_MT_SAVE_FLEX #ifdefs as we always use a new enough flex
now anyway.
* docs/gst/Makefile.am:
* docs/gst/Makefile.am:
* gst/parse/grammar.tab.pre.c: (__gst_parse_strdup),
(__gst_parse_strfree), (__gst_parse_link_new),
(__gst_parse_link_free), (__gst_parse_chain_new),
(__gst_parse_chain_free), (SET_ERROR), (YYPRINTF),
(gst_parse_element_set), (gst_parse_free_link),
(gst_parse_found_pad), (gst_parse_perform_delayed_link),
(gst_parse_perform_link), (yytnamerr), (yysyntax_error), (yyerror),
(_gst_parse_launch):
* gst/parse/grammar.tab.pre.h:
* gst/parse/lex._gst_parse_yy.pre.c: (PRINT), (yy_get_next_buffer),
(yy_get_previous_state), (yy_try_NUL_trans), (input),
(_gst_parse_yyrestart), (_gst_parse_yy_switch_to_buffer),
(_gst_parse_yy_load_buffer_state), (_gst_parse_yy_create_buffer),
(_gst_parse_yy_delete_buffer), (_gst_parse_yy_init_buffer),
(_gst_parse_yy_flush_buffer), (_gst_parse_yypush_buffer_state),
(_gst_parse_yypop_buffer_state),
(_gst_parse_yyensure_buffer_stack), (_gst_parse_yy_scan_buffer),
(_gst_parse_yy_scan_string), (_gst_parse_yy_scan_bytes),
(yy_fatal_error), (_gst_parse_yyget_extra),
(_gst_parse_yyget_lineno), (_gst_parse_yyget_column),
(_gst_parse_yyget_in), (_gst_parse_yyget_out),
(_gst_parse_yyget_leng), (_gst_parse_yyget_text),
(_gst_parse_yyset_extra), (_gst_parse_yyset_lineno),
(_gst_parse_yyset_column), (_gst_parse_yyset_in),
(_gst_parse_yyset_out), (_gst_parse_yyget_debug),
(_gst_parse_yyset_debug), (_gst_parse_yyget_lval),
(_gst_parse_yyset_lval), (_gst_parse_yylex_init),
(yy_init_globals), (_gst_parse_yylex_destroy), (yy_flex_strncpy),
(yy_flex_strlen), (_gst_parse_yyalloc), (_gst_parse_yyrealloc),
(_gst_parse_yyfree):
If the installed flex version is too old use pre-generated parser
sources. These pre-generated parser sources are always updated when
the actual flex/bison sources change but require everybody who wants
to change something in the parser to have flex >= 2.5.31 installed.
Original commit message from CVS:
* configure.ac:
* gst/Makefile.am:
* gst/gstconfig.h.in:
Drop libxml2 dependency when building with
--enable-binary-registry --disable-loadsave
Original commit message from CVS:
* gst/gstregistrybinary.c: (gst_registry_binary_write_cache),
(gst_registry_binary_read_cache):
* gst/gstregistrybinary.h:
Remove unnecessary <sys/mman.h> include which broke the win32 build
with MingW; move includes from header file to .c file, even if the
header file isn't installed; use g_strerror() where UTF-8 strings
are expected, such as in GST_DEBUG messages.
Original commit message from CVS:
* docs/libs/gstreamer-libs-sections.txt:
Remove bogus addition for API I didn't end up keeping.
* libs/gst/base/gstbasesrc.h:
Mention Since: 0.10.13 in the documentation.
Add the API keyword to the previous ChangeLog entry.
Original commit message from CVS:
* docs/libs/gstreamer-libs-sections.txt:
* libs/gst/base/gstbasesrc.c: (gst_base_src_class_init),
(gst_base_src_default_prepare_seek_segment),
(gst_base_src_prepare_seek_segment), (gst_base_src_perform_seek):
* libs/gst/base/gstbasesrc.h:
Allow basesrc derived classes to execute seeks in other formats
by providing a prepare_seek_segment vmethod. Sub-classes can choose
to prepare the GstSegment in any format that their perform_seek method
will be able to understand. The default implementation provides the
old behaviour of attempting to convert the seek offsets to the
configured native format.
Original commit message from CVS:
* gst/gstelement.c: (gst_element_get_state_func):
Don't output the same debug statement twice.
* libs/gst/base/gstadapter.c: (gst_adapter_try_to_merge_up),
(gst_adapter_peek), (gst_adapter_take_buffer):
Optimise the case where we have buffers at the head of the queue that
can be joined quickly (because they're contiguous sub-buffers) by
merging them together rather than copying data out into new memory.
* gst/parse/grammar.y:
* tests/check/pipelines/parse-launch.c:
Fix a leak in an error path for parse_launch, and add a check
for it to the testsuite.
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.
Original commit message from CVS:
* docs/faq/gst-uninstalled:
don't get empty paths on the PATH variables
* gst/gstpad.c (gst_pad_is_active, gst_pad_set_blocked_async):
Don't format for the uncommon terminal width of 84 characters.
Original commit message from CVS:
* gst/gstpipeline.c: (reset_stream_time),
(gst_pipeline_change_state), (gst_pipeline_set_new_stream_time):
Only try to select a different pipeline clock when we went back to
PAUSED and not when we merely got flushed.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c:
(gst_base_sink_queue_object_unlocked), (gst_base_sink_event):
Fix leak caused when refusing newsegment after EOS.
* plugins/elements/gstfakesink.c: (gst_fake_sink_class_init),
(gst_fake_sink_init), (gst_fake_sink_set_property),
(gst_fake_sink_get_property), (gst_fake_sink_preroll),
(gst_fake_sink_render), (gst_fake_sink_change_state):
* plugins/elements/gstfakesink.h:
Add num-buffers property to make the element generate EOS after a
configurable amount of buffers.
API: fakesink::num-buffers property.
* tests/check/elements/fakesink.c: (GST_START_TEST),
(fakesink_suite):
Fix GstBus leak in test.
Test for fakesink num-buffers.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c:
(gst_base_sink_queue_object_unlocked), (gst_base_sink_event),
(gst_base_sink_change_state):
Don't accept anything after an EOS, return UNEXPECTED instead.
* tests/check/elements/fakesink.c: (GST_START_TEST),
(fakesink_suite):
Unit test for new EOS behaviour.
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gstclock.c: (gst_clock_adjust_unlocked),
(gst_clock_unadjust_unlocked), (gst_clock_set_calibration):
* gst/gstclock.h:
Improve _adjust_unlocked() so that it overflows less.
Add gst_clock_unadjust_unlocked to convert from external time to
internal time based on calibration.
Add some more debug.
API: GstClock::gst_clock_unadjust_unlocked()
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.
Original commit message from CVS:
* docs/random/ensonic/dynlink.txt:
More work on proposal for new core api.
* docs/libs/gstreamer-libs-sections.txt:
* libs/gst/base/gstbasetransform.h:
API: GST_BASE_TRANSFORM_LOCK/UNLOCK added
* libs/gst/controller/gstcontroller.c:
(on_object_controlled_property_changed),
(gst_controller_sync_values),
(gst_controller_set_interpolation_mode):
* libs/gst/controller/gstcontroller.h:
Less verbose logging add docs for unimplemented parts and correctly
return when using unavailable parts.
Original commit message from CVS:
* gst/gstclock.c: (gst_clock_set_master), (do_linear_regression):
Move all the debug to the CLOCK category, and associate it with
the clock object.
Original commit message from CVS:
* libs/gst/base/gstadapter.c: (gst_adapter_take_buffer):
Make take_buffer a bit quicker by removing redundant checks
caused by calling gst_adapter_take.
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).
Original commit message from CVS:
* gst/gstelement.c: (gst_element_get_request_pad),
(gst_element_class_get_request_pad_template):
Make gst_element_get_request_pad() create request pads only for
request pad templates and not for, say, sometimes pad templates.
Original commit message from CVS:
* docs/design/draft-klass.txt:
Add example that needs more thinking.
* docs/design/draft-missing-plugins.txt:
More thoughts about wtrapper plugins.
* docs/random/ensonic/embedded.txt:
* docs/random/ensonic/profiling.txt:
More design work.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_get_range),
(gst_base_src_loop):
Only push the segment events in the PLAYING state for live sources.
Original commit message from CVS:
* gst/gstpipeline.c: (gst_pipeline_change_state):
Modify the clock distribution path in PAUSED->PLAYING so that we
never attempt to choose a new clock unless we're actually leaving
the PAUSED state for the first time. This prevents choosing a
different clock when the state_change gets called for a 2nd time due
to some element doing an async state change.
Original commit message from CVS:
* gst/gstpad.c: (gst_pad_set_caps), (gst_pad_configure_sink),
(gst_pad_configure_src), (gst_pad_alloc_buffer_full),
(gst_pad_chain_unchecked), (gst_pad_push):
Revert last commit. This needs some more thoughts.
Original commit message from CVS:
* gst/gstpad.c: (gst_pad_set_caps), (gst_pad_alloc_buffer_full),
(gst_pad_chain_unchecked), (gst_pad_push):
Check in set_caps if the caps are compatible with the pad and remove
two functions that are redundant now. Fixes#421543.
Original commit message from CVS:
* tests/check/gst/gstsystemclock.c: (GST_START_TEST),
(mixed_thread), (mixed_async_cb), (gst_systemclock_suite):
Unref some more to make valgrind happy.
Original commit message from CVS:
* gst/gstsystemclock.c: (gst_system_clock_id_wait_jitter_unlocked),
(gst_system_clock_id_wait_jitter),
(gst_system_clock_id_wait_async), (gst_system_clock_id_unschedule):
Fix anoying regression that survived a few releases. When adding an
async entry while blocking on a sync entry, the sync entry will unblock
but still be busy, so it should continue to wait instead of returning
_BUSY to the app.
Add some comments here and there.
* tests/check/gst/gstsystemclock.c: (mixed_thread),
(mixed_async_cb), (GST_START_TEST), (gst_systemclock_suite):
Add testcase for this.
Original commit message from CVS:
* libs/gst/base/gstbasesrc.c: (gst_base_src_get_range):
Handle errors from the clock sync better, only UNSCHEDULED indicates a
WRONG_STATE and can silently pause the task. All other cases should
error out.
Original commit message from CVS:
Patch by: <syrjala at sci dot fi>
* gst/gstpad.c: (gst_pad_alloc_buffer_full), (gst_pad_send_event):
Fix possible deadlock if pad eventfunc is not specified. Fixes#421177.
Improve debugging.
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_get_type), (gst_bin_element_set_state):
Prepare for release where we warn against possible app breakage in the
case of live pipelines along with an env var to enable/disable live
preroll mode (GST_COMPAT=[no-]live-preroll).
Original commit message from CVS:
* plugins/elements/gstidentity.c (gst_identity_check_imperfect_offset):
So we should use correct constants for checking for None offset.
Original commit message from CVS:
Patch by: Olivier Crete <tester at tester dot ca>
* gst/gstelement.c: (gst_element_sync_state_with_parent):
Look at the pending state too when syncing the element state to the
parent. Fixes#420133.
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_set_flushing),
(gst_base_sink_change_state):
* libs/gst/base/gstbasesink.h:
* libs/gst/base/gstbasesrc.c: (gst_base_src_perform_seek),
(gst_base_src_default_event), (gst_base_src_unlock_stop),
(gst_base_src_deactivate):
* libs/gst/base/gstbasesrc.h:
Add ::unlock_stop to basesrc and basesink. This allows an opportunity
for sub-classes to correctly clear any state they set trying to
unlock, such as clearing out unlock commands from a command fd.
* plugins/elements/gstfdsink.c: (gst_fd_sink_class_init),
(gst_fd_sink_render), (gst_fd_sink_unlock),
(gst_fd_sink_unlock_stop):
* plugins/elements/gstfdsrc.c: (gst_fd_src_class_init),
(gst_fd_src_init), (gst_fd_src_unlock), (gst_fd_src_unlock_stop),
(gst_fd_src_create), (gst_fd_src_get_size), (gst_fd_src_do_seek):
Implement unlock_stop in fdsrc and fdsink.
Implement seeking in fdsrc when a seekable fd is passed, as in
gst-launch-0.10 fdsrc ! ... ! xvimagesink < /path/to/file
Original commit message from CVS:
Patch by: Evan Nemerson <evan at coeus dash group dot com>
* gst/gstelement.c: (gst_element_class_init):
Fix pad-added and pad-removed signal signatures so that the pad type is
stated as GST_TYPE_PAD instead of G_TYPE_OBJECT. Fixes#419851.
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
Add new element field and method.
* gst/gstbin.c: (gst_bin_class_init), (gst_bin_init),
(bin_remove_messages), (gst_bin_add_func), (gst_bin_remove_func),
(gst_bin_recalc_state), (gst_bin_get_state_func),
(gst_bin_element_set_state), (gst_bin_change_state_func),
(gst_bin_continue_func), (bin_bus_handler),
(bin_push_state_continue), (bin_handle_async_start),
(bin_handle_async_done), (gst_bin_handle_message_func):
Make async state changes a bit smarter by using new ASYNC_START and
ASYNC_DONE messages. This reduces the number of times we run the state
recalculation thread.
Don't change state of element with a pending ASYNC_START message.
Deprecate STATE_DIRTY messages.
* gst/gstelement.c: (gst_element_init), (gst_element_send_event),
(gst_element_get_state_func), (gst_element_continue_state),
(gst_element_lost_state), (gst_element_set_state_func),
(gst_element_change_state):
* gst/gstelement.h:
Keep the state that was last set by the app in a new element field.
Don't allow state changes when handling an element event.
Post ASYNC_START and ASYNC_DONE messages.
Change lost_state so that we go to PAUSED and wait for the parent to set
us to PLAYING again (so latency calculation can be performed)
Export gst_element_change_state() method so that subclasses can use it.
API: gst_element_change_state()
API: GST_STATE_TARGET
* gst/gstpipeline.c: (gst_pipeline_class_init),
(reset_stream_time), (gst_pipeline_change_state),
(gst_pipeline_handle_message), (gst_pipeline_set_new_stream_time):
Using the new ASYNC_START message we can reset the base_time when
needed. This can then be used to implement base_time redistribution in
flushing seeks so that we can remove the explicit seek handling.
Perform latency query and configuration when going to PLAYING.
* libs/gst/base/gstbasesink.c: (gst_base_sink_commit_state),
(gst_base_sink_query), (gst_base_sink_change_state):
Post new ASYNC_START/ASYNC_DONE messages.
* tests/check/generic/sinks.c: (GST_START_TEST):
Fix test because the bin will not set the async element to PLAYING right
away.
* tests/check/gst/gstbin.c: (pop_async_done), (GST_START_TEST):
Make the message check a little stronger.
Handle ASYNC messages.
* tests/check/pipelines/cleanup.c: (GST_START_TEST):
* tests/check/pipelines/simple-launch-lines.c: (GST_START_TEST):
Expect ASYNC_DONE messages.
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gstmessage.c: (gst_message_new_async_start),
(gst_message_new_async_done), (gst_message_parse_info),
(gst_message_parse_async_start):
* gst/gstmessage.h:
Add ASYNC_START and ASYNC_DONE messages to prepare for latency
support.
Original commit message from CVS:
* tools/gst-inspect.c:
(print_plugin_automatic_install_info_codecs):
Now that we don't check for the 'Codec' keyword any longer in the
klass, we shouldn't spew a warning if the klass isn't a decoder or
encoder (since it might be a Source/Network, for example).
Original commit message from CVS:
* tools/gst-inspect.c:
(print_plugin_automatic_install_info_codecs):
Don't require decoder/demuxer/depayloader elements or
encoder/muxer/paylader elements to have 'Codec' as part of their
factory class string when introspecting a plugin's capabilities.
draft-klass.txt mentions that it might be removed in future, and
flump3dec doesn't have it as part of its class string, so chances
are others might also not have it.
Original commit message from CVS:
* gst/gstchildproxy.c: (gst_child_proxy_get_property),
(gst_child_proxy_set_property):
Invert precondition check to be alike the ones in the mimiced gobject
api.
Original commit message from CVS:
* docs/design/draft-tagreading.txt:
* docs/random/ensonic/audiobaseclasses.txt:
Do some Architect work.
* gst/gstobject.c: (gst_object_set_name):
Add a WARNING.
* gst/gstpad.c:
Add docs that point from gst_pad_get_range to gst_pad_pull_range
Original commit message from CVS:
* gst/gstsystemclock.c: (gst_system_clock_init),
(gst_system_clock_start_async), (gst_system_clock_id_wait_async):
Defer starting the async system clock thread until the first async
wait is scheduled. Fixes#414986.
Original commit message from CVS:
* plugins/elements/gstmultiqueue.c: (gst_multi_queue_finalize),
(gst_single_queue_free):
Fix small leak (free GstSingleQueue structure too, not only contents).
Original commit message from CVS:
* gst/gstbin.c:(gst_bin_add):
Use GST_STR_NULL to prevent NULL pointer to be passed to GST_CAT_DEBUG.
* win32/common/libgstbase.def:
* win32/common/libgstreamer.def:
Add new exported functions.
Original commit message from CVS:
* plugins/elements/gstidentity.c: (gst_identity_class_init),
(gst_identity_init), (gst_identity_check_perfect),
(gst_identity_check_imperfect_timestamp),
(gst_identity_check_imperfect_offset), (gst_identity_transform_ip),
(gst_identity_set_property), (gst_identity_get_property):
* plugins/elements/gstidentity.h:
Separate out check-imperfect-timestamp and check-imperfect-offset.
Put back check-perfect as it was to keep compatibility.
Original commit message from CVS:
* gst/gstelement.c: (gst_element_dispose):
There's no need to warn if VOID_PENDING is not NONE here, as
long as the state is NULL it's ok, and that's checked immediately
above.
Original commit message from CVS:
2007-03-08 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* plugins/elements/gstidentity.c: (gst_identity_check_perfect):
Fix check for perfect stream to ignore buffers with -1
offsets/offset ends when checking data contiguity.
Original commit message from CVS:
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_sink_eventfunc),
(gst_base_transform_handle_buffer), (gst_base_transform_chain),
(gst_base_transform_activate):
* libs/gst/base/gstbasetransform.h:
Add support for dropping buffers with custom GstFlowReturn.
Set DISCONT flags on outgoing buffers based on QoS, incomming DISCONT
buffers or dropped buffers.
* docs/libs/gstreamer-libs-sections.txt:
docs for new custom return code.
* plugins/elements/gstidentity.c: (gst_identity_transform_ip):
Use drop support in base class to implement drop-probability.
Original commit message from CVS:
2007-03-07 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* plugins/elements/gstidentity.c: (gst_identity_check_perfect):
Only post bus message at max, once per buffer received.
Original commit message from CVS:
2007-03-07 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* plugins/elements/gstidentity.c: (gst_identity_check_perfect):
Rename non-perfect to imperfect for Mike and for the sanctity of
the language.
Also make sure bus message gets emitted for data-incontiguities.
Original commit message from CVS:
2007-03-07 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* plugins/elements/gstidentity.c: (gst_identity_check_perfect),
(gst_identity_start):
* plugins/elements/gstidentity.h:
Emit bus message if check-perfect is true and we encounter a
non-perfect stream between 2 consecutive buffers.
Fixes#415394.
Original commit message from CVS:
* gst/gstvalue.c: (gst_value_transform_object_string),
(_gst_value_initialize):
Implement GstObject -> string transform so we print object names
when serializing GValues containing GstObjects.
Original commit message from CVS:
* gst/gstelement.c: (gst_element_message_full),
(gst_element_set_locked_state), (gst_element_get_state_func),
(gst_element_change_state):
Handle INFO messages from the GST_ELEMENT_INFO macro as well.
Documentation updates.
Small code cleanups.
* gst/gstmessage.c: (gst_message_new_info),
(gst_message_parse_info):
* gst/gstmessage.h:
API: gst_message_new_info()
API: gst_message_parse_info()
Add INFO message create and parse code.
Original commit message from CVS:
* gst/gstbin.c: (bin_query_min_max_init), (bin_query_latency_fold),
(bin_query_latency_done):
Also report the live parameter of a latency query.